Files
modbus_rtu_monitor/README.md
T

8.4 KiB

RDZ Thermostats Monitor

A Home Assistant custom integration for monitoring and controlling RDZ thermostats via Modbus RTU over TCP.

Overview

This integration enables passive monitoring and control of RDZ thermostats that are connected to a PLC-based heating system via Modbus RTU. It uses a 2-Channel RS485 to Ethernet adapter to bridge the Modbus network to your local network, allowing Home Assistant to observe thermostat communication and send temperature setpoint commands.

Key Features:

  • Passive monitoring of temperature, humidity, and thermostat status
  • Remote temperature setpoint control from Home Assistant
  • Automatic discovery of thermostats on the Modbus network
  • Climate entities with HVAC action display (heating/idle)
  • Zone pump status monitoring

What This Enables

This integration provides monitoring and control of your RDZ thermostats within Home Assistant. With the zone pump status exposed, you can see exactly when each zone was heating or cooling, and Home Assistant's recorder keeps a full history of this data. The temperature and humidity readings, combined with setpoint control, open up possibilities for extending functionality through Home Assistant automations - such as granular scheduling, event-based heating (presence, weather, calendar), or using sensor values to trigger alerts and other automations. These extensions are not built into the plugin but are easily achievable using Home Assistant's native automation capabilities.

Prerequisites

  • Home Assistant installed and running (Core, Supervised, or OS)
  • 2-Channel RS485 to Ethernet adapter (Waveshare or compatible)
  • RDZ thermostats connected via Modbus RTU
  • Basic networking knowledge

Bill of Materials

Item Description Quantity Notes
RS485 to Ethernet Adapter 2-CH RS485 to ETH (B) 1 Waveshare or similar (Configuration Steps refer to this specific model)
24V DC Power Supply 6-36V DC compatible 1 May use existing transformer or MEAN WELL
Ethernet Cable Cat5e or better 1 To connect adapter to network
RS485 Cable Shielded twisted pair As needed For RS485 connections
Home Assistant if you don't already have it, the host on which the plugin will run 1 Pre Built or you can DIY with RPI, or other solutions

Installation

1. Hardware Setup

Follow the detailed hardware installation guide:

Hardware Installation Instructions

This covers:

  • Power connections (24V DC)
  • RS485 wiring (A, B, GND terminals)
  • Ethernet network connection
  • LED indicator verification

2. RS485 Adapter Configuration

Configure the RS485 to Ethernet adapter:

Software Configuration Guide

Key settings you'll need for Home Assistant:

  • IP Address: Note down the IP you assign (e.g., 192.168.11.200)
  • Port: Default is 4196
  • Baud Rate: Must be 19200

3. Home Assistant Integration Setup

Copy the Integration

  1. Download or clone this repository
  2. Copy the custom_components/rdz_thermostats_monitor/ folder to your Home Assistant's custom_components/ directory:
/config/custom_components/rdz_thermostats_monitor/

Your directory structure should look like:

/config/
├── configuration.yaml
├── custom_components/
│   └── rdz_thermostats_monitor/
│       ├── __init__.py
│       ├── manifest.json
│       ├── climate.py
│       ├── sensor.py
│       ├── binary_sensor.py
│       └── ...

Restart Home Assistant

Restart Home Assistant to load the new integration:

  • Go to Settings > System > Restart
  • Or use the command line: ha core restart

Add the Integration

  1. Go to Settings > Devices & Services
  2. Click + Add Integration
  3. Search for "RDZ Thermostats Monitor"
  4. Enter the configuration:
    • Host: IP address of your RS485 adapter (e.g., 192.168.11.200)
    • Port: TCP port (default: 4196)
  5. Click Submit

Note: If you have two RS485 channels (two thermostat strings), add the integration twice - once for each channel's IP address.

Verify Setup

After adding the integration:

  1. Thermostats will be automatically discovered as they communicate
  2. Each thermostat appears as a device named "RDZ Thermostat X" (where X is the Modbus slave ID)
  3. Entities created include:
    • climate.rdz_thermostat_X - Main thermostat control
    • sensor.rdz_thermostat_X_humidity - Humidity reading
    • binary_sensor.rdz_thermostat_X_zone_pump - Zone pump status

Configuration Reference

Parameter Description Default
Host IP address of RS485 adapter Required
Port TCP port for Modbus communication 4196

Disclaimer - Secondary Master Communication

Important: This integration operates as a secondary Modbus master on the RS485 bus. The primary master is typically your PLC or building automation system.

What This Means

When you change a temperature setpoint in Home Assistant, this integration sends commands to the thermostat. However, since the PLC is continuously communicating with the thermostats, there's a possibility of bus contention - where both masters try to communicate simultaneously.

Potential Issues

  • Command conflicts: Occasionally, setpoint commands from Home Assistant may not be received correctly by the thermostat due to timing conflicts with PLC communication
  • Intermittent failures: While rare, you may notice that a temperature change doesn't "stick" on the first attempt

Mitigation Strategies

  1. Retry mechanism: The integration includes automatic retry logic (5 attempts with 1.3-second intervals) to increase command success rate

  2. Consistent updates: If you're using automations to set temperatures, consider pushing the desired setpoint multiple times or verifying the setpoint was accepted:

# Example: Automation with verification
automation:
  - alias: "Set morning temperature with retry"
    trigger:
      - platform: time
        at: "06:00:00"
    action:
      - repeat:
          count: 3
          sequence:
            - service: climate.set_temperature
              target:
                entity_id: climate.rdz_thermostat_1
              data:
                temperature: 21
            - delay: "00:00:05"
  1. Monitor for changes: Use the climate entity's current_temperature and temperature (setpoint) attributes to verify commands were accepted

Why This Happens

The Modbus RTU protocol doesn't natively support multiple masters. This integration works by:

  • Passively monitoring existing PLC-thermostat traffic (read-only, no conflicts)
  • Only actively transmitting when you change a setpoint (potential for brief conflicts)

In practice, conflicts are rare and the retry mechanism handles most cases automatically.

Troubleshooting

No Thermostats Discovered

  • Verify the RS485 adapter is powered (PWR LED lit)
  • Check network connectivity (ping the adapter's IP)
  • Confirm baud rate is set to 19200
  • Check RS485 wiring polarity (A to A, B to B)

Thermostats Show as Unavailable

  • Ensure the PLC/primary master is communicating with thermostats
  • Check the adapter's ACT LEDs for data transmission activity
  • Verify the integration is connected (check Home Assistant logs)

Setpoint Changes Don't Apply

  • This may be due to bus contention (see Disclaimer above)
  • Try changing the setpoint again
  • Check Home Assistant logs for error messages

View Logs

Enable debug logging to troubleshoot:

# configuration.yaml
logger:
  default: info
  logs:
    custom_components.rdz_thermostats_monitor: debug

Support

For issues and feature requests, please open an issue on the GitHub repository.

License

This project is provided as-is for personal use. See LICENSE file for details.


Version: 1.0.0 Last Updated: January 2026