From 54a17f5d98f984a3331db53425a06053c2acead1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Sandstr=C3=B6m?= Date: Sat, 10 Sep 2016 17:17:28 +0200 Subject: [PATCH] modbus write registers service (#3252) --- homeassistant/components/modbus.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/modbus.py b/homeassistant/components/modbus.py index 4aab9ddc756..b0391f9ba45 100644 --- a/homeassistant/components/modbus.py +++ b/homeassistant/components/modbus.py @@ -87,11 +87,20 @@ def setup(hass, config): hass.services.register(DOMAIN, SERVICE_WRITE_REGISTER, write_register) def write_register(service): - """Write modbus register.""" + """Write modbus registers.""" unit = int(float(service.data.get(ATTR_UNIT))) address = int(float(service.data.get(ATTR_ADDRESS))) - value = int(float(service.data.get(ATTR_VALUE))) - HUB.write_register(unit, address, value) + value = service.data.get(ATTR_VALUE) + if isinstance(value, list): + HUB.write_registers( + unit, + address, + [int(float(i)) for i in value]) + else: + HUB.write_register( + unit, + address, + int(float(value))) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, start_modbus) @@ -147,3 +156,11 @@ class ModbusHub(object): address, value, unit=unit) + + def write_registers(self, unit, address, values): + """Write registers.""" + with self._lock: + self._client.write_registers( + address, + values, + unit=unit)