直连设备指设备自身配备有联网模块(如4G、5G、WIFI模组以及配置有网口的设备),可以通过互联网直接接入平台。
# 接入流程
使用设备认证通过返回的连接信息连接平台
连接成功后,按G+link协议规范与平台进行数据交互
# 设备与平台交互
- 假设设备定义的如模型如下
功能类型 | 功能名称 | 唯一标识 | 参数 | 描述 |
---|---|---|---|---|
属性 | 环境湿度 | humidity | float-单精度浮点 | 设备上报 |
属性 | 环境温度 | temperature | float-单精度浮点 | 设备上报 |
事件 | 温度超限 | temperature_overrun | 输出参数temperature、msg | 设备上报 |
服务 | 设置告警值 | set_alarm_value | 输入参数alarm_value | 设备接收云端 |
- 设备信息
ProductKey:dht22
DeviceName:sn202112280001
# 上报设备属性
向thing/dht22/sn202112280001/property/post主题发布如下消息:
{
"reqId":"442c1da4-9d3a-4f9b-a6e9-bfe858e4ac43",
"method":"thing.property.post",
"version":"1.0",
"timestamp":1610430718000,
"bindName":"MAIN",
"properties":{
"humidity":23.1,
"temperature":28.0
}
}
其中:
reqId为设备端自定义生成的消息唯一ID
method固定为thing.property.post
version为协议版本号,当前固定为1.0
timestamp为设备端生成的数据时间戳
bindName为槽位名称,默认为MAIN
properties为属性key:value格式的键值对
按此格式上报后如果设备开启了设备影子,可以在控制台查看设备属性数据是否更新,如已更新则标识上报成功,同时可以在日志服务中查看设备上报记录
# 上报设备事件
向thing/dht22/sn202112280001/event/post主题发布如下消息:
{
"reqId":"442c1da4-9d3a-4f9b-a6e9-bfe858e4ac43",
"method":"thing.event.post",
"version":"1.0",
"timestamp":1610430718000,
"bindName":"MAIN",
"events":{
"temperature_overrun":{
"temperature":38.5,
"msg":"环境温度超限,请开启空调"
}
}
}
其中:
reqId为设备端自定义生成的消息唯一ID
method固定为thing.event.post
version为协议版本号,当前固定为1.0
timestamp为设备端生成的数据时间戳
bindName为槽位名称,默认为MAIN
events为事件的事件名称和输出参数的key:value格式的键值对
按此格式上报后可以在控制台日志服务或设备详情页事件管理中查看设备上报事件记录
# 远程控制设备
平台服务端提供API接口,业务应用服务可以使用http方式调用接口向设备下发指令
请求设备服务,可参考《API参考>服务端>设备管理>发送消息到设备》章节
设备端订阅thing/dht22/sn202112280001/command/invoke主题可以接收到平台的控制指令消息:
{
"reqId":"442c1da4-9d3a-4f9b-a6e9-bfe858e4ac43",
"method":"thing.command.invoke",
"version":"1.0",
"timestamp":1610430718000,
"bindName":"MAIN",
"name":"set_alarm_value",
"params":{
"alarm_value":36
}
}
其中:
reqId为设备端自定义生成的消息唯一ID
method固定为thing.command.invoke
version为协议版本号,当前固定为1.0
timestamp为设备端生成的数据时间戳
bindName为槽位名称,默认为MAIN
name为设备定义的服务名称
params为服务的输入参数的key:value格式的键值对
设备接收到消息后,需设备端实现相应的控制逻辑
更多设备与平台交互逻辑请参考《开发者指南>设备管理>数据交互协议》章节