本帖最后由 sxjml 于 2019-12-6 03:53 编辑
由于要给鸡舍折腾,摸索了很多,实在找不到esp配合氨气传感器的方法,无奈之下modbus的传感器很多,所以就搞了俩modbus的传感器,折腾出来之后其实感觉就是走的弯路太多,其实还是很简单的
氨气传感器:KM21B30-NH3RS485氨气传感器(rs485 modbus)
风速传感器:建大仁科RS485风速传感器(rs485 modbus)
首先俩不是一个牌子的,但都写的是modbus rs485的
我用官方的工具usb to rs485电脑直连设备设置,俩设备固定波特率一样,改了地址,氨气传感器地址是1,风速传感器地址是2
实际使用环境我用了一个wifi串口服务器,也就是支持RS485转tcp,如下图
总之就是配好电源和接好A、B线就行,俩传感器A、B都接到这个wifi串口服务器的A、B上
然后wifi串口服务器接入wifi,模式选择成server并且把端口以及串口速率什么的都设置了。目的就是把modbus RTU转换成modbus TCP,经过这轮折腾,基本上硬件部分就搞定了,接下来看软件部分
ha原生支持modbus,但文档写的很简单
先亮一下我的主要部分配置文件
modbus:
name: hub1
type: rtuovertcp
host: 192.168.8.69
port: 8000
sensor:
- platform: modbus
scan_interval: 10
registers:
- name: nh3
hub: hub1
slave: 1
unit_of_measurement: ppm
register: 0
precision: 1
scale: 0.01
- name: fengsu
hub: hub1
slave: 2
unit_of_measurement: "m/s"
register: 0
precision: 1
scale: 0.1
我简单用我自己理解的说明一下一些参数:
type: rtuovertcp
这个是我这个wifi串口服务器得调成这个才能被ha获取到数据,之前填tcp就是出不来数据,类型不多看官网文档就能挨个试出来
slave: 2
这个是地址号,modbus里面的设备地址号不能冲突
scale: 0.01
这个需要看你硬件的说明文档(如下图),因为文档上写的很明确最终16进制换算出来的10进制的数值要除以100或者除以10,我这俩设备,一个是比实际大10一个是比实际大100,所以一个写0.01一个写0.1
然后重启一下ha就有数据了
参考资料:
https://www.home-assistant.io/integrations/sensor.modbus/
https://www.home-assistant.io/integrations/modbus/
|