Vesync core400s fan speed (#67672)

This commit is contained in:
Nikolai Rahimi 2022-03-29 23:02:57 -04:00 committed by GitHub
parent 66a183cfe3
commit 42cec38b66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -34,7 +34,12 @@ PRESET_MODES = {
"Core300S": [FAN_MODE_AUTO, FAN_MODE_SLEEP], "Core300S": [FAN_MODE_AUTO, FAN_MODE_SLEEP],
"Core400S": [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( async def async_setup_entry(
@ -92,13 +97,15 @@ class VeSyncFanHA(VeSyncDevice, FanEntity):
self.smartfan.mode == "manual" self.smartfan.mode == "manual"
and (current_level := self.smartfan.fan_level) is not None 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 return None
@property @property
def speed_count(self) -> int: def speed_count(self) -> int:
"""Return the number of speeds the fan supports.""" """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 @property
def preset_modes(self): def preset_modes(self):
@ -156,7 +163,11 @@ class VeSyncFanHA(VeSyncDevice, FanEntity):
self.smartfan.manual_mode() self.smartfan.manual_mode()
self.smartfan.change_fan_speed( 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() self.schedule_update_ha_state()
@ -164,7 +175,8 @@ class VeSyncFanHA(VeSyncDevice, FanEntity):
"""Set the preset mode of device.""" """Set the preset mode of device."""
if preset_mode not in self.preset_modes: if preset_mode not in self.preset_modes:
raise ValueError( 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: if not self.smartfan.is_on: