From c0699be895a1d90d774355d1b031f0e5ad5d4f06 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Mon, 12 Oct 2026 19:59:40 +0200 Subject: [PATCH 1/7] Enable dhw_mode select with two options --- custom_components/plugwise/select.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/custom_components/plugwise/select.py b/custom_components/plugwise/select.py index 5822a103b..3fcee357b 100644 --- a/custom_components/plugwise/select.py +++ b/custom_components/plugwise/select.py @@ -129,10 +129,7 @@ def _add_entities() -> None: for device_id in coordinator.new_devices: device = coordinator.data[device_id] for description in SELECT_TYPES: - if device.get(description.key) and ( - description.key not in (DHW_MODE, SELECT_DHW_MODE) - or len(device[description.options_key]) > 2 - ): + if device.get(description.key): entities.append( PlugwiseSelectEntity(coordinator, device_id, description) ) From acf24e22d56027cdadcd89d3d2fc5c9ba10ba1d0 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Mon, 12 Oct 2026 20:03:47 +0200 Subject: [PATCH 2/7] Remove dhw comfort mode switch --- custom_components/plugwise/switch.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/custom_components/plugwise/switch.py b/custom_components/plugwise/switch.py index 5553bc608..65d19be6d 100644 --- a/custom_components/plugwise/switch.py +++ b/custom_components/plugwise/switch.py @@ -41,12 +41,6 @@ class PlugwiseSwitchEntityDescription(SwitchEntityDescription): # Upstream consts PLUGWISE_SWITCHES: tuple[PlugwiseSwitchEntityDescription, ...] = ( - PlugwiseSwitchEntityDescription( - key=DHW_CM_SWITCH, - translation_key=DHW_CM_SWITCH, - device_class=SwitchDeviceClass.SWITCH, - entity_category=EntityCategory.CONFIG, - ), PlugwiseSwitchEntityDescription( key=LOCK, translation_key=LOCK, From aad5335914b8dc9d7b29a62aa512c971f82405af Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 13 Oct 2026 08:07:05 +0200 Subject: [PATCH 3/7] Restore removed translations --- custom_components/plugwise/translations/en.json | 6 ++++++ custom_components/plugwise/translations/nl.json | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/custom_components/plugwise/translations/en.json b/custom_components/plugwise/translations/en.json index 4b18dfbb5..06a556baf 100644 --- a/custom_components/plugwise/translations/en.json +++ b/custom_components/plugwise/translations/en.json @@ -92,6 +92,12 @@ } }, "number": { + "max_dhw_temperature": { + "name": "Domestic hot water setpoint" + }, + "maximum_boiler_temperature": { + "name": "Maximum boiler temperature setpoint" + }, "temperature_offset": { "name": "Temperature offset" } diff --git a/custom_components/plugwise/translations/nl.json b/custom_components/plugwise/translations/nl.json index 1dfa1d46c..86b32f5be 100644 --- a/custom_components/plugwise/translations/nl.json +++ b/custom_components/plugwise/translations/nl.json @@ -92,6 +92,12 @@ } }, "number": { + "max_dhw_temperature": { + "name": "Instelpunt sanitair warm water" + }, + "maximum_boiler_temperature": { + "name": "Instelpunt maximale boiler temperatuur" + }, "temperature_offset": { "name": "Temperatuurcompensatie" } From 7c5a99e23846dd87431716c4f923314da7c4f517 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 13 Oct 2026 08:09:38 +0200 Subject: [PATCH 4/7] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e6373db5..94532c253 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ Versions from 0.40 and up +## v0.65.2 + +- Replace DHW comfort mode switch with select, restore number translations via PR [#1160](https://github.com/plugwise/plugwise-beta/pull/1160) + ## v0.65.1 - Revert native temperature properties updates From ead51ccbc2e1ce00b73dd8a7805c9f9c9b38e3d6 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 13 Oct 2026 08:16:42 +0200 Subject: [PATCH 5/7] Clean up --- custom_components/plugwise/switch.py | 1 - 1 file changed, 1 deletion(-) diff --git a/custom_components/plugwise/switch.py b/custom_components/plugwise/switch.py index 65d19be6d..c10a5a6b5 100644 --- a/custom_components/plugwise/switch.py +++ b/custom_components/plugwise/switch.py @@ -16,7 +16,6 @@ from .const import ( COOLING_ENA_SWITCH, - DHW_CM_SWITCH, LOCK, LOGGER, # pw-beta MEMBERS, From 308e270225b8ca8495b90e902b1d56689b85f1bd Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 13 Oct 2026 19:53:25 +0200 Subject: [PATCH 6/7] Save updates snapshots --- .../plugwise/snapshots/test_number.ambr | 64 +++++++++---------- .../plugwise/snapshots/test_select.ambr | 59 +++++++++++++++++ 2 files changed, 91 insertions(+), 32 deletions(-) diff --git a/tests/components/plugwise/snapshots/test_number.ambr b/tests/components/plugwise/snapshots/test_number.ambr index 7becd054d..cf01fb506 100644 --- a/tests/components/plugwise/snapshots/test_number.ambr +++ b/tests/components/plugwise/snapshots/test_number.ambr @@ -609,17 +609,17 @@ 'state': '-0.5', }) # --- -# name: test_anna_number_entities[platforms0-True-anna_heatpump_heating][number.opentherm_temperature-entry] +# name: test_anna_number_entities[platforms0-True-anna_heatpump_heating][number.opentherm_domestic_hot_water_setpoint-entry] EntityRegistryEntrySnapshot({ 'aliases': list([ None, ]), 'area_id': None, 'capabilities': dict({ - : 100.0, - : 0.0, + : 60.0, + : 35.0, : , - : 1.0, + : 0.01, }), 'config_entry_id': , 'config_subentry_id': , @@ -628,7 +628,7 @@ 'disabled_by': None, 'domain': 'number', 'entity_category': , - 'entity_id': 'number.opentherm_temperature', + 'entity_id': 'number.opentherm_domestic_hot_water_setpoint', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -636,51 +636,51 @@ 'labels': set({ }), 'name': None, - 'object_id_base': 'Temperature', + 'object_id_base': 'Domestic hot water setpoint', 'options': dict({ }), 'original_device_class': , 'original_icon': None, - 'original_name': 'Temperature', + 'original_name': 'Domestic hot water setpoint', 'platform': 'plugwise', 'previous_unique_id': None, 'suggested_object_id': None, 'supported_features': 0, - 'translation_key': 'maximum_boiler_temperature', - 'unique_id': '1cbf783bb11e4a7c8a6843dee3a86927-boiler_temperature', + 'translation_key': 'max_dhw_temperature', + 'unique_id': '1cbf783bb11e4a7c8a6843dee3a86927-dhw_temperature', 'unit_of_measurement': , }) # --- -# name: test_anna_number_entities[platforms0-True-anna_heatpump_heating][number.opentherm_temperature-state] +# name: test_anna_number_entities[platforms0-True-anna_heatpump_heating][number.opentherm_domestic_hot_water_setpoint-state] StateSnapshot({ 'attributes': ReadOnlyDict({ : 'temperature', - : 'OpenTherm Temperature', - : 100.0, - : 0.0, + : 'OpenTherm Domestic hot water setpoint', + : 60.0, + : 35.0, : , - : 1.0, + : 0.01, : , }), 'context': , - 'entity_id': 'number.opentherm_temperature', + 'entity_id': 'number.opentherm_domestic_hot_water_setpoint', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '60.0', + 'state': '53.0', }) # --- -# name: test_anna_number_entities[platforms0-True-anna_heatpump_heating][number.opentherm_temperature_2-entry] +# name: test_anna_number_entities[platforms0-True-anna_heatpump_heating][number.opentherm_maximum_boiler_temperature_setpoint-entry] EntityRegistryEntrySnapshot({ 'aliases': list([ None, ]), 'area_id': None, 'capabilities': dict({ - : 60.0, - : 35.0, + : 100.0, + : 0.0, : , - : 0.01, + : 1.0, }), 'config_entry_id': , 'config_subentry_id': , @@ -689,7 +689,7 @@ 'disabled_by': None, 'domain': 'number', 'entity_category': , - 'entity_id': 'number.opentherm_temperature_2', + 'entity_id': 'number.opentherm_maximum_boiler_temperature_setpoint', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -697,37 +697,37 @@ 'labels': set({ }), 'name': None, - 'object_id_base': 'Temperature', + 'object_id_base': 'Maximum boiler temperature setpoint', 'options': dict({ }), 'original_device_class': , 'original_icon': None, - 'original_name': 'Temperature', + 'original_name': 'Maximum boiler temperature setpoint', 'platform': 'plugwise', 'previous_unique_id': None, 'suggested_object_id': None, 'supported_features': 0, - 'translation_key': 'max_dhw_temperature', - 'unique_id': '1cbf783bb11e4a7c8a6843dee3a86927-dhw_temperature', + 'translation_key': 'maximum_boiler_temperature', + 'unique_id': '1cbf783bb11e4a7c8a6843dee3a86927-boiler_temperature', 'unit_of_measurement': , }) # --- -# name: test_anna_number_entities[platforms0-True-anna_heatpump_heating][number.opentherm_temperature_2-state] +# name: test_anna_number_entities[platforms0-True-anna_heatpump_heating][number.opentherm_maximum_boiler_temperature_setpoint-state] StateSnapshot({ 'attributes': ReadOnlyDict({ : 'temperature', - : 'OpenTherm Temperature', - : 60.0, - : 35.0, + : 'OpenTherm Maximum boiler temperature setpoint', + : 100.0, + : 0.0, : , - : 0.01, + : 1.0, : , }), 'context': , - 'entity_id': 'number.opentherm_temperature_2', + 'entity_id': 'number.opentherm_maximum_boiler_temperature_setpoint', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '53.0', + 'state': '60.0', }) # --- diff --git a/tests/components/plugwise/snapshots/test_select.ambr b/tests/components/plugwise/snapshots/test_select.ambr index fa627eb52..00ae4f8e7 100644 --- a/tests/components/plugwise/snapshots/test_select.ambr +++ b/tests/components/plugwise/snapshots/test_select.ambr @@ -377,6 +377,65 @@ 'state': 'active', }) # --- +# name: test_adam_2_select_entities[platforms0-True-m_adam_cooling][select.opentherm_dhw_mode-entry] + EntityRegistryEntrySnapshot({ + 'aliases': list([ + None, + ]), + 'area_id': None, + 'capabilities': dict({ + : list([ + 'comfort', + 'eco', + ]), + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'select', + 'entity_category': , + 'entity_id': 'select.opentherm_dhw_mode', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'DHW mode', + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'DHW mode', + 'platform': 'plugwise', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'select_dhw_mode', + 'unique_id': '056ee145a816487eaa69243c3280f8bf-select_dhw_mode', + 'unit_of_measurement': None, + }) +# --- +# name: test_adam_2_select_entities[platforms0-True-m_adam_cooling][select.opentherm_dhw_mode-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + : 'OpenTherm DHW mode', + : list([ + 'comfort', + 'eco', + ]), + }), + 'context': , + 'entity_id': 'select.opentherm_dhw_mode', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'eco', + }) +# --- # name: test_adam_select_entities[platforms0][select.badkamer_thermostat_schedule-entry] EntityRegistryEntrySnapshot({ 'aliases': list([ From dd4abbd83bd2ffd17f992640a26eaaadc91d7008 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk Date: Tue, 13 Oct 2026 20:04:04 +0200 Subject: [PATCH 7/7] v0.65.2 release version --- custom_components/plugwise/manifest.json | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/plugwise/manifest.json b/custom_components/plugwise/manifest.json index f2c6c32eb..fc4c5a94d 100644 --- a/custom_components/plugwise/manifest.json +++ b/custom_components/plugwise/manifest.json @@ -8,6 +8,6 @@ "iot_class": "local_polling", "loggers": ["plugwise"], "requirements": ["plugwise>=1.14.7"], - "version": "0.65.1", + "version": "0.65.2", "zeroconf": ["_plugwise._tcp.local."] } diff --git a/pyproject.toml b/pyproject.toml index 68bd009d0..f169e4e9e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "plugwise-beta" -version = "0.65.1" +version = "0.65.2" description = "Plugwise beta custom-component" readme = "README.md" requires-python = ">=3.14"