modbus write registers service (#3252)

This commit is contained in:
Per Sandström 2016-09-10 17:17:28 +02:00 committed by Paulus Schoutsen
parent 8438001942
commit 54a17f5d98

View File

@ -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)