Modbus Climate

The modbus thermostat allows you to use a sensor value (current temperature) and target value (target temperature) from Modbus registers.


To use your Modbus thermostat in your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
  - name: hub1
    type: tcp
    host: IP_ADDRESS
    port: 502

      - name: Watlow F4T
        slave: 1
        data_type: uint
        data_count: 1
        scale: 0.1
        offset: 0
        precision: 1
        max_temp: 30
        min_temp: 15
        temp_step: 1
        target_temp_register: 2782
        current_temp_register: 27586

Configuration Variables

name string Required

Name of the device

slave integer Required

The number of the slave (Optional for tcp and upd Modbus, use 1).

target_temp_register integer Required

Register number for target temperature (Setpoint).

current_temp_register integer Required

Register number for current temperature (Process value).

current_temp_register_type string (Optional, default: holding)

Modbus register type (holding, input) for current temperature, default holding.

data_type string (Optional, default: float)

Response representation (int, uint, float, custom). If float selected, value will converted to IEEE 754 floating point format.

structure string (Optional)

If data_type is custom specified a double-quoted Python struct is expected here, to format the string to unpack the value. See Python documentation for details. Example: >i.



data_count integer (Optional, default: 2)

Number of registers to read.

precision integer (Optional, default: 1)

Number of valid decimals.

scale float (Optional, default: 1)

Scale factor (output = scale * value + offset).

offset float (Optional, default: 0)

Final offset (output = scale * value + offset).

max_temp integer (Optional, default: 35)

Maximum setpoint temperature.

min_temp integer (Optional, default: 5)

Maximum setpoint temperature.

temp_step float (Optional, default: 0.5)

The supported step size a target temperature can be increased/decreased.

temperature_unit string (Optional, default: C)

Temperature unit reported by the current_temp_register. C or F

scan_interval integer (Optional, default: 15)

Defines the update interval of the sensor in seconds.


Service Description
set_temperature Set Temperature. Requires value to be passed in, which is the desired target temperature. value should be in the same type as data_type