跳到內容
返回官網

核心能力:MQTT 雲端與邊緣協作

MQTT 通道是 Edge-EMS Builder “雲端與邊緣協作”能力的載體:向上,把邊緣的即時資料和決策結果回報雲端;向下,接收雲端下發的策略並自動落地為本機設定。雲端與邊緣協作是三個產品等級的基礎能力,不是需要單獨付費或客製化開發的高階選項。

一個 MQTT 連線設定描述瞭如何接入某個 Broker:

參數 說明
protocol mqtt / mqtts(是否啟用 TLS)
protocolVersion 支援 3.1 / 3.1.1 / 5.0
serverHost / serverPort Broker 位址與埠
clientId / username / password 用戶端標識與驗證資訊
cleanSession / keepAliveInterval / connectTimeout 工作階段與連線參數

一臺 Edge-EMS Builder 裝置可以同時設定多個 MQTT 連線(例如同時對接雲端平台和本機閘道器),釋出/訂閱設定各自繫結到具體的連線上。

二、資料釋出:把邊緣資料組裝成任意格式回報雲端

Section titled “二、資料釋出:把邊緣資料組裝成任意格式回報雲端”

釋出設定描述“多久發一次、發到哪個 Topic、內容長什麼樣”:

參數 說明
topic / qos 釋出目標與服務質量等級
uploadStrategy CRON 運算式,控制釋出週期
publishContent Lua 指令碼,回傳本次要釋出的訊息內容

publishContent 指令碼與 運算式引擎 使用同一套語法,可以自由組裝任意 JSON 結構:

local payload = {}
payload.time = OffsetDateTime.now():unixMilli()
payload.power = ${PCS1_有功功率}
payload.status = ${PCS1_status}
-- 陣列欄位同樣支援
payload.phaseVoltages = { ${Meter1_Ua}, ${Meter1_Ub}, ${Meter1_Uc} }
return payload

引擎會把回傳的 Lua Table 自動序列化為 JSON 後釋出到指定 Topic,雲端拿到的即是標準 JSON 訊息封包:

{
"time": 1745393449910,
"power": 15.2,
"status": "Charging",
"phaseVoltages": [220.1, 219.8, 220.5]
}

三、訊息訂閱:把雲端下發的指令解析為本機寫入動作

Section titled “三、訊息訂閱:把雲端下發的指令解析為本機寫入動作”

訂閱設定描述“訂閱哪個 Topic、收到訊息後怎麼處理、要不要回執”:

參數 說明
topic / qos 訂閱的 Topic 與服務質量等級
actionContent Lua 指令碼,解析收到的訊息並回傳寫入指令清單
needResponse / responseTopic / response 是否需要回應、回應 Topic 與回應內容(同樣支援指令碼組裝)

訂閱到訊息後,指令碼可以透過固定變數 ${subscribe_message} 拿到原始訊息封包,解析並轉化為寫入指令:

local messageMap = jsonToMap(${subscribe_message})
local strategyList = jsonToListMap(toJsonString(messageMap.params.strategy))
local resultList = {}
for i, item in ipairs(strategyList) do
local availableDate = completeDateTime(messageMap.params.date .. "T" .. item.start)
local expiredDate = completeDateTime(messageMap.params.date .. "T" .. item["end"])
table.insert(resultList, buildCommonWriteMap(
"Customization", "mode", tostring(item.mode), availableDate, expiredDate, false
))
end
return resultList

這條指令碼把雲端下發的“分時策略”(一個包含多個時間段、每段一個模式值的 JSON)解析為若干條**分時資料(Customization)**寫入指令——雲端只需要按約定格式下發一次 JSON,邊緣側就能自動按時間段生效,不需要額外開發。

部分雲端協定(如 JSON-RPC 風格)要求下發訊息後必須收到執行結果的回應。Edge-EMS Builder 支援在訂閱設定中同時定義:

  • responseTopic:回應傳送到哪個 Topic(指令碼可以從原始訊息中提取 id 等欄位動態拼接);
  • response:回應內容本身,可以引用固定變數 ${subscribe_result}(動作是否執行成功)和 ${subscribe_result_message}(詳細執行結果)。

這樣雲端下發策略後,可以準確知道該策略是否已經在邊緣生效,而不是“發了就當成功”。

雲端下發分時策略 → MQTT 訂閱動作解析訊息封包 → 寫入分時資料(按時間段生效)→ 觸發方案或前端後續按該策略執行 → 邊緣按釋出策略定時把執行結果回傳雲端

這是雲端與邊緣協作最常見的一種模式:策略下發和結果回報各自獨立設定,互不耦合,任何一側都可以單獨調整而不影響另一側。

當裝置暫時無法聯網導致釋出任務失敗時,Edge-EMS Builder 會自動快取釋出失敗的訊息(快取佇列大小可設定),待網路恢復後自動重傳,避免因網路抖動丟失關鍵回報資料。

雲端經 MQTT 與 Edge-EMS Builder 交換策略、執行狀態和結果的流程

本圖根據本頁設定邏輯繪製,展示資料與控制流程。具體操作欄位請參照文中的設定與指令碼。