全部產品
Search
文件中心

IoT Platform:基於訊息轉寄的M2M裝置間通訊

更新時間:Jun 30, 2024

本文以使用手機App控制智能燈為例,介紹基於物聯網平台的訊息轉寄中資料流轉功能,構建一個M2M裝置間通訊架構的完整流程。

背景資訊

使用手機App控制智能燈的流程:

M2M裝置間通訊

建立產品和裝置

  1. 物聯網平台控制台的對應執行個體下,為手機App註冊產品和裝置。具體操作,請參見建立產品單個建立裝置

    本樣本中,建立產品的產品名稱手機App節點類型直連裝置,其他參數使用預設值。

    建立裝置的DeviceNameControlApp

    本樣本中,假設手機AppProductKeyal987654321

    為手機App建立產品和裝置後,手機App可以作為一個裝置串連到物聯網平台。

    當手機App使用者註冊登入時,您的伺服器將App的裝置資訊發送給手機App,手機App即可作為一個裝置串連到物聯網平台。

  2. 添加具有發布許可權的自訂Topic,用於發布控制指令。

    本樣本添加Topic:/al987654321/ControlApp/user/command。具體操作,請參見使用自訂Topic通訊

  3. 開發手機App裝置。

    本樣本中,手機App與物聯網平台間的通訊協定使用HTTPS。

    手機App通過自訂Topic發送給智能燈的控制指令payload資料格式如下:

    {
        "TargetDevice": "light", 
        "Switch": 0, 
        "Timestamp": 1557750407000
    }

    裝置端SDK開發詳情,請參見裝置接入Link SDK

  4. 物聯網平台控制台的對應執行個體下,為智能燈裝置建立產品和裝置,定義功能等。具體操作,請參見建立產品大量建立裝置單個添加物模型

    本樣本中,建立產品的產品名稱智能燈節點類型直連裝置,其他參數使用預設值。

    建立裝置的DeviceNamelight

    本樣本中,假設智能燈ProductKeyal123456789

    您自行添加物模型功能,例如添加物模型屬性開關(Switch),資料類型為布爾型(0是關,1是開),來控制智能燈開關。

  5. 添加具有訂閱許可權的自訂Topic,用於接收手機App下發的控制指令。

    本樣本添加Topic:/al123456789/light/user/set。具體操作,請參見使用自訂Topic通訊

  6. 開發智能燈裝置端,實現智能燈裝置串連物聯網平台,接收並執行指令等功能。

    本樣本中,裝置與物聯網平台間的通訊協定使用MQTT。智能燈裝置需要訂閱Topic:/al123456789/light/user/set,才能接收指令。接收指令後,需要開發執行指令的邏輯方法。

    裝置端SDK開發詳情,請參見裝置接入Link SDK

配置訊息轉寄解析器

設定訊息轉寄解析器,將手機App發布的指令流轉到智能燈的Topic中。

  1. 登入物聯網平台控制台

  2. 執行個體概覽頁簽的全部環境下,找到對應的執行個體,單擊執行個體卡片。

  3. 在左側導覽列,選擇訊息轉寄 > 雲產品流轉,依次執行以下操作,完成訊息轉寄的解析器配置

添加資料來源

以下操作中參數配置說明,請參見添加待流轉的資料來源

  1. 單擊資料來源頁簽,執行以下步驟,添加資料來源。

    重要

    若當前頁面顯示舊版功能,先單擊右上方體驗新版,進入新版功能頁面,再單擊資料來源頁簽。

    1. 單擊建立資料來源

    2. 在彈出的建立資料來源對話方塊,輸入資料來源名稱,例如:AppData

    3. 單擊確定

  2. AppData頁面,單擊添加Topic

  3. 添加Topic對話方塊,選擇需要處理的訊息Topic,然後單擊確定

    本樣本中,選擇手機App裝置ControlApp的Topic/al987654321/ControlApp/user/command,擷取訊息中的目標裝置的名稱TargetDevice,訊息時間戳記TimestampSwitch三個欄位的值。

    image

配置資料目的

以下操作中參數配置說明,請參見添加轉寄到的資料目的

  1. 返回雲產品流轉頁面,單擊資料目的頁簽。

  2. 單擊建立資料目的

  3. 在彈出的對話方塊中,輸入資料目的名稱,例如:OtherTopic,選擇產品智能燈

    image

  4. 單擊確定

配置並啟動解析器

以下操作中參數配置說明,請參見配置解析器

  1. 單擊解析器頁簽,執行以下操作,添加解析器。

    1. 單擊建立解析器

    2. 在彈出的對話方塊中,輸入解析器名稱,例如:DataParser

    3. 單擊確定

  2. DataParser頁面,關聯資料來源。

    1. 在設定精靈的資料來源下,單擊關聯資料來源

    2. 在彈出的對話方塊中,單擊資料來源下拉式清單,選擇已建立的資料來源AppData

    3. 單擊確定

  3. DataParser頁面,單擊設定精靈的資料目的,關聯資料目的。

    1. 單擊資料目的列表右上方的關聯資料目的

    2. 在彈出的對話方塊中,單擊資料目的下拉式清單,選擇已建立的資料目的OtherTopic

    3. 單擊確定

    4. 在資料目的列表,查看並儲存資料目的ID,例如為1000

      後續解析指令碼中,需使用此處的資料目的ID

  4. DataParser頁面,單擊設定精靈的解析器指令碼,完成指令碼配置。

    1. 在指令碼輸入框,輸入解析指令碼,將智能燈裝置具有訂閱許可權的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)
    2. 單擊指令碼輸入框下方儲存

    3. 單擊調試,在右側面板,選擇產品和裝置,輸入Topic和Payload資料,驗證指令碼可執行。

      本樣本參數如下:

      image

      運行結果如下,表示指令碼執行成功。

      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
    4. 在右側面板左下方,單擊關閉

    5. 單擊指令碼輸入框下方發布

  5. 返回雲產品流轉頁面的解析器頁簽,單擊解析器DataParser對應操作列的啟動

  6. 單擊確認,啟動解析器。

裝置間進行通訊

  1. 手機App使用者通過掃碼將App與智能燈綁定。

    當App向您的伺服器發送綁定某裝置的請求後,您的伺服器將返回綁定成功的智能燈裝置名稱(deviceName)。本樣本中,智能燈裝置名稱為light。

  2. 手機App使用者通過App發送控制指令。

    1. 手機App通過自訂Topic發送指令,如本樣本中,App對應的發送指令Topic:/al987654321/ControlApp/user/command

    2. 物聯網平台再根據您定義的訊息轉寄解析器,將指令資訊發送給智能燈的Topic,如本樣本中定義的Topic為:/al123456789/light/user/set

    3. 智能燈接收到指令後,執行相關操作。

    說明

    手機App也可以向您的伺服器發送解除綁定裝置的請求。解除綁定後,該手機App將不再控制該智能燈。