mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-05-30 14:56:50 +00:00

* Add more documentation to modbus services
Useful for people not so familiar with modbus terminology. I had to use Wikipedia to understand the paramters, this should clarify things.
* Update modbus.markdown
* ✏️ Tweaks
128 lines
3.7 KiB
Markdown
128 lines
3.7 KiB
Markdown
---
|
|
layout: page
|
|
title: "Modbus"
|
|
description: "Instructions on how to integrate Modbus within Home Assistant."
|
|
date: 2015-04-25 9:16
|
|
sidebar: true
|
|
comments: false
|
|
sharing: true
|
|
footer: true
|
|
logo: modbus.png
|
|
ha_category: Hub
|
|
ha_release: pre 0.7
|
|
ha_iot_class: "Local Push"
|
|
---
|
|
|
|
|
|
[Modbus](http://www.modbus.org/) 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:
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry for a TCP connection
|
|
modbus:
|
|
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
|
|
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:
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry for a serial connection
|
|
modbus:
|
|
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
|
|
timeout:
|
|
description: Timeout for slave response in seconds.
|
|
required: false
|
|
default: 3
|
|
type: integer
|
|
{% endconfiguration %}
|
|
|
|
### {% linkable_title Services %}
|
|
|
|
|
|
| Service | Description |
|
|
| ------- | ----------- |
|
|
| write_register | Write register. Requires `unit`, `address` and `value` fields. `value` can be either single value or an array |
|
|
|
|
#### {% linkable_title Service Data Attributes %}
|
|
|
|
| Attribute | Description |
|
|
| --------- | ----------- |
|
|
| 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 %}
|
|
|
|
- [Modbus Binary Sensor](/components/binary_sensor.modbus/)
|
|
- [Modbus Sensor](/components/sensor.modbus/)
|
|
- [Modbus Switch](/components/switch.modbus/)
|