Replace custom Tuya device classes with StrEnum (#63681)

This commit is contained in:
Franck Nijhof 2022-01-08 23:44:27 +01:00 committed by GitHub
parent e6419fd505
commit 71208b2ebb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 56 deletions

View file

@ -52,21 +52,6 @@ CONF_PASSWORD = "password"
CONF_COUNTRY_CODE = "country_code" CONF_COUNTRY_CODE = "country_code"
CONF_APP_TYPE = "tuya_app_type" CONF_APP_TYPE = "tuya_app_type"
DEVICE_CLASS_TUYA_BASIC_ANTI_FLICKR = "tuya__basic_anti_flickr"
DEVICE_CLASS_TUYA_BASIC_NIGHTVISION = "tuya__basic_nightvision"
DEVICE_CLASS_TUYA_DECIBEL_SENSITIVITY = "tuya__decibel_sensitivity"
DEVICE_CLASS_TUYA_IPC_WORK_MODE = "tuya__ipc_work_mode"
DEVICE_CLASS_TUYA_LED_TYPE = "tuya__led_type"
DEVICE_CLASS_TUYA_LIGHT_MODE = "tuya__light_mode"
DEVICE_CLASS_TUYA_MOTION_SENSITIVITY = "tuya__motion_sensitivity"
DEVICE_CLASS_TUYA_RECORD_MODE = "tuya__record_mode"
DEVICE_CLASS_TUYA_RELAY_STATUS = "tuya__relay_status"
DEVICE_CLASS_TUYA_STATUS = "tuya__status"
DEVICE_CLASS_TUYA_FINGERBOT_MODE = "tuya__fingerbot_mode"
DEVICE_CLASS_TUYA_VACUUM_CISTERN = "tuya__vacuum_cistern"
DEVICE_CLASS_TUYA_VACUUM_COLLECTION = "tuya__vacuum_collection"
DEVICE_CLASS_TUYA_VACUUM_MODE = "tuya__vacuum_mode"
TUYA_DISCOVERY_NEW = "tuya_discovery_new" TUYA_DISCOVERY_NEW = "tuya_discovery_new"
TUYA_HA_SIGNAL_UPDATE_ENTITY = "tuya_entry_update" TUYA_HA_SIGNAL_UPDATE_ENTITY = "tuya_entry_update"
@ -99,6 +84,25 @@ PLATFORMS = [
] ]
class TuyaDeviceClass(StrEnum):
"""Tuya specific device classes, used for translations."""
BASIC_ANTI_FLICKR = "tuya__basic_anti_flickr"
BASIC_NIGHTVISION = "tuya__basic_nightvision"
DECIBEL_SENSITIVITY = "tuya__decibel_sensitivity"
FINGERBOT_MODE = "tuya__fingerbot_mode"
IPC_WORK_MODE = "tuya__ipc_work_mode"
LED_TYPE = "tuya__led_type"
LIGHT_MODE = "tuya__light_mode"
MOTION_SENSITIVITY = "tuya__motion_sensitivity"
RECORD_MODE = "tuya__record_mode"
RELAY_STATUS = "tuya__relay_status"
STATUS = "tuya__status"
VACUUM_CISTERN = "tuya__vacuum_cistern"
VACUUM_COLLECTION = "tuya__vacuum_collection"
VACUUM_MODE = "tuya__vacuum_mode"
class WorkMode(StrEnum): class WorkMode(StrEnum):
"""Work modes.""" """Work modes."""

View file

@ -15,24 +15,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import HomeAssistantTuyaData from . import HomeAssistantTuyaData
from .base import EnumTypeData, TuyaEntity from .base import EnumTypeData, TuyaEntity
from .const import ( from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, TuyaDeviceClass
DEVICE_CLASS_TUYA_BASIC_ANTI_FLICKR,
DEVICE_CLASS_TUYA_BASIC_NIGHTVISION,
DEVICE_CLASS_TUYA_DECIBEL_SENSITIVITY,
DEVICE_CLASS_TUYA_FINGERBOT_MODE,
DEVICE_CLASS_TUYA_IPC_WORK_MODE,
DEVICE_CLASS_TUYA_LED_TYPE,
DEVICE_CLASS_TUYA_LIGHT_MODE,
DEVICE_CLASS_TUYA_MOTION_SENSITIVITY,
DEVICE_CLASS_TUYA_RECORD_MODE,
DEVICE_CLASS_TUYA_RELAY_STATUS,
DEVICE_CLASS_TUYA_VACUUM_CISTERN,
DEVICE_CLASS_TUYA_VACUUM_COLLECTION,
DEVICE_CLASS_TUYA_VACUUM_MODE,
DOMAIN,
TUYA_DISCOVERY_NEW,
DPCode,
)
# All descriptions can be found here. Mostly the Enum data types in the # All descriptions can be found here. Mostly the Enum data types in the
# default instructions set of each category end up being a select. # default instructions set of each category end up being a select.
@ -69,13 +52,13 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = {
SelectEntityDescription( SelectEntityDescription(
key=DPCode.RELAY_STATUS, key=DPCode.RELAY_STATUS,
name="Power on Behavior", name="Power on Behavior",
device_class=DEVICE_CLASS_TUYA_RELAY_STATUS, device_class=TuyaDeviceClass.RELAY_STATUS,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.LIGHT_MODE, key=DPCode.LIGHT_MODE,
name="Indicator Light Mode", name="Indicator Light Mode",
device_class=DEVICE_CLASS_TUYA_LIGHT_MODE, device_class=TuyaDeviceClass.LIGHT_MODE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
), ),
@ -108,42 +91,42 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = {
SelectEntityDescription( SelectEntityDescription(
key=DPCode.IPC_WORK_MODE, key=DPCode.IPC_WORK_MODE,
name="IPC Mode", name="IPC Mode",
device_class=DEVICE_CLASS_TUYA_IPC_WORK_MODE, device_class=TuyaDeviceClass.IPC_WORK_MODE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.DECIBEL_SENSITIVITY, key=DPCode.DECIBEL_SENSITIVITY,
name="Sound Detection Sensitivity", name="Sound Detection Sensitivity",
icon="mdi:volume-vibrate", icon="mdi:volume-vibrate",
device_class=DEVICE_CLASS_TUYA_DECIBEL_SENSITIVITY, device_class=TuyaDeviceClass.DECIBEL_SENSITIVITY,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.RECORD_MODE, key=DPCode.RECORD_MODE,
name="Record Mode", name="Record Mode",
icon="mdi:record-rec", icon="mdi:record-rec",
device_class=DEVICE_CLASS_TUYA_RECORD_MODE, device_class=TuyaDeviceClass.RECORD_MODE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.BASIC_NIGHTVISION, key=DPCode.BASIC_NIGHTVISION,
name="Night Vision", name="Night Vision",
icon="mdi:theme-light-dark", icon="mdi:theme-light-dark",
device_class=DEVICE_CLASS_TUYA_BASIC_NIGHTVISION, device_class=TuyaDeviceClass.BASIC_NIGHTVISION,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.BASIC_ANTI_FLICKER, key=DPCode.BASIC_ANTI_FLICKER,
name="Anti-flicker", name="Anti-flicker",
icon="mdi:image-outline", icon="mdi:image-outline",
device_class=DEVICE_CLASS_TUYA_BASIC_ANTI_FLICKR, device_class=TuyaDeviceClass.BASIC_ANTI_FLICKR,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.MOTION_SENSITIVITY, key=DPCode.MOTION_SENSITIVITY,
name="Motion Detection Sensitivity", name="Motion Detection Sensitivity",
icon="mdi:motion-sensor", icon="mdi:motion-sensor",
device_class=DEVICE_CLASS_TUYA_MOTION_SENSITIVITY, device_class=TuyaDeviceClass.MOTION_SENSITIVITY,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
), ),
@ -153,13 +136,13 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = {
SelectEntityDescription( SelectEntityDescription(
key=DPCode.RELAY_STATUS, key=DPCode.RELAY_STATUS,
name="Power on Behavior", name="Power on Behavior",
device_class=DEVICE_CLASS_TUYA_RELAY_STATUS, device_class=TuyaDeviceClass.RELAY_STATUS,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.LIGHT_MODE, key=DPCode.LIGHT_MODE,
name="Indicator Light Mode", name="Indicator Light Mode",
device_class=DEVICE_CLASS_TUYA_LIGHT_MODE, device_class=TuyaDeviceClass.LIGHT_MODE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
), ),
@ -169,31 +152,31 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = {
SelectEntityDescription( SelectEntityDescription(
key=DPCode.RELAY_STATUS, key=DPCode.RELAY_STATUS,
name="Power on Behavior", name="Power on Behavior",
device_class=DEVICE_CLASS_TUYA_RELAY_STATUS, device_class=TuyaDeviceClass.RELAY_STATUS,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.LIGHT_MODE, key=DPCode.LIGHT_MODE,
name="Indicator Light Mode", name="Indicator Light Mode",
device_class=DEVICE_CLASS_TUYA_LIGHT_MODE, device_class=TuyaDeviceClass.LIGHT_MODE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.LED_TYPE_1, key=DPCode.LED_TYPE_1,
name="Light Source Type", name="Light Source Type",
device_class=DEVICE_CLASS_TUYA_LED_TYPE, device_class=TuyaDeviceClass.LED_TYPE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.LED_TYPE_2, key=DPCode.LED_TYPE_2,
name="Light 2 Source Type", name="Light 2 Source Type",
device_class=DEVICE_CLASS_TUYA_LED_TYPE, device_class=TuyaDeviceClass.LED_TYPE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.LED_TYPE_3, key=DPCode.LED_TYPE_3,
name="Light 3 Source Type", name="Light 3 Source Type",
device_class=DEVICE_CLASS_TUYA_LED_TYPE, device_class=TuyaDeviceClass.LED_TYPE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
), ),
@ -203,13 +186,13 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = {
SelectEntityDescription( SelectEntityDescription(
key=DPCode.LED_TYPE_1, key=DPCode.LED_TYPE_1,
name="Light Source Type", name="Light Source Type",
device_class=DEVICE_CLASS_TUYA_LED_TYPE, device_class=TuyaDeviceClass.LED_TYPE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.LED_TYPE_2, key=DPCode.LED_TYPE_2,
name="Light 2 Source Type", name="Light 2 Source Type",
device_class=DEVICE_CLASS_TUYA_LED_TYPE, device_class=TuyaDeviceClass.LED_TYPE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
), ),
@ -218,7 +201,7 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = {
SelectEntityDescription( SelectEntityDescription(
key=DPCode.MODE, key=DPCode.MODE,
name="Mode", name="Mode",
device_class=DEVICE_CLASS_TUYA_FINGERBOT_MODE, device_class=TuyaDeviceClass.FINGERBOT_MODE,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
), ),
), ),
@ -229,21 +212,21 @@ SELECTS: dict[str, tuple[SelectEntityDescription, ...]] = {
key=DPCode.CISTERN, key=DPCode.CISTERN,
name="Water Tank Adjustment", name="Water Tank Adjustment",
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
device_class=DEVICE_CLASS_TUYA_VACUUM_CISTERN, device_class=TuyaDeviceClass.VACUUM_CISTERN,
icon="mdi:water-opacity", icon="mdi:water-opacity",
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.COLLECTION_MODE, key=DPCode.COLLECTION_MODE,
name="Dust Collection Mode", name="Dust Collection Mode",
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
device_class=DEVICE_CLASS_TUYA_VACUUM_COLLECTION, device_class=TuyaDeviceClass.VACUUM_COLLECTION,
icon="mdi:air-filter", icon="mdi:air-filter",
), ),
SelectEntityDescription( SelectEntityDescription(
key=DPCode.MODE, key=DPCode.MODE,
name="Mode", name="Mode",
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
device_class=DEVICE_CLASS_TUYA_VACUUM_MODE, device_class=TuyaDeviceClass.VACUUM_MODE,
icon="mdi:layers-outline", icon="mdi:layers-outline",
), ),
), ),

View file

@ -29,11 +29,11 @@ from homeassistant.helpers.typing import StateType
from . import HomeAssistantTuyaData from . import HomeAssistantTuyaData
from .base import ElectricityTypeData, EnumTypeData, IntegerTypeData, TuyaEntity from .base import ElectricityTypeData, EnumTypeData, IntegerTypeData, TuyaEntity
from .const import ( from .const import (
DEVICE_CLASS_TUYA_STATUS,
DEVICE_CLASS_UNITS, DEVICE_CLASS_UNITS,
DOMAIN, DOMAIN,
TUYA_DISCOVERY_NEW, TUYA_DISCOVERY_NEW,
DPCode, DPCode,
TuyaDeviceClass,
UnitOfMeasurement, UnitOfMeasurement,
) )
@ -100,7 +100,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
TuyaSensorEntityDescription( TuyaSensorEntityDescription(
key=DPCode.STATUS, key=DPCode.STATUS,
name="Status", name="Status",
device_class=DEVICE_CLASS_TUYA_STATUS, device_class=TuyaDeviceClass.STATUS,
), ),
), ),
# CO2 Detector # CO2 Detector