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: