跳转到内容
返回官网

核心能力: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 交换策略、运行状态和结果的流程

本图根据本页配置逻辑绘制,展示数据与控制流程。具体操作字段请参照文中的配置与脚本。