- 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 同样可以把数据实时推给你自己的前端界面:前端实时推送与直接控制