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 <bieniu@users.noreply.github.com>

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
This commit is contained in:
Igor Pakhomov 2022-03-01 15:15:23 +02:00 committed by GitHub
parent 741b010f8f
commit 0515a8bd2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 62 additions and 2 deletions

View File

@ -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

View File

@ -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."""