传送门:5个视频讲解,30个场景案例汇总
IoT物联网平台提供设备影子功能,在云端通过一个JSON文件持久化存储设备上报状态值和业务系统的期望值。每个设备有且只有一个设备影子,设备可以通过MQTT协议获取期望值desired和设置设备状态reported,业务系统通过HTTPS协议获取设备状态reported和设置设备期望值desired。
- 设备可以主动上报运行状态,业务系统可以随时读取,而不需要关心设备是否在线。
- 当云端业务系统给指定设备设置期望值后,如果设备在线,可以实时接收云端期望值变更;设备离线,再次上线可以主动拉取云端期望值。
设备影子通信的两个Topic:
设备影子 JSON
在 IoT物联网平台控制台,设备详情,可以查看设备影子,默认影子JSON数据,如下图:
1.更新设备状态 reported
IoT 物联网设备可以主动更新当前状态数据到云端设备影子的(reported)节点中,通信报文,示例如下:
成功更新云端设备影子后,设备端会收到云端下发的响应报文,如下:
Topic:
/shadow/get/tproductkey/deviceName
Pay1oad:
rep1y",
method"
"payload":f
status":
success",
version":1
子,
"null",
"clientToken"
"timestamp":
我们在IoT物联网控制台,设备详情的设备影子中,可以查看完整的设备影子JSON文件,如下图
百阿里云
华东2(上海)
搜索文档,控制台,API,解决方案和资源
设备
物联网平台
设备管理
设备详情
IH11
在线
设备管理
产品
智能灯查看
DeviceSecret
产品
L:4复制
Productkey
设备
设备影子
文件管理
物模型数据
日志服务
设备信息
Topic列表
在线调试
分组
更新影子
任务
1E:06
CA证书
最近更新时间:20:
规则引擎
"state":?
mLorcoW
"reported":
监控运维
Switch":"on"
Color":"Red",
"Low"
"LightIntensity":
设备划归
数据分析
"metadata":
"reported":
"Switch":
11
视频服务
12
"timestamp":1615443246
13
子,
"color":
14
文档与工具
"timestamp":1615443246
15
16
"LightIntensity"
17
"timestamp":1615443246
18
19
2.获取设备状态 reported
业务系统可以通过调用设备影子的GetDeviceShadow API,获取到设备状态数据(reported),示例代码如下(Node.js):
返回结果如下,其中 ShadowMessage 为设备影子JSON的字符串形式,如下图:
日
.4F",
"ReguestId":"5C503
"Success":true,
"ShadowMescage":""ctate".Yrenortend"
age
"Red""LightIntensity""Low
"Color
de
'Switch":"'on"'
sired:0''metadata
reported"et"'switch"
["timestamp":1/
"Color":
["timestamp":1:
,"Lightintensity":
,"desired":
L"timestamp":11
l,"timestamp"
19,"version":1"
3.设置设备期望值 desired
业务系统调用UpdateDeviceShadow API,可以给设备设置期望值(desired),代码示例如下(Node.js):
设置成功后,我们在IoT物联网控制台,设备详情的设备影子中,可以查看最新影子文件,如下图:
百阿里云
搜索文档,控制台,API,解决方案和资
华东2
(上海)
物联网平台设备管理设备
设备详情
血i
<i
在线
设备管理
智能灯查看
产品
DeviceSecret
产品
复制
Productkey
设备
设备影子
日志服务
文件管理
物模型数据
分组
在线调试
设备信息
Topic列表
分组
更新影子
任务
CA证书
最近更新时间:2021/L.26
规则引擎
"state":0
"reported":
寸L100g
监控运维
"Switch":"on",
"Color":"Red",
"LightIntensity""Low"
设备划归
desired
"Color":"Green",
数据分析
"LightIntensity":
"high"
E
视频服务
"metadata":
13
"reported":
文档与工具
"'Switch":
15
福
"timestamp":
"color":
timestamp"
与此同时,在线的设备会实时收到设备影子消息推送,内容如下:
control",
"method":"'c
"payload":O
"state":o
"desired":o
"Color
"Green"
"LightIntensity:high
"reported":O
"Switch":"on",
"color":"Red"',
"LightIntensity""Low
"metadata":oobjectf..]
H,
"timestamp":1
"version":2
离线的设备,再次上线时,可以主动获取设备影子
云端回复设备影子消息推送,内容如下:
4.删除设备影子
设备可以主动删除设备影子属性,其中method为delete,要删除的属性的值为null。
删除成功后,我们在控制台查看设备影子如下图:
设备上报时,将reported设置为null,可以删除全部属性的值。
删除成功后,我们在控制台查看设备影子如下图:
5.增量delta和规则引擎事件
阿里云IoT物联网平台的设备影子不支持增量delta推送,设备更新影子状态后也不会触发规则引擎流转消息事件,业务系统无法实时感知设备状态(reported)变化。