Add state classes to Tomorrowio sensors (#100692)

This commit is contained in:
Dennis 2023-09-26 12:33:39 +02:00 committed by GitHub
parent 667f4b1ca8
commit e5a151c4c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -115,6 +115,7 @@ SENSOR_TYPES = (
name="Feels Like", name="Feels Like",
native_unit_of_measurement=UnitOfTemperature.CELSIUS, native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE, device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
), ),
TomorrowioSensorEntityDescription( TomorrowioSensorEntityDescription(
key="dew_point", key="dew_point",
@ -123,6 +124,7 @@ SENSOR_TYPES = (
icon="mdi:thermometer-water", icon="mdi:thermometer-water",
native_unit_of_measurement=UnitOfTemperature.CELSIUS, native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE, device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
), ),
# Data comes in as hPa # Data comes in as hPa
TomorrowioSensorEntityDescription( TomorrowioSensorEntityDescription(
@ -131,6 +133,7 @@ SENSOR_TYPES = (
name="Pressure (Surface Level)", name="Pressure (Surface Level)",
native_unit_of_measurement=UnitOfPressure.HPA, native_unit_of_measurement=UnitOfPressure.HPA,
device_class=SensorDeviceClass.PRESSURE, device_class=SensorDeviceClass.PRESSURE,
state_class=SensorStateClass.MEASUREMENT,
), ),
# Data comes in as W/m^2, convert to BTUs/(hr * ft^2) for imperial # Data comes in as W/m^2, convert to BTUs/(hr * ft^2) for imperial
# https://www.theunitconverter.com/watt-square-meter-to-btu-hour-square-foot-conversion/ # https://www.theunitconverter.com/watt-square-meter-to-btu-hour-square-foot-conversion/
@ -142,6 +145,7 @@ SENSOR_TYPES = (
unit_metric=UnitOfIrradiance.WATTS_PER_SQUARE_METER, unit_metric=UnitOfIrradiance.WATTS_PER_SQUARE_METER,
imperial_conversion=(1 / 3.15459), imperial_conversion=(1 / 3.15459),
device_class=SensorDeviceClass.IRRADIANCE, device_class=SensorDeviceClass.IRRADIANCE,
state_class=SensorStateClass.MEASUREMENT,
), ),
# Data comes in as km, convert to miles for imperial # Data comes in as km, convert to miles for imperial
TomorrowioSensorEntityDescription( TomorrowioSensorEntityDescription(
@ -151,6 +155,8 @@ SENSOR_TYPES = (
icon="mdi:cloud-arrow-down", icon="mdi:cloud-arrow-down",
unit_imperial=UnitOfLength.MILES, unit_imperial=UnitOfLength.MILES,
unit_metric=UnitOfLength.KILOMETERS, unit_metric=UnitOfLength.KILOMETERS,
device_class=SensorDeviceClass.DISTANCE,
state_class=SensorStateClass.MEASUREMENT,
imperial_conversion=lambda val: DistanceConverter.convert( imperial_conversion=lambda val: DistanceConverter.convert(
val, val,
UnitOfLength.KILOMETERS, UnitOfLength.KILOMETERS,
@ -165,6 +171,8 @@ SENSOR_TYPES = (
icon="mdi:cloud-arrow-up", icon="mdi:cloud-arrow-up",
unit_imperial=UnitOfLength.MILES, unit_imperial=UnitOfLength.MILES,
unit_metric=UnitOfLength.KILOMETERS, unit_metric=UnitOfLength.KILOMETERS,
device_class=SensorDeviceClass.DISTANCE,
state_class=SensorStateClass.MEASUREMENT,
imperial_conversion=lambda val: DistanceConverter.convert( imperial_conversion=lambda val: DistanceConverter.convert(
val, val,
UnitOfLength.KILOMETERS, UnitOfLength.KILOMETERS,
@ -186,6 +194,8 @@ SENSOR_TYPES = (
icon="mdi:weather-windy", icon="mdi:weather-windy",
unit_imperial=UnitOfSpeed.MILES_PER_HOUR, unit_imperial=UnitOfSpeed.MILES_PER_HOUR,
unit_metric=UnitOfSpeed.METERS_PER_SECOND, unit_metric=UnitOfSpeed.METERS_PER_SECOND,
device_class=SensorDeviceClass.SPEED,
state_class=SensorStateClass.MEASUREMENT,
imperial_conversion=lambda val: SpeedConverter.convert( imperial_conversion=lambda val: SpeedConverter.convert(
val, UnitOfSpeed.METERS_PER_SECOND, UnitOfSpeed.MILES_PER_HOUR val, UnitOfSpeed.METERS_PER_SECOND, UnitOfSpeed.MILES_PER_HOUR
), ),
@ -207,6 +217,7 @@ SENSOR_TYPES = (
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
multiplication_factor=convert_ppb_to_ugm3(48), multiplication_factor=convert_ppb_to_ugm3(48),
device_class=SensorDeviceClass.OZONE, device_class=SensorDeviceClass.OZONE,
state_class=SensorStateClass.MEASUREMENT,
), ),
TomorrowioSensorEntityDescription( TomorrowioSensorEntityDescription(
key="particulate_matter_2_5_mm", key="particulate_matter_2_5_mm",
@ -214,6 +225,7 @@ SENSOR_TYPES = (
name="Particulate Matter < 2.5 μm", name="Particulate Matter < 2.5 μm",
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
device_class=SensorDeviceClass.PM25, device_class=SensorDeviceClass.PM25,
state_class=SensorStateClass.MEASUREMENT,
), ),
TomorrowioSensorEntityDescription( TomorrowioSensorEntityDescription(
key="particulate_matter_10_mm", key="particulate_matter_10_mm",
@ -221,6 +233,7 @@ SENSOR_TYPES = (
name="Particulate Matter < 10 μm", name="Particulate Matter < 10 μm",
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
device_class=SensorDeviceClass.PM10, device_class=SensorDeviceClass.PM10,
state_class=SensorStateClass.MEASUREMENT,
), ),
# Data comes in as ppb, convert to µg/m^3 # Data comes in as ppb, convert to µg/m^3
# Molecular weight of Nitrogen Dioxide is 46.01 # Molecular weight of Nitrogen Dioxide is 46.01
@ -231,6 +244,7 @@ SENSOR_TYPES = (
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
multiplication_factor=convert_ppb_to_ugm3(46.01), multiplication_factor=convert_ppb_to_ugm3(46.01),
device_class=SensorDeviceClass.NITROGEN_DIOXIDE, device_class=SensorDeviceClass.NITROGEN_DIOXIDE,
state_class=SensorStateClass.MEASUREMENT,
), ),
# Data comes in as ppb, convert to ppm # Data comes in as ppb, convert to ppm
TomorrowioSensorEntityDescription( TomorrowioSensorEntityDescription(
@ -240,6 +254,7 @@ SENSOR_TYPES = (
native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION, native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
multiplication_factor=1 / 1000, multiplication_factor=1 / 1000,
device_class=SensorDeviceClass.CO, device_class=SensorDeviceClass.CO,
state_class=SensorStateClass.MEASUREMENT,
), ),
# Data comes in as ppb, convert to µg/m^3 # Data comes in as ppb, convert to µg/m^3
# Molecular weight of Sulphur Dioxide is 64.07 # Molecular weight of Sulphur Dioxide is 64.07
@ -250,12 +265,14 @@ SENSOR_TYPES = (
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
multiplication_factor=convert_ppb_to_ugm3(64.07), multiplication_factor=convert_ppb_to_ugm3(64.07),
device_class=SensorDeviceClass.SULPHUR_DIOXIDE, device_class=SensorDeviceClass.SULPHUR_DIOXIDE,
state_class=SensorStateClass.MEASUREMENT,
), ),
TomorrowioSensorEntityDescription( TomorrowioSensorEntityDescription(
key="us_epa_air_quality_index", key="us_epa_air_quality_index",
attribute=TMRW_ATTR_EPA_AQI, attribute=TMRW_ATTR_EPA_AQI,
name="US EPA Air Quality Index", name="US EPA Air Quality Index",
device_class=SensorDeviceClass.AQI, device_class=SensorDeviceClass.AQI,
state_class=SensorStateClass.MEASUREMENT,
), ),
TomorrowioSensorEntityDescription( TomorrowioSensorEntityDescription(
key="us_epa_primary_pollutant", key="us_epa_primary_pollutant",