更新时间:2024-05-29 GMT+08:00

灵活搜索设备列表

功能介绍

接口说明

应用服务器使用SQL语句调用该接口,灵活的搜索所需要的设备资源列表

限制

  • 标准版实例、企业版实例支持该接口调用,基础版不支持。

  • 单账号调用该接口的 TPS 限制最大为1/S(每秒1次请求数)

类SQL语法使用说明

类SQL语句有select、from、where(可选)、order by(可选)、limit子句(可选)组成,长度限制为400个字符。子句里的内容大小写敏感,SQL语句的关键字大小写不敏感。

示例:

select * from device where device_id = 'as********' limit 0,5

SELECT子句

select [field]/[count(*)/count(1)] from device

其中field为需要获取的字段,请参考响应参数字段名称,也可填*,获取所有字段。

如果需要统计搜索的设备个数,请填count(*)或者count(1).

FROM子句

from device

from后为要查询的资源名,当前支持"device"

WHERE子句(可选)

WHERE [condition1] AND [condition2]

最多支持5个condition,不支持嵌套;支持的检索字段请参见下面的搜索条件字段说明支持的运算符章节

连接词支持AND、OR,优先级参考标准SQL语法,默认AND优先级高于OR。

LIMIT子句(可选)

limit [offset,] rows

offset标识搜索的偏移量,rows标识返回搜索结果的最大行数,例如:

  • limit n ;示例(select * from device limit 10)

    最大返回n条结果数据

  • limit m,n; 示例(select * from device limit 20,10) 搜索偏移量为m,最大返回n条结果数据

限制

offset 最大 500, rows最大50,如果不填写limit子句,默认为limit 10

ORDER BY子句(可选)

用于实现自定义排序,当前支持自定义排序的字段为:"marker"。

order by marker [asc]/[desc]

子句不填写时默认逻辑为随机排序

搜索条件字段说明

字段名 类型 说明 取值范围
app_id string 资源空间ID 长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。
device_id string 设备ID 长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。
gateway_id string 网关ID 长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。
product_id string 设备关联的产品ID 长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。
device_name string 设备名称 长度不超过256,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合符。
node_id string 设备标识码 长度不超过64,只允许字母、数字、下划线(_)、连接符(-)的组合
status string 设备的状态 ONLINE(在线)、OFFLINE(离线)、ABNORMAL(异常)、INACTIVE(未激活)、FROZEN(冻结)
node_type string 设备节点类型 GATEWAY(直连设备或网关)、ENDPOINT(非直连设备)
tag_key string 标签键 长度不超过64,只允许中文、字母、数字、以及_.-等字符的组合。
tag_value string 标签值 长度不超过128,只允许中文、字母、数字、以及_.-等字符的组合。
sw_version string 软件版本 长度不超过64,只允许字母、数字、下划线(_)、连接符(-)、英文点(.)的组合。
fw_version string 固件版本 长度不超过64,只允许字母、数字、下划线(_)、连接符(-)、英文点(.)的组合。
group_id string 群组Id 长度不超过36,十六进制字符串和连接符(-)的组合
create_time string 设备注册时间 格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z',如:2015-06-06T12:10:10.000Z
marker string 结果记录ID 长度为24的十六进制字符串,如ffffffffffffffffffffffff

支持的运算符

运算符 支持的字段
= 所有
!= 所有
> create_time、marker
< create_time、marker
like device_name、node_id、tag_key、tag_value
in 除tag_key、tag_value以外字段
not in 除tag_key、tag_value以外字段

SQL 限制

  • like: 只支持前缀匹配,不支持后缀匹配或者通配符匹配。前缀匹配不得少于4个字符,且不能包含任何特殊字符(只允许中文、字母、数字、下划线(_)、连接符(-)). 前缀后必须跟上"%"结尾。

  • 不支持除了count(*)/count(1)以外的其他任何函数。

  • 不支持其他SQL用法,如嵌套SQL、union、join、别名(Alias)等用法

  • SQL长度限制为400个字符,单个请求条件最大支持5个。

  • 不支持"null"和空字符串等条件值匹配

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v5/iot/{project_id}/search/query-devices

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数说明:项目ID。获取方法请参见 获取项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

String

参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考 查看实例详情

表3 请求Body参数

参数

是否必选

参数类型

描述

sql

String

搜索sql语句,具体使用方法见类SQL语法使用说明章节

最小长度:1

最大长度:400

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

devices

Array of SearchDevice objects

搜索设备结果列表。

count

Long

满足查询条件的记录总数(只有条件为select count(*)/count(1)时单独返回)。

表5 SearchDevice

参数

参数类型

描述

app_id

String

资源空间ID。

最大长度:36

app_name

String

资源空间名称。

device_id

String

设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。

最大长度:256

node_id

String

设备标识码,通常使用IMEI、MAC地址或Serial No作为node_id。

最大长度:64

gateway_id

String

网关ID,用于标识设备所属的父设备,即父设备的设备ID。当设备是直连设备时,gateway_id与设备的device_id一致。当设备是非直连设备时,gateway_id为设备所关联的父设备的device_id。

最大长度:256

device_name

String

设备名称。

最大长度:256

node_type

String

设备节点类型。

  • ENDPOINT:非直连设备。

  • GATEWAY:直连设备或网关。

  • UNKNOWN:未知。

fw_version

String

设备的固件版本。

最大长度:256

sw_version

String

设备的软件版本。

最大长度:256

device_sdk_version

String

设备的sdk信息。

最大长度:256

product_id

String

设备关联的产品ID,用于唯一标识一个产品模型。

product_name

String

设备关联的产品名称。

groups

Object

设备组列表。

status

String

设备的状态。

  • ONLINE:设备在线。

  • OFFLINE:设备离线。

  • ABNORMAL:设备异常。

  • INACTIVE:设备未激活。

  • FROZEN:设备冻结。

tags

Object

设备的标签列表。

marker

String

搜索结果记录Id。

请求示例

通过sql查询设备,查询所有设备。

POST https://{endpoint}/v5/iot/{project_id}/search/query-devices

{
  "sql" : "select * from device"
}

响应示例

状态码: 200

OK

{
  "devices" : [ {
    "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka",
    "marker" : "5c8f3d2d3df1f10d803adbda",
    "device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
    "node_id" : "ABC123456789",
    "gateway_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
    "device_name" : "dianadevice",
    "node_type" : "ENDPOINT",
    "fw_version" : "1.1.0",
    "sw_version" : "1.1.0",
    "device_sdk_version" : "1.1.0",
    "product_id" : "b640f4c203b7910fc3cbd446ed437cbd",
    "status" : "INACTIVE",
    "tags" : [ {
      "tag_key" : "testTagName",
      "tag_value" : "testTagValue"
    } ]
  } ]
}

状态码

状态码

描述

200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

500

Internal Server Error

错误码

请参见错误码