DGIOT规则引擎完成非标MQTT格式转化

首页博客, 实战教程, 技术文章

[小 迪 导 读]:在工业物联网蓬勃发展的背景下,MQTT协议是工业物联网中使用最广泛的协议。受限于设备Topic主题不和规范等问题,一般物联网平台无法对接。Dgiot平台使用规则引擎模块进行数据转换,支持一切非平台标准的MQTT主题连接。


场景解析:长期使用MQTT协议建立服务器设备连接的厂商,受限于原有的业务系统和硬件更改繁琐的因素,希望在不更改主题订阅的条件下对接新的物联网平台。同时,有的设备Topic中携带许多关键参数为标识,但是一般的云平台都有规定的格式要求所以无法正常使用。所以Dgiot通过规则引擎技术完成非平台标准MQTT协议的数据对接。


dgiot方案 其他方案
规则引擎完成非标转换 设备厂商更改MQTT主题
规则引擎自定义数据内容 在报文内增加信息内容

规则引擎完成非标MQTT格式转化

MQTT设备Topic请求格式:
主题发布格式:${自定义}/${自定义}/${设备名称}/${设备ID}/${自定义}/${请求方式}
主题发布实例:test/test/devicename/123456789/test/request
内容发布实例:{"abc":"123"}

平台订阅格式:$dg/thing/${productid}/${deviceid}/properties/report
平台订阅实例:$dg/thing/a8857a1c96/123456789/properties/report


实现流程

1.在平台创建Dlink采集通道(老版本用的的MQTT采集通道同理)。注意网络组件设置为MQTT服务器,用于接收MQTT协议的数据。
file
2.创建产品。在设备云内创建产品,对应用户的产品型号。
file
3.建立物模型。进入创建的产品内,选择物模型模块,新建物模型。
这里我们用到Dlink协议,所以标识符设置成我们mqtt报文内的数据标识。可结合下述规则引擎内保留的参数设置。
file
4.手动创建设备。在设备管理出点击“新增”,选择设备所属的产品,然后手动填入设备的id号(此处对应实际设备的编号,在mqtt上报的报文内为唯一标识)。
file
5.配置规则引擎。在云函数内选择规则管理,新增规则。
file
这里分为两块,第一部分是SQL规则配置用于拦截非标MQTT报文后取值。第二部分是重定向mqtt,用第一部分获得的数据映射来拼接出平台标准的mqtt报文然后转发到服务器上处理。
(1)SQL规则
file
这里有“select”“FROM”“where”三个方法。
第2行:对非标报文内的值进行赋值。
第3行:这个数字对应第2步内新建产品的id。
第4行:切割非标主题内容的字节块。这里是取主题里第4个值赋值成为设备id。
第6行:筛选MQTT主题,这里用“+”把设备id这个唯一标识排除。
(2)响应动作
file
通道、资源和信息重定向图上固定。目标主题可以参考产品详情捏的Topic列表。
消息内容模板内的数据是sql规则筛选出来的数据映射,也是重新生成的主题中的内容。
file
6.建立MQTT连接,发送信息。
file

名称 注释
Name 任取
Client ID 设备ID,对应新增的设备uid
Host MQTT服务器
Port MQTT服务器端口
Usename 产品ID
Password 产品密钥

file
7.数据验证。
file
file
这张图可以看到我们非标的信息转化后成为了平台标准协议然后存库处理。


[小 迪 点 评]

  • dgiot规则引擎支持所有非标Topic的转化,完成老设备小改动就能连新平台。
  • 可以从Topic中重新取值,将报文内容改的更丰富。

想了解更多 dgiot 的具体细节,欢迎大家在GitHub上查看相关源代码。

上一篇:
上一篇:

加小迪为好友
即可加入交流群

点击填写表单
获得解决方案专家帮助
点击前往 GitHub
查看源代码