1 """Support for Tuya sensors."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from tuya_sharing
import CustomerDevice, Manager
8 from tuya_sharing.device
import DeviceStatusRange
13 SensorEntityDescription,
19 UnitOfElectricCurrent,
20 UnitOfElectricPotential,
29 from .
import TuyaConfigEntry
38 from .entity
import ElectricityTypeData, EnumTypeData, IntegerTypeData, TuyaEntity
41 @dataclass(frozen=True)
43 """Describes Tuya sensor entity."""
45 subkey: str |
None =
None
49 BATTERY_SENSORS: tuple[TuyaSensorEntityDescription, ...] = (
51 key=DPCode.BATTERY_PERCENTAGE,
52 translation_key=
"battery",
53 native_unit_of_measurement=PERCENTAGE,
54 device_class=SensorDeviceClass.BATTERY,
55 state_class=SensorStateClass.MEASUREMENT,
56 entity_category=EntityCategory.DIAGNOSTIC,
60 translation_key=
"battery",
61 native_unit_of_measurement=PERCENTAGE,
62 device_class=SensorDeviceClass.BATTERY,
63 state_class=SensorStateClass.MEASUREMENT,
64 entity_category=EntityCategory.DIAGNOSTIC,
67 key=DPCode.BATTERY_STATE,
68 translation_key=
"battery_state",
69 entity_category=EntityCategory.DIAGNOSTIC,
72 key=DPCode.BATTERY_VALUE,
73 translation_key=
"battery",
74 device_class=SensorDeviceClass.BATTERY,
75 entity_category=EntityCategory.DIAGNOSTIC,
76 state_class=SensorStateClass.MEASUREMENT,
79 key=DPCode.VA_BATTERY,
80 translation_key=
"battery",
81 device_class=SensorDeviceClass.BATTERY,
82 entity_category=EntityCategory.DIAGNOSTIC,
83 state_class=SensorStateClass.MEASUREMENT,
91 SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
96 key=DPCode.GAS_SENSOR_VALUE,
97 translation_key=
"gas",
98 state_class=SensorStateClass.MEASUREMENT,
101 key=DPCode.CH4_SENSOR_VALUE,
102 translation_key=
"gas",
104 state_class=SensorStateClass.MEASUREMENT,
107 key=DPCode.VOC_VALUE,
108 translation_key=
"voc",
109 device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
110 state_class=SensorStateClass.MEASUREMENT,
113 key=DPCode.PM25_VALUE,
114 translation_key=
"pm25",
115 device_class=SensorDeviceClass.PM25,
116 state_class=SensorStateClass.MEASUREMENT,
120 translation_key=
"carbon_monoxide",
121 device_class=SensorDeviceClass.CO,
122 state_class=SensorStateClass.MEASUREMENT,
125 key=DPCode.CO2_VALUE,
126 translation_key=
"carbon_dioxide",
127 device_class=SensorDeviceClass.CO2,
128 state_class=SensorStateClass.MEASUREMENT,
131 key=DPCode.CH2O_VALUE,
132 translation_key=
"formaldehyde",
133 state_class=SensorStateClass.MEASUREMENT,
136 key=DPCode.BRIGHT_STATE,
137 translation_key=
"luminosity",
140 key=DPCode.BRIGHT_VALUE,
141 translation_key=
"illuminance",
142 device_class=SensorDeviceClass.ILLUMINANCE,
143 state_class=SensorStateClass.MEASUREMENT,
146 key=DPCode.TEMP_CURRENT,
147 translation_key=
"temperature",
148 device_class=SensorDeviceClass.TEMPERATURE,
149 state_class=SensorStateClass.MEASUREMENT,
152 key=DPCode.HUMIDITY_VALUE,
153 translation_key=
"humidity",
154 device_class=SensorDeviceClass.HUMIDITY,
155 state_class=SensorStateClass.MEASUREMENT,
158 key=DPCode.SMOKE_SENSOR_VALUE,
159 translation_key=
"smoke_amount",
160 entity_category=EntityCategory.DIAGNOSTIC,
161 state_class=SensorStateClass.MEASUREMENT,
169 key=DPCode.TEMP_CURRENT,
170 translation_key=
"current_temperature",
171 device_class=SensorDeviceClass.TEMPERATURE,
172 state_class=SensorStateClass.MEASUREMENT,
175 key=DPCode.TEMP_CURRENT_F,
176 translation_key=
"current_temperature",
177 device_class=SensorDeviceClass.TEMPERATURE,
178 state_class=SensorStateClass.MEASUREMENT,
182 translation_key=
"status",
189 key=DPCode.HUMIDITY_VALUE,
190 translation_key=
"humidity",
191 device_class=SensorDeviceClass.HUMIDITY,
192 state_class=SensorStateClass.MEASUREMENT,
195 key=DPCode.TEMP_CURRENT,
196 translation_key=
"temperature",
197 device_class=SensorDeviceClass.TEMPERATURE,
198 state_class=SensorStateClass.MEASUREMENT,
201 key=DPCode.CO2_VALUE,
202 translation_key=
"carbon_dioxide",
203 device_class=SensorDeviceClass.CO2,
204 state_class=SensorStateClass.MEASUREMENT,
207 key=DPCode.CH2O_VALUE,
208 translation_key=
"formaldehyde",
209 state_class=SensorStateClass.MEASUREMENT,
212 key=DPCode.VOC_VALUE,
213 translation_key=
"voc",
214 device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
215 state_class=SensorStateClass.MEASUREMENT,
218 key=DPCode.PM25_VALUE,
219 translation_key=
"pm25",
220 device_class=SensorDeviceClass.PM25,
221 state_class=SensorStateClass.MEASUREMENT,
230 key=DPCode.HUMIDITY_VALUE,
231 translation_key=
"humidity",
232 device_class=SensorDeviceClass.HUMIDITY,
233 state_class=SensorStateClass.MEASUREMENT,
236 key=DPCode.TEMP_CURRENT,
237 translation_key=
"temperature",
238 device_class=SensorDeviceClass.TEMPERATURE,
239 state_class=SensorStateClass.MEASUREMENT,
242 key=DPCode.CUR_CURRENT,
243 translation_key=
"current",
244 device_class=SensorDeviceClass.CURRENT,
245 state_class=SensorStateClass.MEASUREMENT,
246 entity_registry_enabled_default=
False,
249 key=DPCode.CUR_POWER,
250 translation_key=
"power",
251 device_class=SensorDeviceClass.POWER,
252 state_class=SensorStateClass.MEASUREMENT,
253 entity_registry_enabled_default=
False,
256 key=DPCode.CUR_VOLTAGE,
257 translation_key=
"voltage",
258 device_class=SensorDeviceClass.VOLTAGE,
259 state_class=SensorStateClass.MEASUREMENT,
260 entity_registry_enabled_default=
False,
267 key=DPCode.CUR_CURRENT,
268 translation_key=
"current",
269 device_class=SensorDeviceClass.CURRENT,
270 state_class=SensorStateClass.MEASUREMENT,
271 entity_registry_enabled_default=
False,
274 key=DPCode.CUR_POWER,
275 translation_key=
"power",
276 device_class=SensorDeviceClass.POWER,
277 state_class=SensorStateClass.MEASUREMENT,
278 entity_registry_enabled_default=
False,
281 key=DPCode.CUR_VOLTAGE,
282 translation_key=
"voltage",
283 device_class=SensorDeviceClass.VOLTAGE,
284 state_class=SensorStateClass.MEASUREMENT,
285 entity_registry_enabled_default=
False,
293 translation_key=
"carbon_monoxide",
294 device_class=SensorDeviceClass.CO,
295 state_class=SensorStateClass.MEASUREMENT,
303 key=DPCode.FEED_REPORT,
304 translation_key=
"last_amount",
305 state_class=SensorStateClass.MEASUREMENT,
312 key=DPCode.AIR_QUALITY_INDEX,
313 translation_key=
"air_quality_index",
316 key=DPCode.TEMP_CURRENT,
317 translation_key=
"temperature",
318 device_class=SensorDeviceClass.TEMPERATURE,
319 state_class=SensorStateClass.MEASUREMENT,
322 key=DPCode.HUMIDITY_VALUE,
323 translation_key=
"humidity",
324 device_class=SensorDeviceClass.HUMIDITY,
325 state_class=SensorStateClass.MEASUREMENT,
328 key=DPCode.CO2_VALUE,
329 translation_key=
"carbon_dioxide",
330 device_class=SensorDeviceClass.CO2,
331 state_class=SensorStateClass.MEASUREMENT,
334 key=DPCode.CH2O_VALUE,
335 translation_key=
"formaldehyde",
336 state_class=SensorStateClass.MEASUREMENT,
339 key=DPCode.VOC_VALUE,
340 translation_key=
"voc",
341 device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
342 state_class=SensorStateClass.MEASUREMENT,
345 key=DPCode.PM25_VALUE,
346 translation_key=
"pm25",
347 device_class=SensorDeviceClass.PM25,
348 state_class=SensorStateClass.MEASUREMENT,
352 translation_key=
"pm10",
353 device_class=SensorDeviceClass.PM10,
354 state_class=SensorStateClass.MEASUREMENT,
362 key=DPCode.CO2_VALUE,
363 translation_key=
"carbon_dioxide",
364 device_class=SensorDeviceClass.CO2,
365 state_class=SensorStateClass.MEASUREMENT,
368 key=DPCode.VOC_VALUE,
369 translation_key=
"voc",
370 device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
371 state_class=SensorStateClass.MEASUREMENT,
374 key=DPCode.PM25_VALUE,
375 translation_key=
"pm25",
376 device_class=SensorDeviceClass.PM25,
377 state_class=SensorStateClass.MEASUREMENT,
380 key=DPCode.VA_HUMIDITY,
381 translation_key=
"humidity",
382 device_class=SensorDeviceClass.HUMIDITY,
383 state_class=SensorStateClass.MEASUREMENT,
386 key=DPCode.VA_TEMPERATURE,
387 translation_key=
"temperature",
388 device_class=SensorDeviceClass.TEMPERATURE,
389 state_class=SensorStateClass.MEASUREMENT,
392 key=DPCode.CH2O_VALUE,
393 translation_key=
"formaldehyde",
394 state_class=SensorStateClass.MEASUREMENT,
402 key=DPCode.CH4_SENSOR_VALUE,
403 translation_key=
"methane",
404 state_class=SensorStateClass.MEASUREMENT,
412 key=DPCode.CUR_CURRENT,
413 translation_key=
"current",
414 device_class=SensorDeviceClass.CURRENT,
415 state_class=SensorStateClass.MEASUREMENT,
416 entity_registry_enabled_default=
False,
419 key=DPCode.CUR_POWER,
420 translation_key=
"power",
421 device_class=SensorDeviceClass.POWER,
422 state_class=SensorStateClass.MEASUREMENT,
423 entity_registry_enabled_default=
False,
426 key=DPCode.CUR_VOLTAGE,
427 translation_key=
"voltage",
428 device_class=SensorDeviceClass.VOLTAGE,
429 state_class=SensorStateClass.MEASUREMENT,
430 entity_registry_enabled_default=
False,
437 key=DPCode.CUR_CURRENT,
438 translation_key=
"current",
439 device_class=SensorDeviceClass.CURRENT,
440 state_class=SensorStateClass.MEASUREMENT,
441 entity_registry_enabled_default=
False,
444 key=DPCode.CUR_POWER,
445 translation_key=
"power",
446 device_class=SensorDeviceClass.POWER,
447 state_class=SensorStateClass.MEASUREMENT,
448 entity_registry_enabled_default=
False,
451 key=DPCode.CUR_VOLTAGE,
452 translation_key=
"voltage",
453 device_class=SensorDeviceClass.VOLTAGE,
454 state_class=SensorStateClass.MEASUREMENT,
455 entity_registry_enabled_default=
False,
462 key=DPCode.BRIGHT_STATE,
463 translation_key=
"luminosity",
466 key=DPCode.BRIGHT_VALUE,
467 translation_key=
"illuminance",
468 device_class=SensorDeviceClass.ILLUMINANCE,
469 state_class=SensorStateClass.MEASUREMENT,
472 key=DPCode.TEMP_CURRENT,
473 translation_key=
"temperature",
474 device_class=SensorDeviceClass.TEMPERATURE,
475 state_class=SensorStateClass.MEASUREMENT,
478 key=DPCode.HUMIDITY_VALUE,
479 translation_key=
"humidity",
480 device_class=SensorDeviceClass.HUMIDITY,
481 state_class=SensorStateClass.MEASUREMENT,
484 key=DPCode.CO2_VALUE,
485 translation_key=
"carbon_dioxide",
486 device_class=SensorDeviceClass.CO2,
487 state_class=SensorStateClass.MEASUREMENT,
493 "mc": BATTERY_SENSORS,
496 "mcs": BATTERY_SENSORS,
501 key=DPCode.TEMP_CURRENT,
502 translation_key=
"current_temperature",
503 device_class=SensorDeviceClass.TEMPERATURE,
504 state_class=SensorStateClass.MEASUREMENT,
508 translation_key=
"sous_vide_status",
511 key=DPCode.REMAIN_TIME,
512 translation_key=
"remaining_time",
513 native_unit_of_measurement=UnitOfTime.MINUTES,
518 "pir": BATTERY_SENSORS,
523 key=DPCode.PM25_VALUE,
524 translation_key=
"pm25",
525 device_class=SensorDeviceClass.PM25,
526 state_class=SensorStateClass.MEASUREMENT,
529 key=DPCode.CH2O_VALUE,
530 translation_key=
"formaldehyde",
531 state_class=SensorStateClass.MEASUREMENT,
534 key=DPCode.VOC_VALUE,
535 translation_key=
"voc",
536 device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
537 state_class=SensorStateClass.MEASUREMENT,
540 key=DPCode.TEMP_CURRENT,
541 translation_key=
"temperature",
542 device_class=SensorDeviceClass.TEMPERATURE,
543 state_class=SensorStateClass.MEASUREMENT,
546 key=DPCode.CO2_VALUE,
547 translation_key=
"carbon_dioxide",
548 device_class=SensorDeviceClass.CO2,
549 state_class=SensorStateClass.MEASUREMENT,
552 key=DPCode.HUMIDITY_VALUE,
553 translation_key=
"humidity",
554 device_class=SensorDeviceClass.HUMIDITY,
555 state_class=SensorStateClass.MEASUREMENT,
559 translation_key=
"pm1",
560 device_class=SensorDeviceClass.PM1,
561 state_class=SensorStateClass.MEASUREMENT,
565 translation_key=
"pm10",
566 device_class=SensorDeviceClass.PM10,
567 state_class=SensorStateClass.MEASUREMENT,
575 key=DPCode.WORK_POWER,
576 translation_key=
"power",
577 device_class=SensorDeviceClass.POWER,
578 state_class=SensorStateClass.MEASUREMENT,
585 key=DPCode.GAS_SENSOR_VALUE,
587 translation_key=
"gas",
588 state_class=SensorStateClass.MEASUREMENT,
597 translation_key=
"total_watering_time",
598 state_class=SensorStateClass.TOTAL_INCREASING,
599 entity_category=EntityCategory.DIAGNOSTIC,
605 "ggq": BATTERY_SENSORS,
608 "sj": BATTERY_SENSORS,
611 "sos": BATTERY_SENSORS,
616 key=DPCode.SENSOR_TEMPERATURE,
617 translation_key=
"temperature",
618 device_class=SensorDeviceClass.TEMPERATURE,
619 state_class=SensorStateClass.MEASUREMENT,
622 key=DPCode.SENSOR_HUMIDITY,
623 translation_key=
"humidity",
624 device_class=SensorDeviceClass.HUMIDITY,
625 state_class=SensorStateClass.MEASUREMENT,
628 key=DPCode.WIRELESS_ELECTRICITY,
629 translation_key=
"battery",
630 device_class=SensorDeviceClass.BATTERY,
631 entity_category=EntityCategory.DIAGNOSTIC,
632 state_class=SensorStateClass.MEASUREMENT,
636 "szjqr": BATTERY_SENSORS,
639 "tyndj": BATTERY_SENSORS,
644 key=DPCode.CO2_VALUE,
645 translation_key=
"carbon_dioxide",
646 device_class=SensorDeviceClass.CO2,
647 state_class=SensorStateClass.MEASUREMENT,
650 key=DPCode.PM25_VALUE,
651 translation_key=
"pm25",
652 device_class=SensorDeviceClass.PM25,
653 state_class=SensorStateClass.MEASUREMENT,
656 key=DPCode.CH2O_VALUE,
657 translation_key=
"formaldehyde",
658 state_class=SensorStateClass.MEASUREMENT,
661 key=DPCode.HUMIDITY_VALUE,
662 translation_key=
"humidity",
663 device_class=SensorDeviceClass.HUMIDITY,
664 state_class=SensorStateClass.MEASUREMENT,
667 key=DPCode.TEMP_CURRENT,
668 translation_key=
"temperature",
669 device_class=SensorDeviceClass.TEMPERATURE,
670 state_class=SensorStateClass.MEASUREMENT,
673 key=DPCode.VOC_VALUE,
674 translation_key=
"voc",
675 device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
676 state_class=SensorStateClass.MEASUREMENT,
682 "wkf": BATTERY_SENSORS,
687 key=DPCode.VA_TEMPERATURE,
688 translation_key=
"temperature",
689 device_class=SensorDeviceClass.TEMPERATURE,
690 state_class=SensorStateClass.MEASUREMENT,
693 key=DPCode.TEMP_CURRENT,
694 translation_key=
"temperature",
695 device_class=SensorDeviceClass.TEMPERATURE,
696 state_class=SensorStateClass.MEASUREMENT,
699 key=DPCode.VA_HUMIDITY,
700 translation_key=
"humidity",
701 device_class=SensorDeviceClass.HUMIDITY,
702 state_class=SensorStateClass.MEASUREMENT,
705 key=DPCode.HUMIDITY_VALUE,
706 translation_key=
"humidity",
707 device_class=SensorDeviceClass.HUMIDITY,
708 state_class=SensorStateClass.MEASUREMENT,
711 key=DPCode.BRIGHT_VALUE,
712 translation_key=
"illuminance",
713 device_class=SensorDeviceClass.ILLUMINANCE,
714 state_class=SensorStateClass.MEASUREMENT,
722 key=DPCode.PRESSURE_VALUE,
724 device_class=SensorDeviceClass.PRESSURE,
725 state_class=SensorStateClass.MEASUREMENT,
733 key=DPCode.SMOKE_SENSOR_VALUE,
734 translation_key=
"smoke_amount",
735 entity_category=EntityCategory.DIAGNOSTIC,
736 state_class=SensorStateClass.MEASUREMENT,
742 "zd": BATTERY_SENSORS,
747 key=DPCode.FORWARD_ENERGY_TOTAL,
748 translation_key=
"total_energy",
749 device_class=SensorDeviceClass.ENERGY,
750 state_class=SensorStateClass.TOTAL_INCREASING,
753 key=DPCode.REVERSE_ENERGY_TOTAL,
754 translation_key=
"total_energy",
755 device_class=SensorDeviceClass.ENERGY,
756 state_class=SensorStateClass.TOTAL_INCREASING,
759 key=DPCode.TOTAL_POWER,
760 translation_key=
"total_power",
761 device_class=SensorDeviceClass.POWER,
762 state_class=SensorStateClass.MEASUREMENT,
763 native_unit_of_measurement=UnitOfPower.KILO_WATT,
768 translation_key=
"phase_a_current",
769 device_class=SensorDeviceClass.CURRENT,
770 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
771 state_class=SensorStateClass.MEASUREMENT,
772 subkey=
"electriccurrent",
776 translation_key=
"phase_a_power",
777 device_class=SensorDeviceClass.POWER,
778 state_class=SensorStateClass.MEASUREMENT,
779 native_unit_of_measurement=UnitOfPower.KILO_WATT,
784 translation_key=
"phase_a_voltage",
785 device_class=SensorDeviceClass.VOLTAGE,
786 state_class=SensorStateClass.MEASUREMENT,
787 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
792 translation_key=
"phase_b_current",
793 device_class=SensorDeviceClass.CURRENT,
794 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
795 state_class=SensorStateClass.MEASUREMENT,
796 subkey=
"electriccurrent",
800 translation_key=
"phase_b_power",
801 device_class=SensorDeviceClass.POWER,
802 state_class=SensorStateClass.MEASUREMENT,
803 native_unit_of_measurement=UnitOfPower.KILO_WATT,
808 translation_key=
"phase_b_voltage",
809 device_class=SensorDeviceClass.VOLTAGE,
810 state_class=SensorStateClass.MEASUREMENT,
811 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
816 translation_key=
"phase_c_current",
817 device_class=SensorDeviceClass.CURRENT,
818 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
819 state_class=SensorStateClass.MEASUREMENT,
820 subkey=
"electriccurrent",
824 translation_key=
"phase_c_power",
825 device_class=SensorDeviceClass.POWER,
826 state_class=SensorStateClass.MEASUREMENT,
827 native_unit_of_measurement=UnitOfPower.KILO_WATT,
832 translation_key=
"phase_c_voltage",
833 device_class=SensorDeviceClass.VOLTAGE,
834 state_class=SensorStateClass.MEASUREMENT,
835 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
843 key=DPCode.TOTAL_FORWARD_ENERGY,
844 translation_key=
"total_energy",
845 device_class=SensorDeviceClass.ENERGY,
846 state_class=SensorStateClass.TOTAL_INCREASING,
849 key=DPCode.CUR_NEUTRAL,
850 translation_key=
"total_production",
851 device_class=SensorDeviceClass.ENERGY,
852 state_class=SensorStateClass.TOTAL_INCREASING,
856 translation_key=
"phase_a_current",
857 device_class=SensorDeviceClass.CURRENT,
858 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
859 state_class=SensorStateClass.MEASUREMENT,
860 subkey=
"electriccurrent",
864 translation_key=
"phase_a_power",
865 device_class=SensorDeviceClass.POWER,
866 state_class=SensorStateClass.MEASUREMENT,
867 native_unit_of_measurement=UnitOfPower.KILO_WATT,
872 translation_key=
"phase_a_voltage",
873 device_class=SensorDeviceClass.VOLTAGE,
874 state_class=SensorStateClass.MEASUREMENT,
875 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
880 translation_key=
"phase_b_current",
881 device_class=SensorDeviceClass.CURRENT,
882 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
883 state_class=SensorStateClass.MEASUREMENT,
884 subkey=
"electriccurrent",
888 translation_key=
"phase_b_power",
889 device_class=SensorDeviceClass.POWER,
890 state_class=SensorStateClass.MEASUREMENT,
891 native_unit_of_measurement=UnitOfPower.KILO_WATT,
896 translation_key=
"phase_b_voltage",
897 device_class=SensorDeviceClass.VOLTAGE,
898 state_class=SensorStateClass.MEASUREMENT,
899 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
904 translation_key=
"phase_c_current",
905 device_class=SensorDeviceClass.CURRENT,
906 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
907 state_class=SensorStateClass.MEASUREMENT,
908 subkey=
"electriccurrent",
912 translation_key=
"phase_c_power",
913 device_class=SensorDeviceClass.POWER,
914 state_class=SensorStateClass.MEASUREMENT,
915 native_unit_of_measurement=UnitOfPower.KILO_WATT,
920 translation_key=
"phase_c_voltage",
921 device_class=SensorDeviceClass.VOLTAGE,
922 state_class=SensorStateClass.MEASUREMENT,
923 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
927 key=DPCode.CUR_CURRENT,
928 translation_key=
"current",
929 device_class=SensorDeviceClass.CURRENT,
930 state_class=SensorStateClass.MEASUREMENT,
931 entity_registry_enabled_default=
False,
934 key=DPCode.CUR_POWER,
935 translation_key=
"power",
936 device_class=SensorDeviceClass.POWER,
937 state_class=SensorStateClass.MEASUREMENT,
938 entity_registry_enabled_default=
False,
941 key=DPCode.CUR_VOLTAGE,
942 translation_key=
"voltage",
943 device_class=SensorDeviceClass.VOLTAGE,
944 state_class=SensorStateClass.MEASUREMENT,
945 entity_registry_enabled_default=
False,
952 key=DPCode.CLEAN_AREA,
953 translation_key=
"cleaning_area",
954 state_class=SensorStateClass.MEASUREMENT,
957 key=DPCode.CLEAN_TIME,
958 translation_key=
"cleaning_time",
959 state_class=SensorStateClass.MEASUREMENT,
962 key=DPCode.TOTAL_CLEAN_AREA,
963 translation_key=
"total_cleaning_area",
964 state_class=SensorStateClass.TOTAL_INCREASING,
967 key=DPCode.TOTAL_CLEAN_TIME,
968 translation_key=
"total_cleaning_time",
969 state_class=SensorStateClass.TOTAL_INCREASING,
972 key=DPCode.TOTAL_CLEAN_COUNT,
973 translation_key=
"total_cleaning_times",
974 state_class=SensorStateClass.TOTAL_INCREASING,
977 key=DPCode.DUSTER_CLOTH,
978 translation_key=
"duster_cloth_life",
979 state_class=SensorStateClass.MEASUREMENT,
982 key=DPCode.EDGE_BRUSH,
983 translation_key=
"side_brush_life",
984 state_class=SensorStateClass.MEASUREMENT,
987 key=DPCode.FILTER_LIFE,
988 translation_key=
"filter_life",
989 state_class=SensorStateClass.MEASUREMENT,
992 key=DPCode.ROLL_BRUSH,
993 translation_key=
"rolling_brush_life",
994 state_class=SensorStateClass.MEASUREMENT,
1001 key=DPCode.TEMP_CURRENT,
1002 translation_key=
"temperature",
1003 device_class=SensorDeviceClass.TEMPERATURE,
1004 state_class=SensorStateClass.MEASUREMENT,
1007 key=DPCode.HUMIDITY_CURRENT,
1008 translation_key=
"humidity",
1009 device_class=SensorDeviceClass.HUMIDITY,
1010 state_class=SensorStateClass.MEASUREMENT,
1017 key=DPCode.TIME_TOTAL,
1018 translation_key=
"last_operation_duration",
1019 entity_category=EntityCategory.DIAGNOSTIC,
1026 key=DPCode.HUMIDITY_CURRENT,
1027 translation_key=
"humidity",
1028 device_class=SensorDeviceClass.HUMIDITY,
1029 state_class=SensorStateClass.MEASUREMENT,
1032 key=DPCode.TEMP_CURRENT,
1033 translation_key=
"temperature",
1034 device_class=SensorDeviceClass.TEMPERATURE,
1035 state_class=SensorStateClass.MEASUREMENT,
1038 key=DPCode.TEMP_CURRENT_F,
1039 translation_key=
"temperature",
1040 device_class=SensorDeviceClass.TEMPERATURE,
1041 state_class=SensorStateClass.MEASUREMENT,
1044 key=DPCode.LEVEL_CURRENT,
1045 translation_key=
"water_level",
1046 entity_category=EntityCategory.DIAGNOSTIC,
1054 translation_key=
"filter_utilization",
1055 entity_category=EntityCategory.DIAGNOSTIC,
1059 translation_key=
"pm25",
1060 device_class=SensorDeviceClass.PM25,
1061 state_class=SensorStateClass.MEASUREMENT,
1065 translation_key=
"temperature",
1066 device_class=SensorDeviceClass.TEMPERATURE,
1067 state_class=SensorStateClass.MEASUREMENT,
1070 key=DPCode.HUMIDITY,
1071 translation_key=
"humidity",
1072 device_class=SensorDeviceClass.HUMIDITY,
1073 state_class=SensorStateClass.MEASUREMENT,
1077 translation_key=
"total_volatile_organic_compound",
1078 device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
1079 state_class=SensorStateClass.MEASUREMENT,
1083 translation_key=
"concentration_carbon_dioxide",
1084 device_class=SensorDeviceClass.CO2,
1085 state_class=SensorStateClass.MEASUREMENT,
1088 key=DPCode.TOTAL_TIME,
1089 translation_key=
"total_operating_time",
1090 state_class=SensorStateClass.TOTAL_INCREASING,
1091 entity_category=EntityCategory.DIAGNOSTIC,
1094 key=DPCode.TOTAL_PM,
1095 translation_key=
"total_absorption_particles",
1096 state_class=SensorStateClass.TOTAL_INCREASING,
1097 entity_category=EntityCategory.DIAGNOSTIC,
1100 key=DPCode.AIR_QUALITY,
1101 translation_key=
"air_quality",
1108 key=DPCode.TEMP_CURRENT,
1109 translation_key=
"temperature",
1110 device_class=SensorDeviceClass.TEMPERATURE,
1111 state_class=SensorStateClass.MEASUREMENT,
1118 key=DPCode.VA_TEMPERATURE,
1119 translation_key=
"temperature",
1120 device_class=SensorDeviceClass.TEMPERATURE,
1121 state_class=SensorStateClass.MEASUREMENT,
1124 key=DPCode.VA_HUMIDITY,
1125 translation_key=
"humidity",
1126 device_class=SensorDeviceClass.HUMIDITY,
1127 state_class=SensorStateClass.MEASUREMENT,
1130 key=DPCode.CUR_CURRENT,
1131 translation_key=
"current",
1132 device_class=SensorDeviceClass.CURRENT,
1133 state_class=SensorStateClass.MEASUREMENT,
1134 entity_category=EntityCategory.DIAGNOSTIC,
1135 entity_registry_enabled_default=
False,
1138 key=DPCode.CUR_POWER,
1139 translation_key=
"power",
1140 device_class=SensorDeviceClass.POWER,
1141 state_class=SensorStateClass.MEASUREMENT,
1142 entity_category=EntityCategory.DIAGNOSTIC,
1143 entity_registry_enabled_default=
False,
1146 key=DPCode.CUR_VOLTAGE,
1147 translation_key=
"voltage",
1148 device_class=SensorDeviceClass.VOLTAGE,
1149 state_class=SensorStateClass.MEASUREMENT,
1150 entity_category=EntityCategory.DIAGNOSTIC,
1151 entity_registry_enabled_default=
False,
1158 key=DPCode.TEMP_INDOOR,
1159 translation_key=
"temperature",
1160 device_class=SensorDeviceClass.TEMPERATURE,
1161 state_class=SensorStateClass.MEASUREMENT,
1164 key=DPCode.HUMIDITY_INDOOR,
1165 translation_key=
"humidity",
1166 device_class=SensorDeviceClass.HUMIDITY,
1167 state_class=SensorStateClass.MEASUREMENT,
1173 key=DPCode.TEMP_CURRENT,
1174 translation_key=
"temperature",
1175 device_class=SensorDeviceClass.TEMPERATURE,
1176 state_class=SensorStateClass.MEASUREMENT,
1179 key=DPCode.HUMIDITY,
1180 translation_key=
"humidity",
1181 device_class=SensorDeviceClass.HUMIDITY,
1182 state_class=SensorStateClass.MEASUREMENT,
1189 key=DPCode.REVERSE_ENERGY_TOTAL,
1190 translation_key=
"total_energy",
1191 device_class=SensorDeviceClass.ENERGY,
1192 state_class=SensorStateClass.TOTAL_INCREASING,
1195 key=DPCode.POWER_TOTAL,
1196 translation_key=
"power",
1197 device_class=SensorDeviceClass.POWER,
1198 state_class=SensorStateClass.MEASUREMENT,
1199 native_unit_of_measurement=UnitOfPower.WATT,
1200 suggested_display_precision=0,
1201 suggested_unit_of_measurement=UnitOfPower.WATT,
1207 key=DPCode.TEMP_CURRENT,
1208 translation_key=
"temperature",
1209 device_class=SensorDeviceClass.TEMPERATURE,
1210 state_class=SensorStateClass.MEASUREMENT,
1217 SENSORS[
"cz"] = SENSORS[
"kg"]
1221 SENSORS[
"pc"] = SENSORS[
"kg"]
1225 hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback
1227 """Set up Tuya sensor dynamically through Tuya discovery."""
1228 hass_data = entry.runtime_data
1232 """Discover and add a discovered Tuya sensor."""
1233 entities: list[TuyaSensorEntity] = []
1234 for device_id
in device_ids:
1235 device = hass_data.manager.device_map[device_id]
1236 if descriptions := SENSORS.get(device.category):
1239 for description
in descriptions
1240 if description.key
in device.status
1247 entry.async_on_unload(
1253 """Tuya Sensor Entity."""
1255 entity_description: TuyaSensorEntityDescription
1257 _status_range: DeviceStatusRange |
None =
None
1258 _type: DPType |
None =
None
1259 _type_data: IntegerTypeData | EnumTypeData |
None =
None
1260 _uom: UnitOfMeasurement |
None =
None
1264 device: CustomerDevice,
1265 device_manager: Manager,
1266 description: TuyaSensorEntityDescription,
1268 """Init Tuya sensor."""
1269 super().
__init__(device, device_manager)
1272 f
"{super().unique_id}{description.key}{description.subkey or ''}"
1278 if description.native_unit_of_measurement
is None:
1281 description.key, dptype=DPType.ENUM, prefer_function=
True
1284 self.
_type_type = DPType.ENUM
1293 and description.native_unit_of_measurement
is None
1310 if self.
_uom_uom
is None:
1317 self.
_uom_uom.conversion_unit
or self.
_uom_uom.unit
1322 """Return the value reported by the sensor."""
1324 if self.
_type_type
not in (
1339 if isinstance(self.
_type_data_type_data, IntegerTypeData):
1340 scaled_value = self.
_type_data_type_data.scale_value(value)
1341 if self.
_uom_uom
and self.
_uom_uom.conversion_fn
is not None:
1342 return self.
_uom_uom.conversion_fn(scaled_value)
1347 isinstance(self.
_type_data_type_data, EnumTypeData)
1348 and value
not in self.
_type_data_type_data.range
1353 if self.
_type_type
is DPType.JSON:
1356 values = ElectricityTypeData.from_json(value)
1359 if self.
_type_type
is DPType.RAW:
1362 values = ElectricityTypeData.from_raw(value)
SensorDeviceClass|None device_class(self)
str|None native_unit_of_measurement(self)
DPCode|EnumTypeData|IntegerTypeData|None find_dpcode(self, str|DPCode|tuple[DPCode,...]|None dpcodes, *bool prefer_function=False, DPType|None dptype=None)
IntegerTypeData|None find_dpcode(self, str|DPCode|tuple[DPCode,...]|None dpcodes, *bool prefer_function=False, Literal[DPType.INTEGER] dptype)
DPCode|None find_dpcode(self, str|DPCode|tuple[DPCode,...]|None dpcodes, *bool prefer_function=False)
EnumTypeData|None find_dpcode(self, str|DPCode|tuple[DPCode,...]|None dpcodes, *bool prefer_function=False, Literal[DPType.ENUM] dptype)
DPType|None get_dptype(self, DPCode|None dpcode, bool prefer_function=False)
None __init__(self, CustomerDevice device, Manager device_manager, TuyaSensorEntityDescription description)
_attr_native_unit_of_measurement
StateType native_value(self)
str|None device_class(self)
ElkSystem|None async_discover_device(HomeAssistant hass, str host)
None async_setup_entry(HomeAssistant hass, TuyaConfigEntry entry, AddEntitiesCallback async_add_entities)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)