Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion homeassistant/components/xiaomi_miio/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,7 @@ class SetupException(Exception):
FEATURE_SET_BUZZER
| FEATURE_SET_CHILD_LOCK
| FEATURE_SET_OSCILLATION_ANGLE
| FEATURE_SET_LED_BRIGHTNESS
| FEATURE_SET_LED_BRIGHTNESS_LEVEL
| FEATURE_SET_DELAY_OFF_COUNTDOWN
| FEATURE_SET_IONIZER
)
Expand Down
46 changes: 46 additions & 0 deletions homeassistant/components/xiaomi_miio/number.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
ATTR_FAN_LEVEL = "fan_level"
ATTR_FAVORITE_LEVEL = "favorite_level"
ATTR_FAVORITE_RPM = "favorite_rpm"
ATTR_LED_BRIGHTNESS = "led_brightness"
ATTR_LED_BRIGHTNESS_LEVEL = "led_brightness_level"
ATTR_MOTOR_SPEED = "motor_speed"
ATTR_OSCILLATION_ANGLE = "angle"
Expand All @@ -96,6 +97,17 @@ class OscillationAngleValues:
step: float | None = None


@dataclass
class LightBrightnessValues:
"""A class that describes LED brightness values."""

key: str = ATTR_LED_BRIGHTNESS_LEVEL
max_value: float | None = None
min_value: float | None = None
step: float | None = None
method: str = "async_set_led_brightness_level"


NUMBER_TYPES = {
FEATURE_SET_MOTOR_SPEED: XiaomiMiioNumberDescription(
key=ATTR_MOTOR_SPEED,
Expand Down Expand Up @@ -217,6 +229,23 @@ class OscillationAngleValues:
MODEL_FAN_P11: OscillationAngleValues(max_value=140, min_value=30, step=30),
}

LED_BRIGHTNESS_VALUES = {
MODEL_FAN_ZA5: LightBrightnessValues(
key=ATTR_LED_BRIGHTNESS,
max_value=100,
min_value=0,
step=1,
method="async_set_led_brightness",
),
MODEL_AIRPURIFIER_3C: LightBrightnessValues(
key=ATTR_LED_BRIGHTNESS_LEVEL,
max_value=8,
min_value=0,
step=1,
method="async_set_led_brightness_level",
),
}


async def async_setup_entry(hass, config_entry, async_add_entities):
"""Set up the Selectors from a config entry."""
Expand Down Expand Up @@ -244,6 +273,15 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
description.max_value = OSCILLATION_ANGLE_VALUES[model].max_value
description.min_value = OSCILLATION_ANGLE_VALUES[model].min_value
description.step = OSCILLATION_ANGLE_VALUES[model].step
if (
description.key == ATTR_LED_BRIGHTNESS_LEVEL
and model in LED_BRIGHTNESS_VALUES
):
description.key = LED_BRIGHTNESS_VALUES[model].key
Comment thread
bieniu marked this conversation as resolved.
Outdated
description.max_value = LED_BRIGHTNESS_VALUES[model].max_value
description.min_value = LED_BRIGHTNESS_VALUES[model].min_value
description.step = LED_BRIGHTNESS_VALUES[model].step
description.method = LED_BRIGHTNESS_VALUES[model].method
entities.append(
XiaomiNumberEntity(
f"{config_entry.title} {description.name}",
Expand Down Expand Up @@ -354,6 +392,14 @@ async def async_set_led_brightness_level(self, level: int):
level,
)

async def async_set_led_brightness(self, level: int):
"""Set the led brightness level."""
return await self._try_command(
"Setting the led brightness level of the miio device failed.",
self._device.set_led_brightness,
level,
)

async def async_set_favorite_rpm(self, rpm: int):
"""Set the target motor speed."""
return await self._try_command(
Expand Down