diff --git a/产品详情.txt b/产品详情.txt new file mode 100644 index 0000000..30b1107 --- /dev/null +++ b/产品详情.txt @@ -0,0 +1,71 @@ +接口地址 + +https://iot-api.heclouds.com/product/detail + +API说明 + +请求方式:GET + +http query 请求参数 + +参数名称 格式 是否必选 说明 +product_id string 是 产品ID +返回数据 + +参数名称 类型 描述 +code int 错误码,当为0时表示请求成功,取值见错误码说明表 +msg string 错误描述信息 +request_id string API请求链路id +data - 具体响应内容 +data.product_id string 产品id +data.access_protocol int 接入协议,取值见接入协议取值说明表 +data.data_protocol int 数据协议,取值见数据协议取值说明表 +data.name string 产品名称 +data.node_type string 节点类型,1-直连设备;2-网关设备;3-子设备 +data.create_time datetime 产品创建时间 +data.update_time datetime 最近修改时间 +data.network string 联网方式 +data.manufacturer string 产品厂商 +data.model string 产品型号 +data.brand string 产品品牌 +data.desc string 产品描述 +data.status int 开发状态 1-开发中;2-审核中;3-审核未通过;4-已发布;5-已下架 +data.own_device_count int 自有设备总数, 缓存时效为5分钟 +data.online_device_count int 在线设备总数, 缓存时效为5分钟 +data.offline_device_count int 离线设备数, 缓存时效为5分钟 +data.not_active_device_count int 未激活设备数, 缓存时效为5分钟 +data.query_time int64 查询时间(毫秒时间戳) +data.viot_app_id string 视频类产品返回,用于视频播放器sdk集成参数 +示例 + +请求示例: + +https://iot-api.heclouds.com/product/detail?product_id=123 +响应示例: + +{ + "code": 0, + "data": { + "product_id": "fupcJIVEuz", + "name": "MQTT-测试产品", + "node_type": 1, + "access_protocol": 2, + "data_protocol": 1, + "network": "2", + "manufacturer": "", + "model": "", + "brand": "", + "desc": "", + "create_time": "2024-08-20T08:43:05.915Z", + "update_time": "2024-08-20T08:43:56.346Z", + "status": 4, + "viot_app_id": "aaaaaaaaaaaaaaaaa", + "own_device_count": 1, //缓存时效为5分钟 + "online_device_count": 0,//缓存时效为5分钟 + "offline_device_count": 0,//缓存时效为5分钟 + "not_active_device_count": 1,//缓存时效为5分钟 + "query_time": 1732097555350 + }, + "msg": "succ", + "request_id": "b5ed8d0500994f1b8784101b3c8f73d7" +} \ No newline at end of file diff --git a/其他/物模型管理.txt b/其他/物模型管理.txt new file mode 100644 index 0000000..29c02b7 --- /dev/null +++ b/其他/物模型管理.txt @@ -0,0 +1,119 @@ +物模型查询 +最近更新时间:2024-02-21 16:47:03 +接口功能 +根据产品id查询指定产品下的物模型功能点 + +备注 +数据协议为OneJson的产品可查询 + +接口地址 +http(s)://iot-api.heclouds.com/thingmodel/query-thing-model + +API说明 +请求方式:GET + +http query 请求参数: + +参数 类型 是否必选 描述 +product_id string 是 产品id +返回数据 + +参数名称 类型 描述 +code int 调用失败时,返回的错误码 +msg string 调用失败时,返回的错误信息 +request_id string 调用API时生成的请求标识 +data.properties array 数组对象 属性功能点 +p.functionMode string 功能点类型,定值'property' +p.identifier string 属性唯一标识符(产品下唯一) +p.name string 属性名称 +p.desc string 属性描述 +p.accessMode string "属性读写类型:只读(r)或读写(rw) +p.functionType string 是否是标准功能点,自定义(u)/系统(s) +p.dataType object 属性功能点数据 +p.dataType.type string 属性类型: int32(32位整数)、int64(64位整数)、float(单精度浮点)、double(双精度浮点型)、string(字符串)、date(String类型UTC秒)、bool(true或false)、enum(int类型)、bitMap(位图)、date(int64类型UTC时间戳毫秒)、struct(结构体类型)、array(数组) +p.dataType.specs object 属性功能点数据 +data.events array 数组对象 事件功能点 +e.functionMode string 功能点类型,定值'event' +e.identifier string 事件唯一标识符 +e.name string 事件名称 +e.desc string 事件描述 +e.type string 事件类型(info、alert、error) +e.fuctionType string 是否是标准功能点,自定义(u)/标准(s) +e.outputData array 参数 +e.outputData.identifier string 参数唯一标识符 +e.outputData.name string 参数名称 +e.outputData.dataType object 参数数据 +e.outputData.dataType.type string 属性类型: int32(32位整数)、int64(64位整数)、float(单精度浮点)、double(双精度浮点型)、string(字符串)、date(String类型UTC秒)、bool(true或false)、enum(int类型)、bitMap(位图)、date(int64类型UTC时间戳毫秒)、struct(结构体类型)、array(数组) +services array 数组对象 服务功能点 +s.functionMode string 功能点类型,定值'service' +s.identifier string 服务唯一标识符(产品下唯一) +s.name string 服务名称 +s.desc string 服务描述 +s.callType string 调用方式,同步(s)/异步(a) +s.fuctionType string 功能点类型,自定义(u)/系统(s) +s.input array 输入参数 +s.input.identifier string 参数唯一标识符 +s.input.name string 参数名称 +s.input.dataType object 参数数 +s.input.dataType.type string 属性类型: int32(32位整数)、int64(64位整数)、float(单精度浮点)、double(双精度浮点型)、string(字符串)、bool(true或false)、enum(int类型)、bitMap(位图)、date(int64类型UTC时间戳毫秒)、struct(结构体类型)、array(数组) +s.input.dataType.specs object 参数功能点数据 +s.output array 输出参数 +s.output.identifier string 参数唯一标识符 +s.output.name string 参数名称 +s.output.dataType object 参数数据 +s.output.dataType.type string 属性类型: int32(32位整数)、int64(64位整数)、float(单精度浮点)、double(双精度浮点型)、string(字符串)、bool(true或false)、enum(int类型)、bitMap(位图)、date(int64类型UTC时间戳毫秒)、struct(结构体类型)、array(数组) +s.output.dataType.specs object 参数功能点数据 +示例 +请求示例 + +GET http(s)://iot-api.heclouds.com/thingmodel/query-thing-model?product_id=xxx + +响应示例 + +{ + "data": { + "properties": [ + { + "name": "模式", + "identifier": "model", + "functionType": "u", + "functionMode": "property", + "desc": "", + "accessMode": "rw", + "dataType": { + "type": "enum", + "specs": { + "1": "模式1", + "2": "模式2" + } + } + } + ], + "events": [ + { + "name": "test", + "identifier": "test", + "functionType": "u", + "functionMode": "event", + "desc": null, + "eventType": "info", + "outputData": [ + { + "dataType": { + "type": "bool", + "specs": { + "false": "关", + "true": "开" + } + }, + "name": "开关", + "identifier": "switch" + } + ] + } + ] + }, + "request_id": "a25087f46df04b69b29e90ef0acfd115", + "msg": "succ", + "code": 0 +} diff --git a/其他/设备属性.txt b/其他/设备属性.txt new file mode 100644 index 0000000..b92d3bd --- /dev/null +++ b/其他/设备属性.txt @@ -0,0 +1,49 @@ +获取设备属性详情 +最近更新时间:2026-01-16 16:47:29 +接口功能 +根据产品ID和设备名,下发物模型属性获取命令到设备,设备返回属性值到接口 + +备注 +仅支持OneJson设备,需要设备在线 + +接口地址 +https://iot-api.heclouds.com/thingmodel/query-device-property-detail + +API说明 +请求方式:POST + +http body 请求参数: + +参数 类型 是否必选 描述 +product_id string 是 产品ID,平台生成唯一ID +device_name string 是 设备名称 +params array 是 功能点标识数组,expample: ["light","model"] +返回数据 + +参数名称 类型 描述 +code int 调用成功或失败时,返回的code码 +msg string 调用成功或失败时,返回的msg信息 +request_id string 调用API生成的请求标识 +data - 调用成功时,返回的业务数据 +示例 +请求示例 + +POST http(s)://iot-api.heclouds.com/thingmodel/query-device-property-detail +Content-type: application/json +{ + "product_id":"B7EEW578EbRg5Y4K", + "device_name":"device3", + "params":["light","model"] +} + +响应示例 + +{ + "request_id": "a25087f46df04b69b29e90ef0acfd115", + "msg": "succ", + "code": 0, + "data":{ + "light":1, + "model":1 + } +} diff --git a/其他/设备属性最新数据查询.txt b/其他/设备属性最新数据查询.txt new file mode 100644 index 0000000..6dc9d48 --- /dev/null +++ b/其他/设备属性最新数据查询.txt @@ -0,0 +1,76 @@ +设备属性最新数据查询 +最近更新时间:2026-01-16 16:47:29 +接口功能 +根据产品id和设备名,查询设备最新属性功能点数据 + +备注 +支持OneJson、自定义透传数据协议,设备能正常下发上报 + +接口地址 +https://iot-api.heclouds.com/thingmodel/query-device-property + +API说明 +请求方式:GET + +http query 请求参数: + +参数 类型 是否必选 描述 +product_id string 是 产品ID,平台生成唯一ID +device_name string 是 设备名称 +返回数据 + +参数名称 类型 描述 +code int 调用成功或失败时,返回的code码 +msg string 调用成功或失败时,返回的msg信息 +request_id string 调用API生成的请求标识 +data - 调用成功时,返回的业务数据 +data.list array 设备属性数据集合 +data.list字段结构 + +[ + { + "identifier": string, # 功能点标识 + "time": string, # 上报时间,毫秒时间戳 + "value": string, # 功能点上报值,json字符串 + "data_type": string, # 数据类型 int32、int64、float、double、enum、bool、string、struct、bitMap + "access_mode": string, # 读写类型 + "expect_value": string, # 期望值, json字符串,属性功能点具有该字段 + "name": string, # 功能点名称 + "description": string, # 功能描述 + } +] +示例 +请求示例 + +GET http(s)://iot-api.heclouds.com/thingmodel/query-device-property +?product_id=9MaNe52pNO&device_name=no001 + +响应示例 + +{ + "data":[ + { + "access_mode": "读写", + "data_type": "int32", + "description": "二氧化碳", + "expect_value": "800", + "identifier": "CO2", + "name": "二氧化碳", + "time": "1592797444539", + "value": "600" + }, + { + "access_mode": "读写", + "data_type": "bool", + "description": "关", + "expect_value": "true", + "identifier": "fan", + "name": "风扇", + "time": "1592797444539", + "value": "false" + } + ], + "request_id": "a25087f46df04b69b29e90ef0acfd115", + "msg": "succ", + "code": 0 +} \ No newline at end of file diff --git a/其他/设备属性记录查询.txt b/其他/设备属性记录查询.txt new file mode 100644 index 0000000..6b92c4e --- /dev/null +++ b/其他/设备属性记录查询.txt @@ -0,0 +1,64 @@ +设备属性记录查询 +最近更新时间:2026-01-16 16:47:29 +接口功能 +根据产品id设备名称时间范围等参数,查询设备属性历史功能点数据 + +备注 +支持OneJson、自定义透传数据协议,设备能正常下发上报 + +接口地址 +https://iot-api.heclouds.com/thingmodel/query-device-property-history + +API说明 +请求方式:GET + +http query 请求参数: + +参数 类型 是否必选 描述 +product_id string 是 产品ID,平台生成唯一ID +device_name string 是 设备名称 +identifier string 是 属性功能点标识 +start_time string 是 查询起始时间,毫秒时间戳 +end_time string 是 查询结束时间,毫秒时间戳 +sort string 否 排序参数 1-正序 2-倒序 默认倒叙 +offset string 否 请求起始位置,默认0 +limit string 否 每次请求记录数,默认10, 范围[1, 100] +返回数据 + +参数名称 类型 描述 +code int 调用成功或失败时,返回的code码 +msg string 调用成功或失败时,返回的msg信息 +request_id string 调用API生成的请求标识 +data - 调用成功时,返回的业务数据 +data.list array 设备属性数据集合 +data.list字段结构 + +[ + { + "value": string, # 属性功能点上报值 + "time": int, # 属性功能点上报时间 + } +] +示例 +请求示例 + +GET http(s)://iot-api.heclouds.com/thingmodel/query-device-property-history +?product_id=9MaNe52pNO&device_name=no001&identifier=someDate&start_time=1681713647000&end_time=1681799966562 + +响应示例 + +{ + "data": [ + { + "time": "1592810751988", + "value": "false" + }, + { + "time": "1592810746988", + "value": "true" + } + ], + "request_id": "a25087f46df04b69b29e90ef0acfd115", + "msg": "succ", + "code": 0 +} diff --git a/查询设备数据点.txt b/查询设备数据点.txt new file mode 100644 index 0000000..655fff6 --- /dev/null +++ b/查询设备数据点.txt @@ -0,0 +1,90 @@ +查询设备数据点 +最近更新时间:2026-01-16 16:47:29 +接口功能 +根据产品id和设备名称查询,时间范围参数,查询设备历史数据点信息 + +备注 +仅支持数据流、IPSO数据协议,设备能正常下发上报 + +接口地址 +http(s)://iot-api.heclouds.com/datapoint/history-datapoints + +API说明 +请求方式:GET + +http query 请求参数: + +参数 类型 是否必选 描述 +datastream_id string 否 数据流ID,多个id之间用逗号分开,缺省时取数据流或数据流模板100条为缺省数据流id条件 +product_id string 是 产品ID,平台生成唯一ID +device_name string 是 设备名称 +imei string 否 lwm2m协议时传,设备imei +start string 否 提取数据点的开始时间,精确到秒,示例:2015-01-10T08:00:35 +end string 否 提取数据点的结束时间,精确到秒,示例:2015-01-10T08:00:35 +duration int 否 查询时间区间,单位为秒 +limit int 否 限定本次请求最多返回的数据点数,默认100,范围为(0,6000] +cursor string 否 指定本次请求继续从cursor位置开始提取数据 +sort enum 否 时间排序方式,DESC:倒序,ASC:升序,默认为DESC +返回数据 + +参数名称 类型 描述 +code int 调用成功或失败时,返回的code码 +msg string 调用成功或失败时,返回的msg信息 +request_id string 调用API生成的请求标识 +data - 调用成功时,返回的业务数据 +data.count int 本次返回的数据点数量 +data.cursor string 本次请求若未能返回所有数据,则会返回cursor参数,用户可以携带cursor参数进行再次请求,获取剩下的数据 +data.datastreams array-json 设备数据流信息的json数组,见datastreams描述 +datastreams描述表 + +参数名称 格式 说明 +id string 数据流名称 +datapoints array-json 数据点信息的json数组,见datapoints描述表 +datapoints描述表 + +参数名称 格式 说明 +at string 数据记录时间 +value string/int/json... 数据点的值 +特别说明 + +当start,end时间均为空 +i) limit +不传值或传值等于1时:排序为升序则查询最早一个数据点(30天内),否则查询最新数据点(最新缓存数据) + +ii) limit +传值大于1时:排序为升序则查询最早x条数据点,否则查询最新x条数据点(30天内,x=limit) + +示例 +请求示例 + +GET http(s)://iot-api.heclouds.com/datapoint/history-datapoints +?product_id=XhONWQ5zV5&device_name=mqtts-dev&datastream_id=ds&start=2017-01-01T00:00:00&limit=100 +响应示例 + +{ + "data":{ + "cursor":"25971_564280_1448961152173", + "count":5, + "datastreams":[ + { + "datapoints":[ + { + "at":"2015-12-01 17:10:24.981", + "value":"35" + }, + { + "at":"2015-12-01 17:10:53.406", + "value":"38" + }, + ... + ], + "id":"3200_0_5501" + }, + ... + ] + }, + "request_id": "a25087f46df04b69b29e90ef0acfd115", + "msg": "succ", + "code": 0 +} + diff --git a/查询设备详情.txt b/查询设备详情.txt new file mode 100644 index 0000000..c0c4ae4 --- /dev/null +++ b/查询设备详情.txt @@ -0,0 +1,128 @@ +设备详情 +最近更新时间:2026-03-30 09:58:43 +接口说明 +查询平台上已注册设备的详细信息 + +接口地址 +https://iot-api.heclouds.com/device/detail + +API 说明 +请求方式:GET + +httpquery 请求参数 + +参数名称 格式 是否必选 说明 +product_id string 产品 id+设备名称、imei 二选一必填 产品 ID +device_name string 产品 id+设备名称、imei 二选一必填 设备名称 +imei string 产品 id+设备名称、imei 二选一必填 设备 imei(当设备来自于老平台下 NB 套件产品时,imei 必填,且 device_name 应当为空) +返回数据 + +参数名称 类型 描述 +code int 错误码,当为 0 时表示请求成功,取值见错误码说明表 +msg string 错误描述信息 +request_id string API 请求链路 id +data - 具体响应内容 +data.did int/string 设备 id +data.pid string 产品 id +data.access_pt int 接入协议,取值见接入协议取值说明表 +data.data_pt int 数据协议,取值见数据协议取值说明表 +data.name string 设备名称 +data.desc string 设备描述 +data.auth_info --- --- +data.status int 设备状态,0-离线,1-在线,2-未激活 +data.create_time datetime 设备创建时间 +data.activate_time datetime 设备激活时间 +data.last_time datetime 设备最后一次在线时间 +data.sec_key string 设备接入鉴权 key +data.imei string LwM2M 设备 imei +data.imsi string LwM2M 设备 imsi +data.psk string LwM2M 设备 psk +data.auth_code string LwM2M 设备 auth_code +data.intelligent_way int 产品智能化方式,1-设备接入、2-产品智能化 +data.group_id string 设备分组 id +data.enable_status bool 设备启用状态 +data.tags string-array 设备标签列表 +data.lon string 经度 +data.lat string 纬度 +data.chip --- --- +data.obsv bool 设备资源自动订阅是否启用 +data.obsv_st bool 设备资源自动订阅状态 +data.private bool 设备私密性 +data.imsi_old string-array 设备 imsi 历史变更记录 +data.imsi_mt datetime 设备 imsi 最近一次修改时间 +视联网设备时返回以下字段 +data.viot_device_sn string 视频设备编码,视联网设备返回 +data.viot_protocol int 视频设备接入协议,视联网设备返回 +1-GB28181 协议 +2-千里眼协议 +data.viot_device_type int 视频设备设备类型,视联网设备返回 +1-IPC +2-NVR +视联网国标协议设备时返回 +data.viot_sip_server_id string SIP 服务器 ID,国标摄像头设备返回 +data.viot_sip_server_domain string SIP 服务器域,国标摄像头设备返回 +data.viot_sip_server_ip string SIP 服务器 IP,国标摄像头设备返回 +data.viot_sip_server_port string SIP 服务器端口,国标摄像头设备返回 +data.viot_login_name string 登录用户名,国标摄像头设备返回 +data.viot_login_pwd string 登录密码,国标摄像头设备返回 +视联网千里眼协议设备时返回 +data.viot_module_id string 设备 modelId,如:cmiot_E4702_002 +data.viot_camera_app_version string 软件版本,如:2.860.20250512 +data.viot_firmware_version string 固件版本,如:2.860.20250512 +data.viot_imei string 千里眼设备 imei(cmei),如:119094672043670 +机卡协同设备上报数据,设备上报后返回 +data.up_iccid string 设备上报的iccid,如:898604310000000000 +data.up_msisdn string 设备上报的msisdn,如:+8613800000000 +data.up_sn string 设备上报的sn +data.up_imei string 设备上报的imei,如:119094672043670 +data.up_imsi string 设备上报的imsi,如:460010000000000 +data.up_mac string 设备上报的mac,如:08:00:27:01:02:03 +data.up_network int 设备上报的网络类型,0-非蜂窝网, 1-移动,2-电信,3-联通,4-广电 +示例 +请求示例: + +GET https://iot-api.heclouds.com/device/detail?product_id=123&device_name=dname +响应示例: + +{ + "code": 0, + "data": { + "did": 2502614722, + "pid": "FUSZT1w5t2", + "access_pt": 51, + "auth_info": "e02efee79b5a-pro", + "data_pt": 3, + "name": "e02efee79b5a-pro", + "desc": "", + "status": 1, + "create_time": "2025-11-28T09:49:00.613+08:00", + "activate_time": "2025-12-01T15:38:51.073+08:00", + "last_time": "2025-12-01T15:38:51.073+08:00", + "imsi": "", + "imei": "", + "psk": "", + "group_id": "", + "enable_status": true, + "tags": [], + "lat": "", + "lon": "", + "auth_code": "", + "sec_key": "", + "chip": 0, + "obsv": false, + "obsv_st": false, + "private": false, + "imsi_old": [], + "imsi_mt": "0001-01-01T08:05:43+08:05", + "intelligent_way": 1, + "viot_device_sn": "e02efee79b5a", + "viot_protocol": 2, + "viot_device_type": 1, + "viot_module_id": "cmiot_E4702_002", + "viot_camera_app_version": "2.860.20250512", + "viot_firmware_version": "2.860.20250512", + "viot_imei": "119094672043670" + }, + "msg": "succ", + "request_id": "a3d0de892827437b9ad2aa9e6754fb40" +} \ No newline at end of file diff --git a/设备事件记录查询.txt b/设备事件记录查询.txt new file mode 100644 index 0000000..cadbfa9 --- /dev/null +++ b/设备事件记录查询.txt @@ -0,0 +1,71 @@ +设备事件记录查询 +最近更新时间:2025-07-02 10:27:26 +接口说明 +查询设备的事件记录 + +接口地址 +https://iot-api.heclouds.com/device/event-log + +API说明 +请求方式:GET + +http query 请求参数: + +参数名称 格式 是否必选 说明 +product_id string 产品id+设备名称、imei二选一必填 产品ID +device_name string 产品id+设备名称、imei二选一必填 设备名称 +imei string 产品id+设备名称、imei二选一必填 设备imei (当设备来自于老平台下NB套件产品时,imei必填,且device_name应当为空) +start_time long 是 查询起始时间-毫秒时间戳 +end_time long 是 查询截止时间-毫秒时间戳 +identifier string 否 事件功能点标识 +event_type int 否 事件类型,1-信息,2-告警,3-故障 +offset int 否 请求起始位置,默认0 +limit int 否 每次请求记录数,默认10,范围[1,100] +返回数据 + +参数名称 类型 描述 +code int 错误码,当为0时表示请求成功,取值见错误码说明表 +msg string 错误描述信息 +request_id string API请求链路id +data - 具体响应内容 +data.list Object-array 设备事件记录列表 +data.list[0].event_type int 事件类型,1-信息,2-告警,3-故障 +data.list[0].time long 设备事件上报时间戳 +data.list[0].identifier string 事件功能点标识 +data.list[0].name string 事件名称 +data.list[0].value string 事件值 +data.limit string 本次请求记录数上限 +data.offset string 本次请求起始位置 +示例 +请求示例: + +GET https://iot-api.heclouds.com/device/event-log? +imei=1234512345&start_time=1592398420000&end_time=1592398421297 + +响应示例: + +{ + "code": 0, + "data": { + "list": [ + { + "event_type": 1, + "identifier": "lock_event", + "name": "lock_event", + "time": 1592814341051, + "value": "{\"type\":1, \"user\":27010}" + }, + { + "event_type": 1, + "identifier": "lock_event", + "name": "lock_event", + "time": 1592814336050, + "value": "{\"type\":2, \"user\":27010}" + } + ], + "limit": 10, + "offset": 0 + }, + "msg": "succ", + "request_id": "a25ffffddsfddb69b29e90ef0acfd115" +} diff --git a/设备列表.txt b/设备列表.txt new file mode 100644 index 0000000..68add67 --- /dev/null +++ b/设备列表.txt @@ -0,0 +1,102 @@ +设备列表 +最近更新时间:2025-12-22 10:38:50 +接口说明 +用于查询产品下的设备列表,支持通过设备名称左前缀模糊匹配。 + +接口地址 +https://iot-api.heclouds.com/device/list + +API说明 +请求方式:GET + +http query 请求参数 + +参数名称 格式 是否必选 说明 +product_id string 是 产品ID +device_name string 否 设备名称(左前缀模糊匹配) +offset int 否 查询起始下标,默认为0 +limit int 否 单次查询数量限额,默认为10,最大为100 +返回数据 + +参数名称 类型 描述 +code int 错误码,当为0时表示请求成功,取值见错误码说明表 +msg string 错误描述信息 +request_id string API请求链路id +data - 具体响应内容 +data.list[0].did int/string 设备id +data.list[0].pid string 产品id +data.list[0].access_pt int 接入协议,取值见接入协议取值说明表 +data.list[0].data_pt int 数据协议,取值见数据协议取值说明表 +data.list[0].name string 设备名称 +data.list[0].desc string 设备描述 +data.list[0].status int 设备状态,0-离线,1-在线,2-未激活 +data.list[0].create_time datetime 设备创建时间 +data.list[0].activate_time datetime 设备激活时间 +data.list[0].last_time datetime 设备最后一次在线时间 +data.list[0].sec_key string 设备接入鉴权key +data.list[0].imei string LwM2M设备imei +data.list[0].imsi string LwM2M设备imsi +data.list[0].psk string LwM2M设备psk +data.list[0].auth_code string LwM2M设备auth_code +data.list[0].intelligent_way int 产品智能化方式,1-设备接入、2-产品智能化 +data.list[0].group_id string 设备分组id +data.list[0].enable_status bool 设备启用状态 +data.list[0].lon string 经度 +data.list[0].lat string 纬度 +data.list[0].obsv bool 设备资源自动订阅是否启用 +data.list[0].obsv_st bool 设备资源自动订阅状态 +data.list[0].private bool 设备私密性 +data.list[0].imsi_old string-array 设备imsi历史变更记录 +data.list[0].imsi_mt datetime 设备imsi最近一次修改时间 +data.list[0].viot_device_sn string 移动视联网设备返回唯一标识 +data.list[0].viot_protocol int 移动视联网设备返回接入协议 +1-GB28181协议 +2-千里眼协议 +data.offset int 查询起始下标 +data.limit int 单次查询数量限额 +示例 +请求示例: + +GET https://iot-api.heclouds.com/device/list?product_id=43770&device_name=&offset=0&limit=10 +响应示例: + +{ + "code": 0, + "data":{ + "list":[{ + "did": 500006387, + "pid": "43770", + "access_pt": 4, //2-MQTT,4-LwM2M + "data_pt": 2, + "name": "nb4", + "desc": "", + "auth_info": { + "177393918128741": "222222" + }, + "status": 2,//0-离线;1-在线;2-未激活 + "create_time": "2022-07-13T09:19:53.873+08:00", + "activate_time": "0001-01-01T08:00:00+08:00", + "last_connect_time": "0001-01-01T00:00:00Z", + "imsi": "222222", + "imei": "177393918128741", + "psk": "BpLnfgDsc3WD9F3q", + "group_id": "", + "enable_status": true, + "Lat": "29.500816495765097", + "Lon": "106.69984891483458", + "auth_code": "", + "sec_key": "TmZISzZhOTVqakprd3pEa2gwaDNmaGZVVnVTMGpaOXU=", + "chip": 0, + "obsv": true, + "obsv_st": false, + "private": false, + "imsi_old": [], + "imsi_mt": "0001-01-01T08:00:00+08:00", + "intelligent_way": 1 + }], + "limit":10, + "offset":0 + } + "msg": "succ", + "requestId": "a25087f46dfddb69b29e90ef0acfd115" +} diff --git a/鉴权算法.txt b/鉴权算法.txt new file mode 100644 index 0000000..0cc55b8 --- /dev/null +++ b/鉴权算法.txt @@ -0,0 +1,70 @@ +1.鉴权算法,我的userId:459810,appkey:3BeJti9supdvX4K+n/98Osx7Zmadd4ze9qR+EfXAfoQWiMXvqksrU0VDUZa7tDUQ +Java代码示例 + import javax.crypto.Mac; + import javax.crypto.spec.SecretKeySpec; + import java.io.UnsupportedEncodingException; + import java.net.URLEncoder; + import java.security.InvalidKeyException; + import java.security.NoSuchAlgorithmException; + import java.util.Base64; + + + public class Token { + + public static String assembleToken(String version, String resourceName, String expirationTime, String signatureMethod, String accessKey) + throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException { + StringBuilder sb = new StringBuilder(); + String res = URLEncoder.encode(resourceName, "UTF-8"); + String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime, accessKey, signatureMethod), "UTF-8"); + sb.append("version=") + .append(version) + .append("&res=") + .append(res) + .append("&et=") + .append(expirationTime) + .append("&method=") + .append(signatureMethod) + .append("&sign=") + .append(sig); + return sb.toString(); + } + + public static String generatorSignature(String version, String resourceName, String expirationTime, String accessKey, String signatureMethod) + throws NoSuchAlgorithmException, InvalidKeyException { + String encryptText = expirationTime + "\n" + signatureMethod + "\n" + resourceName + "\n" + version; + String signature; + byte[] bytes = HmacEncrypt(encryptText, accessKey, signatureMethod); + signature = Base64.getEncoder().encodeToString(bytes); + return signature; + } + + public static byte[] HmacEncrypt(String data, String key, String signatureMethod) + throws NoSuchAlgorithmException, InvalidKeyException { + //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 + SecretKeySpec signinKey = null; + signinKey = new SecretKeySpec(Base64.getDecoder().decode(key), + "Hmac" + signatureMethod.toUpperCase()); + //生成一个指定 Mac 算法 的 Mac 对象 + Mac mac = null; + mac = Mac.getInstance("Hmac" + signatureMethod.toUpperCase()); + //用给定密钥初始化 Mac 对象 + mac.init(signinKey); + //完成 Mac 操作 + return mac.doFinal(data.getBytes()); + } + + public enum SignatureMethod { + SHA1, MD5, SHA256; + } + + public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException { + String version = "2022-05-01"; + String resourceName = "userid/12321"; + //用户自定义token过期时间 + String expirationTime = System.currentTimeMillis() / 1000 + 3600 + ""; + String signatureMethod = SignatureMethod.SHA1.name().toLowerCase(); + String accessKey = "KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw="; + String token = assembleToken(version, resourceName, expirationTime, signatureMethod, accessKey); + System.out.println("Authorization:" + token); + } + } \ No newline at end of file