Migrate GIOS air_quality platform to sensor (#52295)
This commit is contained in:
parent
27295d8f58
commit
bdf247faaa
8 changed files with 378 additions and 340 deletions
|
@ -4,18 +4,13 @@ from __future__ import annotations
|
|||
from datetime import timedelta
|
||||
from typing import Final
|
||||
|
||||
from homeassistant.components.air_quality import (
|
||||
ATTR_CO,
|
||||
ATTR_NO2,
|
||||
ATTR_OZONE,
|
||||
ATTR_PM_2_5,
|
||||
ATTR_PM_10,
|
||||
ATTR_SO2,
|
||||
)
|
||||
from homeassistant.components.sensor import ATTR_STATE_CLASS, STATE_CLASS_MEASUREMENT
|
||||
from homeassistant.const import CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
|
||||
|
||||
from .model import SensorDescription
|
||||
|
||||
ATTRIBUTION: Final = "Data provided by GIOŚ"
|
||||
|
||||
ATTR_STATION: Final = "station"
|
||||
CONF_STATION_ID: Final = "station_id"
|
||||
DEFAULT_NAME: Final = "GIOŚ"
|
||||
# Term of service GIOŚ allow downloading data no more than twice an hour.
|
||||
|
@ -23,35 +18,58 @@ SCAN_INTERVAL: Final = timedelta(minutes=30)
|
|||
DOMAIN: Final = "gios"
|
||||
MANUFACTURER: Final = "Główny Inspektorat Ochrony Środowiska"
|
||||
|
||||
API_AQI: Final = "aqi"
|
||||
API_CO: Final = "co"
|
||||
API_NO2: Final = "no2"
|
||||
API_O3: Final = "o3"
|
||||
API_PM10: Final = "pm10"
|
||||
API_PM25: Final = "pm2.5"
|
||||
API_SO2: Final = "so2"
|
||||
|
||||
API_TIMEOUT: Final = 30
|
||||
|
||||
AQI_GOOD: Final = "dobry"
|
||||
AQI_MODERATE: Final = "umiarkowany"
|
||||
AQI_POOR: Final = "dostateczny"
|
||||
AQI_VERY_GOOD: Final = "bardzo dobry"
|
||||
AQI_VERY_POOR: Final = "zły"
|
||||
ATTR_INDEX: Final = "index"
|
||||
ATTR_STATION: Final = "station"
|
||||
ATTR_UNIT: Final = "unit"
|
||||
ATTR_VALUE: Final = "value"
|
||||
ATTR_STATION_NAME: Final = "station_name"
|
||||
|
||||
ICONS_MAP: Final[dict[str, str]] = {
|
||||
AQI_VERY_GOOD: "mdi:emoticon-excited",
|
||||
AQI_GOOD: "mdi:emoticon-happy",
|
||||
AQI_MODERATE: "mdi:emoticon-neutral",
|
||||
AQI_POOR: "mdi:emoticon-sad",
|
||||
AQI_VERY_POOR: "mdi:emoticon-dead",
|
||||
}
|
||||
ATTR_C6H6: Final = "c6h6"
|
||||
ATTR_CO: Final = "co"
|
||||
ATTR_NO2: Final = "no2"
|
||||
ATTR_O3: Final = "o3"
|
||||
ATTR_PM10: Final = "pm10"
|
||||
ATTR_PM25: Final = "pm2.5"
|
||||
ATTR_SO2: Final = "so2"
|
||||
ATTR_AQI: Final = "aqi"
|
||||
|
||||
SENSOR_MAP: Final[dict[str, str]] = {
|
||||
API_CO: ATTR_CO,
|
||||
API_NO2: ATTR_NO2,
|
||||
API_O3: ATTR_OZONE,
|
||||
API_PM10: ATTR_PM_10,
|
||||
API_PM25: ATTR_PM_2_5,
|
||||
API_SO2: ATTR_SO2,
|
||||
SENSOR_TYPES: Final[dict[str, SensorDescription]] = {
|
||||
ATTR_AQI: {},
|
||||
ATTR_C6H6: {
|
||||
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||
ATTR_VALUE: round,
|
||||
},
|
||||
ATTR_CO: {
|
||||
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||
ATTR_VALUE: round,
|
||||
},
|
||||
ATTR_NO2: {
|
||||
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||
ATTR_VALUE: round,
|
||||
},
|
||||
ATTR_O3: {
|
||||
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||
ATTR_VALUE: round,
|
||||
},
|
||||
ATTR_PM10: {
|
||||
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||
ATTR_VALUE: round,
|
||||
},
|
||||
ATTR_PM25: {
|
||||
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||
ATTR_VALUE: round,
|
||||
},
|
||||
ATTR_SO2: {
|
||||
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
|
||||
ATTR_VALUE: round,
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue