thingsboard-gateway 连接modbus R485 温湿度传感器设备
准备:
1、采用源代码编译连接测试(默认pip安装包不可以改硬件连接方式配置)
2、下载pycharm用于编译开发
3、本地安装了python环境,目前我本地用的是python3.10
4、准备一个R485的温湿度传感器或者模拟串口工具亦可
5、准备一个485转USB串口转接头(用于485设备接线转USB, 模拟硬件可跳过)和安装驱动
6、安装串口调试工具(mac:minicom)用于测试串口通讯是否正常
7、就绪的thingsboard服务
目录:
一、硬件接线和资料
二、下载thingsboard-gateway源码
三、pycharm编译
四、thingsboard 服务端配置
五、修改配置文件,调整硬件连接方式
六、完结散花
一、硬件接线和资料
本次设备为淘宝购买的R485 温湿度传感器1个、R485转USB转接头1个
传感器设备参数:
波特率:4800
数据位: 8
停止位: 1
1、接线图(注意正负极,图中是虚线为正, 如果是黑白线,白正黑负;):
2、安装转接头驱动(略过,详细咨询卖家)
安装完Mac查看驱动是否安装成功: 关于本机-系统报告-USB , 可以通过插拔USB判断
3、获取串口名
Mac 电脑:
ls /dev/tty.*
串口名: /dev/tty.usbserial-130
二、下载thingsboard-gateway源码
下载地址: https://github.com/thingsboard/thingsboard-gateway
git clone -b master https://github.com/thingsboard/thingsboard-gateway
三、pycharm编译
1、打开时设置python路径,指定前面安装的python3.10的路径
2、编译成功后,会生成venv 虚拟python环境, 类似于anaconda 环境权限隔离
3、启动时会报类似于缺少pymodbus模块的问题,直接链接到里面,直接引入模块(pycharm工具还是比较友好)
四、thingsboard 服务端配置
1、新建设备
2、复制访问令牌
网关访问令牌: h3Ty5dhFe836saZgEIir
五、修改配置文件,调整硬件连接方式
1、打开thingsboard/config下的tb_gateway.yaml 修改host、accessToken(thingsboard地址、访问令牌)、硬件连接方式
2、修改modbus_serial.json 配置文件
{
"master": {
"slaves": [
{
"type": "serial",
"method": "rtu",
"port": "/dev/tty.usbserial-130",
"baudrate": 4800,
"timeout": 35,
"stopbits": 1,
"bytesize": 8,
"byteOrder": "BIG",
"wordOrder": "BIG",
"retries": true,
"retryOnEmpty": true,
"retryOnInvalid": true,
"pollPeriod": 5000,
"unitId": 1,
"deviceName": "ModbusRtu01",
"sendDataOnlyOnChange": false,
"connectAttemptTimeMs": 5000,
"connectAttemptCount": 5,
"waitAfterFailedAttemptsMs": 300000,
"attributes": [
{
"tag": "16int",
"type": "16int",
"functionCode": 4,
"objectsCount": 2,
"address": 3
}
],
"timeseries": [
{
"tag": "temperature",
"type": "16uint",
"functionCode": 3,
"objectsCount": 1,
"address": 1
},
{
"tag": "humidity",
"type": "16uint",
"functionCode": 3,
"objectsCount": 1,
"address": 0
}
],
"attributeUpdates": [
{
"tag": "shared_attribute_write",
"type": "32int",
"functionCode": 6,
"objectsCount": 2,
"address": 29
}
],
"rpc": [
{
"tag": "setValue",
"type": "bits",
"functionCode": 5,
"objectsCount": 1,
"address": 31
},
{
"tag": "getValue",
"type": "bits",
"functionCode": 1,
"objectsCount": 1,
"address": 31
}
]
}
]
}
}
3、右键启动 tb_gateway.py
5、thingsboard 网页查看数据是否上报
六、完结散花
遇到的坑:
1、传感器的电源线 火线没接通设备,只有零线接通设备,通过USB转换器接到mac电脑上,仍然显示端口名,用minicom测试竟然也是通的,拿到的串口名:/dev/tty.usbserial-140 后面接线接好了之后,拿到的串口名:/dev/tty.usbserial-130
启动一直没有数据上来,卡了我好几个小时,抓耳挠腮,不得其解。
2、由于对python一直没有系统的学习过,平常属于打一枪换一炮的那种,对于pycharm工具的一些功能不甚了解,风格跟IDEA类似,上手起来还是比较快的,比如缺少模块,直接一键直接帮你引入,跟之前我手动pip安装来比很方便。