基於MCU的方式實現NB設備接入,即通過移植SDK至設備MCU中,通過MCU和模組進行交互實現連接到OneNET平台。
該情況適用於實驗階段或是終端設備對接入OneNET平台有較緊急意願,但設備所用模組暫未支持接入OneNET的情況下。
具體的接入實例及步驟見下:
(1)首先需要完成對SDK的移植操作,實現把SDK植入所需連接到OneNET的MCU芯片中;
(2)網絡配置。在連接OneNET平台之前需要對設備側進行網絡配置:
char uri[] = "coap://47.91.203.179:5683";
const char endpoint_name[] = "imei;imsi"; //imei;imsi
包括接入機的地址和鑒權信息等參數(即IMEI、IMSI)。
同時還需要對設備和平台所交互的資源進行資源配置,在設備端的SDK中,設備上所有與onenet進行交互的數據變量都需要表示為資源,
比如溫濕度傳感器的溫度和濕度分別可以表示為2個資源,配置好資源屬性後,設備在向服務器註冊的過程中會攜帶相應的資源列表,
服務器端會主動向設備訂閱(Observe)資源列表中所有資源。
屬性 | 描述 |
---|---|
objid | 描述了設備上的感測器類型 |
instid | 描述了該類型感測器的編號 |
resid | 描述感測器的某種類型的數據,如溫度的當前值,最大值,最小值 |
flag | 該資源的可操作性,支援的類型有可讀/可寫/可執行 |
type | 該資源的數據類型,支援的類型有bool/int/float/string/bin |
write | 用戶寫該資源的鉤子函數 |
execute | 用戶執行該資源的鉤子函數 |
注意:objid和resid是不能夠隨意定義的,必須遵守《IPSO-Smart-Objects-Expansion-Pack》文檔中的規定
配置示例:
(3)心跳設置。設備端的SDK在初始化的時候會設置lifetime的值,並在向服務器註冊的時候上傳該值,
SDK在到期後會主動向服務器發送Update消息,如服務器端未收到Update消息,服務器端將拋棄所有上報
的Notify消息並向該設備發送RST消息。
(4)數據發送。如果有資源的值被更新了,需要調用nbiot_device_notify通知SDK該資源的值發生了變化,
由SDK擇機上傳至onenet。
(5)下行處理。命令由第三方應用發送至onenet,並由雲平台轉發至終端設備,讀寫命令和執行命令均
直接發送至終端,SDK會自動調用該命令對應的資源中的write鉤子函數或者execute鉤子函數,用戶只需要
編寫該兩個函數即可以完成下行命令的處理。