diff --git a/homeassistant/components/modbus/__init__.py b/homeassistant/components/modbus/__init__.py index acb31a7a730..f1f1e656805 100644 --- a/homeassistant/components/modbus/__init__.py +++ b/homeassistant/components/modbus/__init__.py @@ -282,7 +282,9 @@ SERVICE_WRITE_COIL_SCHEMA = vol.Schema( vol.Optional(ATTR_HUB, default=DEFAULT_HUB): cv.string, vol.Required(ATTR_UNIT): cv.positive_int, vol.Required(ATTR_ADDRESS): cv.positive_int, - vol.Required(ATTR_STATE): cv.boolean, + vol.Required(ATTR_STATE): vol.Any( + cv.boolean, vol.All(cv.ensure_list, [cv.boolean]) + ), } ) diff --git a/homeassistant/components/modbus/modbus.py b/homeassistant/components/modbus/modbus.py index 554b7bfb85e..f55e77c9119 100644 --- a/homeassistant/components/modbus/modbus.py +++ b/homeassistant/components/modbus/modbus.py @@ -93,7 +93,10 @@ def modbus_setup( address = service.data[ATTR_ADDRESS] state = service.data[ATTR_STATE] client_name = service.data[ATTR_HUB] - hub_collect[client_name].write_coil(unit, address, state) + if isinstance(state, list): + hub_collect[client_name].write_coils(unit, address, state) + else: + hub_collect[client_name].write_coil(unit, address, state) # register function to gracefully stop modbus hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_modbus)