mirror of
https://github.com/home-assistant/core.git
synced 2025-08-10 16:15:08 +02:00
Refactoring.
This commit is contained in:
@@ -190,46 +190,45 @@ OPERATION_MODES_AIRPURIFIER_V3 = ['Auto', 'Silent', 'Favorite', 'Idle',
|
||||
|
||||
SUCCESS = ['ok']
|
||||
|
||||
SUPPORT_SET_BUZZER = 8
|
||||
SUPPORT_SET_LED = 16
|
||||
SUPPORT_SET_CHILD_LOCK = 32
|
||||
SUPPORT_SET_LED_BRIGHTNESS = 64
|
||||
SUPPORT_SET_FAVORITE_LEVEL = 128
|
||||
SUPPORT_SET_AUTO_DETECT = 256
|
||||
SUPPORT_SET_LEARN_MODE = 512
|
||||
SUPPORT_SET_VOLUME = 1024
|
||||
SUPPORT_RESET_FILTER = 2048
|
||||
SUPPORT_SET_EXTRA_FEATURES = 4096
|
||||
SUPPORT_SET_TARGET_HUMIDITY = 8192
|
||||
SUPPORT_SET_DRY = 16384
|
||||
FEATURE_SET_BUZZER = 1
|
||||
FEATURE_SET_LED = 2
|
||||
FEATURE_SET_CHILD_LOCK = 4
|
||||
FEATURE_SET_LED_BRIGHTNESS = 8
|
||||
FEATURE_SET_FAVORITE_LEVEL = 16
|
||||
FEATURE_SET_AUTO_DETECT = 32
|
||||
FEATURE_SET_LEARN_MODE = 64
|
||||
FEATURE_SET_VOLUME = 128
|
||||
FEATURE_RESET_FILTER = 256
|
||||
FEATURE_SET_EXTRA_FEATURES = 512
|
||||
FEATURE_SET_TARGET_HUMIDITY = 1024
|
||||
FEATURE_SET_DRY = 2048
|
||||
|
||||
SUPPORT_FLAGS_GENERIC = (SUPPORT_SET_SPEED |
|
||||
SUPPORT_SET_BUZZER |
|
||||
SUPPORT_SET_CHILD_LOCK)
|
||||
FEATURE_FLAGS_GENERIC = (FEATURE_SET_BUZZER |
|
||||
FEATURE_SET_CHILD_LOCK)
|
||||
|
||||
SUPPORT_FLAGS_AIRPURIFIER = (SUPPORT_FLAGS_GENERIC |
|
||||
SUPPORT_SET_LED |
|
||||
SUPPORT_SET_LED_BRIGHTNESS |
|
||||
SUPPORT_SET_FAVORITE_LEVEL |
|
||||
SUPPORT_SET_LEARN_MODE |
|
||||
SUPPORT_RESET_FILTER |
|
||||
SUPPORT_SET_EXTRA_FEATURES)
|
||||
FEATURE_FLAGS_AIRPURIFIER = (FEATURE_FLAGS_GENERIC |
|
||||
FEATURE_SET_LED |
|
||||
FEATURE_SET_LED_BRIGHTNESS |
|
||||
FEATURE_SET_FAVORITE_LEVEL |
|
||||
FEATURE_SET_LEARN_MODE |
|
||||
FEATURE_RESET_FILTER |
|
||||
FEATURE_SET_EXTRA_FEATURES)
|
||||
|
||||
SUPPORT_FLAGS_AIRPURIFIER_PRO = (SUPPORT_SET_SPEED |
|
||||
SUPPORT_SET_CHILD_LOCK |
|
||||
SUPPORT_SET_LED |
|
||||
SUPPORT_SET_FAVORITE_LEVEL |
|
||||
SUPPORT_SET_AUTO_DETECT |
|
||||
SUPPORT_SET_VOLUME)
|
||||
FEATURE_FLAGS_AIRPURIFIER_PRO = (FEATURE_SET_CHILD_LOCK |
|
||||
FEATURE_SET_LED |
|
||||
FEATURE_SET_FAVORITE_LEVEL |
|
||||
FEATURE_SET_AUTO_DETECT |
|
||||
FEATURE_SET_VOLUME)
|
||||
|
||||
SUPPORT_FLAGS_AIRPURIFIER_V3 = (SUPPORT_FLAGS_GENERIC | SUPPORT_SET_LED)
|
||||
FEATURE_FLAGS_AIRPURIFIER_V3 = (FEATURE_FLAGS_GENERIC |
|
||||
FEATURE_SET_LED)
|
||||
|
||||
SUPPORT_FLAGS_AIRHUMIDIFIER = (SUPPORT_FLAGS_GENERIC |
|
||||
SUPPORT_SET_LED_BRIGHTNESS |
|
||||
SUPPORT_SET_TARGET_HUMIDITY)
|
||||
FEATURE_FLAGS_AIRHUMIDIFIER = (FEATURE_FLAGS_GENERIC |
|
||||
FEATURE_SET_LED_BRIGHTNESS |
|
||||
FEATURE_SET_TARGET_HUMIDITY)
|
||||
|
||||
SUPPORT_FLAGS_AIRHUMIDIFIER_CA = (SUPPORT_FLAGS_AIRHUMIDIFIER |
|
||||
SUPPORT_SET_DRY)
|
||||
FEATURE_FLAGS_AIRHUMIDIFIER_CA = (FEATURE_FLAGS_AIRHUMIDIFIER |
|
||||
FEATURE_SET_DRY)
|
||||
|
||||
SERVICE_SET_BUZZER_ON = 'xiaomi_miio_set_buzzer_on'
|
||||
SERVICE_SET_BUZZER_OFF = 'xiaomi_miio_set_buzzer_off'
|
||||
@@ -372,6 +371,8 @@ async def async_setup_platform(hass, config, async_add_devices,
|
||||
|
||||
update_tasks = []
|
||||
for device in devices:
|
||||
if not hasattr(device, method['method']):
|
||||
continue
|
||||
await getattr(device, method['method'])(**params)
|
||||
update_tasks.append(device.async_update_ha_state(True))
|
||||
|
||||
@@ -400,7 +401,7 @@ class XiaomiGenericDevice(FanEntity):
|
||||
self._state_attrs = {
|
||||
ATTR_MODEL: self._model,
|
||||
}
|
||||
self._additional_supported_features = SUPPORT_FLAGS_GENERIC
|
||||
self._device_features = DEVICE_FEATURE_FLAGS_GENERIC
|
||||
self._skip_update = False
|
||||
|
||||
@property
|
||||
@@ -488,7 +489,7 @@ class XiaomiGenericDevice(FanEntity):
|
||||
|
||||
async def async_set_buzzer_on(self):
|
||||
"""Turn the buzzer on."""
|
||||
if self._additional_supported_features & SUPPORT_SET_BUZZER == 0:
|
||||
if self._device_features & FEATURE_SET_BUZZER == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -497,7 +498,7 @@ class XiaomiGenericDevice(FanEntity):
|
||||
|
||||
async def async_set_buzzer_off(self):
|
||||
"""Turn the buzzer off."""
|
||||
if self._additional_supported_features & SUPPORT_SET_BUZZER == 0:
|
||||
if self._device_features & FEATURE_SET_BUZZER == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -506,7 +507,7 @@ class XiaomiGenericDevice(FanEntity):
|
||||
|
||||
async def async_set_child_lock_on(self):
|
||||
"""Turn the child lock on."""
|
||||
if self._additional_supported_features & SUPPORT_SET_CHILD_LOCK == 0:
|
||||
if self._device_features & FEATURE_SET_CHILD_LOCK == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -515,48 +516,13 @@ class XiaomiGenericDevice(FanEntity):
|
||||
|
||||
async def async_set_child_lock_off(self):
|
||||
"""Turn the child lock off."""
|
||||
if self._additional_supported_features & SUPPORT_SET_CHILD_LOCK == 0:
|
||||
if self._device_features & FEATURE_SET_CHILD_LOCK == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
"Turning the child lock of the miio device off failed.",
|
||||
self._device.set_child_lock, False)
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
async def async_set_led_on(self):
|
||||
"""Turn the led on."""
|
||||
return
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
async def async_set_led_off(self):
|
||||
"""Turn the led off."""
|
||||
return
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
async def async_set_favorite_level(self, level: int):
|
||||
"""Set the favorite level."""
|
||||
return
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
async def async_set_led_brightness(self, brightness: int):
|
||||
"""Set the led brightness."""
|
||||
return
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
async def async_set_target_humidity(self, humidity: int):
|
||||
"""Set the target humidity."""
|
||||
return
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
async def async_set_dry_on(self):
|
||||
"""Turn the dry mode on."""
|
||||
return
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
async def async_set_dry_off(self):
|
||||
"""Turn the dry mode off."""
|
||||
return
|
||||
|
||||
|
||||
class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
"""Representation of a Xiaomi Air Purifier."""
|
||||
@@ -566,15 +532,15 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
XiaomiGenericDevice.__init__(self, name, device, model, unique_id)
|
||||
|
||||
if self._model == MODEL_AIRPURIFIER_PRO:
|
||||
self._additional_supported_features = SUPPORT_FLAGS_AIRPURIFIER_PRO
|
||||
self._device_features = FEATURE_FLAGS_AIRPURIFIER_PRO
|
||||
self._state_attrs.update({attribute: None for attribute in
|
||||
AVAILABLE_ATTRIBUTES_AIRPURIFIER_PRO})
|
||||
elif self._model == MODEL_AIRPURIFIER_V3:
|
||||
self._additional_supported_features = SUPPORT_FLAGS_AIRPURIFIER_V3
|
||||
self._device_features = FEATURE_FLAGS_AIRPURIFIER_V3
|
||||
self._state_attrs.update({attribute: None for attribute in
|
||||
AVAILABLE_ATTRIBUTES_AIRPURIFIER_V3})
|
||||
else:
|
||||
self._additional_supported_features = SUPPORT_FLAGS_AIRPURIFIER
|
||||
self._device_features = FEATURE_FLAGS_AIRPURIFIER
|
||||
self._state_attrs.update({attribute: None for attribute in
|
||||
AVAILABLE_ATTRIBUTES_AIRPURIFIER})
|
||||
|
||||
@@ -650,7 +616,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_led_on(self):
|
||||
"""Turn the led on."""
|
||||
if self._additional_supported_features & SUPPORT_SET_LED == 0:
|
||||
if self._device_features & FEATURE_SET_LED == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -659,7 +625,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_led_off(self):
|
||||
"""Turn the led off."""
|
||||
if self._additional_supported_features & SUPPORT_SET_LED == 0:
|
||||
if self._device_features & FEATURE_SET_LED == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -668,8 +634,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_led_brightness(self, brightness: int = 2):
|
||||
"""Set the led brightness."""
|
||||
if self._additional_supported_features & \
|
||||
SUPPORT_SET_LED_BRIGHTNESS == 0:
|
||||
if self._device_features & FEATURE_SET_LED_BRIGHTNESS == 0:
|
||||
return
|
||||
|
||||
from miio.airpurifier import LedBrightness
|
||||
@@ -680,8 +645,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_favorite_level(self, level: int = 1):
|
||||
"""Set the favorite level."""
|
||||
if self._additional_supported_features & \
|
||||
SUPPORT_SET_FAVORITE_LEVEL == 0:
|
||||
if self._device_features & FEATURE_SET_FAVORITE_LEVEL == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -690,7 +654,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_auto_detect_on(self):
|
||||
"""Turn the auto detect on."""
|
||||
if self._additional_supported_features & SUPPORT_SET_AUTO_DETECT == 0:
|
||||
if self._device_features & FEATURE_SET_AUTO_DETECT == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -699,7 +663,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_auto_detect_off(self):
|
||||
"""Turn the auto detect off."""
|
||||
if self._additional_supported_features & SUPPORT_SET_AUTO_DETECT == 0:
|
||||
if self._device_features & FEATURE_SET_AUTO_DETECT == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -708,7 +672,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_learn_mode_on(self):
|
||||
"""Turn the learn mode on."""
|
||||
if self._additional_supported_features & SUPPORT_SET_LEARN_MODE == 0:
|
||||
if self._device_features & FEATURE_SET_LEARN_MODE == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -717,7 +681,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_learn_mode_off(self):
|
||||
"""Turn the learn mode off."""
|
||||
if self._additional_supported_features & SUPPORT_SET_LEARN_MODE == 0:
|
||||
if self._device_features & FEATURE_SET_LEARN_MODE == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -726,7 +690,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_volume(self, volume: int = 50):
|
||||
"""Set the sound volume."""
|
||||
if self._additional_supported_features & SUPPORT_SET_VOLUME == 0:
|
||||
if self._device_features & FEATURE_SET_VOLUME == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -735,8 +699,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_extra_features(self, features: int = 1):
|
||||
"""Set the extra features."""
|
||||
if self._additional_supported_features & \
|
||||
SUPPORT_SET_EXTRA_FEATURES == 0:
|
||||
if self._device_features & FEATURE_SET_EXTRA_FEATURES == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -745,7 +708,7 @@ class XiaomiAirPurifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_reset_filter(self):
|
||||
"""Reset the filter lifetime and usage."""
|
||||
if self._additional_supported_features & SUPPORT_RESET_FILTER == 0:
|
||||
if self._device_features & FEATURE_RESET_FILTER == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -760,7 +723,7 @@ class XiaomiAirHumidifier(XiaomiGenericDevice):
|
||||
"""Initialize the plug switch."""
|
||||
XiaomiGenericDevice.__init__(self, name, device, model, unique_id)
|
||||
|
||||
self._additional_supported_features = SUPPORT_FLAGS_AIRHUMIDIFIER
|
||||
self._device_features = FEATURE_FLAGS_AIRHUMIDIFIER
|
||||
self._state_attrs.update({attribute: None for attribute in
|
||||
AVAILABLE_ATTRIBUTES_AIRHUMIDIFIER})
|
||||
|
||||
@@ -822,8 +785,7 @@ class XiaomiAirHumidifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_led_brightness(self, brightness: int = 2):
|
||||
"""Set the led brightness."""
|
||||
if self._additional_supported_features & \
|
||||
SUPPORT_SET_LED_BRIGHTNESS == 0:
|
||||
if self._device_features & FEATURE_SET_LED_BRIGHTNESS == 0:
|
||||
return
|
||||
|
||||
from miio.airhumidifier import LedBrightness
|
||||
@@ -834,8 +796,7 @@ class XiaomiAirHumidifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_target_humidity(self, humidity: int = 40):
|
||||
"""Set the target humidity."""
|
||||
if self._additional_supported_features & \
|
||||
SUPPORT_SET_TARGET_HUMIDITY == 0:
|
||||
if self._device_features & FEATURE_SET_TARGET_HUMIDITY == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -844,7 +805,7 @@ class XiaomiAirHumidifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_dry_on(self):
|
||||
"""Turn the dry mode on."""
|
||||
if self._additional_supported_features & SUPPORT_SET_DRY == 0:
|
||||
if self._device_features & FEATURE_SET_DRY == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
@@ -853,7 +814,7 @@ class XiaomiAirHumidifier(XiaomiGenericDevice):
|
||||
|
||||
async def async_set_dry_off(self):
|
||||
"""Turn the dry mode off."""
|
||||
if self._additional_supported_features & SUPPORT_SET_DRY == 0:
|
||||
if self._device_features & FEATURE_SET_DRY == 0:
|
||||
return
|
||||
|
||||
await self._try_command(
|
||||
|
Reference in New Issue
Block a user