fix: set percentage

This commit is contained in:
LiShuzhen 2025-01-03 10:14:04 +08:00
parent 75638eabcd
commit 131563d594

View File

@ -194,12 +194,10 @@ class Fan(MIoTServiceEntity, FanEntity):
await self.set_property_async(prop=self._prop_fan_level, await self.set_property_async(prop=self._prop_fan_level,
value=speed_value) value=speed_value)
else: else:
speed = int((self._speed_max - self._speed_min)*percentage/100
)+self._speed_min
step_cnt = int((speed - self._speed_min)/self._speed_step)
speed = self._speed_min+step_cnt*self._speed_step
await self.set_property_async(prop=self._prop_fan_level, await self.set_property_async(prop=self._prop_fan_level,
value=speed) value=int(percentage_to_ranged_value(
low_high_range=(self._speed_min, self._speed_max),
percentage=percentage)))
# preset_mode # preset_mode
if preset_mode: if preset_mode:
await self.set_property_async( await self.set_property_async(
@ -217,11 +215,18 @@ class Fan(MIoTServiceEntity, FanEntity):
async def async_set_percentage(self, percentage: int) -> None: async def async_set_percentage(self, percentage: int) -> None:
"""Set the percentage of the fan speed.""" """Set the percentage of the fan speed."""
if percentage > 0: if percentage > 0:
await self.set_property_async( if self._speed_names:
prop=self._prop_fan_level, speed = percentage_to_ordered_list_item(self._speed_names,
value=int(percentage_to_ranged_value( percentage)
low_high_range=(self._speed_min, self._speed_max), speed_value = self.get_map_value(map_=self._speed_name_map,
percentage=percentage))) description=speed)
await self.set_property_async(prop=self._prop_fan_level,
value=speed_value)
else:
await self.set_property_async(prop=self._prop_fan_level,
value=int(percentage_to_ranged_value(
low_high_range=(self._speed_min, self._speed_max),
percentage=percentage)))
if not self.is_on: if not self.is_on:
# If the fan is off, turn it on. # If the fan is off, turn it on.
await self.set_property_async(prop=self._prop_on, value=True) await self.set_property_async(prop=self._prop_on, value=True)