From e39f75cf2dc81e9d4cdb5a290fa1e757c1ce9425 Mon Sep 17 00:00:00 2001 From: Alone Date: Thu, 20 Feb 2025 14:19:14 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=80=20improve=20for=20fan=20entity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom_components/xiaomi_miot/climate.py | 1 - custom_components/xiaomi_miot/fan.py | 14 +++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/custom_components/xiaomi_miot/climate.py b/custom_components/xiaomi_miot/climate.py index 04696a0eb..57682a966 100644 --- a/custom_components/xiaomi_miot/climate.py +++ b/custom_components/xiaomi_miot/climate.py @@ -185,7 +185,6 @@ def on_init(self): hvac_modes.add(HVACMode.AUTO) elif prop.in_list(['mode']): self._conv_mode = conv - self._attr_hvac_modes = [] self._attr_preset_modes = prop.list_descriptions() for mk, mv in self._hvac_modes.items(): val = prop.list_first(*(mv.get('list') or [])) diff --git a/custom_components/xiaomi_miot/fan.py b/custom_components/xiaomi_miot/fan.py index 484b1d387..7b8ed2301 100644 --- a/custom_components/xiaomi_miot/fan.py +++ b/custom_components/xiaomi_miot/fan.py @@ -171,7 +171,7 @@ def is_on(self): async def async_turn_on(self, percentage=None, preset_mode=None, **kwargs): dat = {} if self._conv_power and not self.is_on: - dat[self._conv_power.attr] = True + dat[self._conv_power.full_name] = True if percentage is not None: if self._prop_percentage: await self.device.async_set_property(self._prop_percentage, percentage) @@ -181,19 +181,19 @@ async def async_turn_on(self, percentage=None, preset_mode=None, **kwargs): if val is not None: await self.device.async_set_property(self._prop_speed, val) elif self._speed_range: - dat[self._conv_speed.attr] = percentage_to_ranged_value(self._speed_range, percentage) + dat[self._conv_speed.full_name] = percentage_to_ranged_value(self._speed_range, percentage) elif self._speed_list: des = percentage_to_ordered_list_item(self._speed_list, percentage) - dat[self._conv_speed.attr] = self._conv_speed.prop.list_value(des) + dat[self._conv_speed.full_name] = self._conv_speed.prop.list_value(des) if preset_mode is not None: - dat[self._conv_mode.attr] = preset_mode + dat[self._conv_mode.full_name] = preset_mode if dat: await self.device.async_write(dat) async def async_turn_off(self, **kwargs): if not self._conv_power: return - await self.device.async_write({self._conv_power.attr: False}) + await self.device.async_write({self._conv_power.full_name: False}) async def async_set_percentage(self, percentage: int): if percentage == 0 and self._conv_power: @@ -204,12 +204,12 @@ async def async_set_percentage(self, percentage: int): async def async_set_preset_mode(self, preset_mode: str): if not self._conv_mode: return - await self.device.async_write({self._conv_mode.attr: preset_mode}) + await self.device.async_write({self._conv_mode.full_name: preset_mode}) async def async_oscillate(self, oscillating: bool): if not self._conv_oscillate: return - await self.device.async_write({self._conv_oscillate.attr: oscillating}) + await self.device.async_write({self._conv_oscillate.full_name: oscillating}) XEntity.CLS[ENTITY_DOMAIN] = FanEntity