1 """Support for SwitchBot vacuum."""
5 from switchbot_api
import Device, Remote, SwitchBotAPI, VacuumCommands
21 from .
import SwitchbotCloudData
25 VACUUM_FAN_SPEED_QUIET,
26 VACUUM_FAN_SPEED_STANDARD,
27 VACUUM_FAN_SPEED_STRONG,
29 from .coordinator
import SwitchBotCoordinator
30 from .entity
import SwitchBotCloudEntity
36 async_add_entities: AddEntitiesCallback,
38 """Set up SwitchBot Cloud entry."""
39 data: SwitchbotCloudData = hass.data[DOMAIN][config.entry_id]
42 for device, coordinator
in data.devices.vacuums
46 VACUUM_SWITCHBOT_STATE_TO_HA_STATE: dict[str, str] = {
47 "StandBy": STATE_IDLE,
48 "Clearing": STATE_CLEANING,
49 "Paused": STATE_PAUSED,
50 "GotoChargeBase": STATE_RETURNING,
51 "Charging": STATE_DOCKED,
52 "ChargeDone": STATE_DOCKED,
53 "Dormant": STATE_IDLE,
54 "InTrouble": STATE_ERROR,
55 "InRemoteControl": STATE_CLEANING,
56 "InDustCollecting": STATE_DOCKED,
59 VACUUM_FAN_SPEED_TO_SWITCHBOT_FAN_SPEED: dict[str, str] = {
60 VACUUM_FAN_SPEED_QUIET:
"0",
61 VACUUM_FAN_SPEED_STANDARD:
"1",
62 VACUUM_FAN_SPEED_STRONG:
"2",
63 VACUUM_FAN_SPEED_MAX:
"3",
69 """Representation of a SwitchBot vacuum."""
71 _attr_supported_features: VacuumEntityFeature = (
72 VacuumEntityFeature.BATTERY
73 | VacuumEntityFeature.FAN_SPEED
74 | VacuumEntityFeature.PAUSE
75 | VacuumEntityFeature.RETURN_HOME
76 | VacuumEntityFeature.START
77 | VacuumEntityFeature.STATE
81 _attr_fan_speed_list: list[str] =
list(
82 VACUUM_FAN_SPEED_TO_SWITCHBOT_FAN_SPEED.keys()
88 if fan_speed
in VACUUM_FAN_SPEED_TO_SWITCHBOT_FAN_SPEED:
90 VacuumCommands.POW_LEVEL,
91 parameters=VACUUM_FAN_SPEED_TO_SWITCHBOT_FAN_SPEED[fan_speed],
96 """Pause the cleaning task."""
100 """Set the vacuum cleaner to return to the dock."""
104 """Start or resume the cleaning task."""
109 """Handle updated data from the coordinator."""
110 if not self.coordinator.data:
114 self.
_attr_available_attr_available = self.coordinator.data.get(
"onlineStatus") ==
"online"
116 switchbot_state =
str(self.coordinator.data.get(
"workingStatus"))
117 self.
_attr_state_attr_state = VACUUM_SWITCHBOT_STATE_TO_HA_STATE.get(switchbot_state)
124 api: SwitchBotAPI, device: Device | Remote, coordinator: SwitchBotCoordinator
125 ) -> SwitchBotCloudVacuum:
126 """Make a SwitchBotCloudVacuum."""
None send_api_command(self, Commands command, str command_type="command", dict|str parameters="default")
None async_return_to_base(self, **Any kwargs)
None async_set_fan_speed(self, str fan_speed, **Any kwargs)
None _handle_coordinator_update(self)
None async_write_ha_state(self)
SwitchBotCloudVacuum _async_make_entity(SwitchBotAPI api, Device|Remote device, SwitchBotCoordinator coordinator)
None async_setup_entry(HomeAssistant hass, ConfigEntry config, AddEntitiesCallback async_add_entities)