MQTT是一种发布(publish)/订阅(subscribe)协议,MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。MQTT 协议解决了物联网中一个最基础的问题:设备和设备之间、设备和云端服务之间是如何进行数据通讯的。
MQTT网关起到将普通的串口数据、Modbus RTU数据等转化为MQTT协议的作用,通过连接服务器、订阅和发布主题来实现传统设备和MQTT云端的联系。例如,笔记本和手机都向MQTT服务器订阅了消息主题为温度的消息,当MQTT网关向这个服务器发布温度传感器的消息(当前温度为21℃),笔记本和手机都会收到发布的温度。卓岚的MQTT产品可以充当本地设备和MQTT云服务器之间的桥梁。
类型 | 型号 |
---|---|
4G DTU | ZLAN8303-7 ↴ |
以太网 | ZLAN5143 ↴ |
Wifi+以太网 | ZLAN7144 ↴ |
Wifi | ZLAN7146 ↴ |
内嵌MQTT网关模块(以太网) | ZLSN2043S ↴ |
内嵌MQTT网关模块(wifi) | ZLSN7046T ↴ |
内嵌MQTT网关模块(wifi+以太网) | ZLSN7044 ↴ |
MQTT网关单芯片 | ZLAN1043 ↴ |
MQTT数据采集网关(8路模拟量输入、数字量输入/输出) | ZLAN6844 ↴ |
除了数据采集网关通过模拟量和数字量对外接口外,其它MQTT网关都采用串口(RS485、RS232、RS422、TTL)来和设备对接。支持MQTT云平台有百度云、阿里云等。
1.自动采集:温度传感器采用的Modbus RTU协议需要每隔一段时间去询问设备,获得当前温度。但MQTT协议属于有消息就发布的机制MQTT服务器无法担任这个任务,必须让MQTT网关自动查询温度传感器,并将获得数据存储起来,并定时上发服务器。卓岚MQTT网关可配置Modbus轮询指令或者非标准的串口设备指令。
2.格式转化:设备端采用的是十六进制指令,比如01 03 02 12 34 b5 33的数据,这种数据对于云端比较难统一和识别。卓岚MQTT网关支持将Modbus RTU数据转化为JSON格式后上发,比如以上十六进制数据变为:{“power”:”1234”}这种格式。
1.采用MQTT为基础的协议和服务器建立连接,采用订阅发布的形式进行数据通讯。
2.支持Modbus RTU寄存器的自主设计和自动采集。
3.支持将特定的Modbus寄存器内容转化为JSON格式定时主动上发。
4.支持在JSON格式中加入设备ID,方便云端识别设备。
5.支持无符号数据和有符号数据,支持小数点表示,支持4字节长度数据。
6.所有配置都可以界面化配置完成,用户自主配置无需定制。
MQTT可以单独使用也可以和JSON功能配合使用。当单独使用的时候MQTT功能将串口数据透传上发MQTT服务器。也就是将串口接收的数据作为MQTT的载荷。同时MQTT的载荷会以透传的方式从串口输出。实现串口转MQTT。
首先搜索到设备,然后点击编辑设备:
点击“固件与配置”,弹出配置下载和设计对话框:
这里选择“网页目录下载”,然后选择一个空的目录,比如MQTTHTTPD目录,然后先点击“清除全部”清除之前的设计(注意如果之前按有JSON设计的,则不要清除全部,否则会清除之前的JSON设计)。然后点击MQTT配置。
这里配置说明如下:
1.服务器域名或IP:这里填写的是MQTT服务器的IP,最长为30个字符。
2.用户名:是MQTT服务器的用户名。
3.密码:是这个用户的登录密码。
4.客户端ID:是MQTT的client ID。
5.订阅主题:是这个设备订阅的主题,有其它设备发布这个主题的时候,服务器会下发给这个设备。如果只是发布,一般无需填写这个字段。
6.发布主题:这个设备串口转MQTT的时候向服务器发送的数据的主题。
7.MQTT高级参数:用于配置高级参数。
8.保存MQTT设置:设计完毕点击这个按钮进行保存,然后点击网页下载目录的“下载按钮”下载。
现在先点击“MQTT高级参数”(一般无需配置高级参数):
说明如下:
1.协议版本:目前主流的是3.1.1版本,如果需要选择3.1版本,请在这里选择。
2.保活时间:MQTT的心跳时间,最少为10秒,默认为60秒。
3.服务器清除订阅:客户端断线后服务器是否清除订阅信息。
4.是否启用遗愿:是否有遗愿。
5.遗愿主题:遗愿主题。
6.遗愿信息:遗愿的信息。
7.是否保存遗愿:服务器是否需要保持客户端异常离线时发送给客户端的遗愿消息。
8.遗愿质量:服务器发送的遗愿消息的交付质量级别。
9.订阅质量:订阅的交付质量级别。有的情况下需要设置为0,防止重传引起断线。
10.发布质量:客户端发布消息的交付质量级别。有的情况下需要设置为0,防止重传引起断线。
11.是否保存发布:服务器是否保持最后一条消息(如果有新的客户端订阅则发送给客户端)。
我们这里不修改高级参数。直接点击“保存MQTT设置”。然后点击“下载”
下载完毕点击确定,此时会回到设备管理对话框,看到设备的目的IP、工作模式、目的端口已经自动修改为MQTT的设置:
如果没有自动修改则需要在设备编辑对话框下,设置目的IP、工作模式、目的端口。然后点击“修改设置”。
这样配置就完成了。
连接完成后设备的LINK灯(一般为中间的蓝色灯)变亮。说明设备正常连接上MQTT服务器。
现在打开串口工具:
使用和设备一样的波特率打开串口,并发送数据“dev send”,此后在接收窗口看到返回的数据“dev send”。这是由于我们将dev send这个信息以zlansub的主题发布给MQTT服务器。但是同时我们的设备也订阅了zlansub这个主题,所以服务器立刻会给我们发送一个订阅信息,订阅信息的内容就是dev send。这个信息作为MQTT的载荷发送下载,通过透传的方式从串口输出。
如果其它设备发布信息过来,这个设备也能够收到数据。
一般来说,用户可以直接将串口指令(比如Modbus RTU)指令直接透传给MQTT服务器。另外也可以使用JSON功能,采用自动Modbus RTU格式采集,定时JSON格式上发的形式。另外也可以找香港免费公开资料大全定制一些非标的仪表和上位机协议格式。
如果需要实现JSON格式嵌套在MQTT中,那么需要在ZLVircom的“网页/程序下载工具”对话框中点击“JSON配置”按钮(就在MQTT配置按钮旁边)。配置的方法参考JSON相关配置文档。
将上述的JSON和MQTT相组合可以实现如下的功能:
1.采用MQTT为基础的协议和服务器建立连接,采用订阅发布的形式进行数据通讯。但是封装的是JSON格式数据。
2.支持Modbus RTU寄存器的自主设计和自动采集。
3.支持将特定的Modbus寄存器内容转化为JSON格式定时主动上发。
4.支持在JSON格式中加入设备ID,方便云端识别设备。
如果需要MQTT+JSON转Modbus RTU功能的,可以分别设计MQTT和JSON,不分先后次序。设计完一种不要点击“清除设计”按钮,两个设计完,一起点击“下载”按钮下载到设备内容。
一般可以下载后手动重启设备,加载设置。