Ben Van Mechelen 6cf9eee5fa Add support for multiple modbus hubs. (#8027)
* Add support for multiple modbus hubs.

* fixed typo

* Update documentation for flexit

* Hub name is optional
2019-02-11 14:52:46 -05:00

4.5 KiB

layout title description date sidebar comments sharing footer logo ha_category ha_release ha_iot_class
page Modbus Instructions on how to integrate Modbus within Home Assistant. 2015-04-25 9:16 true false true true modbus.png Hub pre 0.7 Local Push

Modbus is a serial communication protocol to control PLCs (Programmable logic controller). It currently supports sensors and switches which can be controlled over serial, TCP, and UDP connections.

{% linkable_title Configuration %}

The configuration for adding modbus to your installation depends on the connection type, either a network or serial connection.

{% linkable_title Network connection %}

For a network connection, add the following to your configuration.yaml file:

# Example configuration.yaml entry for a TCP connection
modbus:
  name: hub1
  type: tcp
  host: IP_ADDRESS
  port: 2020

{% configuration %} type: description: Type of the connection to Modbus. Possible values are tcp (Modbus TCP protocol according to "MODBUS Messaging Implementation Guide version 1.0b" provided by Schneider Automation.), udp(Modbus TCP form, but using UDP for transport. It removes the overheads required for TCP.) and rtuovertcp (Modbus RTU message transmitted with a TCP/IP wrapper and sent over a network instead of serial lines.). required: true type: string host: description: The IP address of your Modbus device, e.g., 192.168.1.1. required: true type: string port: description: The network port for the communication. required: true type: integer name: description: Name for this hub. Must be unique, so it is required when setting up multiple instances. required: false default: default type: string timeout: description: Timeout for slave response in seconds. required: false default: 3 type: integer {% endconfiguration %}

{% linkable_title Serial connection %}

For a serial connection, add the following to your configuration.yaml file:

# Example configuration.yaml entry for a serial connection
modbus:
  name: hub1
  type: serial
  method: rtu
  port: /dev/ttyUSB0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N

{% configuration %} type: description: "Type of the connection to Modbus, needs to be serial for this setup." required: true type: string method: description: "Method of the connection to Modbus, either rtu or ascii." required: true type: string port: description: The port where your Modbus device is connected to your Home Assistant host. required: true type: string baudrate: description: The speed for the serial connection. required: true type: integer stopbits: description: "The stopbits for the serial connection, either 1 or 2." required: true type: integer bytesize: description: "The bytesize for the serial connection; can be 5, 6, 7 or 8." required: true type: integer parity: description: "The parity for the serial connection; can be E, O or N." required: true type: string name: description: Name for this hub. Must be unique, so it is required when setting up multiple instances. required: false default: default type: string timeout: description: Timeout for slave response in seconds. required: false default: 3 type: integer {% endconfiguration %}

{% linkable_title Multiple connections %}

Multiple connections are possible, add something like the following to your configuration.yaml file:

# Example configuration.yaml entry for multiple TCP connections
modbus:
  - type: tcp
    host: IP_ADDRESS_1
    port: 2020
    hub: hub1
    
  - type: tcp
    host: IP_ADDRESS_2
    port: 501
    hub: hub2

{% linkable_title Services %}

Service Description
write_register Write register. Requires hub, unit, address and value fields. value can be either single value or an array

{% linkable_title Service Data Attributes %}

Attribute Description
hub Hub name (defaults to 'default' when omitted)
unit Slave address (set to 255 you talk to Modbus via TCP)
address Address of the Register (e.g., 138)
value An array of 16-bit values. Might need reverse ordering. E.g., to set 0x0004 you might need to set [4,0]

{% linkable_title Building on top of Modbus %}