Make modbus WRITE_COIL use write_coils in case of an array (#48633)

* WRITE_COIL uses write_coils in case of an array.

WRITE_REGISTER uses write_register/write_registers depending
on whether value is singular or an array.

WRITE_COIL is modified to be similar and uses
write_coil/write_coils depending on whether value is singular or an
array.

* Update SERVICE_WRITE_COIL to allow list.
This commit is contained in:
jan iversen 2021-04-03 13:15:01 +02:00 committed by GitHub
parent b7ae06f1bb
commit 23fae255ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -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])
),
}
)

View File

@ -93,6 +93,9 @@ def modbus_setup(
address = service.data[ATTR_ADDRESS]
state = service.data[ATTR_STATE]
client_name = service.data[ATTR_HUB]
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