- Jelina 概覽
- EMS Builder
- 整合與協同
核心能力:MQTT 雲端與邊緣協作
MQTT 通道是 Edge-EMS Builder “雲端與邊緣協作”能力的載體:向上,把邊緣的即時資料和決策結果回報雲端;向下,接收雲端下發的策略並自動落地為本機設定。雲端與邊緣協作是三個產品等級的基礎能力,不是需要單獨付費或客製化開發的高階選項。
一、連線設定
Section titled “一、連線設定”一個 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,邊緣側就能自動按時間段生效,不需要額外開發。
四、需要回應的場景
Section titled “四、需要回應的場景”部分雲端協定(如 JSON-RPC 風格)要求下發訊息後必須收到執行結果的回應。Edge-EMS Builder 支援在訂閱設定中同時定義:
responseTopic:回應傳送到哪個 Topic(指令碼可以從原始訊息中提取id等欄位動態拼接);response:回應內容本身,可以引用固定變數${subscribe_result}(動作是否執行成功)和${subscribe_result_message}(詳細執行結果)。
這樣雲端下發策略後,可以準確知道該策略是否已經在邊緣生效,而不是“發了就當成功”。
五、典型閉迴路示例
Section titled “五、典型閉迴路示例”雲端下發分時策略 → MQTT 訂閱動作解析訊息封包 → 寫入分時資料(按時間段生效)→ 觸發方案或前端後續按該策略執行 → 邊緣按釋出策略定時把執行結果回傳雲端
這是雲端與邊緣協作最常見的一種模式:策略下發和結果回報各自獨立設定,互不耦合,任何一側都可以單獨調整而不影響另一側。
六、斷網續傳
Section titled “六、斷網續傳”當裝置暫時無法聯網導致釋出任務失敗時,Edge-EMS Builder 會自動快取釋出失敗的訊息(快取佇列大小可設定),待網路恢復後自動重傳,避免因網路抖動丟失關鍵回報資料。
本圖根據本頁設定邏輯繪製,展示資料與控制流程。具體操作欄位請參照文中的設定與指令碼。
- 釋出/訂閱指令碼的完整參數與請求回應訊息封包格式:MQTT 釋出/訂閱指令碼手冊
- 瞭解裝置與裝置之間(而非裝置與雲端之間)如何直接協作:裝置協作與共享目標
- 除了雲端,Edge-EMS Builder 同樣可以把資料即時推給你自己的前端介面:前端即時推送與直接控制