From 430cdc6d4cf4831af1434b4bc44e66e33d5080c9 Mon Sep 17 00:00:00 2001 From: k3mpaxl Date: Mon, 28 Feb 2022 18:52:36 +0100 Subject: [PATCH] Update modbus climate (#62483) Single register values weren't parsed accordingly for climate devices. Co-authored-by: jan Iversen --- homeassistant/components/modbus/climate.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index f2e5035e40c..0ecfc7b43b6 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -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, @@ -122,12 +123,21 @@ class ModbusThermostat(BaseStructPlatform, RestoreEntity, ClimateEntity): for i in range(0, len(as_bytes), 2) ] registers = self._swap_registers(raw_regs) - result = await self._hub.async_pymodbus_call( - self._slave, - self._target_temperature_register, - registers, - CALL_TYPE_WRITE_REGISTERS, - ) + + if isinstance(registers, list): + result = await self._hub.async_pymodbus_call( + self._slave, + self._target_temperature_register, + [int(float(i)) for i in registers], + CALL_TYPE_WRITE_REGISTERS, + ) + else: + result = await self._hub.async_pymodbus_call( + self._slave, + self._target_temperature_register, + target_temperature, + CALL_TYPE_WRITE_REGISTER, + ) self._attr_available = result is not None await self.async_update()