MQTT(Message Queuing Telemetry Transport)是一種輕量級的訊息傳輸協議,最初由 IBM 於 1999 年為了衛星連結而設計,如今已成為物聯網領域最廣泛使用的通訊標準之一。它採用發布/訂閱(Pub/Sub)模式,相較於傳統的 HTTP 請求/回應模式,MQTT 在低頻寬、不穩定網路環境下表現更為出色。對於自助洗衣場景而言,每台機台每秒可能需要回報運轉狀態、剩餘時間、異常代碼等資訊,MQTT 的低延遲與低資源消耗特性使其成為理想的選擇。
在 Cloud Monster 的架構中,每家門市配備一台工控機(Industrial PC),負責透過 Modbus RTU 協議與洗衣機、烘衣機的控制板進行串列通訊。工控機將收到的機台數據轉換為 MQTT 訊息,透過 WiFi 或 4G 網路發布到雲端的 MQTT Broker(我們使用 HiveMQ)。後端伺服器訂閱相關的 Topic,即時接收所有門市、所有機台的狀態更新。這種架構的優勢在於解耦——即使雲端暫時斷線,工控機仍可獨立運作,並在連線恢復後自動同步數據。
實際部署中,我們遇到最多的挑戰是網路穩定性。自助洗衣店通常位於社區大樓的一樓或地下室,WiFi 訊號品質參差不齊。為此,我們採用了 MQTT 的 QoS Level 1(至少送達一次)確保關鍵指令不會遺失,同時在工控機端實作了離線佇列機制,當網路中斷時將訊息暫存在本地,恢復連線後依序發送。此外,我們也為每台工控機配備了 4G 備援網路,當 WiFi 斷線超過 30 秒時自動切換到行動網路,確保 99.5% 以上的連線可用率。
Topic 的設計也是影響系統可擴展性的關鍵。我們採用階層式的 Topic 結構:store/{storeId}/machine/{machineId}/status 用於機台狀態回報,store/{storeId}/machine/{machineId}/command 用於下發啟動指令。這種設計讓後端可以靈活地訂閱單台機器、單家門市或全部門市的資訊。搭配 MQTT 的 Retained Message 功能,新連線的客戶端可以立即獲取每台機器的最新狀態,不需要等待下一次狀態回報。整體架構目前已穩定支撐 5 家門市、30 台機器的即時通訊,並保留了水平擴展到數百家門市的能力。
