diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 2923fa67a..d2bbda5d7 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -5,7 +5,7 @@ name: Latest commit env: CACHE_VERSION: 11 - DEFAULT_PYTHON: "3.13" + DEFAULT_PYTHON: "3.13.0" PRE_COMMIT_HOME: ~/.cache/pre-commit on: @@ -173,7 +173,7 @@ jobs: needs: commitcheck strategy: matrix: - python-version: ["3.13", "3.12"] + python-version: ["3.13.0", "3.12"] steps: - name: Check out committed code uses: actions/checkout@v4 @@ -213,7 +213,7 @@ jobs: needs: prepare-test-cache strategy: matrix: - python-version: ["3.13", "3.12"] + python-version: ["3.13.0", "3.12"] steps: - name: Check out committed code diff --git a/CHANGELOG.md b/CHANGELOG.md index c7b2af155..824441db6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## v1.6.3 + +- Implement cooling-related fixes, trying to solve HA Core issue [#132479](https://github.com/home-assistant/core/issues/132479) + ## v1.6.2 - Improve control_state processing: diff --git a/fixtures/adam_heatpump_cooling/all_data.json b/fixtures/adam_heatpump_cooling/all_data.json index a77bb3b14..4b0e13cbe 100644 --- a/fixtures/adam_heatpump_cooling/all_data.json +++ b/fixtures/adam_heatpump_cooling/all_data.json @@ -43,6 +43,7 @@ "0ca13e8176204ca7bf6f09de59f81c83": { "available": true, "binary_sensors": { + "cooling_enabled": true, "cooling_state": false, "dhw_state": true, "flame_state": false, diff --git a/fixtures/adam_onoff_cooling_fake_firmware/all_data.json b/fixtures/adam_onoff_cooling_fake_firmware/all_data.json index 70179277b..865b611d0 100644 --- a/fixtures/adam_onoff_cooling_fake_firmware/all_data.json +++ b/fixtures/adam_onoff_cooling_fake_firmware/all_data.json @@ -2,6 +2,7 @@ "devices": { "0ca13e8176204ca7bf6f09de59f81c83": { "binary_sensors": { + "cooling_enabled": true, "cooling_state": true, "dhw_state": true, "flame_state": false, diff --git a/plugwise/data.py b/plugwise/data.py index 3b0b58606..2b3740a11 100644 --- a/plugwise/data.py +++ b/plugwise/data.py @@ -198,7 +198,8 @@ def _get_entity_data(self, entity_id: str) -> GwEntityData: # Switching groups data self._entity_switching_group(entity, data) # Adam data - self._get_adam_data(entity, data) + if self.smile(ADAM): + self._get_adam_data(entity, data) # Thermostat data for Anna (presets, temperatures etc) if self.smile(ANNA) and entity["dev_class"] == "thermostat": @@ -225,26 +226,26 @@ def _get_adam_data(self, entity: GwEntityData, data: GwEntityData) -> None: """Helper-function for _get_entity_data(). Determine Adam heating-status for on-off heating via valves, - available regulations_modes and thermostat control_states. + available regulations_modes and thermostat control_states, + and add missing cooling_enabled when required. """ - if self.smile(ADAM): + if entity["dev_class"] == "heater_central": # Indicate heating_state based on valves being open in case of city-provided heating - if ( - entity["dev_class"] == "heater_central" - and self._on_off_device - and isinstance(self._heating_valves(), int) - ): + if self._on_off_device and isinstance(self._heating_valves(), int): data["binary_sensors"]["heating_state"] = self._heating_valves() != 0 - - # Show the allowed regulation_modes and gateway_modes - if entity["dev_class"] == "gateway": - if self._reg_allowed_modes: - data["regulation_modes"] = self._reg_allowed_modes - self._count += 1 - if self._gw_allowed_modes: - data["gateway_modes"] = self._gw_allowed_modes - self._count += 1 - + # Add cooling_enabled binary_sensor + if "binary_sensors" in data: + if "cooling_enabled" not in data["binary_sensors"] and self._cooling_present: + data["binary_sensors"]["cooling_enabled"] = self._cooling_enabled + + # Show the allowed regulation_modes and gateway_modes + if entity["dev_class"] == "gateway": + if self._reg_allowed_modes: + data["regulation_modes"] = self._reg_allowed_modes + self._count += 1 + if self._gw_allowed_modes: + data["gateway_modes"] = self._gw_allowed_modes + self._count += 1 def _climate_data( self, diff --git a/plugwise/helper.py b/plugwise/helper.py index eae2101b7..4c39b08ec 100644 --- a/plugwise/helper.py +++ b/plugwise/helper.py @@ -798,7 +798,9 @@ def _update_elga_cooling(self, data: GwEntityData) -> None: # Techneco Elga has cooling-capability self._cooling_present = True data["model"] = "Generic heater/cooler" - self._cooling_enabled = data["elga_status_code"] in (8, 9) + # Cooling_enabled in xml does NOT show the correct status! + # Setting it specifically: + self._cooling_enabled = data["binary_sensors"]["cooling_enabled"] = data["elga_status_code"] in (8, 9) data["binary_sensors"]["cooling_state"] = self._cooling_active = ( data["elga_status_code"] == 8 ) @@ -812,11 +814,13 @@ def _update_elga_cooling(self, data: GwEntityData) -> None: def _update_loria_cooling(self, data: GwEntityData) -> None: """Loria/Thermastage: base cooling-related on cooling_state and modulation_level.""" - self._cooling_enabled = data["binary_sensors"]["cooling_state"] + # For Loria/Thermastage it's not clear if cooling_enabled in xml shows the correct status, + # setting it specifically: + self._cooling_enabled = data["binary_sensors"]["cooling_enabled"] = data["binary_sensors"]["cooling_state"] self._cooling_active = data["sensors"]["modulation_level"] == 100 # For Loria the above does not work (pw-beta issue #301) if "cooling_ena_switch" in data["switches"]: - self._cooling_enabled = data["switches"]["cooling_ena_switch"] + self._cooling_enabled = data["binary_sensors"]["cooling_enabled"] = data["switches"]["cooling_ena_switch"] self._cooling_active = data["binary_sensors"]["cooling_state"] def _cleanup_data(self, data: GwEntityData) -> None: diff --git a/plugwise/smile.py b/plugwise/smile.py index 6a87ab585..bea641f04 100644 --- a/plugwise/smile.py +++ b/plugwise/smile.py @@ -131,6 +131,8 @@ async def async_update(self) -> PlugwiseData: try: await self.full_xml_update() self.get_all_gateway_entities() + # Set self._cooling_enabled -required for set_temperature, + #also, check for a failed data-retrieval if "heater_id" in self.gw_data: heat_cooler = self.gw_entities[self.gw_data["heater_id"]] if ( diff --git a/pyproject.toml b/pyproject.toml index 93fb87687..8c0243c41 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "plugwise" -version = "1.6.2" +version = "1.6.3" license = {file = "LICENSE"} description = "Plugwise Smile (Adam/Anna/P1) and Stretch module for Python 3." readme = "README.md" diff --git a/tests/data/adam/adam_heatpump_cooling.json b/tests/data/adam/adam_heatpump_cooling.json index fe5cbcb65..bcd1fb4be 100644 --- a/tests/data/adam/adam_heatpump_cooling.json +++ b/tests/data/adam/adam_heatpump_cooling.json @@ -43,6 +43,7 @@ "0ca13e8176204ca7bf6f09de59f81c83": { "available": true, "binary_sensors": { + "cooling_enabled": true, "cooling_state": false, "dhw_state": true, "flame_state": false, diff --git a/tests/data/adam/adam_onoff_cooling_fake_firmware.json b/tests/data/adam/adam_onoff_cooling_fake_firmware.json index 0d152771b..414208da8 100644 --- a/tests/data/adam/adam_onoff_cooling_fake_firmware.json +++ b/tests/data/adam/adam_onoff_cooling_fake_firmware.json @@ -2,6 +2,7 @@ "entities": { "0ca13e8176204ca7bf6f09de59f81c83": { "binary_sensors": { + "cooling_enabled": true, "cooling_state": true, "dhw_state": true, "flame_state": false, diff --git a/tests/data/anna/anna_elga_2_cooling_UPDATED_DATA.json b/tests/data/anna/anna_elga_2_cooling_UPDATED_DATA.json new file mode 100644 index 000000000..197989256 --- /dev/null +++ b/tests/data/anna/anna_elga_2_cooling_UPDATED_DATA.json @@ -0,0 +1,100 @@ +{ + "entities": { + "573c152e7d4f4720878222bd75638f5b": { + "available": true, + "binary_sensors": { + "compressor_state": true, + "cooling_enabled": false, + "cooling_state": false, + "dhw_state": false, + "flame_state": true, + "heating_state": true, + "secondary_boiler_state": false + }, + "dev_class": "heater_central", + "location": "d34dfe6ab90b410c98068e75de3eb631", + "maximum_boiler_temperature": { + "lower_bound": 0.0, + "resolution": 1.0, + "setpoint": 60.0, + "upper_bound": 100.0 + }, + "model": "Generic heater/cooler", + "name": "OpenTherm", + "sensors": { + "domestic_hot_water_setpoint": 60.0, + "intended_boiler_temperature": 0.0, + "modulation_level": 0.0, + "outdoor_air_temperature": 3.0, + "return_temperature": 23.4, + "water_pressure": 0.5, + "water_temperature": 22.8 + }, + "switches": { + "dhw_cm_switch": true + }, + "vendor": "Techneco" + }, + "ebd90df1ab334565b5895f37590ccff4": { + "active_preset": "home", + "available_schedules": [ + "Thermostat schedule", + "off" + ], + "climate_mode": "auto", + "dev_class": "thermostat", + "firmware": "2018-02-08T11:15:53+01:00", + "hardware": "6539-1301-5002", + "location": "d3ce834534114348be628b61b26d9220", + "model": "ThermoTouch", + "name": "Anna", + "preset_modes": [ + "away", + "no_frost", + "vacation", + "home", + "asleep" + ], + "select_schedule": "Thermostat schedule", + "sensors": { + "cooling_activation_outdoor_temperature": 26.0, + "cooling_deactivation_threshold": 3.0, + "illuminance": 0.5, + "setpoint_high": 30.0, + "setpoint_low": 19.5, + "temperature": 18.9 + }, + "temperature_offset": { + "lower_bound": -2.0, + "resolution": 0.1, + "setpoint": 0.0, + "upper_bound": 2.0 + }, + "thermostat": { + "lower_bound": 4.0, + "resolution": 0.1, + "setpoint_high": 30.0, + "setpoint_low": 19.5, + "upper_bound": 30.0 + }, + "vendor": "Plugwise" + }, + "fb49af122f6e4b0f91267e1cf7666d6f": { + "binary_sensors": { + "plugwise_notification": false + }, + "dev_class": "gateway", + "firmware": "4.2.1", + "hardware": "AME Smile 2.0 board", + "location": "d34dfe6ab90b410c98068e75de3eb631", + "mac_address": "C4930002FE76", + "model": "Gateway", + "model_id": "smile_thermo", + "name": "Smile Anna", + "sensors": { + "outdoor_temperature": 3.0 + }, + "vendor": "Plugwise" + } + } +} diff --git a/tests/test_adam.py b/tests/test_adam.py index 300603962..3d3cfa0f8 100644 --- a/tests/test_adam.py +++ b/tests/test_adam.py @@ -320,6 +320,8 @@ async def test_adam_heatpump_cooling(self): assert smile._last_active["8cf650a4c10c44819e426bed406aec34"] == WERKDAG_SCHEMA assert smile._last_active["5cc21042f87f4b4c94ccb5537c47a53f"] == WERKDAG_SCHEMA assert self.entity_items == 497 + assert self.cooling_present + assert self._cooling_enabled await smile.close_connection() await self.disconnect(server, client) diff --git a/tests/test_anna.py b/tests/test_anna.py index 4f5c6e46b..177eaa007 100644 --- a/tests/test_anna.py +++ b/tests/test_anna.py @@ -205,6 +205,7 @@ async def test_connect_anna_heatpump_heating(self): good_schedules=[ "standaard", ], + fail_cooling=True, ) _LOGGER.debug( "ERROR raised setting good schedule standaard: %s", exc.value @@ -261,6 +262,7 @@ async def test_connect_anna_heatpump_cooling(self): good_schedules=[ "standaard", ], + fail_cooling=True, ) _LOGGER.debug( "ERROR raised good schedule to standaard: %s", exc.value @@ -407,6 +409,33 @@ async def test_connect_anna_elga_2_cooling(self): assert self._cooling_enabled assert self._cooling_active + result = await self.tinker_thermostat( + smile, + "d3ce834534114348be628b61b26d9220", + good_schedules=["Thermostat schedule"], + ) + assert result + + # Simulate a change of season: from cooling to heating after an update_interval + testdata_updated = self.load_testdata( + SMILE_TYPE, f"{self.smile_setup}_UPDATED_DATA" + ) + + self.smile_setup = "updated/anna_elga_2_switch_heating" + await self.device_test( + smile, "2020-04-05 00:00:01", testdata_updated, initialize=False + ) + assert self.cooling_present + assert not self._cooling_enabled + assert not self._cooling_active + + result = await self.tinker_thermostat( + smile, + "d3ce834534114348be628b61b26d9220", + good_schedules=["Thermostat schedule"], + ) + assert result + await smile.close_connection() await self.disconnect(server, client) @@ -445,6 +474,7 @@ async def test_connect_anna_loria_heating_idle(self): good_schedules=[ "Winter", ], + fail_cooling=True, ) _LOGGER.debug( "ERROR raised setting to schedule Winter: %s", exc.value diff --git a/tests/test_init.py b/tests/test_init.py index 9d3698beb..e7bf771b9 100644 --- a/tests/test_init.py +++ b/tests/test_init.py @@ -704,14 +704,20 @@ async def tinker_switch( @pytest.mark.asyncio async def tinker_thermostat_temp( - self, smile, loc_id, block_cooling=False, unhappy=False + self, smile, loc_id, block_cooling=False, fail_cooling=False, unhappy=False ): """Toggle temperature to test functionality.""" _LOGGER.info("Asserting modifying settings in location (%s):", loc_id) tinker_temp_passed = False test_temp = {"setpoint": 22.9} if self.cooling_present and not block_cooling: - test_temp = {"setpoint_low": 19.5, "setpoint_high": 23.5} + if smile.smile_name == "Smile Anna": + if self._cooling_enabled: + test_temp = {"setpoint_low": 4.0, "setpoint_high": 23.0} + else: + test_temp = {"setpoint_low": 19.0, "setpoint_high": 30.0} + if fail_cooling: + test_temp = {"setpoint_low": 19.0, "setpoint_high": 23.0} _LOGGER.info("- Adjusting temperature to %s", test_temp) try: await smile.set_temperature(loc_id, test_temp) @@ -826,6 +832,7 @@ async def tinker_thermostat( good_schedules=None, single=False, block_cooling=False, + fail_cooling=False, unhappy=False, ): """Toggle various climate settings to test functionality.""" @@ -833,7 +840,7 @@ async def tinker_thermostat( good_schedules = ["Weekschema"] result_1 = await self.tinker_thermostat_temp( - smile, loc_id, block_cooling, unhappy + smile, loc_id, block_cooling, fail_cooling, unhappy ) result_2 = await self.tinker_thermostat_preset(smile, loc_id, unhappy) if smile._schedule_old_states != {}: @@ -858,11 +865,12 @@ async def tinker_legacy_thermostat( smile, schedule_on=True, block_cooling=False, + fail_cooling=False, unhappy=False, ): """Toggle various climate settings to test functionality.""" result_1 = await self.tinker_thermostat_temp( - smile, "dummy", block_cooling, unhappy + smile, "dummy", block_cooling, fail_cooling, unhappy ) result_2 = await self.tinker_thermostat_preset(smile, None, unhappy) result_3 = await self.tinker_legacy_thermostat_schedule(smile, unhappy) diff --git a/userdata/updated/anna_elga_2_switch_heating/@bart1970 b/userdata/updated/anna_elga_2_switch_heating/@bart1970 new file mode 100644 index 000000000..e69de29bb diff --git a/userdata/updated/anna_elga_2_switch_heating/core.domain_objects.xml b/userdata/updated/anna_elga_2_switch_heating/core.domain_objects.xml new file mode 100644 index 000000000..b74fc6b68 --- /dev/null +++ b/userdata/updated/anna_elga_2_switch_heating/core.domain_objects.xml @@ -0,0 +1,2127 @@ + + + + + Plugwise + Gateway + AME Smile 2.0 board + + 2018-07-12T11:13:19.719+02:00 + 2021-10-28T04:56:48.081+02:00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Techneco + + + + 2019-07-22T11:08:27.495+02:00 + 2021-10-28T04:56:25.609+02:00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.0 + true + false + false + false + true + false + smart_grid_off + off + + + + + Anna + A thermostat + thermostat + 2019-07-22T11:03:36.852+02:00 + 2022-03-10T19:01:01.334+01:00 + + + + + + temperature_offset + C + 2022-03-02T17:48:18.308+01:00 + 2019-07-22T11:08:14.705+02:00 + + + + 0.00 + + + + open_therm_boiler_activation_threshold + C + 2022-03-02T17:48:18.199+01:00 + 2020-07-09T16:11:46.259+02:00 + + + + 0.00 + + + + decentral_heat_demand_offset + C + 2022-03-10T19:01:39.262+01:00 + 2020-08-15T17:11:15.017+02:00 + + + + 0.00 + + + + proximity_detection + + 2021-11-20T23:26:01.029+01:00 + 2021-11-20T23:26:01.029+01:00 + + + + proximity_detected + + + + cooling_deactivation_threshold + C + 2020-09-07T19:07:13.679+02:00 + 2020-09-07T19:07:13.679+02:00 + + + + 3 + + + + derivative_coefficient + s + 2022-03-02T17:48:18.207+01:00 + 2020-07-10T05:28:54.022+02:00 + + + + 0 + + + + button_left + + 2022-03-09T18:38:03.814+01:00 + 2022-03-09T18:38:03.814+01:00 + + + + + + + + + + + + + + + + + + + + + 2017-10-25T14:55:02.060+02:00 + 2022-03-10T13:55:17.142+01:00 + + + + true + false + false + 2017-08-29T08:24:38.164+02:00 + 2021-10-31T14:48:27.951+01:00 + Plugwise + smile_thermo + AME Smile 2.0 board + 4.2.1 + C4930002FE76 + abcdefgh + true + true + + 127.0.0.2 + smile000000 + + Europe/Amsterdam + disabled + + Techneco + Gateways voor Techneco + false + false + + 2018-07-12T11:13:23.436+02:00 + 2017-10-02T13:20:08+02:00 + + + + 4.49 + + Sassenheim + NL + + + + 2 + + + + 2171 + + 52.21 + + 2022-03-09T21:47:09.009+01:00 + + NL + after_1990 + + + + + detached + EUR + + 3 + + + 2022-03-09T21:47:09.009+01:00 + 2022-03-08T22:00:34+01:00 + + + + + 2038-01-19T04:14:07+01:00 + + + + + + 2018-07-12T11:13:23.659+02:00 + 2017-10-31T15:37:07+01:00 + + + + 2038-01-19T04:14:07+01:00 + + + + + + 2018-07-12T11:13:23.496+02:00 + 2017-10-31T15:37:07+01:00 + + + + 2038-01-19T04:14:07+01:00 + + + + + + 2018-07-12T11:13:23.723+02:00 + 2017-10-31T15:38:09+01:00 + + + + 2038-01-19T04:14:07+01:00 + + + + + + 2018-07-12T11:13:23.554+02:00 + 2017-10-31T15:38:09+01:00 + + + + + Central heating boiler + + heater_central + 2019-07-22T11:08:27.693+02:00 + 2022-03-10T19:03:14.319+01:00 + + + + + flame_state + + 2022-03-10T18:58:40.743+01:00 + 2022-03-10T18:58:40.743+01:00 + + + + on + + + + hibernation_lead_time + hr + 2022-03-10T18:50:56.200+01:00 + 2020-07-09T14:27:57.508+02:00 + + + + 10 + + + + boiler_minimum_outdoor_temperature + C + 2022-03-10T18:52:08.027+01:00 + 2021-06-18T20:48:46.399+02:00 + + + + 11.00 + + + + maximum_outdoor_unit_power_increase_temperature + C + 2022-03-10T18:51:35.435+01:00 + 2020-07-10T05:29:01.726+02:00 + + + + 43.00 + + + + first_fan_enabled + + 2022-03-10T19:02:55.817+01:00 + 2020-07-09T14:28:46.073+02:00 + + + + off + + + + domestic_hot_water_state + + 2022-03-10T18:58:40.724+01:00 + 2022-03-10T18:58:40.724+01:00 + + + + off + + + + underfloor_heating + + 2022-03-10T19:03:27.643+01:00 + 2020-07-09T14:28:26.128+02:00 + + + + off + + + + intended_boiler_temperature + C + 2022-03-10T07:14:11.022+01:00 + 2022-03-10T07:14:11.022+01:00 + + + + 0.00 + + + + maximum_outdoor_unit_temperature + C + 2022-03-10T18:51:25.148+01:00 + 2020-07-09T14:28:06.192+02:00 + + + + 47.00 + + + + internal_pump_heating_lead_time + s + 2022-03-10T18:51:11.992+01:00 + 2020-07-09T14:27:25.659+02:00 + + + + 60 + + + + hibernation_enabled + + 2022-03-10T19:03:27.624+01:00 + 2020-07-09T14:28:22.042+02:00 + + + + off + + + + modulation_level + + 2022-03-10T19:00:40.066+01:00 + 2022-03-10T04:18:58.547+01:00 + + + + 0.00 + + + + elga_status_code + + 2022-03-10T19:03:26.975+01:00 + 2022-03-10T07:58:46.609+01:00 + + + + 3 + + + + outdoor_temperature_used + + 2022-03-10T19:02:55.805+01:00 + 2020-07-09T14:28:40.296+02:00 + + + + on + + + + elga_outdoor_unit_fault_code + + 2022-03-10T19:03:23.488+01:00 + 2020-07-10T05:29:03.330+02:00 + + + + 0 + + + + thermostat_supports_cooling + + 2022-03-10T19:03:27.599+01:00 + 2020-08-08T10:01:07.520+02:00 + + + + on + + + + maximum_cooling_supply_temperature + C + 2022-03-10T18:51:53.457+01:00 + 2020-07-09T14:27:52.988+02:00 + + + + 21.00 + + + + domestic_hot_water_comfort_mode + + 2022-03-02T17:48:17.871+01:00 + 2021-06-18T19:48:06.123+02:00 + + + + on + + + + refrigerent_in_temperature + C + 2022-03-10T19:03:13.936+01:00 + 2022-03-10T18:59:41.657+01:00 + + + + 23.00 + + + + burner_operation_time + s + 2022-03-10T18:00:00+01:00 + 2022-03-10T17:00:00+01:00 + PT1H + + + 66 + + + + slave_boiler_state + + 2022-03-10T19:03:05.441+01:00 + 2022-03-10T07:58:53.378+01:00 + + + + off + + + + boiler_installed + + 2022-03-10T19:02:55.820+01:00 + 2020-07-09T14:28:47.551+02:00 + + + + on + + + + compressor_state + + 2022-03-10T19:03:20.412+01:00 + 2022-03-10T04:19:06.754+01:00 + + + + on + + + + temperature + C + + + PT3H + + + + weather_dependent_regulation + + 2022-03-10T19:02:55.799+01:00 + 2020-07-09T14:28:37.344+02:00 + + + + off + + + + minimum_heating_supply_temperature + C + 2022-03-10T18:51:45.258+01:00 + 2020-07-09T14:27:54.422+02:00 + + + + 40.00 + + + + intended_central_heating_state + + 2022-03-10T07:14:23.490+01:00 + 2022-03-10T07:14:23.490+01:00 + + + + off + + + + cooling_lower_offset + C + 2022-03-10T18:51:54.652+01:00 + 2021-07-15T14:56:23.167+02:00 + + + + 1.00 + + + + serial_boiler_installation + + 2022-03-10T19:02:55.814+01:00 + 2020-07-09T14:28:44.626+02:00 + + + + on + + + + minimum_cooling_supply_temperature + C + 2022-03-10T18:51:54.508+01:00 + 2020-07-09T14:27:51.551+02:00 + + + + 17.00 + + + + internal_pump_cooling_lead_time + s + 2022-03-10T18:50:38.763+01:00 + 2020-07-10T05:28:58.206+02:00 + + + + 120 + + + + external_pump_cooling_lead_time + s + 2022-03-10T18:50:29.536+01:00 + 2020-07-10T05:28:58.417+02:00 + + + + 120 + + + + external_pump_heating_lead_time + s + 2022-03-10T18:51:00.507+01:00 + 2021-07-15T14:57:03.163+02:00 + + + + 60 + + + + temperature_sensor_enabled + + 2022-03-10T19:02:55.812+01:00 + 2020-07-09T14:28:43.155+02:00 + + + + off + + + + open_therm_oem_fault_code + + 2022-03-02T17:48:17.669+01:00 + 2021-06-18T20:15:20.896+02:00 + + + + 0 + + + + thermostat_enabled + + 2022-03-10T19:03:27.593+01:00 + 2020-07-09T14:28:16.761+02:00 + + + + off + + + + input_contacts_installed + + 2022-03-10T19:02:55.802+01:00 + 2020-07-09T14:28:38.738+02:00 + + + + on + + + + night_reduction_setpoint + C + 2022-03-10T18:52:04.533+01:00 + 2020-07-10T05:28:59.268+02:00 + + + + 19.00 + + + + boiler_temperature + C + 2022-03-10T19:02:40.695+01:00 + 2022-03-10T19:02:40.695+01:00 + PT1H + + + 22.79 + + + + open_therm_slave_oem_fault_code + + 2022-03-10T19:03:21.028+01:00 + 2021-06-18T20:05:30.832+02:00 + + + + 0 + + + + second_fan_enabled + + 2022-03-10T19:02:55.808+01:00 + 2020-07-09T14:28:41.739+02:00 + + + + off + + + + refrigerent_out_temperature + C + 2022-03-10T19:03:33.179+01:00 + 2020-07-09T14:27:08.393+02:00 + + + + 0.00 + + + + domestic_hot_water_setpoint + C + 2022-03-02T17:48:18.016+01:00 + 2020-07-10T05:28:53.712+02:00 + + + + 60.00 + + + + boiler_enabled + + 2022-03-10T19:03:27.614+01:00 + 2020-07-09T14:28:20.699+02:00 + + + + off + + + + cooling_state + + 2022-03-02T17:48:17.865+01:00 + 2021-08-13T16:16:06.313+02:00 + + + + off + + + + minimum_boiler_off_time + s + 2022-03-10T18:51:42.554+01:00 + 2020-07-09T14:28:00.562+02:00 + + + + 20 + + + + maximum_outdoor_unit_steady_temperature + C + 2022-03-10T18:51:32.735+01:00 + 2020-07-09T14:28:04.609+02:00 + + + + 45.00 + + + + indoor_temperature_transition_time + min + 2022-03-10T18:52:06.142+01:00 + 2020-07-09T14:27:45.834+02:00 + + + + 5 + + + + simultaneous_boiler_operation + + 2022-03-10T19:03:27.637+01:00 + 2020-07-09T14:28:24.774+02:00 + + + + on + + + + maximum_boiler_temperature + C + 2022-03-02T17:48:17.773+01:00 + 2020-07-10T05:28:53.525+02:00 + + + + 60.00 + + + + weather_dependent_maximum_supply_temperature + C + 2022-03-10T18:51:21.045+01:00 + 2021-07-15T15:55:13.072+02:00 + + + + 60.00 + + + + central_heating_state + + 2022-03-10T18:58:45.858+01:00 + 2022-03-10T18:58:45.858+01:00 + + + + on + + + + pump_lag_time + s + 2022-03-10T18:52:07.779+01:00 + 2021-07-15T15:56:51.601+02:00 + + + + 30 + + + + heatpump_minimum_outdoor_temperature + C + 2022-03-10T18:52:04.726+01:00 + 2021-06-02T15:40:22.531+02:00 + + + + 2.00 + + + + open_therm_application_specific_fault_code + + 2022-03-02T17:48:17.665+01:00 + 2019-07-22T11:08:35.538+02:00 + + + + 0 + + + + night_reduction + + 2022-03-10T19:03:27.630+01:00 + 2020-07-09T14:28:23.418+02:00 + + + + off + + + + cooling_upper_offset + C + 2022-03-10T18:51:55.065+01:00 + 2020-07-10T05:28:59.437+02:00 + + + + 3.00 + + + + central_heater_water_pressure + bar + 2022-03-10T18:52:23.773+01:00 + 2022-03-10T07:52:15.530+01:00 + + + + 0.50 + + + + minimum_boiler_run_time + s + 2022-03-10T18:50:49.023+01:00 + 2020-07-10T05:29:01.284+02:00 + + + + 20 + + + + boiler_activation_threshold + Cmin + 2022-03-10T18:51:14.452+01:00 + 2020-07-09T14:28:09.472+02:00 + + + + 30 + + + + heating_curve + + 2022-03-10T19:03:27.610+01:00 + 2020-07-09T14:28:19.383+02:00 + + + + off + + + + maximum_heating_supply_temperature + C + 2022-03-10T18:50:56.638+01:00 + 2020-07-10T05:29:00.729+02:00 + + + + 70.00 + + + + return_water_temperature + C + 2022-03-10T19:02:40.475+01:00 + 2022-03-10T19:02:40.475+01:00 + PT1H + + + 23.39 + + + + outdoor_temperature + C + 2022-03-10T19:03:14.258+01:00 + 2022-03-10T19:03:14.258+01:00 + PT3H + + + 3.00 + + + + cooling_enabled + + 2022-11-02T03:57:23.207+01:00 + 2022-11-02T03:57:23.207+01:00 + + + + off + + + + + + + 2022-03-10T18:51:42.554+01:00 + minimum_boiler_off_time + 20 + 0 + 60 + 5 + + + + 2022-03-10T18:51:11.992+01:00 + internal_pump_heating_lead_time + 60 + 10 + 240 + 10 + + + 2022-03-10T18:52:04.533+01:00 + night_reduction_setpoint + 19 + 1 + 30 + 1 + + + + + + 2022-03-10T18:51:54.652+01:00 + cooling_lower_offset + 1 + + + + 2022-03-10T18:51:00.507+01:00 + external_pump_heating_lead_time + 60 + 10 + 240 + 10 + + + + 2022-03-10T18:50:56.200+01:00 + hibernation_lead_time + 10 + 1 + 24 + 1 + + + + 2022-03-10T18:50:49.023+01:00 + minimum_boiler_run_time + 20 + 0 + 60 + 5 + + + + 2022-03-10T18:52:06.142+01:00 + indoor_temperature_transition_time + 5 + 0 + 30 + 1 + + + + 2022-03-10T18:51:14.452+01:00 + boiler_activation_threshold + 30 + 10 + 120 + 10 + + + 2022-03-10T18:51:45.258+01:00 + minimum_heating_supply_temperature + 40 + 20 + 90 + 5 + + + + + + 2022-03-10T18:52:07.779+01:00 + pump_lag_time + 30 + 10 + 240 + 10 + + + 2022-03-10T18:51:53.457+01:00 + maximum_cooling_supply_temperature + 21 + 5 + 25 + 1 + + + + + + 2022-03-10T18:51:55.065+01:00 + cooling_upper_offset + 3 + + + + 2022-03-02T17:48:17.871+01:00 + domestic_hot_water_comfort_mode + on + + + + 2022-03-10T18:50:29.536+01:00 + external_pump_cooling_lead_time + 120 + 120 + 240 + 10 + + + 2022-03-10T18:52:08.027+01:00 + boiler_minimum_outdoor_temperature + 11 + -10 + 40 + 1 + + + + + 2022-03-10T18:51:32.735+01:00 + maximum_outdoor_unit_steady_temperature + 45 + 25 + 45 + 1 + + + + + 2022-03-10T18:51:21.045+01:00 + weather_dependent_maximum_supply_temperature + 60 + 30 + 90 + 10 + + + + + 2022-03-10T18:51:54.508+01:00 + minimum_cooling_supply_temperature + 17 + 5 + 25 + 1 + + + + + 2022-03-10T18:51:25.148+01:00 + maximum_outdoor_unit_temperature + 47 + 25 + 47 + 1 + + + + + 2022-03-10T18:50:56.638+01:00 + maximum_heating_supply_temperature + 70 + 20 + 90 + 5 + + + + + 2022-03-02T17:48:17.773+01:00 + maximum_boiler_temperature + 60 + 0 + 100 + 1 + + + + + 2022-03-10T18:52:04.726+01:00 + heatpump_minimum_outdoor_temperature + 2 + -16 + 4 + 1 + + + + + + 2022-03-10T18:50:38.763+01:00 + internal_pump_cooling_lead_time + 120 + 120 + 240 + 10 + + + 2022-03-10T18:51:35.435+01:00 + maximum_outdoor_unit_power_increase_temperature + 43 + 25 + 43 + 1 + + + + + + + Gateway + Container for variables logged about the Gateway in general. + gateway + 2018-07-12T11:13:24.488+02:00 + 2022-03-10T18:59:50.737+01:00 + + + + + lan_ip_address + + 2022-03-10T18:58:30.167+01:00 + 2021-10-28T04:56:27+02:00 + + + + 0.0.0.0 + + + + signal_strength + dBm + 2022-03-10T18:59:50.695+01:00 + 2022-03-10T18:59:50.695+01:00 + + + + -56.00 + + + + wlan_state + + 2022-03-10T18:59:50.696+01:00 + 2022-03-10T02:56:55.858+01:00 + + + + up + + + + wlan_ip_address + + 2022-03-10T18:59:50.696+01:00 + 2022-03-10T02:56:55+01:00 + + + + 127.0.0.2 + + + + gateway_mode + + + + + + + + link_quality + + 2022-03-10T18:59:50.695+01:00 + 2022-03-10T18:59:50.695+01:00 + + + + 54 + + + + lan_state + + 2022-03-10T18:58:30.167+01:00 + 2019-07-22T11:03:31.494+02:00 + + + + down + + + + + + + + gateway_mode + full + + setup + light + away + vacation + + full + secure + + + + + + + Living room + The room containing the (central) home thermostat. + livingroom + 2019-07-22T11:03:38.853+02:00 + 2022-03-10T19:01:01.344+01:00 + + home + + + + + + + thermostat + C + 2022-03-10T06:45:00.389+01:00 + 2022-03-02T06:45:00.397+01:00 + + + 19.50 + + + + temperature + + 2022-03-10T19:01:01.330+01:00 + 2022-03-02T17:29:58.913+01:00 + PT3H + + 18.93 + + + + + + 2022-03-10T06:45:00.348+01:00 + thermostat + 19.5.0 + 4 + 30 + 0.1 + + true + true + active + + + + + 2019-07-22T11:03:37.635+02:00 + 2022-03-02T17:48:09.912+01:00 + + + + + + economy + on + unknown + unknown + 120 + off + 24 + 10 + 0.5 + 0.5 + 1.5 + 85 + 55 + 0 + 25 + 7 + + + Thermostat presets + Provides presets for a Location. +