本文以使用手機App控制智能燈為例,介紹基於物聯網平台的訊息轉寄中資料流轉功能,構建一個M2M裝置間通訊架構的完整流程。
背景資訊
使用手機App控制智能燈的流程:
建立產品和裝置
在物聯網平台控制台的對應執行個體下,為手機App註冊產品和裝置。具體操作,請參見建立產品、單個建立裝置。
本樣本中,建立產品的產品名稱為手機App,節點類型為直連裝置,其他參數使用預設值。
建立裝置的DeviceName為ControlApp。
本樣本中,假設手機App的ProductKey為al987654321。
為手機App建立產品和裝置後,手機App可以作為一個裝置串連到物聯網平台。
當手機App使用者註冊登入時,您的伺服器將App的裝置資訊發送給手機App,手機App即可作為一個裝置串連到物聯網平台。
添加具有發布許可權的自訂Topic,用於發布控制指令。
本樣本添加Topic:
/al987654321/ControlApp/user/command
。具體操作,請參見使用自訂Topic通訊。開發手機App裝置。
本樣本中,手機App與物聯網平台間的通訊協定使用HTTPS。
手機App通過自訂Topic發送給智能燈的控制指令payload資料格式如下:
{ "TargetDevice": "light", "Switch": 0, "Timestamp": 1557750407000 }
裝置端SDK開發詳情,請參見裝置接入Link SDK。
在物聯網平台控制台的對應執行個體下,為智能燈裝置建立產品和裝置,定義功能等。具體操作,請參見建立產品、大量建立裝置、單個添加物模型。
本樣本中,建立產品的產品名稱為智能燈,節點類型為直連裝置,其他參數使用預設值。
建立裝置的DeviceName為light。
本樣本中,假設智能燈的ProductKey為al123456789。
您自行添加物模型功能,例如添加物模型屬性開關(Switch),資料類型為布爾型(0是關,1是開),來控制智能燈開關。
添加具有訂閱許可權的自訂Topic,用於接收手機App下發的控制指令。
本樣本添加Topic:
/al123456789/light/user/set
。具體操作,請參見使用自訂Topic通訊。開發智能燈裝置端,實現智能燈裝置串連物聯網平台,接收並執行指令等功能。
本樣本中,裝置與物聯網平台間的通訊協定使用MQTT。智能燈裝置需要訂閱Topic:
/al123456789/light/user/set
,才能接收指令。接收指令後,需要開發執行指令的邏輯方法。裝置端SDK開發詳情,請參見裝置接入Link SDK。
配置訊息轉寄解析器
設定訊息轉寄解析器,將手機App發布的指令流轉到智能燈的Topic中。
登入物聯網平台控制台。
在執行個體概覽頁簽的全部環境下,找到對應的執行個體,單擊執行個體卡片。
在左側導覽列,選擇 ,依次執行以下操作,完成訊息轉寄的解析器配置
添加資料來源
以下操作中參數配置說明,請參見添加待流轉的資料來源。
單擊資料來源頁簽,執行以下步驟,添加資料來源。
重要若當前頁面顯示舊版功能,先單擊右上方體驗新版,進入新版功能頁面,再單擊資料來源頁簽。
單擊建立資料來源。
在彈出的建立資料來源對話方塊,輸入資料來源名稱,例如:AppData。
單擊確定。
在AppData頁面,單擊添加Topic。
在添加Topic對話方塊,選擇需要處理的訊息Topic,然後單擊確定。
本樣本中,選擇手機App裝置ControlApp的Topic
/al987654321/ControlApp/user/command
,擷取訊息中的目標裝置的名稱TargetDevice,訊息時間戳記Timestamp和Switch三個欄位的值。
配置資料目的
以下操作中參數配置說明,請參見添加轉寄到的資料目的。
返回雲產品流轉頁面,單擊資料目的頁簽。
單擊建立資料目的。
在彈出的對話方塊中,輸入資料目的名稱,例如:OtherTopic,選擇產品智能燈。
單擊確定。
配置並啟動解析器
以下操作中參數配置說明,請參見配置解析器。
單擊解析器頁簽,執行以下操作,添加解析器。
單擊建立解析器。
在彈出的對話方塊中,輸入解析器名稱,例如:DataParser。
單擊確定。
在DataParser頁面,關聯資料來源。
在設定精靈的資料來源下,單擊關聯資料來源。
在彈出的對話方塊中,單擊資料來源下拉式清單,選擇已建立的資料來源AppData。
單擊確定。
在DataParser頁面,單擊設定精靈的資料目的,關聯資料目的。
單擊資料目的列表右上方的關聯資料目的。
在彈出的對話方塊中,單擊資料目的下拉式清單,選擇已建立的資料目的OtherTopic。
單擊確定。
在資料目的列表,查看並儲存資料目的ID,例如為1000。
後續解析指令碼中,需使用此處的資料目的ID。
在DataParser頁面,單擊設定精靈的解析器指令碼,完成指令碼配置。
在指令碼輸入框,輸入解析指令碼,將智能燈裝置具有訂閱許可權的Topic:
/al123456789/light/user/set
作為接收手機App指令的Topic。指令碼配置說明,請參見指令碼文法。流轉資料的函數說明,請參見writeIotTopic()函數。
//通過payload函數,擷取裝置上報的訊息內容,並按照JSON格式轉換。 var data = payload("json"); //指定裝置時,需擷取裝置名稱。本樣本中TargetDevice值為智能燈裝置light。 var dn = data.TargetDevice; //智能燈裝置接收手機App指令的Topic。 var topic_set = "/al123456789/"+dn+"/user/set"; //智能燈裝置接收手機App裝置的Topic資料。 writeIotTopic(1000, topic_set, data)
單擊指令碼輸入框下方儲存。
單擊調試,在右側面板,選擇產品和裝置,輸入Topic和Payload資料,驗證指令碼可執行。
本樣本參數如下:
運行結果如下,表示指令碼執行成功。
action: transmit to republish[destinationId=1000], data:{"Switch":0,"Timestamp":1557750407000,"TargetDevice":"light"} variables: data : {"Switch":0,"Timestamp":1557750407000,"TargetDevice":"light"} topic_set : /al123456789/light/user/set dn : light
在右側面板左下方,單擊關閉。
單擊指令碼輸入框下方發布。
返回雲產品流轉頁面的解析器頁簽,單擊解析器DataParser對應操作列的啟動。
單擊確認,啟動解析器。
裝置間進行通訊
手機App使用者通過掃碼將App與智能燈綁定。
當App向您的伺服器發送綁定某裝置的請求後,您的伺服器將返回綁定成功的智能燈裝置名稱(deviceName)。本樣本中,智能燈裝置名稱為light。
手機App使用者通過App發送控制指令。
手機App通過自訂Topic發送指令,如本樣本中,App對應的發送指令Topic:
/al987654321/ControlApp/user/command
。物聯網平台再根據您定義的訊息轉寄解析器,將指令資訊發送給智能燈的Topic,如本樣本中定義的Topic為:
/al123456789/light/user/set
。智能燈接收到指令後,執行相關操作。
說明手機App也可以向您的伺服器發送解除綁定裝置的請求。解除綁定後,該手機App將不再控制該智能燈。