作者:俏巴
概述
物联网平台提供设备影子功能,用于缓存设备状态。设备在线时,可以直接获取云端指令;设备离线时,上线后可以主动拉取云端指令。设备影子是一个 JSON 文档,用于存储设备上报状态、应用程序期望状态信息。每个设备有且只有一个设备影子,设备可以通过MQTT获取和设置设备影子来同步状态,该同步可以是影子同步给设备,也可以是设备同步给影子。本文使用MQTT.fx工具快速测试设备影子的相关功能。
实验测试
设备影子Topic
物联网平台已为每个设备预定义了两个Topic,用于实现数据流转,可以直接使用。
- /shadow/update/${YourProductKey}/${YourDeviceName}
设备和应用程序发布消息到此Topic。物联网平台收到该Topic的消息后,将消息中的状态更新到设备影子中。 - /shadow/get/${YourProductKey}/${YourDeviceName}
设备影子更新状态到该Topic,设备订阅此Topic获取最新消息。
测试工具
这里使用MQTT.fx验证测试相关功能,关于MQTT.fx连接阿里云物联网平台,参考:使用MQTT.fx接入物联网平台
一、设备主动上报状态
二、应用程序改变设备状态
使用Open API Exployer调用UpdateDeviceShadow接口。
三、设备主动获取影子内容
四、设备主动删除影子属性
五、注意
1、主动更新版本号时,设备影子会检查请求中的version值是否大于当前版本号;
2、version参数为long型。为防止参数溢出,您可以手动传入-1将版本号重置;
3、删除操作也要求版本号大于当前的版本号。