Command Channels Setting

Command Channel(又稱 Cloud to Device Message)是一種由雲端服務傳送至物聯網裝置的訊息傳遞機制,使雲端能主動對裝置進行控制、下達命令或推播通知,是實現智慧聯網系統的重要基礎之一。

使用場景

  • 遠端控制指令:雲端通知裝置執行某些行為,例如開燈、重新啟動、更新設定。
  • 通知推播:將即時通知或警告訊息推送給裝置。
  • 軟體更新提示:通知裝置有韌體更新可供下載。
  • 排程任務執行:如每日定時執行一次動作,由雲端下發命令。

NeoEdge 定位與角色

作為物聯網閘道器的中介軟體,NeoEdge 協助您建立雲端服務(IT 應用)與地端設備(OT 裝置)之間的通訊橋樑,但不干涉您實際的應用邏輯。換言之,從雲端向地端設備發送何種訊息、達成何種目的,完全由您自由定義與掌控。

NeoEdge 透過簡單設定 Command Channel,即可實現 Cloud to Device 的控制能力,讓您在閘道器端無需額外開發或建置成本。然而,根據您雲端服務後台的架構與能力,仍可能需要進行部分開發整合作業。

NeoEdge 運作機制

掌握 NeoEdge 的運作邏輯,是確保您系統設計順利整合的關鍵一步。

在 NeoEdge 內建的 IT App 中,支援 Command Channel 的雲端服務包括 MQTT BrokerAWS IoT Core。而在內建的 OT Device 模組中,能夠接收 Cloud to Device Message 的設備類型包含 Modbus TCPModbus RTUOPC UA.

換句話說,如下圖所示,您可以從雲端服務(MQTT Broker 或 AWS IoT Core)透過 MQTT Topic 發送訊息,指令將轉送至指定的 OT 設備(Modbus TCP、Modbus RTU 或 OPC UA)。

NeoEdge 並不驗證訊息內容的正確性,而是將接收到的訊息原封不動地轉送至您指定的設備及資料點位。由於設備執行訊息後的結果無法即時回傳,若您需要獲得執行結果,建議在原有的 NeoFlow 資料擷取流程中,額外定義回覆機制以完成狀態監控或結果回報。

NeoEdge 設定步驟

1. 於 IT App 中建立 Command Channels

以上圖為例,您可在 MQTT Broker 上設定可接收的 Command Channel(包含 Channel 名稱與對應的 MQTT Topic)。重點在於:每個 Channel 必須對應一個唯一的 MQTT Topic。我們建議使用 Gateway ID 搭配 Channel Name 作為 Topic 路徑,以確保命名一致性與易於管理。

NeoEdge 支援的的變數列表如下:

變數名稱 Explanation 範例內容
{neoedge.gatewayID} Gateway ID (由 NeoEdge X 產生的唯一值) 110281604680911360
{neoedge.gatewayName} Gateway Name (您自行給予的 Gateway 名稱,同一個專案不重複) My_Gateway_001
{neoedge.deviceKey} Gateway PKI-Private Key (由 NeoEdge X 產生的設備私鑰)  
{neoedge.deviceCert} Gateway PKI-X.509 憑證 (由 NeoEdge Central 簽發的設備憑證)  
{neoedge.ipcVendor} 生產 Gateway 的製造商 Moxa
{neoedge.ipcModel} Gateway 的型號名稱 UC-2222A
{neoedge.ipclongtude} 此 Gateway 設定的經度 120.590001
{neoedge.ipclatitude} 此 Gateway 設定的緯度 24.897777
2. 於 NeoFlow 中,連接 Command Channel 到 OT Device Tag

如上圖所示,您可以透過 NeoFlowChannel Name 連接至對應的 OT Device Tag。需要特別注意的是,僅支援可寫入(Writable)的 Device Tag 進行連線與控制,請確認相關設定以確保指令能成功傳遞至裝置。

3. 部署 NeoFlow 到 Gateway

最後,將 NeoFlow 部署至 Gateway,即完成整體設定流程。

測試與監控

1. 設定 MQTT Broker 給予 Gateway 必要的權限

您可能需要調整 MQTT Broker 授權,給予 Gateway 接收 Message 的權限。以 AWS IoT Core 為例,您需要授予 “Receive” 權限,完整的 Policy 如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:*:*:client/${iot:ClientId}"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "*"
    }
  ]
}
2. 取得 Gateway ID

在對 IIoT Gateway 發送命令之前,您需依據 Command Channel 的配置,取得該 Gateway 的 Gateway IDGateway Name,並組合出正確的 Command Channel(MQTT Topic)。這些資訊可透過 NeoEdge Central 的操作介面查詢,或使用其提供的 RESTful API 進行取得。

根據上述設定,您的 Command Channel Topic 將會是:

  • neoedge/110281604680911360/c2d-message/Fan_Speed
  • neoedge/110281604680911360/c2d-message/Light_Control
3. 發送 Command

依據您的 MQTT Broker 所提供的工具、API或是 SDK 發送訊息到 MQTT Topic。以 AWS IoT Core 為例,您可以透過 Web UI 發送 Cloud to Device Message,如下:

4. Live Monitor

在發送 Cloud to Device Message 之前,您可以開啟 NeoEdge Central 上的 Live Monitor 來監看 Gateway 是否接收到訊息,以及訊息是否正常送往指定的 OT Device。