mirror of
https://github.com/esphome/esphome.git
synced 2026-02-08 00:31:58 +00:00
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
import esphome.codegen as cg
|
|
from esphome.components import sensor
|
|
import esphome.config_validation as cv
|
|
from esphome.const import (
|
|
CONF_PM_2_5,
|
|
CONF_PM_10_0,
|
|
DEVICE_CLASS_AQI,
|
|
STATE_CLASS_MEASUREMENT,
|
|
)
|
|
|
|
from . import AQI_CALCULATION_TYPE, CONF_CALCULATION_TYPE, aqi_ns
|
|
|
|
CODEOWNERS = ["@jasstrong"]
|
|
DEPENDENCIES = ["sensor"]
|
|
|
|
AQISensor = aqi_ns.class_("AQISensor", sensor.Sensor, cg.Component)
|
|
|
|
CONFIG_SCHEMA = (
|
|
sensor.sensor_schema(
|
|
AQISensor,
|
|
accuracy_decimals=0,
|
|
device_class=DEVICE_CLASS_AQI,
|
|
state_class=STATE_CLASS_MEASUREMENT,
|
|
)
|
|
.extend(
|
|
{
|
|
cv.Required(CONF_PM_2_5): cv.use_id(sensor.Sensor),
|
|
cv.Required(CONF_PM_10_0): cv.use_id(sensor.Sensor),
|
|
cv.Required(CONF_CALCULATION_TYPE): cv.enum(
|
|
AQI_CALCULATION_TYPE, upper=True
|
|
),
|
|
}
|
|
)
|
|
.extend(cv.COMPONENT_SCHEMA)
|
|
)
|
|
|
|
|
|
async def to_code(config):
|
|
var = await sensor.new_sensor(config)
|
|
await cg.register_component(var, config)
|
|
|
|
pm_2_5_sensor = await cg.get_variable(config[CONF_PM_2_5])
|
|
cg.add(var.set_pm_2_5_sensor(pm_2_5_sensor))
|
|
|
|
pm_10_0_sensor = await cg.get_variable(config[CONF_PM_10_0])
|
|
cg.add(var.set_pm_10_0_sensor(pm_10_0_sensor))
|
|
|
|
cg.add(var.set_aqi_calculation_type(config[CONF_CALCULATION_TYPE]))
|