From 0515a8bd2d0af232aa2284424a17669951aa7b7d Mon Sep 17 00:00:00 2001 From: Igor Pakhomov Date: Tue, 1 Mar 2022 15:15:23 +0200 Subject: [PATCH] Add additional switch for dmaker.airfresh.a1/t2017 to xiaomi_miio (#67033) * Add additional switch for dmaker.airfresh.a1/t2017 to xiaomi_miio - Auxiliary heat switch - Display switch * Auxiliary heat => Auxiliary Heat Co-authored-by: Maciej Bieniek Co-authored-by: Maciej Bieniek --- homeassistant/components/xiaomi_miio/const.py | 10 +++- .../components/xiaomi_miio/switch.py | 54 +++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/xiaomi_miio/const.py b/homeassistant/components/xiaomi_miio/const.py index cc607b3f419..04a3772b29e 100644 --- a/homeassistant/components/xiaomi_miio/const.py +++ b/homeassistant/components/xiaomi_miio/const.py @@ -315,6 +315,8 @@ FEATURE_SET_DELAY_OFF_COUNTDOWN = 65536 FEATURE_SET_LED_BRIGHTNESS_LEVEL = 131072 FEATURE_SET_FAVORITE_RPM = 262144 FEATURE_SET_IONIZER = 524288 +FEATURE_SET_DISPLAY = 1048576 +FEATURE_SET_PTC = 2097152 FEATURE_FLAGS_AIRPURIFIER_MIIO = ( FEATURE_SET_BUZZER @@ -387,7 +389,9 @@ FEATURE_FLAGS_AIRHUMIDIFIER_CA4 = ( | FEATURE_SET_CLEAN ) -FEATURE_FLAGS_AIRFRESH_A1 = FEATURE_SET_BUZZER | FEATURE_SET_CHILD_LOCK +FEATURE_FLAGS_AIRFRESH_A1 = ( + FEATURE_SET_BUZZER | FEATURE_SET_CHILD_LOCK | FEATURE_SET_DISPLAY | FEATURE_SET_PTC +) FEATURE_FLAGS_AIRFRESH = ( FEATURE_SET_BUZZER @@ -398,7 +402,9 @@ FEATURE_FLAGS_AIRFRESH = ( | FEATURE_SET_EXTRA_FEATURES ) -FEATURE_FLAGS_AIRFRESH_T2017 = FEATURE_SET_BUZZER | FEATURE_SET_CHILD_LOCK +FEATURE_FLAGS_AIRFRESH_T2017 = ( + FEATURE_SET_BUZZER | FEATURE_SET_CHILD_LOCK | FEATURE_SET_DISPLAY | FEATURE_SET_PTC +) FEATURE_FLAGS_FAN_P5 = ( FEATURE_SET_BUZZER diff --git a/homeassistant/components/xiaomi_miio/switch.py b/homeassistant/components/xiaomi_miio/switch.py index ce05a891c0a..1fbb1222578 100644 --- a/homeassistant/components/xiaomi_miio/switch.py +++ b/homeassistant/components/xiaomi_miio/switch.py @@ -59,10 +59,12 @@ from .const import ( FEATURE_SET_BUZZER, FEATURE_SET_CHILD_LOCK, FEATURE_SET_CLEAN, + FEATURE_SET_DISPLAY, FEATURE_SET_DRY, FEATURE_SET_IONIZER, FEATURE_SET_LEARN_MODE, FEATURE_SET_LED, + FEATURE_SET_PTC, KEY_COORDINATOR, KEY_DEVICE, MODEL_AIRFRESH_A1, @@ -121,6 +123,7 @@ ATTR_AUTO_DETECT = "auto_detect" ATTR_BUZZER = "buzzer" ATTR_CHILD_LOCK = "child_lock" ATTR_CLEAN = "clean_mode" +ATTR_DISPLAY = "display" ATTR_DRY = "dry" ATTR_LEARN_MODE = "learn_mode" ATTR_LED = "led" @@ -131,6 +134,7 @@ ATTR_POWER = "power" ATTR_POWER_MODE = "power_mode" ATTR_POWER_PRICE = "power_price" ATTR_PRICE = "price" +ATTR_PTC = "ptc" ATTR_WIFI_LED = "wifi_led" FEATURE_SET_POWER_MODE = 1 @@ -225,6 +229,15 @@ SWITCH_TYPES = ( method_off="async_set_child_lock_off", entity_category=EntityCategory.CONFIG, ), + XiaomiMiioSwitchDescription( + key=ATTR_DISPLAY, + feature=FEATURE_SET_DISPLAY, + name="Display", + icon="mdi:led-outline", + method_on="async_set_display_on", + method_off="async_set_display_off", + entity_category=EntityCategory.CONFIG, + ), XiaomiMiioSwitchDescription( key=ATTR_DRY, feature=FEATURE_SET_DRY, @@ -279,6 +292,15 @@ SWITCH_TYPES = ( method_off="async_set_ionizer_off", entity_category=EntityCategory.CONFIG, ), + XiaomiMiioSwitchDescription( + key=ATTR_PTC, + feature=FEATURE_SET_PTC, + name="Auxiliary Heat", + icon="mdi:radiator", + method_on="async_set_ptc_on", + method_off="async_set_ptc_off", + entity_category=EntityCategory.CONFIG, + ), ) @@ -533,6 +555,22 @@ class XiaomiGenericCoordinatedSwitch(XiaomiCoordinatedMiioEntity, SwitchEntity): False, ) + async def async_set_display_on(self) -> bool: + """Turn the display on.""" + return await self._try_command( + "Turning the display of the miio device on failed.", + self._device.set_display, + True, + ) + + async def async_set_display_off(self) -> bool: + """Turn the display off.""" + return await self._try_command( + "Turning the display of the miio device off failed.", + self._device.set_display, + False, + ) + async def async_set_dry_on(self) -> bool: """Turn the dry mode on.""" return await self._try_command( @@ -629,6 +667,22 @@ class XiaomiGenericCoordinatedSwitch(XiaomiCoordinatedMiioEntity, SwitchEntity): False, ) + async def async_set_ptc_on(self) -> bool: + """Turn ionizer on.""" + return await self._try_command( + "Turning ionizer of the miio device on failed.", + self._device.set_ptc, + True, + ) + + async def async_set_ptc_off(self) -> bool: + """Turn ionizer off.""" + return await self._try_command( + "Turning ionizer of the miio device off failed.", + self._device.set_ptc, + False, + ) + class XiaomiGatewaySwitch(XiaomiGatewayDevice, SwitchEntity): """Representation of a XiaomiGatewaySwitch."""