本帖最后由 tianzhuang55 于 2024-12-28 20:56 编辑
一、基本概念厘清 • RS485:一种物理层的通讯方式,通过差分信号传输数据,相较于 RS232 的高低电平信号传输,具有更强的抗干扰性和更远的传输距离。 • Modbus:一种应用层通讯协议,常用于工业设备数据采集和控制。 • RTU:Modbus 协议的一种传输模式,数据以紧凑的二进制形式传输。 • TCP:Modbus 协议的另一种传输模式,基于 TCP/IP 网络传输数据。
二、接入 RS485 温湿度传感器的背景 市面上有许多可以轻松接入 Home Assistant 的温湿度传感器。然而,此次接入的主要目的是为后续接入松下新风系统(通过 RS485 通讯)积累经验。看到论坛里有几位大佬分享了松下新风通过RS485接入的教程,硬件层面的思路是一致的,即新风主机→松下Modbus模块→Modbus转TCP模块→HA。但是在HA接入后的控制方法不同,一个gmzjy1989大佬是通过Modbus集成接入,另一个则是yuyamin大佬通过Nodered接入。
gmzjy1989大佬的教程已经相当详细,最终的实现也比较完美,但是我对于modbus这个协议一直云里雾里,所以想先通过接入一个485的温湿度传感器练练手以更好的了解学习。
三、硬件准备 1. 485 温湿度传感器(以下简称“传感器”):¥9.6 2. RS485 转 TCP 模块(以下简称“模块”):¥27.43 之所以没有选择大佬教程中的模块,一是因为价格略高且不包邮,二是希望通过购买同功能但不同品牌的产品,试验后反而能对于配置有更深理解
四、接线 如下图,模块接入DC电源后,凤凰口(绿色一组4个的那个口)会对应输出12V电压,刚好可以给传感器供电。A+和B-也对应接入,在这里我用的就是普通杜邦线,没有用双绞线。
五、传感器配置 这里贴出传感器的配置,后面模块配置需要对应,这里的地址1就是后面配置文件中的从站地址:
传感器的寄存器则决定了ha的modbus配置文件中如何配置sensor:
六、模块配置
按说明书根据家里的网段网关情况,配置为静态IP
后台配置关键参数如下图,注意波特率、数据位、校验位、停止位,应当与传感器一致。本地端口10123后续HA的配置文件中需要、工作方式为TCP server。
另外有一个重要参数我折腾了半天,后来终于搞明白了:
七、Home Assistant 配置文件 然后就是ha中的配置文件,可直接添加在configuration.yaml中,请自行调整缩进,注意需要重启。modbus:
- name: "ModbusTCP"
type: tcp
host: 10.2.2.12 # Modbus 转 TCP 模块的 IP 地址
port: 10123 # Modbus 转 TCP 模块的端口号
delay: 2 # 通信延迟,单位:秒
sensors:
- name: "485-Temperature"
unit_of_measurement: "°C"
address: 0 # 温度寄存器地址 (0000H)
input_type: holding # 保持寄存器
data_type: uint16 # 数据类型
scale: 0.1 # 缩放因子
precision: 1 # 保留一位小数
slave: 1 # 从站地址(传感器地址为 1)
- name: "485-Humidity"
unit_of_measurement: "%"
address: 1 # 湿度寄存器地址 (0001H)
input_type: holding # 保持寄存器
data_type: uint16 # 数据类型
scale: 0.1 # 缩放因子
precision: 1 # 保留一位小数
slave: 1 # 从站地址(传感器地址为 1)
八、接入结果 重启后,在集成modbus中可以看到新增两个传感器,且可以正常读数:
至此,ha中成功接入485传感器设备,后续就可以搞新风啦!希望此帖能帮助到有类似需求的小伙伴,也欢迎大家交流相关经验!感谢群内的分享气氛!
|