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)