Auto detect call write register or write registers in set_temperature modbus (#68678)

This commit is contained in:
jan iversen 2022-03-30 12:54:24 +02:00 committed by GitHub
parent 9aac5d6af1
commit 3cccb948a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 18 additions and 6 deletions

View File

@ -28,6 +28,7 @@ from . import get_hub
from .base_platform import BaseStructPlatform
from .const import (
CALL_TYPE_REGISTER_HOLDING,
CALL_TYPE_WRITE_REGISTER,
CALL_TYPE_WRITE_REGISTERS,
CONF_CLIMATES,
CONF_MAX_TEMP,
@ -121,12 +122,23 @@ class ModbusThermostat(BaseStructPlatform, RestoreEntity, ClimateEntity):
]
registers = self._swap_registers(raw_regs)
result = await self._hub.async_pymodbus_call(
self._slave,
self._target_temperature_register,
[int(float(i)) for i in registers],
CALL_TYPE_WRITE_REGISTERS,
)
if self._data_type in (
DataType.INT16,
DataType.UINT16,
):
result = await self._hub.async_pymodbus_call(
self._slave,
self._target_temperature_register,
int(float(registers[0])),
CALL_TYPE_WRITE_REGISTER,
)
else:
result = await self._hub.async_pymodbus_call(
self._slave,
self._target_temperature_register,
[int(float(i)) for i in registers],
CALL_TYPE_WRITE_REGISTERS,
)
self._attr_available = result is not None
await self.async_update()