Use DeviceCategory in Tuya remaining platforms (#152890)

This commit is contained in:
epenet
2025-09-24 17:39:46 +02:00
committed by GitHub
parent 9a801424c7
commit e79a434d9b
4 changed files with 175 additions and 342 deletions
+54 -8
View File
@@ -157,13 +157,16 @@ class DeviceCategory(StrEnum):
https://developer.tuya.com/en/docs/iot/categorycwwsq?id=Kaiuz2b6vydld
"""
CWYSJ = "cwysj"
"""Pet fountain"""
"""Pet fountain
https://developer.tuya.com/en/docs/iot/categorycwysj?id=Kaiuz2dfro0nd
"""
CZ = "cz"
"""Socket"""
DBL = "dbl"
"""Electric fireplace
https://developer.tuya.com/en/docs/iot/f?id=Kacpeobojffop
https://developer.tuya.com/en/docs/iot/electric-fireplace?id=Kaiuz2hz4iyp6
"""
DC = "dc"
"""String lights
@@ -188,7 +191,10 @@ class DeviceCategory(StrEnum):
https://developer.tuya.com/en/docs/iot/categorydj?id=Kaiuyzy3eheyy
"""
DLQ = "dlq"
"""Circuit breaker"""
"""Circuit breaker
https://developer.tuya.com/en/docs/iot/dlq?id=Kb0kidk9enyh8
"""
DR = "dr"
"""Electric blanket
@@ -212,7 +218,10 @@ class DeviceCategory(StrEnum):
https://developer.tuya.com/en/docs/iot/ambient-light?id=Kaiuz06amhe6g
"""
GGQ = "ggq"
"""Irrigator"""
"""Irrigator
https://developer.tuya.com/en/docs/iot/categoryggq?id=Kaiuz1qib7z0k
"""
GYD = "gyd"
"""Motion sensor light
@@ -307,7 +316,10 @@ class DeviceCategory(StrEnum):
MS_CATEGORY = "ms_category"
"""Lock accessories"""
MSP = "msp"
"""Cat toilet"""
"""Cat toilet
https://developer.tuya.com/en/docs/iot/s?id=Kakg3srr4ora7
"""
MZJ = "mzj"
"""Sous vide cooker
@@ -428,7 +440,10 @@ class DeviceCategory(StrEnum):
XFJ = "xfj"
"""Ventilation system"""
XXJ = "xxj"
"""Diffuser"""
"""Diffuser
https://developer.tuya.com/en/docs/iot/categoryxxj?id=Kaiuz1f9mo6bl
"""
XY = "xy"
"""Washing machine"""
YB = "yb"
@@ -456,7 +471,10 @@ class DeviceCategory(StrEnum):
https://developer.tuya.com/en/docs/iot/categoryzd?id=Kaiuz3a5vrzno
"""
ZNDB = "zndb"
"""Smart electricity meter"""
"""Smart electricity meter
https://developer.tuya.com/en/docs/iot/smart-meter?id=Kaiuz4gv6ack7
"""
ZNFH = "znfh"
"""Bento box"""
ZNSB = "znsb"
@@ -465,6 +483,8 @@ class DeviceCategory(StrEnum):
"""Smart pill box"""
# Undocumented
AQCZ = "aqcz"
"""Single Phase power meter (undocumented)"""
BZYD = "bzyd"
"""White noise machine (undocumented)"""
CWJWQ = "cwjwq"
@@ -486,6 +506,11 @@ class DeviceCategory(StrEnum):
"""
FSKG = "fskg"
"""Fan wall switch (undocumented)"""
HJJCY = "hjjcy"
"""Air Quality Monitor
https://developer.tuya.com/en/docs/iot/hjjcy?id=Kbeoad8y1nnlv
"""
HXD = "hxd"
"""Wake Up Light II (undocumented)"""
JDCLJQR = "jdcljqr"
@@ -502,6 +527,8 @@ class DeviceCategory(StrEnum):
Found as VECINO RGBW as provided by diagnostics
"""
QCCDZ = "qccdz"
"""AC charging (undocumented)"""
QJDCZ = "qjdcz"
""" Unknown product with light capabilities
@@ -516,6 +543,8 @@ class DeviceCategory(StrEnum):
"""Smart Water Timer (undocumented)"""
SJZ = "sjz"
"""Electric desk (undocumented)"""
SZJCY = "szjcy"
"""Water tester (undocumented)"""
SZJQR = "szjqr"
"""Fingerbot (undocumented)"""
SWTZ = "swtz"
@@ -531,8 +560,19 @@ class DeviceCategory(StrEnum):
https://developer.tuya.com/en/docs/iot/wg?id=Kbcdadk79ejok
"""
WKCZ = "wkcz"
"""Two-way temperature and humidity switch (undocumented)
"MOES Temperature and Humidity Smart Switch Module MS-103"
"""
WKF = "wkf"
"""Thermostatic Radiator Valve (undocumented)"""
WNYKQ = "wnykq"
"""Smart WiFi IR Remote (undocumented)
eMylo Smart WiFi IR Remote
Air Conditioner Mate (Smart IR Socket)
"""
WXKG = "wxkg" # Documented, but not in official list
"""Wireless Switch
@@ -545,8 +585,14 @@ class DeviceCategory(StrEnum):
"""
YWCGQ = "ywcgq"
"""Tank Level Sensor (undocumented)"""
ZNNBQ = "znnbq"
"""VESKA-micro inverter (undocumented)"""
ZWJCY = "zwjcy"
"""Soil sensor - plant monitor (undocumented)"""
ZNJXS = "znjxs"
"""Hejhome whitelabel Fingerbot (undocumented)"""
ZNRB = "znrb"
"""Pool HeatPump"""
"""Pool HeatPump (undocumented)"""
class DPCode(StrEnum):
+6 -15
View File
@@ -20,7 +20,7 @@ from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import TuyaConfigEntry
from .const import TUYA_DISCOVERY_NEW, DPCode, DPType
from .const import TUYA_DISCOVERY_NEW, DeviceCategory, DPCode, DPType
from .entity import TuyaEntity
from .models import EnumTypeData, IntegerTypeData
from .util import get_dpcode
@@ -40,10 +40,8 @@ class TuyaCoverEntityDescription(CoverEntityDescription):
motor_reverse_mode: DPCode | None = None
COVERS: dict[str, tuple[TuyaCoverEntityDescription, ...]] = {
# Garage Door Opener
# https://developer.tuya.com/en/docs/iot/categoryckmkzq?id=Kaiuz0ipcboee
"ckmkzq": (
COVERS: dict[DeviceCategory, tuple[TuyaCoverEntityDescription, ...]] = {
DeviceCategory.CKMKZQ: (
TuyaCoverEntityDescription(
key=DPCode.SWITCH_1,
translation_key="indexed_door",
@@ -69,10 +67,7 @@ COVERS: dict[str, tuple[TuyaCoverEntityDescription, ...]] = {
device_class=CoverDeviceClass.GARAGE,
),
),
# Curtain
# Note: Multiple curtains isn't documented
# https://developer.tuya.com/en/docs/iot/categorycl?id=Kaiuz1hnpo7df
"cl": (
DeviceCategory.CL: (
TuyaCoverEntityDescription(
key=DPCode.CONTROL,
translation_key="curtain",
@@ -117,9 +112,7 @@ COVERS: dict[str, tuple[TuyaCoverEntityDescription, ...]] = {
device_class=CoverDeviceClass.BLIND,
),
),
# Curtain Switch
# https://developer.tuya.com/en/docs/iot/category-clkg?id=Kaiuz0gitil39
"clkg": (
DeviceCategory.CLKG: (
TuyaCoverEntityDescription(
key=DPCode.CONTROL,
translation_key="curtain",
@@ -138,9 +131,7 @@ COVERS: dict[str, tuple[TuyaCoverEntityDescription, ...]] = {
device_class=CoverDeviceClass.CURTAIN,
),
),
# Curtain Robot
# Note: Not documented
"jdcljqr": (
DeviceCategory.JDCLJQR: (
TuyaCoverEntityDescription(
key=DPCode.CONTROL,
translation_key="curtain",
+62 -172
View File
@@ -37,6 +37,7 @@ from .const import (
DOMAIN,
LOGGER,
TUYA_DISCOVERY_NEW,
DeviceCategory,
DPCode,
DPType,
UnitOfMeasurement,
@@ -115,11 +116,8 @@ BATTERY_SENSORS: tuple[TuyaSensorEntityDescription, ...] = (
# All descriptions can be found here. Mostly the Integer data types in the
# default status set of each category (that don't have a set instruction)
# end up being a sensor.
# https://developer.tuya.com/en/docs/iot/standarddescription?id=K9i5ql6waswzq
SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
# Single Phase power meter
# Note: Undocumented
"aqcz": (
SENSORS: dict[DeviceCategory, tuple[TuyaSensorEntityDescription, ...]] = {
DeviceCategory.AQCZ: (
TuyaSensorEntityDescription(
key=DPCode.CUR_CURRENT,
translation_key="current",
@@ -144,9 +142,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
entity_registry_enabled_default=False,
),
),
# Smart Kettle
# https://developer.tuya.com/en/docs/iot/fbh?id=K9gf484m21yq7
"bh": (
DeviceCategory.BH: (
TuyaSensorEntityDescription(
key=DPCode.TEMP_CURRENT,
translation_key="current_temperature",
@@ -164,18 +160,14 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
translation_key="status",
),
),
# Curtain
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48qy7wkre
"cl": (
DeviceCategory.CL: (
TuyaSensorEntityDescription(
key=DPCode.TIME_TOTAL,
translation_key="last_operation_duration",
entity_category=EntityCategory.DIAGNOSTIC,
),
),
# CO2 Detector
# https://developer.tuya.com/en/docs/iot/categoryco2bj?id=Kaiuz3wes7yuy
"co2bj": (
DeviceCategory.CO2BJ: (
TuyaSensorEntityDescription(
key=DPCode.HUMIDITY_VALUE,
translation_key="humidity",
@@ -221,9 +213,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# CO Detector
# https://developer.tuya.com/en/docs/iot/categorycobj?id=Kaiuz3u1j6q1v
"cobj": (
DeviceCategory.COBJ: (
TuyaSensorEntityDescription(
key=DPCode.CO_VALUE,
translation_key="carbon_monoxide",
@@ -233,9 +223,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Dehumidifier
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r6jke8e
"cs": (
DeviceCategory.CS: (
TuyaSensorEntityDescription(
key=DPCode.TEMP_INDOOR,
translation_key="temperature",
@@ -249,27 +237,21 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Smart Odor Eliminator-Pro
# Undocumented, see https://github.com/orgs/home-assistant/discussions/79
"cwjwq": (
DeviceCategory.CWJWQ: (
TuyaSensorEntityDescription(
key=DPCode.WORK_STATE_E,
translation_key="odor_elimination_status",
),
*BATTERY_SENSORS,
),
# Smart Pet Feeder
# https://developer.tuya.com/en/docs/iot/categorycwwsq?id=Kaiuz2b6vydld
"cwwsq": (
DeviceCategory.CWWSQ: (
TuyaSensorEntityDescription(
key=DPCode.FEED_REPORT,
translation_key="last_amount",
state_class=SensorStateClass.MEASUREMENT,
),
),
# Pet Fountain
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r0as4ln
"cwysj": (
DeviceCategory.CWYSJ: (
TuyaSensorEntityDescription(
key=DPCode.UV_RUNTIME,
translation_key="uv_runtime",
@@ -300,9 +282,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
key=DPCode.WATER_LEVEL, translation_key="water_level_state"
),
),
# Multi-functional Sensor
# https://developer.tuya.com/en/docs/iot/categorydgnbj?id=Kaiuz3yorvzg3
"dgnbj": (
DeviceCategory.DGNBJ: (
TuyaSensorEntityDescription(
key=DPCode.GAS_SENSOR_VALUE,
translation_key="gas",
@@ -376,9 +356,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Circuit Breaker
# https://developer.tuya.com/en/docs/iot/dlq?id=Kb0kidk9enyh8
"dlq": (
DeviceCategory.DLQ: (
TuyaSensorEntityDescription(
key=DPCode.TOTAL_FORWARD_ENERGY,
translation_key="total_energy",
@@ -515,9 +493,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
entity_registry_enabled_default=False,
),
),
# Fan
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48quojr54
"fs": (
DeviceCategory.FS: (
TuyaSensorEntityDescription(
key=DPCode.TEMP_CURRENT,
translation_key="temperature",
@@ -525,12 +501,8 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Irrigator
# https://developer.tuya.com/en/docs/iot/categoryggq?id=Kaiuz1qib7z0k
"ggq": BATTERY_SENSORS,
# Air Quality Monitor
# https://developer.tuya.com/en/docs/iot/hjjcy?id=Kbeoad8y1nnlv
"hjjcy": (
DeviceCategory.GGQ: BATTERY_SENSORS,
DeviceCategory.HJJCY: (
TuyaSensorEntityDescription(
key=DPCode.AIR_QUALITY_INDEX,
translation_key="air_quality_index",
@@ -581,9 +553,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Formaldehyde Detector
# Note: Not documented
"jqbj": (
DeviceCategory.JQBJ: (
TuyaSensorEntityDescription(
key=DPCode.CO2_VALUE,
translation_key="carbon_dioxide",
@@ -623,9 +593,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Humidifier
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48qwjz0i3
"jsq": (
DeviceCategory.JSQ: (
TuyaSensorEntityDescription(
key=DPCode.HUMIDITY_CURRENT,
translation_key="humidity",
@@ -650,9 +618,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
entity_category=EntityCategory.DIAGNOSTIC,
),
),
# Methane Detector
# https://developer.tuya.com/en/docs/iot/categoryjwbj?id=Kaiuz40u98lkm
"jwbj": (
DeviceCategory.JWBJ: (
TuyaSensorEntityDescription(
key=DPCode.CH4_SENSOR_VALUE,
translation_key="methane",
@@ -660,9 +626,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Switch
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
"kg": (
DeviceCategory.KG: (
TuyaSensorEntityDescription(
key=DPCode.CUR_CURRENT,
translation_key="current",
@@ -699,9 +663,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.TOTAL_INCREASING,
),
),
# Air Purifier
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r41mn81
"kj": (
DeviceCategory.KJ: (
TuyaSensorEntityDescription(
key=DPCode.FILTER,
translation_key="filter_utilization",
@@ -756,9 +718,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
translation_key="air_quality",
),
),
# Luminance Sensor
# https://developer.tuya.com/en/docs/iot/categoryldcg?id=Kaiuz3n7u69l8
"ldcg": (
DeviceCategory.LDCG: (
TuyaSensorEntityDescription(
key=DPCode.BRIGHT_STATE,
translation_key="luminosity",
@@ -790,15 +750,9 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Door and Window Controller
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r5zjsy9
"mc": BATTERY_SENSORS,
# Door Window Sensor
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48hm02l8m
"mcs": BATTERY_SENSORS,
# Cat toilet
# https://developer.tuya.com/en/docs/iot/s?id=Kakg3srr4ora7
"msp": (
DeviceCategory.MC: BATTERY_SENSORS,
DeviceCategory.MCS: BATTERY_SENSORS,
DeviceCategory.MSP: (
TuyaSensorEntityDescription(
key=DPCode.CAT_WEIGHT,
translation_key="cat_weight",
@@ -806,9 +760,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Sous Vide Cooker
# https://developer.tuya.com/en/docs/iot/categorymzj?id=Kaiuz2vy130ux
"mzj": (
DeviceCategory.MZJ: (
TuyaSensorEntityDescription(
key=DPCode.TEMP_CURRENT,
translation_key="current_temperature",
@@ -825,12 +777,8 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
native_unit_of_measurement=UnitOfTime.MINUTES,
),
),
# PIR Detector
# https://developer.tuya.com/en/docs/iot/categorypir?id=Kaiuz3ss11b80
"pir": BATTERY_SENSORS,
# PM2.5 Sensor
# https://developer.tuya.com/en/docs/iot/categorypm25?id=Kaiuz3qof3yfu
"pm2.5": (
DeviceCategory.PIR: BATTERY_SENSORS,
DeviceCategory.PM2_5: (
TuyaSensorEntityDescription(
key=DPCode.PM25_VALUE,
translation_key="pm25",
@@ -884,9 +832,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Heater
# https://developer.tuya.com/en/docs/iot/categoryqn?id=Kaiuz18kih0sm
"qn": (
DeviceCategory.QN: (
TuyaSensorEntityDescription(
key=DPCode.WORK_POWER,
translation_key="power",
@@ -894,9 +840,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Temperature and Humidity Sensor with External Probe
# New undocumented category qxj, see https://github.com/home-assistant/core/issues/136472
"qxj": (
DeviceCategory.QXJ: (
TuyaSensorEntityDescription(
key=DPCode.VA_TEMPERATURE,
translation_key="temperature",
@@ -1018,9 +962,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Gas Detector
# https://developer.tuya.com/en/docs/iot/categoryrqbj?id=Kaiuz3d162ubw
"rqbj": (
DeviceCategory.RQBJ: (
TuyaSensorEntityDescription(
key=DPCode.GAS_SENSOR_VALUE,
name=None,
@@ -1029,9 +971,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Robot Vacuum
# https://developer.tuya.com/en/docs/iot/fsd?id=K9gf487ck1tlo
"sd": (
DeviceCategory.SD: (
TuyaSensorEntityDescription(
key=DPCode.CLEAN_AREA,
translation_key="cleaning_area",
@@ -1085,8 +1025,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Smart Water Timer
"sfkzq": (
DeviceCategory.SFKZQ: (
# Total seconds of irrigation. Read-write value; the device appears to ignore the write action (maybe firmware bug)
TuyaSensorEntityDescription(
key=DPCode.TIME_USE,
@@ -1096,18 +1035,10 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Siren Alarm
# https://developer.tuya.com/en/docs/iot/categorysgbj?id=Kaiuz37tlpbnu
"sgbj": BATTERY_SENSORS,
# Water Detector
# https://developer.tuya.com/en/docs/iot/categorysj?id=Kaiuz3iub2sli
"sj": BATTERY_SENSORS,
# Emergency Button
# https://developer.tuya.com/en/docs/iot/categorysos?id=Kaiuz3oi6agjy
"sos": BATTERY_SENSORS,
# Smart Camera
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
"sp": (
DeviceCategory.SGBJ: BATTERY_SENSORS,
DeviceCategory.SJ: BATTERY_SENSORS,
DeviceCategory.SOS: BATTERY_SENSORS,
DeviceCategory.SP: (
TuyaSensorEntityDescription(
key=DPCode.SENSOR_TEMPERATURE,
translation_key="temperature",
@@ -1128,8 +1059,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Cooking thermometer
"swtz": (
DeviceCategory.SWTZ: (
TuyaSensorEntityDescription(
key=DPCode.TEMP_CURRENT,
translation_key="temperature",
@@ -1145,9 +1075,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Smart Gardening system
# https://developer.tuya.com/en/docs/iot/categorysz?id=Kaiuz4e6h7up0
"sz": (
DeviceCategory.SZ: (
TuyaSensorEntityDescription(
key=DPCode.TEMP_CURRENT,
translation_key="temperature",
@@ -1161,8 +1089,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Water tester
"szjcy": (
DeviceCategory.SZJCY: (
TuyaSensorEntityDescription(
key=DPCode.TDS_IN,
translation_key="total_dissolved_solids",
@@ -1176,11 +1103,8 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Fingerbot
"szjqr": BATTERY_SENSORS,
# IoT Switch
# Note: Undocumented
"tdq": (
DeviceCategory.SZJQR: BATTERY_SENSORS,
DeviceCategory.TDQ: (
TuyaSensorEntityDescription(
key=DPCode.CUR_CURRENT,
translation_key="current",
@@ -1242,12 +1166,8 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Solar Light
# https://developer.tuya.com/en/docs/iot/tynd?id=Kaof8j02e1t98
"tyndj": BATTERY_SENSORS,
# Volatile Organic Compound Sensor
# Note: Undocumented in cloud API docs, based on test device
"voc": (
DeviceCategory.TYNDJ: BATTERY_SENSORS,
DeviceCategory.VOC: (
TuyaSensorEntityDescription(
key=DPCode.CO2_VALUE,
translation_key="carbon_dioxide",
@@ -1287,13 +1207,8 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Thermostat
# https://developer.tuya.com/en/docs/iot/f?id=K9gf45ld5l0t9
"wk": (*BATTERY_SENSORS,),
# Two-way temperature and humidity switch
# "MOES Temperature and Humidity Smart Switch Module MS-103"
# Documentation not found
"wkcz": (
DeviceCategory.WK: (*BATTERY_SENSORS,),
DeviceCategory.WKCZ: (
TuyaSensorEntityDescription(
key=DPCode.HUMIDITY_VALUE,
translation_key="humidity",
@@ -1330,12 +1245,8 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
entity_registry_enabled_default=False,
),
),
# Thermostatic Radiator Valve
# Not documented
"wkf": BATTERY_SENSORS,
# eMylo Smart WiFi IR Remote
# Air Conditioner Mate (Smart IR Socket)
"wnykq": (
DeviceCategory.WKF: BATTERY_SENSORS,
DeviceCategory.WNYKQ: (
TuyaSensorEntityDescription(
key=DPCode.VA_TEMPERATURE,
translation_key="temperature",
@@ -1375,9 +1286,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
entity_registry_enabled_default=False,
),
),
# Temperature and Humidity Sensor
# https://developer.tuya.com/en/docs/iot/categorywsdcg?id=Kaiuz3hinij34
"wsdcg": (
DeviceCategory.WSDCG: (
TuyaSensorEntityDescription(
key=DPCode.VA_TEMPERATURE,
translation_key="temperature",
@@ -1410,12 +1319,8 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Wireless Switch
# https://developer.tuya.com/en/docs/iot/s?id=Kbeoa9fkv6brp
"wxkg": BATTERY_SENSORS, # Pressure Sensor
# Micro Storage Inverter
# Energy storage and solar PV inverter system with monitoring capabilities
"xnyjcn": (
DeviceCategory.WXKG: BATTERY_SENSORS,
DeviceCategory.XNYJCN: (
TuyaSensorEntityDescription(
key=DPCode.CURRENT_SOC,
translation_key="battery_soc",
@@ -1486,8 +1391,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.TOTAL_INCREASING,
),
),
# https://developer.tuya.com/en/docs/iot/categoryylcg?id=Kaiuz3kc2e4gm
"ylcg": (
DeviceCategory.YLCG: (
TuyaSensorEntityDescription(
key=DPCode.PRESSURE_VALUE,
name=None,
@@ -1496,9 +1400,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Smoke Detector
# https://developer.tuya.com/en/docs/iot/categoryywbj?id=Kaiuz3f6sf952
"ywbj": (
DeviceCategory.YWBJ: (
TuyaSensorEntityDescription(
key=DPCode.SMOKE_SENSOR_VALUE,
translation_key="smoke_amount",
@@ -1507,9 +1409,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
),
*BATTERY_SENSORS,
),
# Tank Level Sensor
# Note: Undocumented
"ywcgq": (
DeviceCategory.YWCGQ: (
TuyaSensorEntityDescription(
key=DPCode.LIQUID_STATE,
translation_key="liquid_state",
@@ -1526,12 +1426,8 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Vibration Sensor
# https://developer.tuya.com/en/docs/iot/categoryzd?id=Kaiuz3a5vrzno
"zd": BATTERY_SENSORS,
# Smart Electricity Meter
# https://developer.tuya.com/en/docs/iot/smart-meter?id=Kaiuz4gv6ack7
"zndb": (
DeviceCategory.ZD: BATTERY_SENSORS,
DeviceCategory.ZNDB: (
TuyaSensorEntityDescription(
key=DPCode.FORWARD_ENERGY_TOTAL,
translation_key="total_energy",
@@ -1647,8 +1543,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
subkey="voltage",
),
),
# VESKA-micro inverter
"znnbq": (
DeviceCategory.ZNNBQ: (
TuyaSensorEntityDescription(
key=DPCode.REVERSE_ENERGY_TOTAL,
translation_key="total_energy",
@@ -1671,8 +1566,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Pool HeatPump
"znrb": (
DeviceCategory.ZNRB: (
TuyaSensorEntityDescription(
key=DPCode.TEMP_CURRENT,
translation_key="temperature",
@@ -1680,8 +1574,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT,
),
),
# Soil sensor (Plant monitor)
"zwjcy": (
DeviceCategory.ZWJCY: (
TuyaSensorEntityDescription(
key=DPCode.TEMP_CURRENT,
translation_key="temperature",
@@ -1699,16 +1592,13 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
}
# Socket (duplicate of `kg`)
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
SENSORS["cz"] = SENSORS["kg"]
SENSORS[DeviceCategory.CZ] = SENSORS[DeviceCategory.KG]
# Smart Camera - Low power consumption camera (duplicate of `sp`)
# Undocumented, see https://github.com/home-assistant/core/issues/132844
SENSORS["dghsxj"] = SENSORS["sp"]
SENSORS[DeviceCategory.DGHSXJ] = SENSORS[DeviceCategory.SP]
# Power Socket (duplicate of `kg`)
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
SENSORS["pc"] = SENSORS["kg"]
SENSORS[DeviceCategory.PC] = SENSORS[DeviceCategory.KG]
async def async_setup_entry(
+53 -147
View File
@@ -25,7 +25,7 @@ from homeassistant.helpers.issue_registry import (
)
from . import TuyaConfigEntry
from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode
from .const import DOMAIN, TUYA_DISCOVERY_NEW, DeviceCategory, DPCode
from .entity import TuyaEntity
@@ -40,10 +40,8 @@ class TuyaDeprecatedSwitchEntityDescription(SwitchEntityDescription):
# All descriptions can be found here. Mostly the Boolean data types in the
# default instruction set of each category end up being a Switch.
# https://developer.tuya.com/en/docs/iot/standarddescription?id=K9i5ql6waswzq
SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
# Smart Kettle
# https://developer.tuya.com/en/docs/iot/fbh?id=K9gf484m21yq7
"bh": (
SWITCHES: dict[DeviceCategory, tuple[SwitchEntityDescription, ...]] = {
DeviceCategory.BH: (
SwitchEntityDescription(
key=DPCode.START,
translation_key="start",
@@ -54,8 +52,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# White noise machine
"bzyd": (
DeviceCategory.BZYD: (
SwitchEntityDescription(
key=DPCode.SWITCH,
name=None,
@@ -79,9 +76,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Curtain
# https://developer.tuya.com/en/docs/iot/f?id=K9gf46o5mtfyc
"cl": (
DeviceCategory.CL: (
SwitchEntityDescription(
key=DPCode.CONTROL_BACK,
translation_key="reverse",
@@ -93,9 +88,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# EasyBaby
# Undocumented, might have a wider use
"cn": (
DeviceCategory.CN: (
SwitchEntityDescription(
key=DPCode.DISINFECTION,
translation_key="disinfection",
@@ -105,9 +98,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
translation_key="water",
),
),
# Dehumidifier
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r6jke8e
"cs": (
DeviceCategory.CS: (
SwitchEntityDescription(
key=DPCode.ANION,
translation_key="ionizer",
@@ -127,26 +118,20 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Smart Odor Eliminator-Pro
# Undocumented, see https://github.com/orgs/home-assistant/discussions/79
"cwjwq": (
DeviceCategory.CWJWQ: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
),
),
# Smart Pet Feeder
# https://developer.tuya.com/en/docs/iot/categorycwwsq?id=Kaiuz2b6vydld
"cwwsq": (
DeviceCategory.CWWSQ: (
SwitchEntityDescription(
key=DPCode.SLOW_FEED,
translation_key="slow_feed",
entity_category=EntityCategory.CONFIG,
),
),
# Pet Fountain
# https://developer.tuya.com/en/docs/iot/f?id=K9gf46aewxem5
"cwysj": (
DeviceCategory.CWYSJ: (
SwitchEntityDescription(
key=DPCode.FILTER_RESET,
translation_key="filter_reset",
@@ -172,9 +157,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Light
# https://developer.tuya.com/en/docs/iot/f?id=K9i5ql3v98hn3
"dj": (
DeviceCategory.DJ: (
# There are sockets available with an RGB light
# that advertise as `dj`, but provide an additional
# switch to control the plug.
@@ -183,8 +166,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
translation_key="plug",
),
),
# Circuit Breaker
"dlq": (
DeviceCategory.DLQ: (
SwitchEntityDescription(
key=DPCode.CHILD_LOCK,
translation_key="child_lock",
@@ -195,9 +177,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
translation_key="switch",
),
),
# Electric Blanket
# https://developer.tuya.com/en/docs/iot/categorydr?id=Kaiuz22dyc66p
"dr": (
DeviceCategory.DR: (
SwitchEntityDescription(
key=DPCode.SWITCH,
name="Power",
@@ -235,9 +215,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
device_class=SwitchDeviceClass.SWITCH,
),
),
# Fan
# https://developer.tuya.com/en/docs/iot/categoryfs?id=Kaiuz1xweel1c
"fs": (
DeviceCategory.FS: (
SwitchEntityDescription(
key=DPCode.ANION,
translation_key="anion",
@@ -269,18 +247,14 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Ceiling Fan Light
# https://developer.tuya.com/en/docs/iot/fsd?id=Kaof8eiei4c2v
"fsd": (
DeviceCategory.FSD: (
SwitchEntityDescription(
key=DPCode.FAN_BEEP,
translation_key="sound",
entity_category=EntityCategory.CONFIG,
),
),
# Irrigator
# https://developer.tuya.com/en/docs/iot/categoryggq?id=Kaiuz1qib7z0k
"ggq": (
DeviceCategory.GGQ: (
SwitchEntityDescription(
key=DPCode.SWITCH_1,
translation_key="indexed_switch",
@@ -322,9 +296,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
translation_placeholders={"index": "8"},
),
),
# Wake Up Light II
# Not documented
"hxd": (
DeviceCategory.HXD: (
SwitchEntityDescription(
key=DPCode.SWITCH_1,
translation_key="radio",
@@ -358,9 +330,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
translation_key="sleep_aid",
),
),
# Humidifier
# https://developer.tuya.com/en/docs/iot/categoryjsq?id=Kaiuz1smr440b
"jsq": (
DeviceCategory.JSQ: (
SwitchEntityDescription(
key=DPCode.SWITCH_SOUND,
translation_key="voice",
@@ -377,9 +347,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Switch
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
"kg": (
DeviceCategory.KG: (
SwitchEntityDescription(
key=DPCode.CHILD_LOCK,
translation_key="child_lock",
@@ -469,9 +437,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
device_class=SwitchDeviceClass.OUTLET,
),
),
# Air Purifier
# https://developer.tuya.com/en/docs/iot/f?id=K9gf46h2s6dzm
"kj": (
DeviceCategory.KJ: (
SwitchEntityDescription(
key=DPCode.ANION,
translation_key="ionizer",
@@ -502,9 +468,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Air conditioner
# https://developer.tuya.com/en/docs/iot/categorykt?id=Kaiuz0z71ov2n
"kt": (
DeviceCategory.KT: (
SwitchEntityDescription(
key=DPCode.ANION,
translation_key="ionizer",
@@ -516,17 +480,13 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Undocumented tower fan
# https://github.com/orgs/home-assistant/discussions/329
"ks": (
DeviceCategory.KS: (
SwitchEntityDescription(
key=DPCode.ANION,
translation_key="ionizer",
),
),
# Alarm Host
# https://developer.tuya.com/en/docs/iot/alarm-hosts?id=K9gf48r87hyjk
"mal": (
DeviceCategory.MAL: (
SwitchEntityDescription(
key=DPCode.SWITCH_ALARM_SOUND,
# This switch is called "Arm Beep" in the official Tuya app
@@ -540,9 +500,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Sous Vide Cooker
# https://developer.tuya.com/en/docs/iot/categorymzj?id=Kaiuz2vy130ux
"mzj": (
DeviceCategory.MZJ: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
@@ -554,9 +512,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Power Socket
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
"pc": (
DeviceCategory.PC: (
SwitchEntityDescription(
key=DPCode.CHILD_LOCK,
translation_key="child_lock",
@@ -634,26 +590,19 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
device_class=SwitchDeviceClass.OUTLET,
),
),
# AC charging
# Not documented
"qccdz": (
DeviceCategory.QCCDZ: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
),
),
# Unknown product with switch capabilities
# Fond in some diffusers, plugs and PIR flood lights
# Not documented
"qjdcz": (
DeviceCategory.QJDCZ: (
SwitchEntityDescription(
key=DPCode.SWITCH_1,
translation_key="switch",
),
),
# Heater
# https://developer.tuya.com/en/docs/iot/categoryqn?id=Kaiuz18kih0sm
"qn": (
DeviceCategory.QN: (
SwitchEntityDescription(
key=DPCode.ANION,
translation_key="ionizer",
@@ -665,18 +614,14 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# SIREN: Siren (switch) with Temperature and Humidity Sensor with External Probe
# New undocumented category qxj, see https://github.com/home-assistant/core/issues/136472
"qxj": (
DeviceCategory.QXJ: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
device_class=SwitchDeviceClass.OUTLET,
),
),
# Robot Vacuum
# https://developer.tuya.com/en/docs/iot/fsd?id=K9gf487ck1tlo
"sd": (
DeviceCategory.SD: (
SwitchEntityDescription(
key=DPCode.SWITCH_DISTURB,
translation_key="do_not_disturb",
@@ -688,8 +633,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Smart Water Timer
"sfkzq": (
DeviceCategory.SFKZQ: (
TuyaDeprecatedSwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
@@ -697,26 +641,21 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
breaks_in_ha_version="2026.4.0",
),
),
# Siren Alarm
# https://developer.tuya.com/en/docs/iot/categorysgbj?id=Kaiuz37tlpbnu
"sgbj": (
DeviceCategory.SGBJ: (
SwitchEntityDescription(
key=DPCode.MUFFLING,
translation_key="mute",
entity_category=EntityCategory.CONFIG,
),
),
# Electric desk
"sjz": (
DeviceCategory.SJZ: (
SwitchEntityDescription(
key=DPCode.CHILD_LOCK,
translation_key="child_lock",
entity_category=EntityCategory.CONFIG,
),
),
# Smart Camera
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
"sp": (
DeviceCategory.SP: (
SwitchEntityDescription(
key=DPCode.WIRELESS_BATTERYLOCK,
translation_key="battery_lock",
@@ -773,9 +712,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Smart Gardening system
# https://developer.tuya.com/en/docs/iot/categorysz?id=Kaiuz4e6h7up0
"sz": (
DeviceCategory.SZ: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="power",
@@ -785,16 +722,13 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
translation_key="pump",
),
),
# Fingerbot
"szjqr": (
DeviceCategory.SZJQR: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
),
),
# IoT Switch?
# Note: Undocumented
"tdq": (
DeviceCategory.TDQ: (
SwitchEntityDescription(
key=DPCode.SWITCH_1,
translation_key="indexed_switch",
@@ -837,27 +771,21 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Solar Light
# https://developer.tuya.com/en/docs/iot/tynd?id=Kaof8j02e1t98
"tyndj": (
DeviceCategory.TYNDJ: (
SwitchEntityDescription(
key=DPCode.SWITCH_SAVE_ENERGY,
translation_key="energy_saving",
entity_category=EntityCategory.CONFIG,
),
),
# Gateway control
# https://developer.tuya.com/en/docs/iot/wg?id=Kbcdadk79ejok
"wg2": (
DeviceCategory.WG2: (
SwitchEntityDescription(
key=DPCode.MUFFLING,
translation_key="mute",
entity_category=EntityCategory.CONFIG,
),
),
# Thermostat
# https://developer.tuya.com/en/docs/iot/f?id=K9gf45ld5l0t9
"wk": (
DeviceCategory.WK: (
SwitchEntityDescription(
key=DPCode.CHILD_LOCK,
translation_key="child_lock",
@@ -869,10 +797,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Two-way temperature and humidity switch
# "MOES Temperature and Humidity Smart Switch Module MS-103"
# Documentation not found
"wkcz": (
DeviceCategory.WKCZ: (
SwitchEntityDescription(
key=DPCode.SWITCH_1,
translation_key="indexed_switch",
@@ -886,9 +811,7 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
device_class=SwitchDeviceClass.OUTLET,
),
),
# Thermostatic Radiator Valve
# Not documented
"wkf": (
DeviceCategory.WKF: (
SwitchEntityDescription(
key=DPCode.CHILD_LOCK,
translation_key="child_lock",
@@ -900,43 +823,34 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Air Conditioner Mate (Smart IR Socket)
"wnykq": (
DeviceCategory.WNYKQ: (
SwitchEntityDescription(
key=DPCode.SWITCH,
name=None,
),
),
# SIREN: Siren (switch) with Temperature and humidity sensor
# https://developer.tuya.com/en/docs/iot/f?id=Kavck4sr3o5ek
"wsdcg": (
DeviceCategory.WSDCG: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
device_class=SwitchDeviceClass.OUTLET,
),
),
# Ceiling Light
# https://developer.tuya.com/en/docs/iot/ceiling-light?id=Kaiuz03xxfc4r
"xdd": (
DeviceCategory.XDD: (
SwitchEntityDescription(
key=DPCode.DO_NOT_DISTURB,
translation_key="do_not_disturb",
entity_category=EntityCategory.CONFIG,
),
),
# Micro Storage Inverter
# Energy storage and solar PV inverter system with monitoring capabilities
"xnyjcn": (
DeviceCategory.XNYJCN: (
SwitchEntityDescription(
key=DPCode.FEEDIN_POWER_LIMIT_ENABLE,
translation_key="output_power_limit",
entity_category=EntityCategory.CONFIG,
),
),
# Diffuser
# https://developer.tuya.com/en/docs/iot/categoryxxj?id=Kaiuz1f9mo6bl
"xxj": (
DeviceCategory.XXJ: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="power",
@@ -951,32 +865,26 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
entity_category=EntityCategory.CONFIG,
),
),
# Smoke Detector
# https://developer.tuya.com/en/docs/iot/categoryywbj?id=Kaiuz3f6sf952
"ywbj": (
DeviceCategory.YWBJ: (
SwitchEntityDescription(
key=DPCode.MUFFLING,
translation_key="mute",
entity_category=EntityCategory.CONFIG,
),
),
# Smart Electricity Meter
# https://developer.tuya.com/en/docs/iot/smart-meter?id=Kaiuz4gv6ack7
"zndb": (
DeviceCategory.ZNDB: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
),
),
# Hejhome whitelabel Fingerbot
"znjxs": (
DeviceCategory.ZNJXS: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
),
),
# Pool HeatPump
"znrb": (
DeviceCategory.ZNRB: (
SwitchEntityDescription(
key=DPCode.SWITCH,
translation_key="switch",
@@ -985,12 +893,10 @@ SWITCHES: dict[str, tuple[SwitchEntityDescription, ...]] = {
}
# Socket (duplicate of `pc`)
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
SWITCHES["cz"] = SWITCHES["pc"]
SWITCHES[DeviceCategory.CZ] = SWITCHES[DeviceCategory.PC]
# Smart Camera - Low power consumption camera (duplicate of `sp`)
# Undocumented, see https://github.com/home-assistant/core/issues/132844
SWITCHES["dghsxj"] = SWITCHES["sp"]
SWITCHES[DeviceCategory.DGHSXJ] = SWITCHES[DeviceCategory.SP]
async def async_setup_entry(