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) hass.services.register(DOMAIN, SERVICE_WRITE_REGISTER, write_register)
def write_register(service): def write_register(service):
"""Write modbus register.""" """Write modbus registers."""
unit = int(float(service.data.get(ATTR_UNIT))) unit = int(float(service.data.get(ATTR_UNIT)))
address = int(float(service.data.get(ATTR_ADDRESS))) address = int(float(service.data.get(ATTR_ADDRESS)))
value = int(float(service.data.get(ATTR_VALUE))) value = service.data.get(ATTR_VALUE)
HUB.write_register(unit, address, 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) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, start_modbus)
@ -147,3 +156,11 @@ class ModbusHub(object):
address, address,
value, value,
unit=unit) unit=unit)
def write_registers(self, unit, address, values):
"""Write registers."""
with self._lock:
self._client.write_registers(
address,
values,
unit=unit)