esphome/esphome/components/hydreon_rgxx/binary_sensor.py

53 lines
1.6 KiB
Python

import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import binary_sensor
from esphome.const import (
CONF_ID,
DEVICE_CLASS_COLD,
DEVICE_CLASS_PROBLEM,
)
from . import hydreon_rgxx_ns, HydreonRGxxComponent
CONF_HYDREON_RGXX_ID = "hydreon_rgxx_id"
CONF_TOO_COLD = "too_cold"
CONF_LENS_BAD = "lens_bad"
CONF_EM_SAT = "em_sat"
HydreonRGxxBinarySensor = hydreon_rgxx_ns.class_(
"HydreonRGxxBinaryComponent", cg.Component
)
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(): cv.declare_id(HydreonRGxxBinarySensor),
cv.GenerateID(CONF_HYDREON_RGXX_ID): cv.use_id(HydreonRGxxComponent),
cv.Optional(CONF_TOO_COLD): binary_sensor.binary_sensor_schema(
device_class=DEVICE_CLASS_COLD
),
cv.Optional(CONF_LENS_BAD): binary_sensor.binary_sensor_schema(
device_class=DEVICE_CLASS_PROBLEM,
),
cv.Optional(CONF_EM_SAT): binary_sensor.binary_sensor_schema(
device_class=DEVICE_CLASS_PROBLEM,
),
}
)
async def to_code(config):
main_sensor = await cg.get_variable(config[CONF_HYDREON_RGXX_ID])
bin_component = cg.new_Pvariable(config[CONF_ID], main_sensor)
await cg.register_component(bin_component, config)
mapping = {
CONF_TOO_COLD: main_sensor.set_too_cold_sensor,
CONF_LENS_BAD: main_sensor.set_lens_bad_sensor,
CONF_EM_SAT: main_sensor.set_em_sat_sensor,
}
for key, value in mapping.items():
if key in config:
sensor = await binary_sensor.new_binary_sensor(config[key])
cg.add(value(sensor))