Use new device classes in GIOS integration (#54743)

* Use new device classes

* Clean up
This commit is contained in:
Maciej Bieniek 2021-08-18 05:35:05 +02:00 committed by GitHub
parent bd550c4559
commit 10058ea3f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 17 deletions

View File

@ -5,7 +5,16 @@ from datetime import timedelta
from typing import Final from typing import Final
from homeassistant.components.sensor import STATE_CLASS_MEASUREMENT from homeassistant.components.sensor import STATE_CLASS_MEASUREMENT
from homeassistant.const import CONCENTRATION_MICROGRAMS_PER_CUBIC_METER from homeassistant.const import (
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
DEVICE_CLASS_AQI,
DEVICE_CLASS_CO,
DEVICE_CLASS_NITROGEN_DIOXIDE,
DEVICE_CLASS_OZONE,
DEVICE_CLASS_PM10,
DEVICE_CLASS_PM25,
DEVICE_CLASS_SULPHUR_DIOXIDE,
)
from .model import GiosSensorEntityDescription from .model import GiosSensorEntityDescription
@ -36,47 +45,55 @@ SENSOR_TYPES: Final[tuple[GiosSensorEntityDescription, ...]] = (
GiosSensorEntityDescription( GiosSensorEntityDescription(
key=ATTR_AQI, key=ATTR_AQI,
name="AQI", name="AQI",
device_class=DEVICE_CLASS_AQI,
value=None, value=None,
), ),
GiosSensorEntityDescription( GiosSensorEntityDescription(
key=ATTR_C6H6, key=ATTR_C6H6,
name="C6H6", name="C6H6",
icon="mdi:molecule",
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_MEASUREMENT,
), ),
GiosSensorEntityDescription( GiosSensorEntityDescription(
key=ATTR_CO, key=ATTR_CO,
name="CO", name="CO",
device_class=DEVICE_CLASS_CO,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_MEASUREMENT,
), ),
GiosSensorEntityDescription( GiosSensorEntityDescription(
key=ATTR_NO2, key=ATTR_NO2,
name="NO2", name="NO2",
device_class=DEVICE_CLASS_NITROGEN_DIOXIDE,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_MEASUREMENT,
), ),
GiosSensorEntityDescription( GiosSensorEntityDescription(
key=ATTR_O3, key=ATTR_O3,
name="O3", name="O3",
device_class=DEVICE_CLASS_OZONE,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_MEASUREMENT,
), ),
GiosSensorEntityDescription( GiosSensorEntityDescription(
key=ATTR_PM10, key=ATTR_PM10,
name="PM10", name="PM10",
device_class=DEVICE_CLASS_PM10,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_MEASUREMENT,
), ),
GiosSensorEntityDescription( GiosSensorEntityDescription(
key=ATTR_PM25, key=ATTR_PM25,
name="PM2.5", name="PM2.5",
device_class=DEVICE_CLASS_PM25,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_MEASUREMENT,
), ),
GiosSensorEntityDescription( GiosSensorEntityDescription(
key=ATTR_SO2, key=ATTR_SO2,
name="SO2", name="SO2",
device_class=DEVICE_CLASS_SULPHUR_DIOXIDE,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_MEASUREMENT,
), ),

View File

@ -86,7 +86,6 @@ class GiosSensor(CoordinatorEntity, SensorEntity):
"manufacturer": MANUFACTURER, "manufacturer": MANUFACTURER,
"entry_type": "service", "entry_type": "service",
} }
self._attr_icon = "mdi:blur"
self._attr_name = f"{name} {description.name}" self._attr_name = f"{name} {description.name}"
self._attr_unique_id = f"{coordinator.gios.station_id}-{description.key}" self._attr_unique_id = f"{coordinator.gios.station_id}-{description.key}"
self._attrs: dict[str, Any] = { self._attrs: dict[str, Any] = {

View File

@ -18,9 +18,17 @@ from homeassistant.components.sensor import (
) )
from homeassistant.const import ( from homeassistant.const import (
ATTR_ATTRIBUTION, ATTR_ATTRIBUTION,
ATTR_DEVICE_CLASS,
ATTR_ICON, ATTR_ICON,
ATTR_UNIT_OF_MEASUREMENT, ATTR_UNIT_OF_MEASUREMENT,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
DEVICE_CLASS_AQI,
DEVICE_CLASS_CO,
DEVICE_CLASS_NITROGEN_DIOXIDE,
DEVICE_CLASS_OZONE,
DEVICE_CLASS_PM10,
DEVICE_CLASS_PM25,
DEVICE_CLASS_SULPHUR_DIOXIDE,
STATE_UNAVAILABLE, STATE_UNAVAILABLE,
) )
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
@ -45,7 +53,7 @@ async def test_sensor(hass):
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur" assert state.attributes.get(ATTR_ICON) == "mdi:molecule"
assert state.attributes.get(ATTR_INDEX) == "bardzo dobry" assert state.attributes.get(ATTR_INDEX) == "bardzo dobry"
entry = registry.async_get("sensor.home_c6h6") entry = registry.async_get("sensor.home_c6h6")
@ -57,12 +65,12 @@ async def test_sensor(hass):
assert state.state == "252" assert state.state == "252"
assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION
assert state.attributes.get(ATTR_STATION) == "Test Name 1" assert state.attributes.get(ATTR_STATION) == "Test Name 1"
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_CO
assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
assert ( assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) == "dobry" assert state.attributes.get(ATTR_INDEX) == "dobry"
entry = registry.async_get("sensor.home_co") entry = registry.async_get("sensor.home_co")
@ -74,12 +82,12 @@ async def test_sensor(hass):
assert state.state == "7" assert state.state == "7"
assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION
assert state.attributes.get(ATTR_STATION) == "Test Name 1" assert state.attributes.get(ATTR_STATION) == "Test Name 1"
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_NITROGEN_DIOXIDE
assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
assert ( assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) == "dobry" assert state.attributes.get(ATTR_INDEX) == "dobry"
entry = registry.async_get("sensor.home_no2") entry = registry.async_get("sensor.home_no2")
@ -91,12 +99,12 @@ async def test_sensor(hass):
assert state.state == "96" assert state.state == "96"
assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION
assert state.attributes.get(ATTR_STATION) == "Test Name 1" assert state.attributes.get(ATTR_STATION) == "Test Name 1"
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_OZONE
assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
assert ( assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) == "dobry" assert state.attributes.get(ATTR_INDEX) == "dobry"
entry = registry.async_get("sensor.home_o3") entry = registry.async_get("sensor.home_o3")
@ -108,12 +116,12 @@ async def test_sensor(hass):
assert state.state == "17" assert state.state == "17"
assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION
assert state.attributes.get(ATTR_STATION) == "Test Name 1" assert state.attributes.get(ATTR_STATION) == "Test Name 1"
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_PM10
assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
assert ( assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) == "dobry" assert state.attributes.get(ATTR_INDEX) == "dobry"
entry = registry.async_get("sensor.home_pm10") entry = registry.async_get("sensor.home_pm10")
@ -125,12 +133,12 @@ async def test_sensor(hass):
assert state.state == "4" assert state.state == "4"
assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION
assert state.attributes.get(ATTR_STATION) == "Test Name 1" assert state.attributes.get(ATTR_STATION) == "Test Name 1"
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_PM25
assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
assert ( assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) == "dobry" assert state.attributes.get(ATTR_INDEX) == "dobry"
entry = registry.async_get("sensor.home_pm2_5") entry = registry.async_get("sensor.home_pm2_5")
@ -142,12 +150,12 @@ async def test_sensor(hass):
assert state.state == "4" assert state.state == "4"
assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION
assert state.attributes.get(ATTR_STATION) == "Test Name 1" assert state.attributes.get(ATTR_STATION) == "Test Name 1"
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_SULPHUR_DIOXIDE
assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT assert state.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
assert ( assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) == "bardzo dobry" assert state.attributes.get(ATTR_INDEX) == "bardzo dobry"
entry = registry.async_get("sensor.home_so2") entry = registry.async_get("sensor.home_so2")
@ -159,9 +167,9 @@ async def test_sensor(hass):
assert state.state == "dobry" assert state.state == "dobry"
assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION assert state.attributes.get(ATTR_ATTRIBUTION) == ATTRIBUTION
assert state.attributes.get(ATTR_STATION) == "Test Name 1" assert state.attributes.get(ATTR_STATION) == "Test Name 1"
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_AQI
assert state.attributes.get(ATTR_STATE_CLASS) is None assert state.attributes.get(ATTR_STATE_CLASS) is None
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) is None assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) is None
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
entry = registry.async_get("sensor.home_aqi") entry = registry.async_get("sensor.home_aqi")
assert entry assert entry
@ -225,7 +233,7 @@ async def test_invalid_indexes(hass):
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur" assert state.attributes.get(ATTR_ICON) == "mdi:molecule"
assert state.attributes.get(ATTR_INDEX) is None assert state.attributes.get(ATTR_INDEX) is None
entry = registry.async_get("sensor.home_c6h6") entry = registry.async_get("sensor.home_c6h6")
@ -242,7 +250,6 @@ async def test_invalid_indexes(hass):
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) is None assert state.attributes.get(ATTR_INDEX) is None
entry = registry.async_get("sensor.home_co") entry = registry.async_get("sensor.home_co")
@ -259,7 +266,6 @@ async def test_invalid_indexes(hass):
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) is None assert state.attributes.get(ATTR_INDEX) is None
entry = registry.async_get("sensor.home_no2") entry = registry.async_get("sensor.home_no2")
@ -276,7 +282,6 @@ async def test_invalid_indexes(hass):
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) is None assert state.attributes.get(ATTR_INDEX) is None
entry = registry.async_get("sensor.home_o3") entry = registry.async_get("sensor.home_o3")
@ -293,7 +298,6 @@ async def test_invalid_indexes(hass):
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) is None assert state.attributes.get(ATTR_INDEX) is None
entry = registry.async_get("sensor.home_pm10") entry = registry.async_get("sensor.home_pm10")
@ -310,7 +314,6 @@ async def test_invalid_indexes(hass):
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) is None assert state.attributes.get(ATTR_INDEX) is None
entry = registry.async_get("sensor.home_pm2_5") entry = registry.async_get("sensor.home_pm2_5")
@ -327,7 +330,6 @@ async def test_invalid_indexes(hass):
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER == CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
) )
assert state.attributes.get(ATTR_ICON) == "mdi:blur"
assert state.attributes.get(ATTR_INDEX) is None assert state.attributes.get(ATTR_INDEX) is None
entry = registry.async_get("sensor.home_so2") entry = registry.async_get("sensor.home_so2")