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

View File

@ -28,6 +28,7 @@ from . import get_hub
from .base_platform import BaseStructPlatform from .base_platform import BaseStructPlatform
from .const import ( from .const import (
CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_HOLDING,
CALL_TYPE_WRITE_REGISTER,
CALL_TYPE_WRITE_REGISTERS, CALL_TYPE_WRITE_REGISTERS,
CONF_CLIMATES, CONF_CLIMATES,
CONF_MAX_TEMP, CONF_MAX_TEMP,
@ -121,6 +122,17 @@ class ModbusThermostat(BaseStructPlatform, RestoreEntity, ClimateEntity):
] ]
registers = self._swap_registers(raw_regs) registers = self._swap_registers(raw_regs)
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( result = await self._hub.async_pymodbus_call(
self._slave, self._slave,
self._target_temperature_register, self._target_temperature_register,