Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Constants for sensor."""
2 
3 from __future__ import annotations
4 
5 from enum import StrEnum
6 from functools import partial
7 from typing import Final
8 
9 import voluptuous as vol
10 
11 from homeassistant.const import (
12  CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
13  CONCENTRATION_PARTS_PER_BILLION,
14  CONCENTRATION_PARTS_PER_MILLION,
15  LIGHT_LUX,
16  PERCENTAGE,
17  SIGNAL_STRENGTH_DECIBELS,
18  SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
19  UnitOfApparentPower,
20  UnitOfArea,
21  UnitOfBloodGlucoseConcentration,
22  UnitOfConductivity,
23  UnitOfDataRate,
24  UnitOfElectricCurrent,
25  UnitOfElectricPotential,
26  UnitOfEnergy,
27  UnitOfFrequency,
28  UnitOfInformation,
29  UnitOfIrradiance,
30  UnitOfLength,
31  UnitOfMass,
32  UnitOfPower,
33  UnitOfPrecipitationDepth,
34  UnitOfPressure,
35  UnitOfReactivePower,
36  UnitOfSoundPressure,
37  UnitOfSpeed,
38  UnitOfTemperature,
39  UnitOfTime,
40  UnitOfVolume,
41  UnitOfVolumeFlowRate,
42  UnitOfVolumetricFlux,
43 )
45  DeprecatedConstantEnum,
46  all_with_deprecated_constants,
47  check_if_deprecated_constant,
48  dir_with_deprecated_constants,
49 )
51  AreaConverter,
52  BaseUnitConverter,
53  BloodGlucoseConcentrationConverter,
54  ConductivityConverter,
55  DataRateConverter,
56  DistanceConverter,
57  DurationConverter,
58  ElectricCurrentConverter,
59  ElectricPotentialConverter,
60  EnergyConverter,
61  InformationConverter,
62  MassConverter,
63  PowerConverter,
64  PressureConverter,
65  SpeedConverter,
66  TemperatureConverter,
67  UnitlessRatioConverter,
68  VolumeConverter,
69  VolumeFlowRateConverter,
70 )
71 
72 DOMAIN: Final = "sensor"
73 
74 CONF_STATE_CLASS: Final = "state_class"
75 
76 ATTR_LAST_RESET: Final = "last_reset"
77 ATTR_STATE_CLASS: Final = "state_class"
78 ATTR_OPTIONS: Final = "options"
79 
80 
81 class SensorDeviceClass(StrEnum):
82  """Device class for sensors."""
83 
84  # Non-numerical device classes
85  DATE = "date"
86  """Date.
87 
88  Unit of measurement: `None`
89 
90  ISO8601 format: https://en.wikipedia.org/wiki/ISO_8601
91  """
92 
93  ENUM = "enum"
94  """Enumeration.
95 
96  Provides a fixed list of options the state of the sensor can be in.
97 
98  Unit of measurement: `None`
99  """
100 
101  TIMESTAMP = "timestamp"
102  """Timestamp.
103 
104  Unit of measurement: `None`
105 
106  ISO8601 format: https://en.wikipedia.org/wiki/ISO_8601
107  """
108 
109  # Numerical device classes, these should be aligned with NumberDeviceClass
110  APPARENT_POWER = "apparent_power"
111  """Apparent power.
112 
113  Unit of measurement: `VA`
114  """
115 
116  AQI = "aqi"
117  """Air Quality Index.
118 
119  Unit of measurement: `None`
120  """
121 
122  AREA = "area"
123  """Area
124 
125  Unit of measurement: `UnitOfArea` units
126  """
127 
128  ATMOSPHERIC_PRESSURE = "atmospheric_pressure"
129  """Atmospheric pressure.
130 
131  Unit of measurement: `UnitOfPressure` units
132  """
133 
134  BATTERY = "battery"
135  """Percentage of battery that is left.
136 
137  Unit of measurement: `%`
138  """
139 
140  BLOOD_GLUCOSE_CONCENTRATION = "blood_glucose_concentration"
141  """Blood glucose concentration.
142 
143  Unit of measurement: `mg/dL`, `mmol/L`
144  """
145 
146  CO = "carbon_monoxide"
147  """Carbon Monoxide gas concentration.
148 
149  Unit of measurement: `ppm` (parts per million)
150  """
151 
152  CO2 = "carbon_dioxide"
153  """Carbon Dioxide gas concentration.
154 
155  Unit of measurement: `ppm` (parts per million)
156  """
157 
158  CONDUCTIVITY = "conductivity"
159  """Conductivity.
160 
161  Unit of measurement: `S/cm`, `mS/cm`, `µS/cm`
162  """
163 
164  CURRENT = "current"
165  """Current.
166 
167  Unit of measurement: `A`, `mA`
168  """
169 
170  DATA_RATE = "data_rate"
171  """Data rate.
172 
173  Unit of measurement: UnitOfDataRate
174  """
175 
176  DATA_SIZE = "data_size"
177  """Data size.
178 
179  Unit of measurement: UnitOfInformation
180  """
181 
182  DISTANCE = "distance"
183  """Generic distance.
184 
185  Unit of measurement: `LENGTH_*` units
186  - SI /metric: `mm`, `cm`, `m`, `km`
187  - USCS / imperial: `in`, `ft`, `yd`, `mi`
188  """
189 
190  DURATION = "duration"
191  """Fixed duration.
192 
193  Unit of measurement: `d`, `h`, `min`, `s`, `ms`
194  """
195 
196  ENERGY = "energy"
197  """Energy.
198 
199  Use this device class for sensors measuring energy consumption, for example
200  electric energy consumption.
201  Unit of measurement: `J`, `kJ`, `MJ`, `GJ`, `Wh`, `kWh`, `MWh`, `GWh`, `TWh`, `cal`, `kcal`, `Mcal`, `Gcal`
202  """
203 
204  ENERGY_STORAGE = "energy_storage"
205  """Stored energy.
206 
207  Use this device class for sensors measuring stored energy, for example the amount
208  of electric energy currently stored in a battery or the capacity of a battery.
209 
210  Unit of measurement: `Wh`, `kWh`, `MWh`, `GWh`, `TWh`, `MJ`, `GJ`
211  """
212 
213  FREQUENCY = "frequency"
214  """Frequency.
215 
216  Unit of measurement: `Hz`, `kHz`, `MHz`, `GHz`
217  """
218 
219  GAS = "gas"
220  """Gas.
221 
222  Unit of measurement:
223  - SI / metric: `m³`
224  - USCS / imperial: `ft³`, `CCF`
225  """
226 
227  HUMIDITY = "humidity"
228  """Relative humidity.
229 
230  Unit of measurement: `%`
231  """
232 
233  ILLUMINANCE = "illuminance"
234  """Illuminance.
235 
236  Unit of measurement: `lx`
237  """
238 
239  IRRADIANCE = "irradiance"
240  """Irradiance.
241 
242  Unit of measurement:
243  - SI / metric: `W/m²`
244  - USCS / imperial: `BTU/(h⋅ft²)`
245  """
246 
247  MOISTURE = "moisture"
248  """Moisture.
249 
250  Unit of measurement: `%`
251  """
252 
253  MONETARY = "monetary"
254  """Amount of money.
255 
256  Unit of measurement: ISO4217 currency code
257 
258  See https://en.wikipedia.org/wiki/ISO_4217#Active_codes for active codes
259  """
260 
261  NITROGEN_DIOXIDE = "nitrogen_dioxide"
262  """Amount of NO2.
263 
264  Unit of measurement: `µg/m³`
265  """
266 
267  NITROGEN_MONOXIDE = "nitrogen_monoxide"
268  """Amount of NO.
269 
270  Unit of measurement: `µg/m³`
271  """
272 
273  NITROUS_OXIDE = "nitrous_oxide"
274  """Amount of N2O.
275 
276  Unit of measurement: `µg/m³`
277  """
278 
279  OZONE = "ozone"
280  """Amount of O3.
281 
282  Unit of measurement: `µg/m³`
283  """
284 
285  PH = "ph"
286  """Potential hydrogen (acidity/alkalinity).
287 
288  Unit of measurement: Unitless
289  """
290 
291  PM1 = "pm1"
292  """Particulate matter <= 1 μm.
293 
294  Unit of measurement: `µg/m³`
295  """
296 
297  PM10 = "pm10"
298  """Particulate matter <= 10 μm.
299 
300  Unit of measurement: `µg/m³`
301  """
302 
303  PM25 = "pm25"
304  """Particulate matter <= 2.5 μm.
305 
306  Unit of measurement: `µg/m³`
307  """
308 
309  POWER_FACTOR = "power_factor"
310  """Power factor.
311 
312  Unit of measurement: `%`, `None`
313  """
314 
315  POWER = "power"
316  """Power.
317 
318  Unit of measurement: `W`, `kW`, `MW`, `GW`, `TW`
319  """
320 
321  PRECIPITATION = "precipitation"
322  """Accumulated precipitation.
323 
324  Unit of measurement: UnitOfPrecipitationDepth
325  - SI / metric: `cm`, `mm`
326  - USCS / imperial: `in`
327  """
328 
329  PRECIPITATION_INTENSITY = "precipitation_intensity"
330  """Precipitation intensity.
331 
332  Unit of measurement: UnitOfVolumetricFlux
333  - SI /metric: `mm/d`, `mm/h`
334  - USCS / imperial: `in/d`, `in/h`
335  """
336 
337  PRESSURE = "pressure"
338  """Pressure.
339 
340  Unit of measurement:
341  - `mbar`, `cbar`, `bar`
342  - `Pa`, `hPa`, `kPa`
343  - `inHg`
344  - `psi`
345  """
346 
347  REACTIVE_POWER = "reactive_power"
348  """Reactive power.
349 
350  Unit of measurement: `var`
351  """
352 
353  SIGNAL_STRENGTH = "signal_strength"
354  """Signal strength.
355 
356  Unit of measurement: `dB`, `dBm`
357  """
358 
359  SOUND_PRESSURE = "sound_pressure"
360  """Sound pressure.
361 
362  Unit of measurement: `dB`, `dBA`
363  """
364 
365  SPEED = "speed"
366  """Generic speed.
367 
368  Unit of measurement: `SPEED_*` units or `UnitOfVolumetricFlux`
369  - SI /metric: `mm/d`, `mm/h`, `m/s`, `km/h`, `mm/s`
370  - USCS / imperial: `in/d`, `in/h`, `in/s`, `ft/s`, `mph`
371  - Nautical: `kn`
372  - Beaufort: `Beaufort`
373  """
374 
375  SULPHUR_DIOXIDE = "sulphur_dioxide"
376  """Amount of SO2.
377 
378  Unit of measurement: `µg/m³`
379  """
380 
381  TEMPERATURE = "temperature"
382  """Temperature.
383 
384  Unit of measurement: `°C`, `°F`, `K`
385  """
386 
387  VOLATILE_ORGANIC_COMPOUNDS = "volatile_organic_compounds"
388  """Amount of VOC.
389 
390  Unit of measurement: `µg/m³`
391  """
392 
393  VOLATILE_ORGANIC_COMPOUNDS_PARTS = "volatile_organic_compounds_parts"
394  """Ratio of VOC.
395 
396  Unit of measurement: `ppm`, `ppb`
397  """
398 
399  VOLTAGE = "voltage"
400  """Voltage.
401 
402  Unit of measurement: `V`, `mV`, `µV`
403  """
404 
405  VOLUME = "volume"
406  """Generic volume.
407 
408  Unit of measurement: `VOLUME_*` units
409  - SI / metric: `mL`, `L`, `m³`
410  - USCS / imperial: `ft³`, `CCF`, `fl. oz.`, `gal` (warning: volumes expressed in
411  USCS/imperial units are currently assumed to be US volumes)
412  """
413 
414  VOLUME_STORAGE = "volume_storage"
415  """Generic stored volume.
416 
417  Use this device class for sensors measuring stored volume, for example the amount
418  of fuel in a fuel tank.
419 
420  Unit of measurement: `VOLUME_*` units
421  - SI / metric: `mL`, `L`, `m³`
422  - USCS / imperial: `ft³`, `CCF`, `fl. oz.`, `gal` (warning: volumes expressed in
423  USCS/imperial units are currently assumed to be US volumes)
424  """
425 
426  VOLUME_FLOW_RATE = "volume_flow_rate"
427  """Generic flow rate
428 
429  Unit of measurement: UnitOfVolumeFlowRate
430  - SI / metric: `m³/h`, `L/min`, `mL/s`
431  - USCS / imperial: `ft³/min`, `gal/min`
432  """
433 
434  WATER = "water"
435  """Water.
436 
437  Unit of measurement:
438  - SI / metric: `m³`, `L`
439  - USCS / imperial: `ft³`, `CCF`, `gal` (warning: volumes expressed in
440  USCS/imperial units are currently assumed to be US volumes)
441  """
442 
443  WEIGHT = "weight"
444  """Generic weight, represents a measurement of an object's mass.
445 
446  Weight is used instead of mass to fit with every day language.
447 
448  Unit of measurement: `MASS_*` units
449  - SI / metric: `µg`, `mg`, `g`, `kg`
450  - USCS / imperial: `oz`, `lb`
451  """
452 
453  WIND_SPEED = "wind_speed"
454  """Wind speed.
455 
456  Unit of measurement: `SPEED_*` units
457  - SI /metric: `m/s`, `km/h`
458  - USCS / imperial: `ft/s`, `mph`
459  - Nautical: `kn`
460  - Beaufort: `Beaufort`
461  """
462 
463 
464 NON_NUMERIC_DEVICE_CLASSES = {
465  SensorDeviceClass.DATE,
466  SensorDeviceClass.ENUM,
467  SensorDeviceClass.TIMESTAMP,
468 }
469 
470 DEVICE_CLASSES_SCHEMA: Final = vol.All(vol.Lower, vol.Coerce(SensorDeviceClass))
471 
472 # DEVICE_CLASSES is deprecated as of 2021.12
473 # use the SensorDeviceClass enum instead.
474 DEVICE_CLASSES: Final[list[str]] = [cls.value for cls in SensorDeviceClass]
475 
476 
477 class SensorStateClass(StrEnum):
478  """State class for sensors."""
479 
480  MEASUREMENT = "measurement"
481  """The state represents a measurement in present time."""
482 
483  TOTAL = "total"
484  """The state represents a total amount.
485 
486  For example: net energy consumption"""
487 
488  TOTAL_INCREASING = "total_increasing"
489  """The state represents a monotonically increasing total.
490 
491  For example: an amount of consumed gas"""
492 
493 
494 STATE_CLASSES_SCHEMA: Final = vol.All(vol.Lower, vol.Coerce(SensorStateClass))
495 
496 
497 # STATE_CLASS* is deprecated as of 2021.12
498 # use the SensorStateClass enum instead.
499 _DEPRECATED_STATE_CLASS_MEASUREMENT: Final = DeprecatedConstantEnum(
500  SensorStateClass.MEASUREMENT, "2025.1"
501 )
502 _DEPRECATED_STATE_CLASS_TOTAL: Final = DeprecatedConstantEnum(
503  SensorStateClass.TOTAL, "2025.1"
504 )
505 _DEPRECATED_STATE_CLASS_TOTAL_INCREASING: Final = DeprecatedConstantEnum(
506  SensorStateClass.TOTAL_INCREASING, "2025.1"
507 )
508 STATE_CLASSES: Final[list[str]] = [cls.value for cls in SensorStateClass]
509 
510 UNIT_CONVERTERS: dict[SensorDeviceClass | str | None, type[BaseUnitConverter]] = {
511  SensorDeviceClass.AREA: AreaConverter,
512  SensorDeviceClass.ATMOSPHERIC_PRESSURE: PressureConverter,
513  SensorDeviceClass.BLOOD_GLUCOSE_CONCENTRATION: BloodGlucoseConcentrationConverter,
514  SensorDeviceClass.CONDUCTIVITY: ConductivityConverter,
515  SensorDeviceClass.CURRENT: ElectricCurrentConverter,
516  SensorDeviceClass.DATA_RATE: DataRateConverter,
517  SensorDeviceClass.DATA_SIZE: InformationConverter,
518  SensorDeviceClass.DISTANCE: DistanceConverter,
519  SensorDeviceClass.DURATION: DurationConverter,
520  SensorDeviceClass.ENERGY: EnergyConverter,
521  SensorDeviceClass.ENERGY_STORAGE: EnergyConverter,
522  SensorDeviceClass.GAS: VolumeConverter,
523  SensorDeviceClass.POWER: PowerConverter,
524  SensorDeviceClass.POWER_FACTOR: UnitlessRatioConverter,
525  SensorDeviceClass.PRECIPITATION: DistanceConverter,
526  SensorDeviceClass.PRECIPITATION_INTENSITY: SpeedConverter,
527  SensorDeviceClass.PRESSURE: PressureConverter,
528  SensorDeviceClass.SPEED: SpeedConverter,
529  SensorDeviceClass.TEMPERATURE: TemperatureConverter,
530  SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: UnitlessRatioConverter,
531  SensorDeviceClass.VOLTAGE: ElectricPotentialConverter,
532  SensorDeviceClass.VOLUME: VolumeConverter,
533  SensorDeviceClass.VOLUME_STORAGE: VolumeConverter,
534  SensorDeviceClass.VOLUME_FLOW_RATE: VolumeFlowRateConverter,
535  SensorDeviceClass.WATER: VolumeConverter,
536  SensorDeviceClass.WEIGHT: MassConverter,
537  SensorDeviceClass.WIND_SPEED: SpeedConverter,
538 }
539 
540 DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]] = {
541  SensorDeviceClass.APPARENT_POWER: set(UnitOfApparentPower),
542  SensorDeviceClass.AQI: {None},
543  SensorDeviceClass.AREA: set(UnitOfArea),
544  SensorDeviceClass.ATMOSPHERIC_PRESSURE: set(UnitOfPressure),
545  SensorDeviceClass.BATTERY: {PERCENTAGE},
546  SensorDeviceClass.BLOOD_GLUCOSE_CONCENTRATION: set(UnitOfBloodGlucoseConcentration),
547  SensorDeviceClass.CO: {CONCENTRATION_PARTS_PER_MILLION},
548  SensorDeviceClass.CO2: {CONCENTRATION_PARTS_PER_MILLION},
549  SensorDeviceClass.CONDUCTIVITY: set(UnitOfConductivity),
550  SensorDeviceClass.CURRENT: set(UnitOfElectricCurrent),
551  SensorDeviceClass.DATA_RATE: set(UnitOfDataRate),
552  SensorDeviceClass.DATA_SIZE: set(UnitOfInformation),
553  SensorDeviceClass.DISTANCE: set(UnitOfLength),
554  SensorDeviceClass.DURATION: {
555  UnitOfTime.DAYS,
556  UnitOfTime.HOURS,
557  UnitOfTime.MINUTES,
558  UnitOfTime.SECONDS,
559  UnitOfTime.MILLISECONDS,
560  },
561  SensorDeviceClass.ENERGY: set(UnitOfEnergy),
562  SensorDeviceClass.ENERGY_STORAGE: set(UnitOfEnergy),
563  SensorDeviceClass.FREQUENCY: set(UnitOfFrequency),
564  SensorDeviceClass.GAS: {
565  UnitOfVolume.CENTUM_CUBIC_FEET,
566  UnitOfVolume.CUBIC_FEET,
567  UnitOfVolume.CUBIC_METERS,
568  },
569  SensorDeviceClass.HUMIDITY: {PERCENTAGE},
570  SensorDeviceClass.ILLUMINANCE: {LIGHT_LUX},
571  SensorDeviceClass.IRRADIANCE: set(UnitOfIrradiance),
572  SensorDeviceClass.MOISTURE: {PERCENTAGE},
573  SensorDeviceClass.NITROGEN_DIOXIDE: {CONCENTRATION_MICROGRAMS_PER_CUBIC_METER},
574  SensorDeviceClass.NITROGEN_MONOXIDE: {CONCENTRATION_MICROGRAMS_PER_CUBIC_METER},
575  SensorDeviceClass.NITROUS_OXIDE: {CONCENTRATION_MICROGRAMS_PER_CUBIC_METER},
576  SensorDeviceClass.OZONE: {CONCENTRATION_MICROGRAMS_PER_CUBIC_METER},
577  SensorDeviceClass.PH: {None},
578  SensorDeviceClass.PM1: {CONCENTRATION_MICROGRAMS_PER_CUBIC_METER},
579  SensorDeviceClass.PM10: {CONCENTRATION_MICROGRAMS_PER_CUBIC_METER},
580  SensorDeviceClass.PM25: {CONCENTRATION_MICROGRAMS_PER_CUBIC_METER},
581  SensorDeviceClass.POWER_FACTOR: {PERCENTAGE, None},
582  SensorDeviceClass.POWER: {
583  UnitOfPower.WATT,
584  UnitOfPower.KILO_WATT,
585  UnitOfPower.MEGA_WATT,
586  UnitOfPower.GIGA_WATT,
587  UnitOfPower.TERA_WATT,
588  },
589  SensorDeviceClass.PRECIPITATION: set(UnitOfPrecipitationDepth),
590  SensorDeviceClass.PRECIPITATION_INTENSITY: set(UnitOfVolumetricFlux),
591  SensorDeviceClass.PRESSURE: set(UnitOfPressure),
592  SensorDeviceClass.REACTIVE_POWER: {UnitOfReactivePower.VOLT_AMPERE_REACTIVE},
593  SensorDeviceClass.SIGNAL_STRENGTH: {
594  SIGNAL_STRENGTH_DECIBELS,
595  SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
596  },
597  SensorDeviceClass.SOUND_PRESSURE: set(UnitOfSoundPressure),
598  SensorDeviceClass.SPEED: set(UnitOfSpeed).union(set(UnitOfVolumetricFlux)),
599  SensorDeviceClass.SULPHUR_DIOXIDE: {CONCENTRATION_MICROGRAMS_PER_CUBIC_METER},
600  SensorDeviceClass.TEMPERATURE: set(UnitOfTemperature),
601  SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: {
602  CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
603  },
604  SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: {
605  CONCENTRATION_PARTS_PER_BILLION,
606  CONCENTRATION_PARTS_PER_MILLION,
607  },
608  SensorDeviceClass.VOLTAGE: set(UnitOfElectricPotential),
609  SensorDeviceClass.VOLUME: set(UnitOfVolume),
610  SensorDeviceClass.VOLUME_FLOW_RATE: set(UnitOfVolumeFlowRate),
611  SensorDeviceClass.VOLUME_STORAGE: set(UnitOfVolume),
612  SensorDeviceClass.WATER: {
613  UnitOfVolume.CENTUM_CUBIC_FEET,
614  UnitOfVolume.CUBIC_FEET,
615  UnitOfVolume.CUBIC_METERS,
616  UnitOfVolume.GALLONS,
617  UnitOfVolume.LITERS,
618  },
619  SensorDeviceClass.WEIGHT: set(UnitOfMass),
620  SensorDeviceClass.WIND_SPEED: set(UnitOfSpeed),
621 }
622 
623 DEVICE_CLASS_STATE_CLASSES: dict[SensorDeviceClass, set[SensorStateClass]] = {
624  SensorDeviceClass.APPARENT_POWER: {SensorStateClass.MEASUREMENT},
625  SensorDeviceClass.AQI: {SensorStateClass.MEASUREMENT},
626  SensorDeviceClass.AREA: set(SensorStateClass),
627  SensorDeviceClass.ATMOSPHERIC_PRESSURE: {SensorStateClass.MEASUREMENT},
628  SensorDeviceClass.BATTERY: {SensorStateClass.MEASUREMENT},
629  SensorDeviceClass.BLOOD_GLUCOSE_CONCENTRATION: {SensorStateClass.MEASUREMENT},
630  SensorDeviceClass.CO: {SensorStateClass.MEASUREMENT},
631  SensorDeviceClass.CO2: {SensorStateClass.MEASUREMENT},
632  SensorDeviceClass.CONDUCTIVITY: {SensorStateClass.MEASUREMENT},
633  SensorDeviceClass.CURRENT: {SensorStateClass.MEASUREMENT},
634  SensorDeviceClass.DATA_RATE: {SensorStateClass.MEASUREMENT},
635  SensorDeviceClass.DATA_SIZE: set(SensorStateClass),
636  SensorDeviceClass.DATE: set(),
637  SensorDeviceClass.DISTANCE: set(SensorStateClass),
638  SensorDeviceClass.DURATION: set(SensorStateClass),
639  SensorDeviceClass.ENERGY: {
640  SensorStateClass.TOTAL,
641  SensorStateClass.TOTAL_INCREASING,
642  },
643  SensorDeviceClass.ENERGY_STORAGE: {SensorStateClass.MEASUREMENT},
644  SensorDeviceClass.ENUM: set(),
645  SensorDeviceClass.FREQUENCY: {SensorStateClass.MEASUREMENT},
646  SensorDeviceClass.GAS: {SensorStateClass.TOTAL, SensorStateClass.TOTAL_INCREASING},
647  SensorDeviceClass.HUMIDITY: {SensorStateClass.MEASUREMENT},
648  SensorDeviceClass.ILLUMINANCE: {SensorStateClass.MEASUREMENT},
649  SensorDeviceClass.IRRADIANCE: {SensorStateClass.MEASUREMENT},
650  SensorDeviceClass.MOISTURE: {SensorStateClass.MEASUREMENT},
651  SensorDeviceClass.MONETARY: {SensorStateClass.TOTAL},
652  SensorDeviceClass.NITROGEN_DIOXIDE: {SensorStateClass.MEASUREMENT},
653  SensorDeviceClass.NITROGEN_MONOXIDE: {SensorStateClass.MEASUREMENT},
654  SensorDeviceClass.NITROUS_OXIDE: {SensorStateClass.MEASUREMENT},
655  SensorDeviceClass.OZONE: {SensorStateClass.MEASUREMENT},
656  SensorDeviceClass.PH: {SensorStateClass.MEASUREMENT},
657  SensorDeviceClass.PM1: {SensorStateClass.MEASUREMENT},
658  SensorDeviceClass.PM10: {SensorStateClass.MEASUREMENT},
659  SensorDeviceClass.PM25: {SensorStateClass.MEASUREMENT},
660  SensorDeviceClass.POWER_FACTOR: {SensorStateClass.MEASUREMENT},
661  SensorDeviceClass.POWER: {SensorStateClass.MEASUREMENT},
662  SensorDeviceClass.PRECIPITATION: set(SensorStateClass),
663  SensorDeviceClass.PRECIPITATION_INTENSITY: {SensorStateClass.MEASUREMENT},
664  SensorDeviceClass.PRESSURE: {SensorStateClass.MEASUREMENT},
665  SensorDeviceClass.REACTIVE_POWER: {SensorStateClass.MEASUREMENT},
666  SensorDeviceClass.SIGNAL_STRENGTH: {SensorStateClass.MEASUREMENT},
667  SensorDeviceClass.SOUND_PRESSURE: {SensorStateClass.MEASUREMENT},
668  SensorDeviceClass.SPEED: {SensorStateClass.MEASUREMENT},
669  SensorDeviceClass.SULPHUR_DIOXIDE: {SensorStateClass.MEASUREMENT},
670  SensorDeviceClass.TEMPERATURE: {SensorStateClass.MEASUREMENT},
671  SensorDeviceClass.TIMESTAMP: set(),
672  SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: {SensorStateClass.MEASUREMENT},
673  SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: {SensorStateClass.MEASUREMENT},
674  SensorDeviceClass.VOLTAGE: {SensorStateClass.MEASUREMENT},
675  SensorDeviceClass.VOLUME: {
676  SensorStateClass.TOTAL,
677  SensorStateClass.TOTAL_INCREASING,
678  },
679  SensorDeviceClass.VOLUME_STORAGE: {SensorStateClass.MEASUREMENT},
680  SensorDeviceClass.VOLUME_FLOW_RATE: {SensorStateClass.MEASUREMENT},
681  SensorDeviceClass.WATER: {
682  SensorStateClass.TOTAL,
683  SensorStateClass.TOTAL_INCREASING,
684  },
685  SensorDeviceClass.WEIGHT: {
686  SensorStateClass.MEASUREMENT,
687  SensorStateClass.TOTAL,
688  SensorStateClass.TOTAL_INCREASING,
689  },
690  SensorDeviceClass.WIND_SPEED: {SensorStateClass.MEASUREMENT},
691 }
692 
693 # These can be removed if no deprecated constant are in this module anymore
694 __getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
695 __dir__ = partial(
696  dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
697 )
698 __all__ = all_with_deprecated_constants(globals())
list[str] all_with_deprecated_constants(dict[str, Any] module_globals)
Definition: deprecation.py:356