mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
modbus write registers service (#3252)
This commit is contained in:
parent
8438001942
commit
54a17f5d98
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user