11"""Support for Tasmota sensors."""
22from typing import Optional
33
4- from hatasmota import status_sensor
5- from hatasmota .const import (
6- CONCENTRATION_MICROGRAMS_PER_CUBIC_METER as TASMOTA_CONCENTRATION_MICROGRAMS_PER_CUBIC_METER ,
7- CONCENTRATION_PARTS_PER_BILLION as TASMOTA_CONCENTRATION_PARTS_PER_BILLION ,
8- CONCENTRATION_PARTS_PER_MILLION as TASMOTA_CONCENTRATION_PARTS_PER_MILLION ,
9- ELECTRICAL_CURRENT_AMPERE as TASMOTA_ELECTRICAL_CURRENT_AMPERE ,
10- ELECTRICAL_VOLT_AMPERE as TASMOTA_ELECTRICAL_VOLT_AMPERE ,
11- ENERGY_KILO_WATT_HOUR as TASMOTA_ENERGY_KILO_WATT_HOUR ,
12- FREQUENCY_HERTZ as TASMOTA_FREQUENCY_HERTZ ,
13- LENGTH_CENTIMETERS as TASMOTA_LENGTH_CENTIMETERS ,
14- LIGHT_LUX as TASMOTA_LIGHT_LUX ,
15- MASS_KILOGRAMS as TASMOTA_MASS_KILOGRAMS ,
16- PERCENTAGE as TASMOTA_PERCENTAGE ,
17- POWER_WATT as TASMOTA_POWER_WATT ,
18- PRESSURE_HPA as TASMOTA_PRESSURE_HPA ,
19- SENSOR_AMBIENT ,
20- SENSOR_APPARENT_POWERUSAGE ,
21- SENSOR_BATTERY ,
22- SENSOR_CCT ,
23- SENSOR_CO2 ,
24- SENSOR_COLOR_BLUE ,
25- SENSOR_COLOR_GREEN ,
26- SENSOR_COLOR_RED ,
27- SENSOR_CURRENT ,
28- SENSOR_DEWPOINT ,
29- SENSOR_DISTANCE ,
30- SENSOR_ECO2 ,
31- SENSOR_FREQUENCY ,
32- SENSOR_HUMIDITY ,
33- SENSOR_ILLUMINANCE ,
34- SENSOR_MOISTURE ,
35- SENSOR_PB0_3 ,
36- SENSOR_PB0_5 ,
37- SENSOR_PB1 ,
38- SENSOR_PB2_5 ,
39- SENSOR_PB5 ,
40- SENSOR_PB10 ,
41- SENSOR_PM1 ,
42- SENSOR_PM2_5 ,
43- SENSOR_PM10 ,
44- SENSOR_POWERFACTOR ,
45- SENSOR_POWERUSAGE ,
46- SENSOR_PRESSURE ,
47- SENSOR_PRESSUREATSEALEVEL ,
48- SENSOR_PROXIMITY ,
49- SENSOR_REACTIVE_POWERUSAGE ,
50- SENSOR_STATUS_IP ,
51- SENSOR_STATUS_LAST_RESTART_TIME ,
52- SENSOR_STATUS_LINK_COUNT ,
53- SENSOR_STATUS_MQTT_COUNT ,
54- SENSOR_STATUS_RESTART_REASON ,
55- SENSOR_STATUS_RSSI ,
56- SENSOR_STATUS_SIGNAL ,
57- SENSOR_STATUS_SSID ,
58- SENSOR_TEMPERATURE ,
59- SENSOR_TODAY ,
60- SENSOR_TOTAL ,
61- SENSOR_TOTAL_START_TIME ,
62- SENSOR_TVOC ,
63- SENSOR_VOLTAGE ,
64- SENSOR_WEIGHT ,
65- SENSOR_YESTERDAY ,
66- SIGNAL_STRENGTH_DECIBELS as TASMOTA_SIGNAL_STRENGTH_DECIBELS ,
67- SPEED_KILOMETERS_PER_HOUR as TASMOTA_SPEED_KILOMETERS_PER_HOUR ,
68- SPEED_METERS_PER_SECOND as TASMOTA_SPEED_METERS_PER_SECOND ,
69- SPEED_MILES_PER_HOUR as TASMOTA_SPEED_MILES_PER_HOUR ,
70- TEMP_CELSIUS as TASMOTA_TEMP_CELSIUS ,
71- TEMP_FAHRENHEIT as TASMOTA_TEMP_FAHRENHEIT ,
72- TEMP_KELVIN as TASMOTA_TEMP_KELVIN ,
73- VOLT as TASMOTA_VOLT ,
74- )
4+ from hatasmota import const as hc , status_sensor
755
766from homeassistant .components import sensor
777from homeassistant .const import (
10939from homeassistant .helpers .dispatcher import async_dispatcher_connect
11040from homeassistant .helpers .entity import Entity
11141
112- from .const import DATA_REMOVE_DISCOVER_COMPONENT , DOMAIN as TASMOTA_DOMAIN
42+ from .const import DATA_REMOVE_DISCOVER_COMPONENT
11343from .discovery import TASMOTA_DISCOVERY_ENTITY_NEW
11444from .mixins import TasmotaAvailability , TasmotaDiscoveryUpdate
11545
11848
11949# A Tasmota sensor type may be mapped to either a device class or an icon, not both
12050SENSOR_DEVICE_CLASS_ICON_MAP = {
121- SENSOR_AMBIENT : {DEVICE_CLASS : DEVICE_CLASS_ILLUMINANCE },
122- SENSOR_APPARENT_POWERUSAGE : {DEVICE_CLASS : DEVICE_CLASS_POWER },
123- SENSOR_BATTERY : {DEVICE_CLASS : DEVICE_CLASS_BATTERY },
124- SENSOR_CCT : {ICON : "mdi:temperature-kelvin" },
125- SENSOR_CO2 : {ICON : "mdi:molecule-co2" },
126- SENSOR_COLOR_BLUE : {ICON : "mdi:palette" },
127- SENSOR_COLOR_GREEN : {ICON : "mdi:palette" },
128- SENSOR_COLOR_RED : {ICON : "mdi:palette" },
129- SENSOR_CURRENT : {ICON : "mdi:alpha-a-circle-outline" },
130- SENSOR_DEWPOINT : {ICON : "mdi:weather-rainy" },
131- SENSOR_DISTANCE : {ICON : "mdi:leak" },
132- SENSOR_ECO2 : {ICON : "mdi:molecule-co2" },
133- SENSOR_FREQUENCY : {ICON : "mdi:current-ac" },
134- SENSOR_HUMIDITY : {DEVICE_CLASS : DEVICE_CLASS_HUMIDITY },
135- SENSOR_ILLUMINANCE : {DEVICE_CLASS : DEVICE_CLASS_ILLUMINANCE },
136- SENSOR_STATUS_IP : {ICON : "mdi:ip-network" },
137- SENSOR_STATUS_LINK_COUNT : {ICON : "mdi:counter" },
138- SENSOR_MOISTURE : {ICON : "mdi:cup-water" },
139- SENSOR_STATUS_MQTT_COUNT : {ICON : "mdi:counter" },
140- SENSOR_PB0_3 : {ICON : "mdi:flask" },
141- SENSOR_PB0_5 : {ICON : "mdi:flask" },
142- SENSOR_PB10 : {ICON : "mdi:flask" },
143- SENSOR_PB1 : {ICON : "mdi:flask" },
144- SENSOR_PB2_5 : {ICON : "mdi:flask" },
145- SENSOR_PB5 : {ICON : "mdi:flask" },
146- SENSOR_PM10 : {ICON : "mdi:air-filter" },
147- SENSOR_PM1 : {ICON : "mdi:air-filter" },
148- SENSOR_PM2_5 : {ICON : "mdi:air-filter" },
149- SENSOR_POWERFACTOR : {ICON : "mdi:alpha-f-circle-outline" },
150- SENSOR_POWERUSAGE : {DEVICE_CLASS : DEVICE_CLASS_POWER },
151- SENSOR_PRESSURE : {DEVICE_CLASS : DEVICE_CLASS_PRESSURE },
152- SENSOR_PRESSUREATSEALEVEL : {DEVICE_CLASS : DEVICE_CLASS_PRESSURE },
153- SENSOR_PROXIMITY : {ICON : "mdi:ruler" },
154- SENSOR_REACTIVE_POWERUSAGE : {DEVICE_CLASS : DEVICE_CLASS_POWER },
155- SENSOR_STATUS_LAST_RESTART_TIME : {DEVICE_CLASS : DEVICE_CLASS_TIMESTAMP },
156- SENSOR_STATUS_RESTART_REASON : {ICON : "mdi:information-outline" },
157- SENSOR_STATUS_SIGNAL : {DEVICE_CLASS : DEVICE_CLASS_SIGNAL_STRENGTH },
158- SENSOR_STATUS_RSSI : {ICON : "mdi:access-point" },
159- SENSOR_STATUS_SSID : {ICON : "mdi:access-point-network" },
160- SENSOR_TEMPERATURE : {DEVICE_CLASS : DEVICE_CLASS_TEMPERATURE },
161- SENSOR_TODAY : {DEVICE_CLASS : DEVICE_CLASS_POWER },
162- SENSOR_TOTAL : {DEVICE_CLASS : DEVICE_CLASS_POWER },
163- SENSOR_TOTAL_START_TIME : {ICON : "mdi:progress-clock" },
164- SENSOR_TVOC : {ICON : "mdi:air-filter" },
165- SENSOR_VOLTAGE : {ICON : "mdi:alpha-v-circle-outline" },
166- SENSOR_WEIGHT : {ICON : "mdi:scale" },
167- SENSOR_YESTERDAY : {DEVICE_CLASS : DEVICE_CLASS_POWER },
51+ hc . SENSOR_AMBIENT : {DEVICE_CLASS : DEVICE_CLASS_ILLUMINANCE },
52+ hc . SENSOR_APPARENT_POWERUSAGE : {DEVICE_CLASS : DEVICE_CLASS_POWER },
53+ hc . SENSOR_BATTERY : {DEVICE_CLASS : DEVICE_CLASS_BATTERY },
54+ hc . SENSOR_CCT : {ICON : "mdi:temperature-kelvin" },
55+ hc . SENSOR_CO2 : {ICON : "mdi:molecule-co2" },
56+ hc . SENSOR_COLOR_BLUE : {ICON : "mdi:palette" },
57+ hc . SENSOR_COLOR_GREEN : {ICON : "mdi:palette" },
58+ hc . SENSOR_COLOR_RED : {ICON : "mdi:palette" },
59+ hc . SENSOR_CURRENT : {ICON : "mdi:alpha-a-circle-outline" },
60+ hc . SENSOR_DEWPOINT : {ICON : "mdi:weather-rainy" },
61+ hc . SENSOR_DISTANCE : {ICON : "mdi:leak" },
62+ hc . SENSOR_ECO2 : {ICON : "mdi:molecule-co2" },
63+ hc . SENSOR_FREQUENCY : {ICON : "mdi:current-ac" },
64+ hc . SENSOR_HUMIDITY : {DEVICE_CLASS : DEVICE_CLASS_HUMIDITY },
65+ hc . SENSOR_ILLUMINANCE : {DEVICE_CLASS : DEVICE_CLASS_ILLUMINANCE },
66+ hc . SENSOR_STATUS_IP : {ICON : "mdi:ip-network" },
67+ hc . SENSOR_STATUS_LINK_COUNT : {ICON : "mdi:counter" },
68+ hc . SENSOR_MOISTURE : {ICON : "mdi:cup-water" },
69+ hc . SENSOR_STATUS_MQTT_COUNT : {ICON : "mdi:counter" },
70+ hc . SENSOR_PB0_3 : {ICON : "mdi:flask" },
71+ hc . SENSOR_PB0_5 : {ICON : "mdi:flask" },
72+ hc . SENSOR_PB10 : {ICON : "mdi:flask" },
73+ hc . SENSOR_PB1 : {ICON : "mdi:flask" },
74+ hc . SENSOR_PB2_5 : {ICON : "mdi:flask" },
75+ hc . SENSOR_PB5 : {ICON : "mdi:flask" },
76+ hc . SENSOR_PM10 : {ICON : "mdi:air-filter" },
77+ hc . SENSOR_PM1 : {ICON : "mdi:air-filter" },
78+ hc . SENSOR_PM2_5 : {ICON : "mdi:air-filter" },
79+ hc . SENSOR_POWERFACTOR : {ICON : "mdi:alpha-f-circle-outline" },
80+ hc . SENSOR_POWERUSAGE : {DEVICE_CLASS : DEVICE_CLASS_POWER },
81+ hc . SENSOR_PRESSURE : {DEVICE_CLASS : DEVICE_CLASS_PRESSURE },
82+ hc . SENSOR_PRESSUREATSEALEVEL : {DEVICE_CLASS : DEVICE_CLASS_PRESSURE },
83+ hc . SENSOR_PROXIMITY : {ICON : "mdi:ruler" },
84+ hc . SENSOR_REACTIVE_POWERUSAGE : {DEVICE_CLASS : DEVICE_CLASS_POWER },
85+ hc . SENSOR_STATUS_LAST_RESTART_TIME : {DEVICE_CLASS : DEVICE_CLASS_TIMESTAMP },
86+ hc . SENSOR_STATUS_RESTART_REASON : {ICON : "mdi:information-outline" },
87+ hc . SENSOR_STATUS_SIGNAL : {DEVICE_CLASS : DEVICE_CLASS_SIGNAL_STRENGTH },
88+ hc . SENSOR_STATUS_RSSI : {ICON : "mdi:access-point" },
89+ hc . SENSOR_STATUS_SSID : {ICON : "mdi:access-point-network" },
90+ hc . SENSOR_TEMPERATURE : {DEVICE_CLASS : DEVICE_CLASS_TEMPERATURE },
91+ hc . SENSOR_TODAY : {DEVICE_CLASS : DEVICE_CLASS_POWER },
92+ hc . SENSOR_TOTAL : {DEVICE_CLASS : DEVICE_CLASS_POWER },
93+ hc . SENSOR_TOTAL_START_TIME : {ICON : "mdi:progress-clock" },
94+ hc . SENSOR_TVOC : {ICON : "mdi:air-filter" },
95+ hc . SENSOR_VOLTAGE : {ICON : "mdi:alpha-v-circle-outline" },
96+ hc . SENSOR_WEIGHT : {ICON : "mdi:scale" },
97+ hc . SENSOR_YESTERDAY : {DEVICE_CLASS : DEVICE_CLASS_POWER },
16898}
16999
170100SENSOR_UNIT_MAP = {
171- TASMOTA_CONCENTRATION_MICROGRAMS_PER_CUBIC_METER : CONCENTRATION_MICROGRAMS_PER_CUBIC_METER ,
172- TASMOTA_CONCENTRATION_PARTS_PER_BILLION : CONCENTRATION_PARTS_PER_BILLION ,
173- TASMOTA_CONCENTRATION_PARTS_PER_MILLION : CONCENTRATION_PARTS_PER_MILLION ,
174- TASMOTA_ELECTRICAL_CURRENT_AMPERE : ELECTRICAL_CURRENT_AMPERE ,
175- TASMOTA_ELECTRICAL_VOLT_AMPERE : ELECTRICAL_VOLT_AMPERE ,
176- TASMOTA_ENERGY_KILO_WATT_HOUR : ENERGY_KILO_WATT_HOUR ,
177- TASMOTA_FREQUENCY_HERTZ : FREQUENCY_HERTZ ,
178- TASMOTA_LENGTH_CENTIMETERS : LENGTH_CENTIMETERS ,
179- TASMOTA_LIGHT_LUX : LIGHT_LUX ,
180- TASMOTA_MASS_KILOGRAMS : MASS_KILOGRAMS ,
181- TASMOTA_PERCENTAGE : PERCENTAGE ,
182- TASMOTA_POWER_WATT : POWER_WATT ,
183- TASMOTA_PRESSURE_HPA : PRESSURE_HPA ,
184- TASMOTA_SIGNAL_STRENGTH_DECIBELS : SIGNAL_STRENGTH_DECIBELS ,
185- TASMOTA_SPEED_KILOMETERS_PER_HOUR : SPEED_KILOMETERS_PER_HOUR ,
186- TASMOTA_SPEED_METERS_PER_SECOND : SPEED_METERS_PER_SECOND ,
187- TASMOTA_SPEED_MILES_PER_HOUR : SPEED_MILES_PER_HOUR ,
188- TASMOTA_TEMP_CELSIUS : TEMP_CELSIUS ,
189- TASMOTA_TEMP_FAHRENHEIT : TEMP_FAHRENHEIT ,
190- TASMOTA_TEMP_KELVIN : TEMP_KELVIN ,
191- TASMOTA_VOLT : VOLT ,
101+ hc . CONCENTRATION_MICROGRAMS_PER_CUBIC_METER : CONCENTRATION_MICROGRAMS_PER_CUBIC_METER ,
102+ hc . CONCENTRATION_PARTS_PER_BILLION : CONCENTRATION_PARTS_PER_BILLION ,
103+ hc . CONCENTRATION_PARTS_PER_MILLION : CONCENTRATION_PARTS_PER_MILLION ,
104+ hc . ELECTRICAL_CURRENT_AMPERE : ELECTRICAL_CURRENT_AMPERE ,
105+ hc . ELECTRICAL_VOLT_AMPERE : ELECTRICAL_VOLT_AMPERE ,
106+ hc . ENERGY_KILO_WATT_HOUR : ENERGY_KILO_WATT_HOUR ,
107+ hc . FREQUENCY_HERTZ : FREQUENCY_HERTZ ,
108+ hc . LENGTH_CENTIMETERS : LENGTH_CENTIMETERS ,
109+ hc . LIGHT_LUX : LIGHT_LUX ,
110+ hc . MASS_KILOGRAMS : MASS_KILOGRAMS ,
111+ hc . PERCENTAGE : PERCENTAGE ,
112+ hc . POWER_WATT : POWER_WATT ,
113+ hc . PRESSURE_HPA : PRESSURE_HPA ,
114+ hc . SIGNAL_STRENGTH_DECIBELS : SIGNAL_STRENGTH_DECIBELS ,
115+ hc . SPEED_KILOMETERS_PER_HOUR : SPEED_KILOMETERS_PER_HOUR ,
116+ hc . SPEED_METERS_PER_SECOND : SPEED_METERS_PER_SECOND ,
117+ hc . SPEED_MILES_PER_HOUR : SPEED_MILES_PER_HOUR ,
118+ hc . TEMP_CELSIUS : TEMP_CELSIUS ,
119+ hc . TEMP_FAHRENHEIT : TEMP_FAHRENHEIT ,
120+ hc . TEMP_KELVIN : TEMP_KELVIN ,
121+ hc . VOLT : VOLT ,
192122}
193123
194124
@@ -209,7 +139,7 @@ async def async_discover_sensor(tasmota_entity, discovery_hash):
209139 DATA_REMOVE_DISCOVER_COMPONENT .format (sensor .DOMAIN )
210140 ] = async_dispatcher_connect (
211141 hass ,
212- TASMOTA_DISCOVERY_ENTITY_NEW .format (sensor .DOMAIN , TASMOTA_DOMAIN ),
142+ TASMOTA_DISCOVERY_ENTITY_NEW .format (sensor .DOMAIN ),
213143 async_discover_sensor ,
214144 )
215145
@@ -222,7 +152,6 @@ def __init__(self, **kwds):
222152 self ._state = None
223153
224154 super ().__init__ (
225- discovery_update = self .discovery_update ,
226155 ** kwds ,
227156 )
228157
0 commit comments