From be1981ca5d42a6a64a71b123653b0beb8674e908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Sandstr=C3=83om?= Date: Thu, 25 Aug 2016 08:20:08 +0000 Subject: [PATCH] modbus write register service --- homeassistant/components/modbus.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/homeassistant/components/modbus.py b/homeassistant/components/modbus.py index 01f4e72ca0d..1d6ad0e3abc 100644 --- a/homeassistant/components/modbus.py +++ b/homeassistant/components/modbus.py @@ -31,6 +31,12 @@ IP_PORT = "port" _LOGGER = logging.getLogger(__name__) +SERVICE_WRITE_REGISTER = "write_register" + +ATTR_ADDRESS = "address" +ATTR_UNIT = "unit" +ATTR_VALUE = "value" + NETWORK = None TYPE = None @@ -74,6 +80,16 @@ def setup(hass, config): NETWORK.connect() hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop_modbus) + # Register services for modbus + hass.services.register(DOMAIN, SERVICE_WRITE_REGISTER, write_register) + + def write_register(service): + """Write modbus register.""" + unit = int(float(service.data.get(ATTR_UNIT))) + address = int(float(service.data.get(ATTR_ADDRESS))) + value = int(float(service.data.get(ATTR_VALUE))) + NETWORK.write_register(address, value, unit=unit) + hass.bus.listen_once(EVENT_HOMEASSISTANT_START, start_modbus) return True