對于一些位于偏遠環境的設備,可以遠程配置或控制設備顯得尤為重要。ZWS云從設計之初就充分考慮了這一需求,支持云端遠程下發命令給設備。
?介紹
ZWS云平臺是致遠電子研發的通用物聯網云平臺,提供多種不同物聯網云服務,為設備廠商提供上云服務,支持對廠商不同種類設備的數據采集和分析。
物聯網的設備有千萬種,不同的設備有著不同的控制命令,比如“開關燈”,“時間同步”,“文件召回”等。ZWS云針對這些不同命令做了歸并分類,可以分為三種:
- 通用命令:所有接入ZWS云都需要支持的命令,例如文件召回,固件升級等。
- 透傳命令:命令下發過程不經平臺校驗,只做透傳的命令。
- 差異化命令:設備類型自己跟其他設備類型不同的命令。
對于這三種命令,雖然他們分類不一樣,但他們下發的流程是差不多的,都是先在云端定義好命令的格式,然后再下發給設備,設備收到命令后進行命令的響應操作。具體流程如下圖所示:
?定義命令
定義命令是設備建模的一部分,可在功能塊中定義命令字段。對于通用命令和透傳命令,ZWS云平臺已經在common_fn功能塊進行了定義,用戶可以直接使用,不需要重復定義。這兩種命令定義如下所示:
對于第三種差異化命令,這個是由用戶自定義的,用戶可以在自定義設備類型的功能塊下添加自己差異化的命令,如下圖:
說明:自定義命令如果需要設備響應必須配置以下兩個字段:
cmdid: 命令id,用于關聯響應結果;
mtype: 消息類型,命令類型的消息此字段值固定是2。
差異化命令,用戶除了可以在功能塊里面添加自己的命令實現命令下發的需求,還可以復用通用功能塊的set_config命令配置。用戶只需要把自己的命令參數放到set_config命令的cfg_info字段里進行下發,設備收到該命令后進行響應即可。
set_config命令不僅可以給用戶自定義命令復用,而且,可以通過set_config命令配置設備的狀態值。
?設備接收命令
設備固件開發需要集成“ZWS_SDK”,SDK里面提供了設備連接云服務關于網絡層的封裝同時也提供了一些demo,其中device_example這個demo演示設備怎么連接云,然后設備接收處理云端命令。用戶可以直接通過make指令編譯SDK里的device_expl.c,編譯成功后,把設備的三元組傳給運行程序,把demo跑起來。
linux系統,在SDK所在目錄執行以下命令:
./bin/device_example demo_dev_typed123123123123
代碼說明:
1. demo中關于命令的回調是在device_expl.c文件中的on_message函數。
2. demo中只實現部分通用命令的響應處理,自定義命令需要用戶自己實現。
?下發命令
在設備管理的高階功能界面,通過set_config命令下發給設備,設備接收命令,響應成功后返回給ZWS云平臺,如下:
設備收到命令的處理日志:
-
物聯網
+關注
關注
2903文章
44275瀏覽量
371274 -
設備
+關注
關注
2文章
4473瀏覽量
70540
發布評論請先 登錄
相關推薦
評論