您的裝置和伺服器接入阿里雲物聯網平台後,可通過物聯網平台實現裝置與伺服器、裝置與裝置間的通訊。本文介紹裝置、物聯網平台、伺服器間通訊的方法。
背景資訊
裝置通過訊息Topic實現訊息的發送和接收,訊息通訊Topic的定義、使用和分類說明,請參見什麼是Topic。
裝置上報的未經處理資料格式,需您在裝置端完成開發。阿里雲物聯網平台提供的裝置端Link SDK,可實現裝置快速接入物聯網平台並進行通訊。
例如使用C語言的Link SDK,完成裝置端通訊能力開發,請參見MQTT接入樣本、自訂Topic通訊樣本和物模型Topic通訊樣本。
裝置端Link SDK還支援Java、Python、Node.js、Android、iOS語言或平台的開發,更多功能,請參見功能特性。
裝置原始Topic訊息流程轉到伺服器,會經過物聯網平台規則引擎轉化資料格式。通訊Topic、訊息類型及資料格式說明,請參見資料格式。
裝置發送資料到物聯網平台
裝置接入物聯網平台後,便可與物聯網平台進行通訊。裝置可通過以下方式發送資料到物聯網平台:
使用自訂Topic發送自訂格式的資料。
在物聯網平台上,為產品自訂操作許可權為發布的Topic類。產品的Topic類會自動對應到產品下的裝置中。
自訂Topic類的兩種方式:
使用自訂Topic通訊:在物聯網平台控制台上自訂Topic類。
CreateProductTopic:使用雲端SDK調用雲端API ,自訂Topic類。
開發裝置端時,配置裝置將訊息發送到自訂Topic中。
需在裝置端配置發送訊息的自訂Topic和訊息格式。使用阿里雲提供的Link SDK配置樣本,請參見裝置發送訊息給伺服器。
使用物模型功能相關Topic,發送標準化的物模型資料。
物模型功能說明,請參見什麼是物模型。
裝置可主動上報屬性和事件。實現過程:
單個添加物模型:根據您的裝置業務情況,在物聯網平台控制台定義物模型。
開發裝置端:根據已定義的物模型,配置裝置上報屬性和事件數目據。
裝置上報屬性和事件的標準資料格式,請參見裝置上報屬性和裝置上報事件。
物聯網平台已定義物模型功能相關的Topic,直接使用即可。使用阿里雲提供的Link SDK開發樣本,請參見裝置端SDK上報屬性和事件。
物聯網平台流轉資料到伺服器
物聯網平台提供規則引擎功能,可通過以下方式將裝置上報訊息、裝置狀態變化通知、裝置生命週期變更、物模型歷史資料上報、OTA升級狀態通知、網關發現子裝置上報、裝置拓撲關係變更等訊息流程轉到您的伺服器。訊息基於Topic傳遞資料,Topic中的資料格式請參見資料格式。
服務端訂閱:使用物聯網平台的服務端訂閱功能,訂閱一個或多個訊息類型。物聯網平台根據您設定的訂閱,將產品下所有裝置的該類型訊息流程轉至您的伺服器。支援以下兩種方式的服務端訂閱:
雲產品流轉:使用規則引擎的雲產品流轉功能,通過資料流轉規則將指定裝置資料流轉到Simple Message Queue (formerly MNS) (SMQ)、雲資料庫RDS、Table Store、Function Compute、時間序列資料庫TSDB、訊息佇列RocketMQ等雲產品中。具體操作,請參見雲產品流轉(舊版)和雲產品流轉(新版)。
雲產品流轉和服務端訂閱的區別,請參見資料流轉方案對比。
伺服器遠端控制裝置
在伺服器上使用物聯網平台提供的雲端SDK,調用雲端API發送指令到裝置,實現遠端控制裝置。伺服器可通過以下方式發送指令到裝置。
使用自訂Topic遠端控制裝置。
非同步控制:調用Pub介面向裝置操作許可權為訂閱的自訂Topic發送自訂格式的訊息。裝置通過訂閱該Topic擷取訊息。
說明不可以使用Pub介面發送物模型相關指令。
使用自訂Topic遠端控制裝置實踐案例,請參見伺服器發送訊息給裝置。
同步控制:調用RRpc介面向指定裝置發送訊息,並同步返迴響應結果。
MQTT同步通訊相關說明,請參見什麼是RRPC。
調用RRpc介面同步控制裝置實踐案例,請參見遠端控制樹莓派伺服器。
批量控制:調用PubBroadcast介面向產品下的全量線上裝置發布廣播訊息,實現批量控制裝置。
批量控制裝置的詳細說明,請參見廣播通訊。
使用物模型遠端控制裝置。
您可以在雲端通過發送物模型資料的特有介面,發布設定屬性值和調用服務指令。
控制單個裝置。
調用SetDeviceProperty向單個裝置發送設定屬性值的指令。
雲端下發屬性設定命令和裝置收到並執行該命令是非同步。裝置是否成功設定屬性值,以裝置上報屬性為準。
調用InvokeThingService向單個裝置發送調用服務的指令。
服務是同步調用還是非同步呼叫,取決於您定義物模型服務時選擇的調用方式。具體內容,請參見自訂物模型服務。
如果該服務的調用方式是同步,調用InvokeThingService後,會同步返回結果。
如果該服務的調用方式是非同步,則InvokeThingService不會同步返回結果。裝置響應結果,可以通過規則引擎擷取裝置的響應訊息。此時需設定裝置資料來源Topic為物模型資料上報,具體Topic為
thing/downlink/reply/message
。設定資料來源Topic,請參見設定資料流轉規則或添加待流轉的資料來源。
批量控制裝置。
調用SetDevicesProperty向多個裝置發送設定屬性值的指令。
調用InvokeThingsService向多個裝置發送調用服務的指令。
使用物模型遠端控制裝置的實踐案例,請參見物模型通訊。
裝置與裝置之間通訊
將兩端裝置接入物聯網平台,裝置間的串連和通訊請求都由物聯網平台承擔。您可以通過以下兩種方式實現裝置與裝置間通訊: