From a2eab99fe8db69418b8df7e5b155c30fa5318d4e Mon Sep 17 00:00:00 2001 From: Sander Jochems Date: Fri, 15 Aug 2025 18:13:00 +0200 Subject: [PATCH 1/3] feature: Outdoor temperature --- src/pymelcloud/ata_device.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/pymelcloud/ata_device.py b/src/pymelcloud/ata_device.py index b727048..fcf6f37 100644 --- a/src/pymelcloud/ata_device.py +++ b/src/pymelcloud/ata_device.py @@ -207,6 +207,16 @@ def room_temperature(self) -> Optional[float]: return None return self._state.get("RoomTemperature") + @property + def outdoor_temperature(self) -> Optional[float]: + """Return outdoor temperature reported by the device.""" + if self._device_conf.get("HideOutdoorTemperature", False): + return None + device = self._device_conf.get("Device", {}) + if not device.get("HasOutdoorTemperature", False): + return None + return device.get("OutdoorTemperature") + @property def target_temperature(self) -> Optional[float]: """Return target temperature set for the device.""" From fef20e39731547853de8445ed2f2242c53cb1bdc Mon Sep 17 00:00:00 2001 From: Sander Jochems Date: Fri, 15 Aug 2025 18:22:10 +0200 Subject: [PATCH 2/3] docs: Add outdoor_temperature property --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 09274b2..1e3a5d6 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ one has the time to go through the source. ### Air-to-air heat pump properties * `room_temperature` +* `outdoor_temperature` * `target_temperature` * `target_temperature_step` * `target_temperature_min` From a7aaf1663982db626d0032df385d33572469c338 Mon Sep 17 00:00:00 2001 From: Sander Jochems Date: Fri, 15 Aug 2025 18:37:33 +0200 Subject: [PATCH 3/3] feature: Property for outdoor temperature sensor --- src/pymelcloud/ata_device.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/pymelcloud/ata_device.py b/src/pymelcloud/ata_device.py index fcf6f37..cf28fc0 100644 --- a/src/pymelcloud/ata_device.py +++ b/src/pymelcloud/ata_device.py @@ -207,6 +207,13 @@ def room_temperature(self) -> Optional[float]: return None return self._state.get("RoomTemperature") + @property + def has_outdoor_temperature(self) -> bool: + """Return True if the device has an outdoor temperature sensor.""" + if self._device_conf.get("HideOutdoorTemperature", False): + return False + return self._device_conf.get("Device", {}).get("HasOutdoorTemperature", False): + @property def outdoor_temperature(self) -> Optional[float]: """Return outdoor temperature reported by the device."""