当前位置: 首页 > news >正文

IG系列网关和EC系列边缘计算机DSA数采程序中,MQTT发布消息脚本编写说明

一、测试环境介绍

型号:IG502

固件版本:V2.2.0

SDK版本:1.4.5

APP版本:V3.4.0

二、来源数据获取

按照官方手册完成数据采集配置和连接云平台的设置,在消息管理里面新增发布。

新增发布后有一些参数需要填写,如下图上介绍参数的意义。

在上图的来源数据里面我们可以看出三个数据源类型

1、测点数据

测点数据是最原始的按照分组的方式对数据进行打包JSOM然后传递到平台。

使用MQTT.fx软件连接MQTT平台,然后订阅这个主题,可以看到发上来的数据如下

# 原始数据格式 { "timestamp" : 1777430120, # 秒级时间戳 "timestampMsec" : 1777430120167, #毫秒级时间戳 "group_name" : "default", # 分组名称 "values" : { #无定义 "WSDJ" : { # 控制器名称 "SD" : { # 变量名称 "raw_data" : 44.82, # 变量值 "timestamp" : 1777430117, #采集变量的时间戳秒级 "status" : 1, #变量采集状态 "timestampMsec" : 1777430117769 #采集变量时间戳毫秒级 }, "WD" : { "raw_data" : 24.79, "timestamp" : 1777430117, "status" : 1, "timestampMsec" : 1777430117769 } }, "IO" : { "DI3" : { "raw_data" : 0, "timestamp" : 1777430118, "status" : 1, "timestampMsec" : 1777430118339 }, "DI2" : { "raw_data" : 0, "timestamp" : 1777430118, "status" : 1, "timestampMsec" : 1777430118339 } } } }

以上为原始变量,是发布程序通过默认脚本发出来的数据

# 默认脚本 import json from common.Logger import logger from quickfaas.remotebus import publish def main(message, wizard_api, cloudName): logger.debug("publish topic:%s, payload: %s, cloudName: %s" % (__topic__, message, cloudName)) publish(__topic__, json.dumps(message), __qos__, cloud_name=cloudName)

示例

期望格式:

{ "ID":"001", #固定字段 "ts":XXXXXXXXX, # 秒级时间戳 "data":{ "d_name":{ #控制器名称 "name":34.5 #name-变量名称,34.5-变量值 } } }
# 示例脚本 import json from common.Logger import logger from quickfaas.remotebus import publish def main(message, wizard_api, cloudName): msg={ "ID":"001", "ts":message["timestamp"], "data":{} } for key,value in message["values"].items(): msg["data"][key]={} for key1,value1 in value.items(): msg["data"][key][key1]=value1["raw_data"] logger.debug("publish topic:%s, payload: %s, cloudName: %s" % (__topic__, msg, cloudName)) publish(__topic__, json.dumps(msg), __qos__, cloud_name=cloudName)
#实际输出 { "ID" : "001", "ts" : 1777431854, "data" : { "WSDJ" : { "SD" : 44.65, "WD" : 24.9 }, "IO" : { "DI3" : 0, "DI2" : 0 } } }

2、控制器数据

测点数据是按照单一控制器的数据进行打包JSOM然后传递到平台。

使用MQTT.fx软件连接MQTT平台,然后订阅这个主题,可以看到发上来的数据如下

#原始数据格式 { "timestamp" : 1777432145, #时间戳秒级 "timestampMsec" : 1777432145467,#时间戳毫秒级 "ctrlName" : "WSDJ", # 控制器名称 "measures" : [ { #固定字段 "ctrlName" : "WSDJ", # 控制器名称 "name" : "WD", #变量名称 "health" : 1, #采集状态 "timestamp" : 1777432145, #变量采集时间戳秒级 "timestampMsec" : 1777432145465, #变量采集时间戳毫秒级 "value" : 24.9 #变量值 }, { "ctrlName" : "WSDJ", "name" : "SD", "health" : 1, "timestamp" : 1777432145, "timestampMsec" : 1777432145465, "value" : 44.69 } ] }
#期望格式 { "ID":"001", #固定字段 "ts":XXXXXXXXX, # 秒级时间戳 "data":{ "d_name":{ #控制器名称 "name":34.5 #name-变量名称,34.5-变量值 } } }
# 示例脚本 import json from common.Logger import logger from quickfaas.remotebus import publish def main(message, wizard_api, cloudName): msg={ "ID":"001", "ts":message["timestamp"], "data":{message["ctrlName"]:{}} } for key in message["measures"]: msg["data"][key["ctrlName"]][key["name"]]=key["value"] logger.debug("publish topic:%s, payload: %s, cloudName: %s" % (__topic__, msg, cloudName)) publish(__topic__, json.dumps(msg), __qos__, cloud_name=cloudName)
#实际输出 { "ID" : "001", "ts" : 1777433163, "data" : { "WSDJ" : { "WD" : 24.9, "SD" : 44.81 } } }

3、告警数据

(该部分不常用,这里不单独做解析说明)

三、总结

在这个脚本编写中可以实现多种格式对接,不仅限于json数据,还有加密,二进制字节等,并且设备支持安装第三方春Python库。可以实现高效编程,

如果需要更多帮助或者支持,请留言或者私信我。我看到后会尽快提供支持。

http://www.jsqmd.com/news/722552/

相关文章:

  • MinIO 国产平替,RustFS 发布 Beta 版本啦
  • 2026乐山特色餐饮TOP5推荐 适配多元场景 - 优质品牌商家
  • git提交代码时,将大写文件改成小写,提交不上去了
  • 详解C++动态内存管理
  • 2025届学术党必备的五大AI论文方案解析与推荐
  • 图像降噪算法调研
  • 【国家级医疗信息平台强制要求】:C#系统对接FHIR 2026标准的4类高危代码模式(附SonarQube规则库+自动修复脚本)
  • 2026年小白程序员转行大模型:收藏这份高薪学习路线,抓住AI风口!
  • VS Code Copilot Next 工作流配置已进入“智能编排”时代:如何用3个JSON Schema + 1个DSL描述符接管全部重复性编码任务?
  • 构建个人开发者知识库:从碎片化信息到结构化工具箱
  • BiliTools完整指南:如何轻松下载B站视频与弹幕
  • C++实现动态绑定代码分享
  • 电子瘾集中营:软件测试从业者的数字囚笼与突围指南
  • 3种方法搞定AI定制需求,比Fine-tuning省时省钱100倍!
  • 前端性能优化:可访问性优化详解
  • 【车载实时通信生死线】:C#中控系统必须通过的5项ASAM MCD-2 MC兼容性测试(含ISO 26262 ASIL-B级日志同步验证)
  • KaiwuDB社区版跨模查询+Apache Superset:智能电表场景可视化实战指南
  • Swoole+LLM长连接崩了?5个致命错误代码片段+4步热修复流程,现在不看明天宕机
  • VS Code 远程容器开发环境崩溃实录(附完整日志解码手册):从 Dockerfile 语法错误到 OCI runtime error 的全链路排障指南
  • windows 训练yolov26官方数据集
  • 理解HTTP Keep-Alive与TCP长连接
  • C++内存管理面经
  • 避坑指南:Qt Widgets中paintEvent()重绘的5个常见错误与性能优化
  • IC互连技术演进与封装测试解决方案
  • ARM PMU性能监控与PMBSR寄存器深度解析
  • 保姆级教程:用UE5的Cable组件和PhysicsConstraint做个会晃的吊灯(蓝图版)
  • 别再让限流规则重启就丢!Spring Cloud Gateway + Sentinel + Nacos 配置持久化保姆级教程
  • 国产替代之2SK3704与VBMB1615参数对比报告
  • BilibiliDown终极指南:3步轻松下载B站视频的免费开源工具
  • 2026年实用降AI工具推荐:实测AI率从90%降至4%的高效方案