From bcd38419cd814fb685963d27ec690a738c8fe689 Mon Sep 17 00:00:00 2001 From: sti0 Date: Fri, 28 Jun 2024 17:52:33 +0000 Subject: [PATCH] added cooling temperature input numbers --- custom_components/stiebel_eltron_isg/const.py | 5 +++ .../stiebel_eltron_isg/lwz_coordinator.py | 26 +++++++++++ .../stiebel_eltron_isg/number.py | 44 +++++++++++++++++++ 3 files changed, 75 insertions(+) diff --git a/custom_components/stiebel_eltron_isg/const.py b/custom_components/stiebel_eltron_isg/const.py index 4176106..cafa214 100644 --- a/custom_components/stiebel_eltron_isg/const.py +++ b/custom_components/stiebel_eltron_isg/const.py @@ -193,6 +193,11 @@ HEATING_CURVE_RISE_HK2 = "heating_curve_rise_hk2" DUALMODE_TEMPERATURE_HZG = "dualmode_temperature_hzg" +COMFORT_COOLING_TEMPERATURE_TARGET_HK1 = "comfort_cooling_temperature_target_hk1" +ECO_COOLING_TEMPERATURE_TARGET_HK1 = "eco_cooling_temperature_target_hk1" +COMFORT_COOLING_TEMPERATURE_TARGET_HK2 = "comfort_cooling_temperature_target_hk2" +ECO_COOLING_TEMPERATURE_TARGET_HK2 = "eco_cooling_temperature_target_hk2" + COMFORT_WATER_TEMPERATURE_TARGET = "comfort_water_temperature_target" ECO_WATER_TEMPERATURE_TARGET = "eco_water_temperature_target" DUALMODE_TEMPERATURE_WW = "dualmode_temperature_ww" diff --git a/custom_components/stiebel_eltron_isg/lwz_coordinator.py b/custom_components/stiebel_eltron_isg/lwz_coordinator.py index 6563d45..9372a2d 100644 --- a/custom_components/stiebel_eltron_isg/lwz_coordinator.py +++ b/custom_components/stiebel_eltron_isg/lwz_coordinator.py @@ -25,6 +25,8 @@ ACTUAL_TEMPERATURE_HK1, ACTUAL_TEMPERATURE_HK2, ACTUAL_TEMPERATURE_WATER, + COMFORT_COOLING_TEMPERATURE_TARGET_HK1, + COMFORT_COOLING_TEMPERATURE_TARGET_HK2, COMFORT_TEMPERATURE_TARGET_HK1, COMFORT_TEMPERATURE_TARGET_HK2, COMFORT_WATER_TEMPERATURE_TARGET, @@ -38,6 +40,8 @@ CONSUMED_WATER_HEATING, CONSUMED_WATER_HEATING_TODAY, CONSUMED_WATER_HEATING_TOTAL, + ECO_COOLING_TEMPERATURE_TARGET_HK1, + ECO_COOLING_TEMPERATURE_TARGET_HK2, ECO_TEMPERATURE_TARGET_HK1, ECO_TEMPERATURE_TARGET_HK2, ECO_WATER_TEMPERATURE_TARGET, @@ -284,6 +288,20 @@ async def read_modbus_system_paramter(self) -> dict: decoder.skip_bytes(8) result[FAN_LEVEL_DAY] = decoder.decode_16bit_uint() result[FAN_LEVEL_NIGHT] = decoder.decode_16bit_uint() + decoder.skip_bytes(4) + result[COMFORT_COOLING_TEMPERATURE_TARGET_HK1] = get_isg_scaled_value( + decoder.decode_16bit_int(), + ) + result[ECO_COOLING_TEMPERATURE_TARGET_HK1] = get_isg_scaled_value( + decoder.decode_16bit_int(), + ) + result[COMFORT_COOLING_TEMPERATURE_TARGET_HK2] = get_isg_scaled_value( + decoder.decode_16bit_int(), + ) + result[ECO_COOLING_TEMPERATURE_TARGET_HK2] = get_isg_scaled_value( + decoder.decode_16bit_int(), + ) + result["system_paramaters"] = list(inverter_data.registers) return result @@ -401,6 +419,14 @@ async def set_data(self, key, value) -> None: await self.write_register(address=1017, value=int(value), slave=1) elif key == FAN_LEVEL_NIGHT: await self.write_register(address=1018, value=int(value), slave=1) + elif key == COMFORT_COOLING_TEMPERATURE_TARGET_HK1: + await self.write_register(address=1021, value=int(value * 10), slave=1) + elif key == ECO_COOLING_TEMPERATURE_TARGET_HK1: + await self.write_register(address=1022, value=int(value * 10), slave=1) + elif key == COMFORT_COOLING_TEMPERATURE_TARGET_HK2: + await self.write_register(address=1023, value=int(value * 10), slave=1) + elif key == ECO_COOLING_TEMPERATURE_TARGET_HK2: + await self.write_register(address=1024, value=int(value * 10), slave=1) else: return self.data[key] = value diff --git a/custom_components/stiebel_eltron_isg/number.py b/custom_components/stiebel_eltron_isg/number.py index 0bf884f..5a17d79 100644 --- a/custom_components/stiebel_eltron_isg/number.py +++ b/custom_components/stiebel_eltron_isg/number.py @@ -15,12 +15,16 @@ from .const import ( AREA_COOLING_TARGET_FLOW_TEMPERATURE, AREA_COOLING_TARGET_ROOM_TEMPERATURE, + COMFORT_COOLING_TEMPERATURE_TARGET_HK1, + COMFORT_COOLING_TEMPERATURE_TARGET_HK2, COMFORT_TEMPERATURE_TARGET_HK1, COMFORT_TEMPERATURE_TARGET_HK2, COMFORT_WATER_TEMPERATURE_TARGET, DOMAIN, DUALMODE_TEMPERATURE_HZG, DUALMODE_TEMPERATURE_WW, + ECO_COOLING_TEMPERATURE_TARGET_HK1, + ECO_COOLING_TEMPERATURE_TARGET_HK2, ECO_TEMPERATURE_TARGET_HK1, ECO_TEMPERATURE_TARGET_HK2, ECO_WATER_TEMPERATURE_TARGET, @@ -201,6 +205,46 @@ native_max_value=3, native_step=1, ), + NumberEntityDescription( + COMFORT_COOLING_TEMPERATURE_TARGET_HK1, + has_entity_name=True, + name="Comfort Cooling Temperature Target HK1", + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + icon="mdi:snowflake-thermometer", + native_min_value=10, + native_max_value=30, + native_step=0.1, + ), + NumberEntityDescription( + ECO_COOLING_TEMPERATURE_TARGET_HK1, + has_entity_name=True, + name="Eco Cooling Temperature Target HK1", + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + icon="mdi:snowflake-thermometer", + native_min_value=10, + native_max_value=30, + native_step=0.1, + ), + NumberEntityDescription( + COMFORT_COOLING_TEMPERATURE_TARGET_HK2, + has_entity_name=True, + name="Comfort Cooling Temperature Target HK2", + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + icon="mdi:snowflake-thermometer", + native_min_value=10, + native_max_value=30, + native_step=0.1, + ), + NumberEntityDescription( + ECO_COOLING_TEMPERATURE_TARGET_HK2, + has_entity_name=True, + name="Eco Cooling Temperature Target HK2", + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + icon="mdi:snowflake-thermometer", + native_min_value=10, + native_max_value=30, + native_step=0.1, + ), # Add HEATING_CURVE_RISE with max value 5 ]