Integration to integrate with [integration_blueprint][integration_blueprint].
modbus is a communication protocol to control PLCs (Programmable Logic Controller) and RTUs (Remote Terminal Unit).
The integration adheres to the protocol specification using pymodbus for the protocol implementation.
The modbus_logo custom integration supports all devices adhering to the modbus standard. The communication to the device/devices can be serial (rs-485), TCP, or UDP connections. The modbus integration allows multiple communication channels e.g. a serial port connection combined with one or more TCP connections.
This integration is built on top of official components in home-assistant and extend some functionality. Documentation of this integration is the same of the official documentation.
Continuing in the reading of this file you'll find the documentation for the added specific feature.
Currently (HA core v2024.6.0) all entities already supported by official component are supported:
- binary_sensor
- climate
- cover
- fan
- light
- sensor
- switch
- Home Assistant (hass) >= 2024.6
- pymodbus == 3.6.8 will load automatically.
- HACS
Note This integration requires HACS to be installed
- Open HACS
- Open the options in the top right and select Custom repositories
- Enter this repository's URL (
https://github.com/nos86/hacs-modbus-logo
) under the Category Integration. - Press Add
- + EXPLORE & DOWNLOAD REPOSITORIES
- Find Modbus Pulse in this list
- DOWNLOAD THIS REPOSITORY WITH HACS
- DOWNLOAD
- Restart Home Assistant (Settings > System > RESTART)
modbus_logo is configured in the configuration.yaml
file under the modbus_logo domain.
Configuration is the same as the integrated modbus integration so see the modbus integration documentation for more information:
https://www.home-assistant.io/integrations/modbus/
If you have already the modbus component configured, to switch to modbus_plc is enough to rename the key in your configuration file from modbus to modbus_plc
with v0.2.0, a new flag has been added inside verify section: sync. This flag is False by default. This flag is available for: SWITCH, LIGHT, FAN
When it is activated, it forces the same status between Home Assistant and PLC input. This solves the issue that happens when output state in PLC changes and Home Assistant updates the UI state disaligning it from PLC Network input state.
What this is, just, send back the new state to PLC as soon as an internal update event is triggered inside Home Assistant. The command sent to PLC is the same when you command a turn_on or a turn_off
WARNING: please, pay attention to unwanted loop (where HA updates PLC, PLC reacts changing its status, and this trigger again HA....). Use this setting, only if you know what you are doing.
Finally below a short example of configuration that uses this flag:
modbus_logo:
# I1-24 --> 0 - 23 (input)
# Q1-20 --> 8192 - 8211 (coil)
# M1-64 --> 8256 - 8319 (coil)
# V0.0-850.7 --> 0 - 6807 (coil)
# AI 1-8 --> 0 - 7
# VW 0-850 --> 0 - 424
# AQ 1-8 --> 512 - 519
# AM 1-64 --> 528 - 591
- name: plc
type: tcp
host: 10.148.0.32
port: 502
lights:
- name: corridor
address: 16 #V2.0
write_type: coil
scan_interval: 1
verify:
input_type: coil
address: 8192 #Q1
sync: true # <-- this is the new flag
In this example, the switch in Home Assistant sets the network input (V2.0), then PLC logic will apply a certain logic that has as effect that output Q1 will be set. Then, HA will "verify" that actually Q1 is set to confirm the state of the UI Switch. Later, if Q1 changes (for example, because I used the wall switch to command the light), HA will "verify" the new state (according to scan_interval time) and update the UI switch accordly. At this moment, the new UI state will be sent to network input V2.0 of PLC and it will be set to zero. Same story, if the light is off and I switch it on from wall switch.
To complete the example, below is reported the logic used in the PLC: (in this example, it is supped that physical device is a button)
Please open issue, only in case of issues related to extension in this repository
If you want to contribute to this please read the Contribution guidelines