121 lines
3.1 KiB
Python
121 lines
3.1 KiB
Python
|
"""Constants for the Awair component."""
|
||
|
|
||
|
from dataclasses import dataclass
|
||
|
from datetime import timedelta
|
||
|
import logging
|
||
|
|
||
|
from python_awair.devices import AwairDevice
|
||
|
|
||
|
from homeassistant.const import (
|
||
|
ATTR_DEVICE_CLASS,
|
||
|
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||
|
CONCENTRATION_PARTS_PER_BILLION,
|
||
|
CONCENTRATION_PARTS_PER_MILLION,
|
||
|
DEVICE_CLASS_HUMIDITY,
|
||
|
DEVICE_CLASS_ILLUMINANCE,
|
||
|
DEVICE_CLASS_TEMPERATURE,
|
||
|
TEMP_CELSIUS,
|
||
|
UNIT_PERCENTAGE,
|
||
|
)
|
||
|
|
||
|
API_CO2 = "carbon_dioxide"
|
||
|
API_DUST = "dust"
|
||
|
API_HUMID = "humidity"
|
||
|
API_LUX = "illuminance"
|
||
|
API_PM10 = "particulate_matter_10"
|
||
|
API_PM25 = "particulate_matter_2_5"
|
||
|
API_SCORE = "score"
|
||
|
API_SPL_A = "sound_pressure_level"
|
||
|
API_TEMP = "temperature"
|
||
|
API_TIMEOUT = 20
|
||
|
API_VOC = "volatile_organic_compounds"
|
||
|
|
||
|
ATTRIBUTION = "Awair air quality sensor"
|
||
|
|
||
|
ATTR_ICON = "icon"
|
||
|
ATTR_LABEL = "label"
|
||
|
ATTR_UNIT = "unit"
|
||
|
ATTR_UNIQUE_ID = "unique_id"
|
||
|
|
||
|
DOMAIN = "awair"
|
||
|
|
||
|
DUST_ALIASES = [API_PM25, API_PM10]
|
||
|
|
||
|
LOGGER = logging.getLogger(__package__)
|
||
|
|
||
|
UPDATE_INTERVAL = timedelta(minutes=5)
|
||
|
|
||
|
SENSOR_TYPES = {
|
||
|
API_SCORE: {
|
||
|
ATTR_DEVICE_CLASS: None,
|
||
|
ATTR_ICON: "mdi:blur",
|
||
|
ATTR_UNIT: UNIT_PERCENTAGE,
|
||
|
ATTR_LABEL: "Awair score",
|
||
|
ATTR_UNIQUE_ID: "score", # matches legacy format
|
||
|
},
|
||
|
API_HUMID: {
|
||
|
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
|
||
|
ATTR_ICON: None,
|
||
|
ATTR_UNIT: UNIT_PERCENTAGE,
|
||
|
ATTR_LABEL: "Humidity",
|
||
|
ATTR_UNIQUE_ID: "HUMID", # matches legacy format
|
||
|
},
|
||
|
API_LUX: {
|
||
|
ATTR_DEVICE_CLASS: DEVICE_CLASS_ILLUMINANCE,
|
||
|
ATTR_ICON: None,
|
||
|
ATTR_UNIT: "lx",
|
||
|
ATTR_LABEL: "Illuminance",
|
||
|
ATTR_UNIQUE_ID: "illuminance",
|
||
|
},
|
||
|
API_SPL_A: {
|
||
|
ATTR_DEVICE_CLASS: None,
|
||
|
ATTR_ICON: "mdi:ear-hearing",
|
||
|
ATTR_UNIT: "dBa",
|
||
|
ATTR_LABEL: "Sound level",
|
||
|
ATTR_UNIQUE_ID: "sound_level",
|
||
|
},
|
||
|
API_VOC: {
|
||
|
ATTR_DEVICE_CLASS: None,
|
||
|
ATTR_ICON: "mdi:cloud",
|
||
|
ATTR_UNIT: CONCENTRATION_PARTS_PER_BILLION,
|
||
|
ATTR_LABEL: "Volatile organic compounds",
|
||
|
ATTR_UNIQUE_ID: "VOC", # matches legacy format
|
||
|
},
|
||
|
API_TEMP: {
|
||
|
ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE,
|
||
|
ATTR_ICON: None,
|
||
|
ATTR_UNIT: TEMP_CELSIUS,
|
||
|
ATTR_LABEL: "Temperature",
|
||
|
ATTR_UNIQUE_ID: "TEMP", # matches legacy format
|
||
|
},
|
||
|
API_PM25: {
|
||
|
ATTR_DEVICE_CLASS: None,
|
||
|
ATTR_ICON: "mdi:blur",
|
||
|
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||
|
ATTR_LABEL: "PM2.5",
|
||
|
ATTR_UNIQUE_ID: "PM25", # matches legacy format
|
||
|
},
|
||
|
API_PM10: {
|
||
|
ATTR_DEVICE_CLASS: None,
|
||
|
ATTR_ICON: "mdi:blur",
|
||
|
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||
|
ATTR_LABEL: "PM10",
|
||
|
ATTR_UNIQUE_ID: "PM10", # matches legacy format
|
||
|
},
|
||
|
API_CO2: {
|
||
|
ATTR_DEVICE_CLASS: None,
|
||
|
ATTR_ICON: "mdi:cloud",
|
||
|
ATTR_UNIT: CONCENTRATION_PARTS_PER_MILLION,
|
||
|
ATTR_LABEL: "Carbon dioxide",
|
||
|
ATTR_UNIQUE_ID: "CO2", # matches legacy format
|
||
|
},
|
||
|
}
|
||
|
|
||
|
|
||
|
@dataclass
|
||
|
class AwairResult:
|
||
|
"""Wrapper class to hold an awair device and set of air data."""
|
||
|
|
||
|
device: AwairDevice
|
||
|
air_data: dict
|