本文以智能燈和手機App串連為例,基於物聯網平台的Topic訊息路由服務,構建一個M2M裝置間通訊架構。
背景資訊
智能燈控制流程程如下圖:
操作步驟
在物聯網平台控制台的對應執行個體下,為智能燈裝置建立產品和裝置,定義功能等。具體操作,請參見建立產品、大量建立裝置、單個添加物模型。
本樣本中,建立產品的產品名稱為智能燈,節點類型為直連裝置,其他參數使用預設值。
建立裝置的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註冊產品和裝置。具體操作,請參見建立產品、單個建立裝置。
本樣本中,建立產品的產品名稱為手機App,節點類型為直連裝置,其他參數使用預設值。
建立裝置的DeviceName為ControlApp。
本樣本中,假設手機App的ProductKey為al987654321。
為手機App建立產品和裝置後,手機App可以作為一個裝置串連到物聯網平台。
當手機App使用者註冊登入時,您的伺服器將App的裝置資訊發送給手機App,手機App即可作為一個裝置串連到物聯網平台。
- 使用伺服器,調用雲端介面CreateTopicRouteTable,建立App Topic與智能燈Topic之間的訊息路由關係。
- 將入參SrcTopic指定為App的Topic:
/al987654321/ControlApp/user/update
。 - 將入參DstTopics指定為智能燈的Topic:
/al123456789/light/user/set
。
- 將入參SrcTopic指定為App的Topic:
開發手機App裝置。
本樣本中,手機App與物聯網平台間的通訊協定使用HTTPS。
手機App通過自訂Topic發送給智能燈的控制指令payload資料格式如下:
{ "TargetDevice": "light", "Switch": 0, "Timestamp": 1557750407000 }
裝置端SDK開發詳情,請參見裝置接入Link SDK。
- 手機App使用者通過掃碼,將App與智能燈綁定。當App向伺服器發送綁定裝置的請求後,伺服器將返回綁定成功的智能燈裝置名稱deviceName。本樣本中,智能燈裝置名稱為light。
- 手機App使用者通過App發送控制指令。
- 手機App通過自訂Topic發送指令,如本樣本中,App對應的發送指令Topic:
/al987654321/ControlApp/user/update
。指令為JSON格式的資料。
- 物聯網平台根據已定義的Topic路由關係,將指令資訊路由到智能燈裝置的Topic:
/al123456789/light/user/set
。 - 智能燈裝置接收到指令後,執行相關操作。
說明 可配置手機App向伺服器發送解除綁定請求,觸發伺服器調用雲端介面DeleteTopicRouteTable,刪除訊息路由關係。路由關係刪除後,該手機App將不再控制該智能燈。 - 手機App通過自訂Topic發送指令,如本樣本中,App對應的發送指令Topic: