北向 vs 南向
- 南向:设备 → EdgeOS(点表 / 协议适配,见 Protocol Pack 实战)
- 北向:EdgeOS → 客户云 / 调度厅 / 监控平台(本篇)
EdgeOS 走「一采多发」:南向只采一次,北向可同时发到多个目的地。
三种北向通道
| 通道 | 适用场景 | 协议特征 | |---|---|---| | MQTT | 云平台、SCADA、企业 IoT 中台 | 主题模型、QoS 0/1/2、可订阅 | | TCP | 客户自研 ingest、私有协议 | 长连接、报文格式由客户定 | | IEC-104 | 电网调度厅、监控中心 | 标准电力规约、ASDU 地址需调度厅分配 |
通道配置四步骤
1. 创建通道
在 EdgeOS 控制台「通道管理」新增一个北向通道,按类型填参:
- MQTT:broker 地址 / 端口 / TLS / 用户名密码 / 客户端 ID
- TCP:目标 IP / 端口 / 心跳间隔 / 重连策略
- IEC-104:本端 IP / 端口(默认 2404)/ ASDU 公共地址
2. 连通性自测
通道保存后立即做一次握手 / 连接测试:
- MQTT:见到 CONNACK
- TCP:三次握手通过
- IEC-104:U-format 启动帧(STARTDT)应答正常
任何一步失败先排防火墙 / 证书 / 地址。
3. 绑定设备 + 转发规则
通道是「管子」,规则决定「谁的数据通过这根管子、什么频率、什么格式」。
egress_rule:
channel: cloud-mqtt-prod
devices: ["inv-001", "inv-002", "meter-*"] # 支持通配
fields: ["active_power", "daily_yield", "alarm_status"]
cadence: 30s # 上报频率
topic_template: "site/{device}/telemetry" # MQTT 主题模板
payload: json # json / cbor / 自定义
devices:哪些设备走这根管子fields:点表里的哪些字段被发出去cadence:上报频率(建议 ≥ 设备实际采集周期)topic_template:MQTT 主题命名规则- IEC-104 规则用 ASDU + 信息体地址替代 topic
4. 验证 + 上线
- MQTT:用 MQTT Explorer / mosquitto_sub 订阅看实时报文
- TCP:在目标端打日志或抓包确认
- IEC-104:调度厅侧抓总召唤报文,核对点表完整性
确认无误后规则置生效,分发到同模板的所有设备。
多目的地(一采多发)
同一台设备的同一个字段,可以同时上报到:
- 客户主云(MQTT QoS 1,30s)
- 备份云(MQTT QoS 0,5min)
- 调度厅(IEC-104,触发上送 + 定时总召)
每条规则独立配置,相互不影响。这是 EdgeOS 「南向只采一次、北向多目的地」的核心价值。
修改 / 灰度
- 切换 MQTT broker 地址不影响南向采集,但所有订阅方都得跟着改 topic 模板
- 加新字段建议先在测试通道验证,再放进正式规则
- 删字段 / 改字段名时务必跟下游协调,避免对端解析失败
常见坑
- MQTT 主题命名漂移 → 跟平台约定一次后写进设备模板,避免一台一改
- payload 多版本 → 字段名、单位、数据类型按约定固定,下游做版本兼容
- IEC-104 ASDU 地址重复 → 调度厅会拒收,必须提前协调地址池
- 重复上报 → 一台设备别同时挂两条同 topic 规则到同一个云
- 网络抖动 → 漏数据 → 启用 EdgeOS 本地缓存 + 断点续传
跟 ZenovaOS 集成
EdgeOS 出向到自家监控平台 ZenovaOS 走 MQTT 模式,topic 模板由 ZenovaOS 侧提供。详细字段约定与平台账号联系销售。
商业模式整体见 /how-we-work。