設備不能訂閱其他設備的Topic,也不能向其他設備的Topic發布消息。通過云產品流轉可以將解析腳本處理完的一個設備Topic的消息內容,轉發到另一個設備Topic,實現設備間通信(M2M通信)或者其他通信場景。本文以物模型數據上報Topic為例,介紹流轉消息數據的完整流程。
工作原理
消息轉發的云產品流轉功能可以將Topic 1中的數據轉發到Topic 2內。 數據流轉示意圖如下。
云產品流轉可以將設備1的Topic1消息轉發給另一個具備訂閱權限設備2的Topic2,設備2訂閱Topic2,即可接收設備1的Topic1消息,實現不同設備間的通信。
在上圖中:
數據源:Topic1支持的Topic類型消息,請參見數據格式(非云網關產品和設備)、自定義Topic(MQTT云網關)、消息轉發Topic(GB/T 32960云網關)、消息轉發Topic(JT/T 808云網關)、消息轉發Topic(SL 651云網關)。
數據目的:接收Topic1消息的Topic2,支持以下Topic類型。
非云網關產品和設備:支持自定義Topic和物模型數據下發Topic:
/sys/${productKey}/${deviceName}/thing/service/property/set
。云網關產品和設備:支持自定義Topic。
解析器腳本:配置通過數據流轉函數
writeIotTopic(destinationId, topic, payload)
將Topic1數據轉發到Topic2。函數說明,請參見流轉數據到數據目的函數。
應用場景
數據轉發目的Topic為自定義Topic:
同一產品下,不同設備之間通信。
不同產品下,兩個設備之間通信。
數據轉發目的Topic為物模型數據下發Topic:
/sys/${productKey}/${deviceName}/thing/service/property/set
。該Topic為設備接收設置屬性值指令的Topic,設備從該Topic接收轉發數據,并根據數據內容,設置屬性值。用于目的Topic所屬設備根據轉發的數據更改屬性值的場景。
使用限制
源Topic消息轉發到目的Topic內,目的Topic必須具備訂閱權限,且目的Topic所屬設備必須已成功訂閱對應目的Topic。否則,目的Topic所屬設備接收不到源Topic轉發的消息。
云網關產品和設備不支持跨產品流轉,即僅支持流轉到當前產品下的通信Topic。
MQTT型實例下,僅支持創建一個產品,默認不支持跨產品流轉。
前提條件
已添加待轉發的設備Topic數據源。例如:創建數據源DataSource,添加指定設備的物模型數據上報Topic。具體步驟,請參見添加待流轉的數據源。
步驟一:創建數據目的
- 登錄物聯網平臺控制臺。
在實例概覽頁簽的全部環境下,找到對應的實例,單擊實例卡片。
- 在左側導航欄,選擇 。
在云產品流轉頁面,單擊右上角體驗新版,進入新版功能頁面。
說明如果您已執行過此操作,再次進入云產品流轉頁面,會直接進入新版功能頁面。
單擊數據目的頁簽,然后單擊創建數據目的。
在創建數據目的對話框,輸入數據目的名稱,例如DataPurpose,按照以下參數說明,完成配置,然后單擊確定。
本示例配置如下圖所示。
參數
說明
選擇操作
選擇發布到另一個Topic。
產品
選擇轉發的目的地Topic所屬產品。
具體Topic,需在解析腳本中通過函數
writeIotTopic(destinationId, topic, payload)
設置。函數說明,請參見數據流轉函數。
步驟二:配置并啟動解析器
創建解析器,例如DataParser。具體操作,請參見創建解析器。
在解析器詳情頁面,關聯數據源。
在配置向導的數據源下,單擊關聯數據源。
在彈出的對話框中,單擊數據源下拉列表,選擇已創建的數據源DataSource,單擊確定。
在解析器詳情頁面,關聯數據目的。
單擊配置向導的數據目的,然后單擊數據目的列表右上方的關聯數據目的。
在彈出的對話框中,單擊數據目的下拉列表,選擇已創建的數據目的DataPurpose,單擊確定。
在數據目的列表,查看并保存數據目的ID,例如為1000。
后續解析腳本中,需使用此處的數據目的ID。
在解析器詳情頁面,單擊解析器。
在腳本輸入框,輸入解析腳本。
解析腳本類似JavaScript語言,編輯腳本的語法參考JavaScript語法,詳細編輯方法,請參見腳本語法。
轉發數據到另一個Topic,需要使用函數
writeIotTopic(destinationId, topic, payload)
。函數參數說明,請參見函數列表。//通過payload函數,獲取設備上報的消息內容,并按照JSON格式轉換。 var data = payload("json"); //直接流轉物模型上報數據。 writeIotTopic(1000, "/sys/a1I***/room3/thing/service/property/set", data);
單擊調試,根據頁面提示,選擇產品和設備,輸入Topic和Payload數據,驗證腳本可執行。
參數示例如下:
運行結果如下,表示腳本執行成功。
單擊發布。
回到云產品流轉頁面的解析器頁簽,單擊解析器DataParser對應的啟動按鈕,啟動解析器。