FBox的MQTT(数据转发功能)使用说明 MQTT1.1-版本
一.简介
繁易 FBox 支持通过 MQTT 推送第三方服务器接口,第三方服务器需符合繁易 MQTT 协议接口文档(本文档)所定义的接口。
图 1 繁易 MQTT 推送系统框图
如上图,FBox 出厂时,默认链接到繁易云服务器,用户需用 FlexManager 软件配置 FBox 使能 MQTT 推送功能。通过 FlexManager 下发监控条目与数据采集设备驱动,设置需要采样的变量的死区,数据刷新周期,监控推送条件等。同时,用户需要配置 MQTT 推送的服务器地址和端口号,设备号,登录用户名与密码等信息。
FBox 接收到所有条目、信息并使能 MQTT 推送功能后,需重启 FBox 使设置生效。
用户可设置暂停条目推送,将 FBox 与繁易云平台的数据推送暂停。只推送 MQTT 服务器。
二.认证
1.设备 ID
设备 ID 是 FBox 登录 MQTT 服务器时的客户端标识符(Client Identifier),UTF-8 编码格式,长度 1-64。用户需确保每一个硬件设备分配的 ClientID 不重复。
2.用户名与密码
MQTT CONNECT 连接时的用户与密码,如果使能此功能,服务器必须接受检查账户合法性并给出登录成功或失败的 CONNACK 消息。
3.通信加密
FLEXEM MQTT 支持 TLS 加密,可以开启服务器验证模式,也可以开启客户端认证。
服务器验证模式可以藉由预先下载的服务器信息,设备登录 MQTT 服务器时收到的服务器发送过来的凭证做对比,如不符,则设备拒绝登录该服务器,切换服务器链接。
客户端认证模式,藉由提供私钥与凭证,让服务器验证是否可以允许设备联机。
三.心跳
FLEXEM 硬件设备不另外提供 keep alive 的心跳报文,使用 MQTT 协议约定的心跳包文维持服务器的连接。
长连接与上下线判断:FBox 与服务器通过长连接保持通信,及时响应服务器的请求。因此 FBox 需使用 MQTT 的
心跳报文。CONNECT 登录时,保持连接字节可以设置心跳间隔与空闲间隔时间。
图 2 MQTT 心跳机制
保持连接(Keep Alive)是一个以秒为单位的时间间隔,为一个 16 位的字,它是指在客户端传输完成一个控制报文的时刻到发送下一个报文的时刻,两者之间允许空闲的最大时间间隔。客户 端负责保证控制报文发送的时间间隔不超过保持连接的值。
不管保持连接的值是多少,客户端任何时候都可以发送 PINGREQ 报文,并且使用 PINGRES P 报文判断网络和服务端的活动状态。
如果保持连接的值非零,并且服务端在 1.5 倍的保持连接时间内没有收到客户端的控制报文, 它必须断开客户端的网络连接,认为网络连接已断开。
客户端发送了 PINGREQ 报文之后,如果在合理的时间内仍没有收到 PINGRESP 报文,设备会主动关闭到服务端的网络连接。
FLEXEM MQTT 默认保持连接间隔时间为 60 秒。
四.概要
- 新版本MQTT链路连接更加稳定,交互数据格式更加规范,更加灵活;
- 新版本交互格式改为可配置Json格式的方式,主题、变量名可灵活命名;
- 提供数据发布权限(Public),数据订阅权限(Subscribe)和订阅发布权限(Sub & Pub),客户可以根据不同场景灵活配置;
- 支持数据变化上报;支持数据周期上报;
- 支持监控点、报警数据上报;
- 支持摄像头图片上传功能(需配合本地串口/网口摄像设备);