Modbus Sensor
The modbus
sensor allows you to gather data from Modbus registers.
To use your Modbus sensors in your installation, add the following to your configuration.yaml
file:
# Example configuration.yml entry
sensor:
platform: modbus
registers:
- name: Sensor1
unit_of_measurement: °C
slave: 1
register: 100
- name: Sensor2
unit_of_measurement: mg
slave: 1
register: 110
count: 2
- name: Sensor3
unit_of_measurement: °C
slave: 1
register: 120
register_type: input
data_type: float
scale: 0.01
offset: -273.16
precision: 2
Configuration variables:
- registers array (Required): The array contains a list of relevant registers to read from.
- name (Required): Name of the sensor.
- slave (Required): The number of the slave (Optional for tcp and upd Modbus).
- register (Required): Register number.
- register_type (Optional): Modbus register type (holding, input), default holding.
- unit_of_measurement (Optional): Unit to attach to value.
- count (Optional): Number of registers to read.
- reverse_order (Optional): Reverse the order of registers when count >1, default False.
- scale (Optional): Scale factor (output = scale * value + offset), default 1.
- offset (Optional): Final offset (output = scale * value + offset), default 0.
- precision (Optional): Number of valid decimals, default 0.
- data_type (Optional): Response representation (int, uint, float, custom). If float selected, value will be converted to IEEE 754 floating point format. Default int.
- structure (Optional): If data_type is custom specify here a double quoted python struct format string to unpack the value. See python documentation for details. Ex: “>i”.
It’s possible to change the default 30 seconds scan interval for the sensor updates as shown in the Platform options documentation.
Full example
Example a temperature sensor with a 10 seconds scan interval:
sensor:
- platform: modbus
scan_interval: 10
registers:
- name: Room_1
slave: 10
register: 0
register_type: holding
unit_of_measurement: °C
count: 1
scale: 0.1
offset: 0
precision: 1
data_type: int