From 1fecfb3a82be70b0ffd14487e58022937484dd91 Mon Sep 17 00:00:00 2001 From: Oliver Crease <18347739+ocrease@users.noreply.github.com> Date: Thu, 23 Jan 2025 22:34:24 +0000 Subject: [PATCH] Fixes and improvements for NeoStatHC --- custom_components/heatmiserneo/climate.py | 2 +- custom_components/heatmiserneo/const.py | 2 ++ custom_components/heatmiserneo/icons.json | 12 ++++++++++++ custom_components/heatmiserneo/sensor.py | 8 +++++--- custom_components/heatmiserneo/strings.json | 10 ++++++++++ custom_components/heatmiserneo/translations/en.json | 10 ++++++++++ 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/custom_components/heatmiserneo/climate.py b/custom_components/heatmiserneo/climate.py index 949c3a4..ad70e8f 100644 --- a/custom_components/heatmiserneo/climate.py +++ b/custom_components/heatmiserneo/climate.py @@ -457,7 +457,7 @@ def target_temperature_high(self): def target_temperature_low(self): """Return the temperature we try to reach.""" target = float(self.data.target_temperature) - if self.hvac_action() != HVACAction.OFF and target < 255: + if self.hvac_action != HVACAction.OFF and target < 255: return target return None diff --git a/custom_components/heatmiserneo/const.py b/custom_components/heatmiserneo/const.py index dced246..eb4bfe6 100644 --- a/custom_components/heatmiserneo/const.py +++ b/custom_components/heatmiserneo/const.py @@ -8,6 +8,7 @@ FAN_HIGH, FAN_LOW, FAN_MEDIUM, + FAN_OFF, UnitOfTemperature, ) @@ -155,6 +156,7 @@ class ModeSelectOption(str, enum.Enum): "Medium": FAN_MEDIUM, "Low": FAN_LOW, "Auto": FAN_AUTO, + "Off": FAN_OFF, } diff --git a/custom_components/heatmiserneo/icons.json b/custom_components/heatmiserneo/icons.json index fdd34e3..a96f175 100644 --- a/custom_components/heatmiserneo/icons.json +++ b/custom_components/heatmiserneo/icons.json @@ -1,5 +1,17 @@ { "entity": { + "sensor": { + "fan_speed": { + "default": "mdi:fan", + "state": { + "auto": "mdi:fan-auto", + "off": "mdi:fan-off", + "low": "mdi:fan-speed-1", + "medium": "mdi:fan-speed-2", + "high": "mdi:fan-speed-3" + } + } + }, "select": { "switching_differential": { "default": "mdi:thermometer" diff --git a/custom_components/heatmiserneo/sensor.py b/custom_components/heatmiserneo/sensor.py index b88537a..720ed86 100644 --- a/custom_components/heatmiserneo/sensor.py +++ b/custom_components/heatmiserneo/sensor.py @@ -623,9 +623,11 @@ class HeatmiserNeoHubSensorEntityDescription( key="heatmiser_neo_stat_hc_fan_speed", device_class=SensorDeviceClass.ENUM, options=[FAN_OFF, FAN_HIGH, FAN_MEDIUM, FAN_LOW, FAN_AUTO], - name="Fan Speed", - value_fn=lambda device: HEATMISER_FAN_SPEED_HA_FAN_MODE.get( - device.data.fan_speed + translation_key="fan_speed", + value_fn=lambda device: ( + FAN_AUTO + if device.data.fan_control != "Manual" + else HEATMISER_FAN_SPEED_HA_FAN_MODE.get(device.data.fan_speed, FAN_OFF) ), setup_filter_fn=lambda device, _: ( device.device_type in HEATMISER_TYPE_IDS_HC and not device.time_clock_mode diff --git a/custom_components/heatmiserneo/strings.json b/custom_components/heatmiserneo/strings.json index df4c162..bfe2039 100644 --- a/custom_components/heatmiserneo/strings.json +++ b/custom_components/heatmiserneo/strings.json @@ -117,6 +117,16 @@ } }, "sensor": { + "fan_speed": { + "name": "Fan Speed", + "state": { + "auto": "Auto", + "off": "Off", + "low": "Low", + "medium": "Medium", + "high": "High" + } + }, "hub_profile_format": { "name": "Profile Format", "state": { diff --git a/custom_components/heatmiserneo/translations/en.json b/custom_components/heatmiserneo/translations/en.json index b8b8656..5dd6164 100644 --- a/custom_components/heatmiserneo/translations/en.json +++ b/custom_components/heatmiserneo/translations/en.json @@ -121,6 +121,16 @@ } }, "sensor": { + "fan_speed": { + "name": "Fan Speed", + "state": { + "auto": "Auto", + "off": "Off", + "low": "Low", + "medium": "Medium", + "high": "High" + } + }, "hub_profile_format": { "name": "Profile Format", "state": {