设备采集网关通信范本(modbus+mqtt)
1. 对接设备端:包括设备型号,对接方式,采集内容,使用数采网关或者编写程序,并接上设备进行测试
采集内容范例:
中堡泵站3路闸门点位表 IP:192.181.5.132 端口:502 |
||||
数据源 |
数据类型 |
Modbus地址 |
R/W |
备注 |
1#闸门状态(出水闸) |
short |
400101 |
R |
0=停止 1=开到位 2=关到位 3=开启中 4=关闭中 5=过载 |
液位计通讯状态 |
short |
400171 |
R |
0=正常 1=通讯断线 |
1#闸门开度 |
float |
400201 |
R |
0.000米 |
阀门检修井液位高度 |
float |
400263 |
R |
0.000米 |
1#供水泵瞬时流量 |
short |
400363 |
R |
实际值=采集值/100 |
2. 对接服务端:MQTT对接信息、MQTT消息主题定义、MQTT通信报文定义
MQTT对接信息
IP:192.168.0.235
端口:61613
账号:admin
密码:admin
MQTT Version:3.1
MQTT 消息主题定义
主题格式定义:
方式1:以客户端划分,前缀编码/CLIENTID,多用于client间通信
CLIENTID可以有以下类型
用户商 ID:编码自行定义(如:1001)
设备的 ID:采用 IMEI 号(如:868739058068770)
PTZN/1001
PTZN/868739058068770
方式2: 以功能划分,前缀编码/up/**,前缀编码/down/**,多用于clien和server间通信
btioe/up/#{imei}
btioe/down/#{imei}
Server通过消息过滤通配符号#(btioe/up/#),监听所有上行数据
MQTT通信报文定义
消息格式定义
名称 |
说明 |
类型 |
备注 |
c |
【code】简写 |
int32 |
通讯指令 |
f |
【from】简写 |
string |
发送方 ID |
t |
【to】简写 |
string |
接收送方ID |
m |
【message】简写 |
string |
消息内容 |
mi |
【message id】简写 |
int32
|
标识每条消息自动+1 |
指令c说明
名称 |
说明 |
c=21 |
c->s,采集端上报数采数据,报文1 |
c=22 |
s->c,服务端下发控制指令,报文2 |
报文1说明
jsonkey值 |
类型 |
说明 |
itemcode |
string |
采集项编码 |
itemvalue |
string |
采集项采集值 |
time |
string |
采集时间 |
报文2说明
jsonkey值 |
类型 |
说明 |
code |
string |
响应码 |
message |
string |
响应信息 |
data |
string |
响应数据 |
报文范例:
上行数据 Topic: btioe/up/865373043994156
{"c":21,"f":"865373043994156","t":"master","m":{"itemcode":"","itemvalue":"1","itemtime":"2024-03-13 00:00:00"},"mi":1}
下行数据 Topic: btioe/down/865373043994156
{"c":22,"f":"master","t":"865373043994156","m":{"code":1,"message":"ok","data":null},"mi":1}
mqtt数据持久化,接收离线数据
MQTT 持久会话与 Clean Session 详解 | EMQ (emqx.com)