ThingsBorad开发教程:ThingsBoard概念 · ThingsBoard开发教程 · 看云
本文内容将帮助你通过thingsboard网关
快速接入modbus协议
的设备。
本文具体实现官网modbus官网modbus例子,并补充控制modbus的部分。
配置Modbus连接器
tb_gateway.yaml
中配置thingsboard的地址端口以及tb-gateway连接到tb使用的accessaToken(在tb页面创建设备并勾选是否网关
选项,复制此设备的accessToken,填入此配置),并打开modbus连接器配置。
thingsboard:
host: localhost
port: 1883
remoteShell: false
remoteConfiguration: false
security:
accessToken: z5zRQmSXe64U39my83jd
qos: 0
storage:
type: memory
read_records_count: 100
max_records_count: 100000
connectors:
-
name: Modbus Connector
type: modbus
configuration: modbus.json
Modbus相关配置modbus.json
具体含义在配置文件的注释
{
"server": {
"name": "Modbus Test Server", # modbus服务器名称
"type": "tcp",# modbus连接方式
"host": "10.211.55.3",# 地址
"port": 502, # 端口
"timeout": 35,
"method": "socket",
"devices": [
{
"unitId": 1,
"deviceName": "TH_sensor",# 设备名称,成功后会出现在tb的设备列表中
"attributesPollPeriod": 5000, # 每隔五秒拉取一次属性数据
"timeseriesPollPeriod": 5000, # 每隔五秒拉取一次遥测数据
"sendDataOnlyOnChange": false,
"attributes": [ # 数组中的定义作为属性上传到tb
{
"byteOrder": "BIG",
"tag": "batteryLevel", # 定义属性名称展示在tb设备的属性中
"type": "long",
"functionCode": 4, # modbus的功能码
"registerCount": 1,# 读取的寄存器数量(从寄存器开始地址)
"address": 2 # 读取的寄存器开始地址
}
],
"timeseries": [ # 作为遥测数据上传的定义
{
"byteOrder": "BIG",
"tag": "humidity",# 湿度
"type": "long",
"functionCode": 4, # modbus功能码 4(只读)
"registerCount": 1,
"address": 1 # modbus地址1
},
{
"byteOrder": "BIG",
"tag": "temperature",# 温度
"type": "long",
"functionCode": 3, # modbus功能码 3(可读写)
"registerCount": 1,
"address": 0 # modbus地址0
}
],
"rpc": [ # rpc写/控制功能定义
{
"tag": "resetTemperature", # 对应rpc中method的值要指定此值
"type": "16int", # 数据类型
"functionCode": 6, # modbus功能码 6
"objectsCount": 1,
"address": 0 # modbus地址 0
}
]
}
]
}
}