mprowe
(Martin)
May 13, 2022, 2:29pm
1
Hi,
New around here, so I hope I’m doing this right?
I have bought a XY-MD02 MODBUS unit for the test bench and a 3v TTL to RS485 to interface to a Wemos D1 Mini Pro.
Could someone offer me an example yaml file to get me going.
Thanks in advance, M.
polclota
(Pol Clota)
September 24, 2023, 1:48pm
2
sensor:
- platform: modbus
registers:
- name: "XY-MD01-1 temp"
unit_of_measurement: "°C"
slave: 5
register: 1
register_type: input
scale: 0.0913
# scale: 0.1
precision: 1
offset: 0
hub: USBhub
# 185 real 16.9
- name: "XY-MD01-1 humy"
slave: 5
register: 2
register_type: input
# scale: 0.1
scale: 0.119
precision: 1
unit_of_measurement: "%"
offset: 0
hub: USBhub
# 512 real 61%
polclota
(Pol Clota)
September 24, 2023, 1:48pm
3
modbus:
- name: USBhub
type: serial
method: rtu
# port: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
port: /dev/ttyUSB0
baudrate: 9600
parity: N
bytesize: 8
stopbits: 1
timeout: 10
kkwestt
(Constantine T)
December 14, 2024, 12:04am
4
For ESPHOME i use:
uart:
id: mod_bus
tx_pin: GPIO01
rx_pin: GPIO03
baud_rate: 9600
stop_bits: 1
parity: none
modbus:
id: modbus1
uart_id: mod_bus
modbus_controller:
- id: modbus_id
modbus_id: modbus1
update_interval: 5s
- id: modbus_id2
modbus_id: modbus1
update_interval: 6s
sensor:
- platform: modbus_controller
modbus_controller_id: modbus_id2
id: modbus_temp
name: "Temperature"
address: 0x01
unit_of_measurement: "C"
register_type: read
value_type: S_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
skip_updates: 2
- platform: modbus_controller
modbus_controller_id: modbus_id
id: modbus_hum
name: "Humidity"
address: 0x01
register_count: 2
offset: 2
unit_of_measurement: "%"
register_type: read
value_type: S_WORD
accuracy_decimals: 0
filters:
- multiply: 0.1
# skip_updates: 2
Read:
-Temperature - OK
-Humidity - OK
1 Like
arcfrankye
(Francis Evbuomwan)
May 5, 2025, 6:07pm
5
I just got the XY_MD02 and connected to HA through a waveshare 4ch gateway. Below is my config.yaml trying to integrate this device into my HA. I just can’t seem to figure out what I am doing wrong. Please help…
modbus:
name: “Waveshare_Modbus_Rs485_2”
method: tcp
baudrate: 9600
parity: N
bytesize: 8
stopbits: 1
type: rtuovertcp # or “tcp” if RTU-over-TCP doesn’t work
host: 66.8.3.32 # Waveshare’s IP
port: 502 # Usually 10001 for CH1, 10002 for CH2, etc.
timeout: 5
delay: 2
sensor:
platform: modbus
hub: Waveshare_Modbus_Rs485_2 # Corrected Addition
scan_interval: 10 # Update every 30 seconds
registers:
Temperature (Register 0, Slave ID 1)
name: “XY-MD02 Temperature”
slave: 1 # Default slave ID for XY-MD02
register: 1 # Register address (0x0000)
unit_of_measurement: “°C”
precision: 1 # Round to 1 decimal
offset: 0
scale: 0.1 # Raw value × 0.1 = °C (check your device manual)
register_type: holding # XY-MD02 uses holding registers (4x)
Humidity (Register 1, Slave ID 1)
name: “XY-MD02 Humidity”
slave: 1
register: 2 # Register address (0x0001)
unit_of_measurement: “%”
precision: 1
offset: 0
scale: 0.1 # Raw value × 0.1 = %RH
register_type: holding