<meta name="source" content="lake">
簡介: IoT物聯網平臺「設備影子」開發實戰
IoT物聯網平臺提供設備影子功能,在雲端通過一個JSON文件持久化存儲設備上報狀態值和業務系統的期望值。每個設備有且只有一個設備影子,設備可以通過MQTT協議獲取期望值desired和設置設備****狀態reported,業務系統通過HTTPS協議獲取設備狀態reported和設置設備期望值desired。
設備可以主動上報運行狀態,業務系統可以隨時讀取,而不需要關心設備是否在線。
當雲端業務系統給指定設備設置期望值後,如果設備在線,可以實時接收雲端期望值變更;設備離線,再次上線可以主動拉取雲端期望值。
設備影子通信的兩個Topic:
設備影子 JSON
在 IoT物聯網平臺控制檯,設備詳情,可以查看設備影子,默認影子JSON數據,如下圖:
1.更新設備狀態 reported
IoT 物聯網設備可以主動更新當前狀態數據到雲端設備影子的(reported)節點中,通信報文,示例如下:
成功更新雲端設備影子後,設備端會收到雲端下發的響應報文,如下:
我們在IoT物聯網控制檯,設備詳情的設備影子中,可以查看完整的設備影子JSON文件,如下圖
2.獲取設備狀態 reported
業務系統可以通過調用設備影子的GetDeviceShadow API,獲取到設備狀態數據(reported),示例代碼如下(Node.js):
返回結果如下,其中 ShadowMessage 爲設備影子JSON的字符串形式,如下圖:
3.設置設備期望值 desired
業務系統調用UpdateDeviceShadow API,可以給設備設置期望值(desired),代碼示例如下(Node.js):
設置成功後,我們在IoT物聯網控制檯,設備詳情的設備影子中,可以查看最新影子文件,如下圖:
與此同時,在線的設備會實時收到設備影子消息推送,內容如下:
離線的設備,再次上線時,可以主動獲取設備影子
雲端回覆設備影子消息推送,內容如下:
4.刪除設備影子
設備可以主動刪除設備影子屬性,其中method爲delete,要刪除的屬性的值爲null。
刪除成功後,我們在控制檯查看設備影子如下圖:
設備上報時,將reported設置爲null,可以刪除全部屬性的值。
刪除成功後,我們在控制檯查看設備影子如下圖:
5.增量delta和規則引擎事件
阿里雲IoT物聯網平臺的設備影子不支持增量delta推送,設備更新影子狀態後也不會觸發規則引擎流轉消息事件,業務系統無法實時感知設備狀態(reported)變化。
往期推薦
<u>1、39張傳感器工作原理GIF圖</u>
<u>4、IoT物聯網平臺日誌服務詳解</u>
<u>6、工業Modbus電力104規約接入IoT平臺</u>
<u>8、IoT+TSDB+Quick BI 搭建樓宇環境監控</u>
<u>9、JS全棧開發,構建智能家居小程序</u>