QEC MQTT 發布控制 — 直接在 HMI 上設定並發布訊息

QEC MQTT Publish Control 是一款運行於 QEC 平台(86Duino + 86HMI)上的圖形化 MQTT 發布工具。設備啟動後,使用者可以直接透過觸控螢幕編輯 Local IP、Broker IP、Client ID、Topic 與 Payload,並在不需要重新修改程式碼的情況下,將訊息發布至任意 MQTT Broker。

MQTT-banner-qec

1. 快速概覽

  • 可直接透過觸控螢幕重新設定 Local IP、Broker IP 與 Client ID
  • 一鍵發布任意 Topic / Payload 組合,並提供即時預覽與視覺化狀態回饋
  • 當 Broker 短暫斷線後,可自動恢復連線;下一次發布時會重新連線並再次公告裝置資訊

2. 透過五個 Demo,帶你一步步完成測試流程

2.1 Demo 1 — 開機後自動連線,幾秒內完成裝置辨識

首先,開啟設備電源。接著 setup() 會讀取預設的 Local IP、Broker IP 與 Client ID,呼叫 Ethernet.begin()最後執行 mqttConnectOnce(true).
在幾秒內,HMI 標題列上的 MQTT 狀態標籤會轉為綠色,並顯示 MQTT Connected。同時,設備也會將包含 Client ID 與 IP 的保留訊息發布到 QEC/test/device ,因此任何訂閱者都可以在不需要反覆查詢設備狀態的情況下,立即看到設備已上線。

mqtt-demo-1

Before / After:開機時,HMI 標題列會先顯示黃色的 MQTT Checking…. 。當 Ethernet 連線建立完成,並且成功與 Broker 完成連線後,狀態會轉為綠色的 MQTT Connected同時,系統將會把 clientId=QEC_01, ip=192.168.2.230 發佈到 QEC/test/device.

2.2 Demo 2 — 不用重新燒錄程式,也能切換 MQTT Broker

點選 Broker IP 的各個欄位,輸入新的位址。也可以視需求編輯 Local IP 與 Client ID。接著點選 點選 APPLYapplyNetworkSettings() 會先中斷目前的連線階段,接著使用新的 Local IP(若有修改)重新執行 Ethernet.begin() ,並將 PubSubClient 指向新的 Broker。完成後,系統會重新連線,並再次發布裝置資訊。 

mqtt-demo-2

Before / After: 將 Broker IP 從 192.168.2.145 改為不同網段後點選 點選 APPLY 。MQTT 狀態會短暫回到 Checking,並在成功連上新 Broker 後再次轉為綠色。

2.3 Demo 3 — 透過一鍵操作發布自訂訊息內容

網路連線建立後,點選 Topic 欄位,輸入例如 factory/line1/event的 Topic。接著點選 Payload,輸入任意字串。 輸入過程中,Preview 區塊會即時同步顯示 Topic 與 Payload 的內容。接著點選 PUBLISHpublishSimpleMessage() 會讀取文字欄位內容,並在發布前先檢查 Topic 或 Payload 是否為空值。若內容有效,系統會呼叫 client.publish()進行發布,並將結果顯示在 Status 區塊中,例如 Publish 成功 或 Publish 失敗.

mqtt-demo-3

Before / After: 填入 Topic 與 Payload 欄位後,Preview 區塊會同步顯示相同內容。點選 PUBLISH後,Status 區塊會顯示 Publish 成功。同時,任何訂閱該 Topic 的接收端都可以收到這筆訊息。

2.4 Demo 4 — 網路短暫中斷後自動恢復連線

當 Broker 中斷連線,或網路線重新插拔後,下一次點選 PUBLISH 時,系統會偵測到 !client.connected(),並在 Status 區塊顯示 MQTT Reconnecting…。 接著系統會呼叫 mqttConnectOnce(true) 重新建立 MQTT 連線,並在送出使用者的 Payload 前,先重新發布保留的裝置資訊。

mqtt-demo-4

Before / After: 網路線被拔除後,MQTT 狀態會切換為紅色的 MQTT Failed 。操作人員再次點選 PUBLISH,系統會自動重新連線,狀態恢復為綠色,並成功顯示 Publish 成功 在 Status

2.5 Demo 5 — 自動產生唯一 Client ID,快速部屬多台設備

將 Client ID 欄位留空,並為每台設備設定一組唯一的 Local IP,接著點選 點選 APPLYgenerateClientIdFromLocalIp() 會根據 Local IP 自動產生唯一的 Client ID,格式為: QEC_<a>_<b>_<c>_<d> 產生後,系統會將 Client ID 回寫到文字欄位中。接著每台設備都會將自己的 Client ID 與 IP 發布到保留的 QEC/test/device topic 中。
使用者只需要透過任一 MQTT Client 訂閱一次,就能取得即時更新的設備清單。由於每台設備的 Client ID 都是根據各自的 IP 產生,因此在 Broker 上不會發生 Client ID 重複衝突的問題。

mqtt-demo-5

Before / After: 將 Client ID 欄位留空,並將 Local IP 設定為 192.168.2.231, 點選 APPLY ,此時 Client ID 文字欄位會自動填入: QEC_192_168_2_231.


3. 為什麼這能節省工程時間

  • 單一程式,彈性部署,Local IP、Broker IP 與 Client ID 可直接透過 HMI 編輯,讓同一份程式更容易套用到不同的網路環境。
  • 清楚的 HMI 狀態回饋,像是 MQTT Connected、Invalid Local IP、Topic Empty 與 Publish Failed 等關鍵結果,都會直接顯示在畫面上。
  • 更快速的發布測試,APPLY 與 PUBLISH 分開設計,因此修改 Topic 或 Payload 時,不需要重新啟動 Ethernet。
  • 裝置自動公告,透過 QEC/test/device 上的保留裝置資訊,訂閱者在連線後即可取得最新的裝置識別資訊與 IP。

4. 所需設備

部件必要條件
Main deviceQEC 平台(86Duino 主機 + 86HMI 面板)
Network使用標準 Ethernet 網路,連接至可存取的 MQTT Broker,例如 Mosquitto、EMQX 或 HiveMQ。
BrokerMQTT v3.1.1 broker on port 1883
函式庫參考EthernetPubSubClientlvgl 7.11
選配可使用 MQTT Explorer、mosquitto_sub 等 MQTT Client,確認是否成功接收到訂閱訊息。

5. 參考資源

  • QEC 平台(86Duino 主機 + 86HMI 面板): 概述
  • EtherCAT 主站 範例程式碼: 下載
  • 聯絡工程部門: 聯絡我們

如需更多資訊或樣品申請,請寄信至  info@icop.com.tw、致電最近的 ICOP 分支機構,或聯絡我們的全球官方經銷商

返回頂端