Hoping for an example .yaml to talk to XY-MD01

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.

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%
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

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

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