自定义主题GS200照明设备接入ThingsPanel
发布日期:
目标
GS200是一个软硬件一体的照明系统,设备和主题是固定的,现在我们的目的是要把这个系统接入进来
接入进来之后,就能实现如下图所示的上报和控制功能。
经过小部分的界面开发工作,可以完全实现如下控制界面所示功能。

要实现这个目的,我们就需要使用ThingsPanel自定义主题结合脚本功能来实现。
分析
这个文档长达66页面。

通过分析,发现整个报文分为上报遥测和下发控制两部分报文规范,分别在附件一和附件二

下发的实例:

{"code":100,"deviceName":"lampNode","area":"00 01","address":"00 03","action":"blink","params":"","identity":""}
说明:code=100,代表单灯控制,指令含义为 1区3号的灯闪一闪。如果需要上报,需要先询问,设备才上报

所以我我们只需要处理两个规范即可。
操作
进入协议配置页面
进入设备模板详情页
点击「协议配置」标签页
选择协议类型为「MQTT」

添加上行主题映射
点击「添加」按钮
填写映射信息:映射名称:规则名称(必填)
数据方向:选择「发布:上行(设备 → 云)」
原始主题:设备实际发布的主题,支持 + 占位符 : /sys/ProductKey1/abc123456/thing/event/consumption/post
目标主题:平台规范主题(下拉选择)
描述:可选说明
点击「保存」

添加下行主题映射

点击「添加」按钮
填写映射信息:映射名称:规则名称(必填)
数据方向:选择「订阅:下行(云 → 设备)」
原始主题:设备实际订阅的主题,必须包含 {device_number}
/sys/ProductKey1/abc123456/thing/event/beacon/post
目标主题:平台规范主题(下拉选择)
devices/command/{device_number}/+命令标识符(可选):用于多映射场景,匹配 payload 中的 method 字段
描述:可选说明
点击「保存」
配置数据处理
如果需要处理数据,需要自行编辑脚本。在如下图的编辑框中。
也可以使用AI工具去写。

在设备模板详情页,点击「数据处理」标签页
- 点击「新增数据处理」按钮
- 选择处理类型:上报数据预处理:处理设备上报的遥测数据
- 下发数据预处理:处理平台下发的控制数据
- 属性上报/下发预处理:处理属性相关数据
- 指令下发预处理:处理指令下发数据
- 事件上报预处理:处理事件上报数据
- 配置数据处理规则(如字段映射、格式转换等)
保存配置
测试验证
ThingsPanel给设备下发
填写示例:beacon就是命令标识符。
命令里面就不需要beacon

列表显示下发成功
自动带了method:beacon,注意下发命令的时候不需要有这一层。

下图中包含了上报和下发控制两个示例
1、 code:400的报文是ThingsPanel下发给设备后,mqttx客户端订阅到的信息,说明设备端确实可以收到。
2、 /sys/ProductKey的报文是上报遥测给ThingsPanel,发送了一个数据test,值为1

发送后:
ThingsPanel收到消息如图:确实收到了。

注意事项
1. 占位符规则:
支持 +(单层匹配),不支持 #(多层匹配)
下行原始主题必须包含 {device_number} 变量
2. 多映射匹配:
下行主题转换时,优先匹配 data_identifier 不为空的配置
匹配成功时,payload 会被精简为 params 部分
未匹配时,使用 data_identifier 为空的兜底配置,payload 保持原样
3. 主题转换与数据处理:
主题转换负责主题映射,数据处理负责报文内容转换
两者可配合使用,实现完整的非规范设备接入方案
处理顺序:主题转换 → 数据处理





