From 42cec38b66338fb945e256dee2d188b2b2eb9d98 Mon Sep 17 00:00:00 2001 From: Nikolai Rahimi Date: Tue, 29 Mar 2022 23:02:57 -0400 Subject: [PATCH] Vesync core400s fan speed (#67672) --- homeassistant/components/vesync/fan.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/vesync/fan.py b/homeassistant/components/vesync/fan.py index ea1fe94deb0..fef6d24a9bd 100644 --- a/homeassistant/components/vesync/fan.py +++ b/homeassistant/components/vesync/fan.py @@ -34,7 +34,12 @@ PRESET_MODES = { "Core300S": [FAN_MODE_AUTO, FAN_MODE_SLEEP], "Core400S": [FAN_MODE_AUTO, FAN_MODE_SLEEP], } -SPEED_RANGE = (1, 3) # off is not included +SPEED_RANGE = { # off is not included + "LV-PUR131S": (1, 3), + "Core200S": (1, 3), + "Core300S": (1, 3), + "Core400S": (1, 4), +} async def async_setup_entry( @@ -92,13 +97,15 @@ class VeSyncFanHA(VeSyncDevice, FanEntity): self.smartfan.mode == "manual" and (current_level := self.smartfan.fan_level) is not None ): - return ranged_value_to_percentage(SPEED_RANGE, current_level) + return ranged_value_to_percentage( + SPEED_RANGE[self.device.device_type], current_level + ) return None @property def speed_count(self) -> int: """Return the number of speeds the fan supports.""" - return int_states_in_range(SPEED_RANGE) + return int_states_in_range(SPEED_RANGE[self.device.device_type]) @property def preset_modes(self): @@ -156,7 +163,11 @@ class VeSyncFanHA(VeSyncDevice, FanEntity): self.smartfan.manual_mode() self.smartfan.change_fan_speed( - math.ceil(percentage_to_ranged_value(SPEED_RANGE, percentage)) + math.ceil( + percentage_to_ranged_value( + SPEED_RANGE[self.device.device_type], percentage + ) + ) ) self.schedule_update_ha_state() @@ -164,7 +175,8 @@ class VeSyncFanHA(VeSyncDevice, FanEntity): """Set the preset mode of device.""" if preset_mode not in self.preset_modes: raise ValueError( - "{preset_mode} is not one of the valid preset modes: {self.preset_modes}" + f"{preset_mode} is not one of the valid preset modes: " + f"{self.preset_modes}" ) if not self.smartfan.is_on: