Add entity category to Xiaomi Miio (#57719)

This commit is contained in:
Maciej Bieniek 2021-10-15 02:31:25 +02:00 committed by GitHub
parent e34aed743c
commit b0ff28ceb4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 51 additions and 1 deletions

View file

@ -11,6 +11,7 @@ from homeassistant.components.binary_sensor import (
BinarySensorEntity,
BinarySensorEntityDescription,
)
from homeassistant.const import ENTITY_CATEGORY_DIAGNOSTIC
from . import VacuumCoordinatorDataAttributes
from .const import (
@ -50,6 +51,7 @@ BINARY_SENSOR_TYPES = (
key=ATTR_NO_WATER,
name="Water Tank Empty",
icon="mdi:water-off-outline",
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
XiaomiMiioBinarySensorDescription(
key=ATTR_WATER_TANK_DETACHED,
@ -57,11 +59,13 @@ BINARY_SENSOR_TYPES = (
icon="mdi:car-coolant-level",
device_class=DEVICE_CLASS_CONNECTIVITY,
value=lambda value: not value,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
XiaomiMiioBinarySensorDescription(
key=ATTR_POWERSUPPLY_ATTACHED,
name="Power Supply",
device_class=DEVICE_CLASS_PLUG,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
)
@ -75,6 +79,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.status,
entity_registry_enabled_default=True,
device_class=DEVICE_CLASS_CONNECTIVITY,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_WATER_BOX_ATTACHED: XiaomiMiioBinarySensorDescription(
key=ATTR_WATER_BOX_ATTACHED,
@ -83,6 +88,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.status,
entity_registry_enabled_default=True,
device_class=DEVICE_CLASS_CONNECTIVITY,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_WATER_SHORTAGE: XiaomiMiioBinarySensorDescription(
key=ATTR_WATER_SHORTAGE,
@ -91,6 +97,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.status,
entity_registry_enabled_default=True,
device_class=DEVICE_CLASS_PROBLEM,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
}

View file

@ -5,7 +5,7 @@ from dataclasses import dataclass
from enum import Enum
from homeassistant.components.number import NumberEntity, NumberEntityDescription
from homeassistant.const import DEGREE, TIME_MINUTES
from homeassistant.const import DEGREE, ENTITY_CATEGORY_CONFIG, TIME_MINUTES
from homeassistant.core import callback
from .const import (
@ -108,6 +108,7 @@ NUMBER_TYPES = {
step=10,
available_with_device_off=False,
method="async_set_motor_speed",
entity_category=ENTITY_CATEGORY_CONFIG,
),
FEATURE_SET_FAVORITE_LEVEL: XiaomiMiioNumberDescription(
key=ATTR_FAVORITE_LEVEL,
@ -117,6 +118,7 @@ NUMBER_TYPES = {
max_value=17,
step=1,
method="async_set_favorite_level",
entity_category=ENTITY_CATEGORY_CONFIG,
),
FEATURE_SET_FAN_LEVEL: XiaomiMiioNumberDescription(
key=ATTR_FAN_LEVEL,
@ -126,6 +128,7 @@ NUMBER_TYPES = {
max_value=3,
step=1,
method="async_set_fan_level",
entity_category=ENTITY_CATEGORY_CONFIG,
),
FEATURE_SET_VOLUME: XiaomiMiioNumberDescription(
key=ATTR_VOLUME,
@ -135,6 +138,7 @@ NUMBER_TYPES = {
max_value=100,
step=1,
method="async_set_volume",
entity_category=ENTITY_CATEGORY_CONFIG,
),
FEATURE_SET_OSCILLATION_ANGLE: XiaomiMiioNumberDescription(
key=ATTR_OSCILLATION_ANGLE,
@ -145,6 +149,7 @@ NUMBER_TYPES = {
max_value=120,
step=1,
method="async_set_oscillation_angle",
entity_category=ENTITY_CATEGORY_CONFIG,
),
FEATURE_SET_DELAY_OFF_COUNTDOWN: XiaomiMiioNumberDescription(
key=ATTR_DELAY_OFF_COUNTDOWN,
@ -155,6 +160,7 @@ NUMBER_TYPES = {
max_value=480,
step=1,
method="async_set_delay_off_countdown",
entity_category=ENTITY_CATEGORY_CONFIG,
),
FEATURE_SET_LED_BRIGHTNESS_LEVEL: XiaomiMiioNumberDescription(
key=ATTR_LED_BRIGHTNESS_LEVEL,
@ -164,6 +170,7 @@ NUMBER_TYPES = {
max_value=8,
step=1,
method="async_set_led_brightness_level",
entity_category=ENTITY_CATEGORY_CONFIG,
),
FEATURE_SET_FAVORITE_RPM: XiaomiMiioNumberDescription(
key=ATTR_FAVORITE_RPM,
@ -174,6 +181,7 @@ NUMBER_TYPES = {
max_value=2300,
step=10,
method="async_set_favorite_rpm",
entity_category=ENTITY_CATEGORY_CONFIG,
),
}

View file

@ -12,6 +12,7 @@ from miio.airpurifier_miot import LedBrightness as AirpurifierMiotLedBrightness
from miio.fan import LedBrightness as FanLedBrightness
from homeassistant.components.select import SelectEntity, SelectEntityDescription
from homeassistant.const import ENTITY_CATEGORY_CONFIG
from homeassistant.core import callback
from .const import (
@ -63,6 +64,7 @@ SELECTOR_TYPES = {
icon="mdi:brightness-6",
device_class="xiaomi_miio__led_brightness",
options=("bright", "dim", "off"),
entity_category=ENTITY_CATEGORY_CONFIG,
),
}

View file

@ -38,6 +38,7 @@ from homeassistant.const import (
DEVICE_CLASS_PRESSURE,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_TIMESTAMP,
ENTITY_CATEGORY_DIAGNOSTIC,
LIGHT_LUX,
PERCENTAGE,
POWER_WATT,
@ -172,6 +173,7 @@ SENSOR_TYPES = {
native_unit_of_measurement=PERCENTAGE,
icon="mdi:water-check",
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_ACTUAL_SPEED: XiaomiMiioSensorDescription(
key=ATTR_ACTUAL_SPEED,
@ -179,6 +181,7 @@ SENSOR_TYPES = {
native_unit_of_measurement="rpm",
icon="mdi:fast-forward",
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_MOTOR_SPEED: XiaomiMiioSensorDescription(
key=ATTR_MOTOR_SPEED,
@ -186,6 +189,7 @@ SENSOR_TYPES = {
native_unit_of_measurement="rpm",
icon="mdi:fast-forward",
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_MOTOR2_SPEED: XiaomiMiioSensorDescription(
key=ATTR_MOTOR2_SPEED,
@ -193,6 +197,7 @@ SENSOR_TYPES = {
native_unit_of_measurement="rpm",
icon="mdi:fast-forward",
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_USE_TIME: XiaomiMiioSensorDescription(
key=ATTR_USE_TIME,
@ -201,6 +206,7 @@ SENSOR_TYPES = {
icon="mdi:progress-clock",
state_class=STATE_CLASS_TOTAL_INCREASING,
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_ILLUMINANCE: XiaomiMiioSensorDescription(
key=ATTR_ILLUMINANCE,
@ -236,6 +242,7 @@ SENSOR_TYPES = {
icon="mdi:air-filter",
state_class=STATE_CLASS_MEASUREMENT,
attributes=("filter_type",),
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_FILTER_USE: XiaomiMiioSensorDescription(
key=ATTR_FILTER_HOURS_USED,
@ -243,6 +250,7 @@ SENSOR_TYPES = {
native_unit_of_measurement=TIME_HOURS,
icon="mdi:clock-outline",
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_CARBON_DIOXIDE: XiaomiMiioSensorDescription(
key=ATTR_CARBON_DIOXIDE,
@ -258,6 +266,7 @@ SENSOR_TYPES = {
device_class=DEVICE_CLASS_GAS,
state_class=STATE_CLASS_TOTAL_INCREASING,
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
ATTR_BATTERY: XiaomiMiioSensorDescription(
key=ATTR_BATTERY,
@ -265,6 +274,7 @@ SENSOR_TYPES = {
native_unit_of_measurement=PERCENTAGE,
device_class=DEVICE_CLASS_BATTERY,
state_class=STATE_CLASS_MEASUREMENT,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
}
@ -391,6 +401,7 @@ VACUUM_SENSORS = {
device_class=DEVICE_CLASS_TIMESTAMP,
parent_key=VacuumCoordinatorDataAttributes.dnd_status,
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"dnd_{ATTR_DND_END}": XiaomiMiioSensorDescription(
key=ATTR_DND_END,
@ -399,6 +410,7 @@ VACUUM_SENSORS = {
device_class=DEVICE_CLASS_TIMESTAMP,
parent_key=VacuumCoordinatorDataAttributes.dnd_status,
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"last_clean_{ATTR_LAST_CLEAN_START}": XiaomiMiioSensorDescription(
key=ATTR_LAST_CLEAN_START,
@ -406,6 +418,7 @@ VACUUM_SENSORS = {
name="Last Clean Start",
device_class=DEVICE_CLASS_TIMESTAMP,
parent_key=VacuumCoordinatorDataAttributes.last_clean_details,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"last_clean_{ATTR_LAST_CLEAN_END}": XiaomiMiioSensorDescription(
key=ATTR_LAST_CLEAN_END,
@ -413,6 +426,7 @@ VACUUM_SENSORS = {
device_class=DEVICE_CLASS_TIMESTAMP,
parent_key=VacuumCoordinatorDataAttributes.last_clean_details,
name="Last Clean End",
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"last_clean_{ATTR_LAST_CLEAN_TIME}": XiaomiMiioSensorDescription(
native_unit_of_measurement=TIME_SECONDS,
@ -420,6 +434,7 @@ VACUUM_SENSORS = {
key=ATTR_LAST_CLEAN_TIME,
parent_key=VacuumCoordinatorDataAttributes.last_clean_details,
name="Last Clean Duration",
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"last_clean_{ATTR_LAST_CLEAN_AREA}": XiaomiMiioSensorDescription(
native_unit_of_measurement=AREA_SQUARE_METERS,
@ -427,6 +442,7 @@ VACUUM_SENSORS = {
key=ATTR_LAST_CLEAN_AREA,
parent_key=VacuumCoordinatorDataAttributes.last_clean_details,
name="Last Clean Area",
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"clean_history_{ATTR_CLEAN_HISTORY_TOTAL_DURATION}": XiaomiMiioSensorDescription(
native_unit_of_measurement=TIME_SECONDS,
@ -435,6 +451,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.clean_history_status,
name="Total duration",
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"clean_history_{ATTR_CLEAN_HISTORY_TOTAL_AREA}": XiaomiMiioSensorDescription(
native_unit_of_measurement=AREA_SQUARE_METERS,
@ -443,6 +460,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.clean_history_status,
name="Total Clean Area",
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"clean_history_{ATTR_CLEAN_HISTORY_COUNT}": XiaomiMiioSensorDescription(
native_unit_of_measurement="",
@ -452,6 +470,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.clean_history_status,
name="Total Clean Count",
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"clean_history_{ATTR_CLEAN_HISTORY_DUST_COLLECTION_COUNT}": XiaomiMiioSensorDescription(
native_unit_of_measurement="",
@ -461,6 +480,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.clean_history_status,
name="Total Dust Collection Count",
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"consumable_{ATTR_CONSUMABLE_STATUS_MAIN_BRUSH_LEFT}": XiaomiMiioSensorDescription(
native_unit_of_measurement=TIME_SECONDS,
@ -469,6 +489,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.consumable_status,
name="Main Brush Left",
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"consumable_{ATTR_CONSUMABLE_STATUS_SIDE_BRUSH_LEFT}": XiaomiMiioSensorDescription(
native_unit_of_measurement=TIME_SECONDS,
@ -477,6 +498,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.consumable_status,
name="Side Brush Left",
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"consumable_{ATTR_CONSUMABLE_STATUS_FILTER_LEFT}": XiaomiMiioSensorDescription(
native_unit_of_measurement=TIME_SECONDS,
@ -485,6 +507,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.consumable_status,
name="Filter Left",
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
f"consumable_{ATTR_CONSUMABLE_STATUS_SENSOR_DIRTY_LEFT}": XiaomiMiioSensorDescription(
native_unit_of_measurement=TIME_SECONDS,
@ -493,6 +516,7 @@ VACUUM_SENSORS = {
parent_key=VacuumCoordinatorDataAttributes.consumable_status,
name="Sensor Dirty Left",
entity_registry_enabled_default=False,
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
),
}

View file

@ -22,6 +22,7 @@ from homeassistant.const import (
ATTR_TEMPERATURE,
CONF_HOST,
CONF_TOKEN,
ENTITY_CATEGORY_CONFIG,
)
from homeassistant.core import callback
import homeassistant.helpers.config_validation as cv
@ -206,6 +207,7 @@ SWITCH_TYPES = (
icon="mdi:volume-high",
method_on="async_set_buzzer_on",
method_off="async_set_buzzer_off",
entity_category=ENTITY_CATEGORY_CONFIG,
),
XiaomiMiioSwitchDescription(
key=ATTR_CHILD_LOCK,
@ -214,6 +216,7 @@ SWITCH_TYPES = (
icon="mdi:lock",
method_on="async_set_child_lock_on",
method_off="async_set_child_lock_off",
entity_category=ENTITY_CATEGORY_CONFIG,
),
XiaomiMiioSwitchDescription(
key=ATTR_DRY,
@ -222,6 +225,7 @@ SWITCH_TYPES = (
icon="mdi:hair-dryer",
method_on="async_set_dry_on",
method_off="async_set_dry_off",
entity_category=ENTITY_CATEGORY_CONFIG,
),
XiaomiMiioSwitchDescription(
key=ATTR_CLEAN,
@ -231,6 +235,7 @@ SWITCH_TYPES = (
method_on="async_set_clean_on",
method_off="async_set_clean_off",
available_with_device_off=False,
entity_category=ENTITY_CATEGORY_CONFIG,
),
XiaomiMiioSwitchDescription(
key=ATTR_LED,
@ -239,6 +244,7 @@ SWITCH_TYPES = (
icon="mdi:led-outline",
method_on="async_set_led_on",
method_off="async_set_led_off",
entity_category=ENTITY_CATEGORY_CONFIG,
),
XiaomiMiioSwitchDescription(
key=ATTR_LEARN_MODE,
@ -247,6 +253,7 @@ SWITCH_TYPES = (
icon="mdi:school-outline",
method_on="async_set_learn_mode_on",
method_off="async_set_learn_mode_off",
entity_category=ENTITY_CATEGORY_CONFIG,
),
XiaomiMiioSwitchDescription(
key=ATTR_AUTO_DETECT,
@ -254,6 +261,7 @@ SWITCH_TYPES = (
name="Auto Detect",
method_on="async_set_auto_detect_on",
method_off="async_set_auto_detect_off",
entity_category=ENTITY_CATEGORY_CONFIG,
),
XiaomiMiioSwitchDescription(
key=ATTR_IONIZER,
@ -262,6 +270,7 @@ SWITCH_TYPES = (
icon="mdi:shimmer",
method_on="async_set_ionizer_on",
method_off="async_set_ionizer_off",
entity_category=ENTITY_CATEGORY_CONFIG,
),
)