Files
esphome-rgb-status-leds/components/app_status/binary_sensor.py

31 lines
1.3 KiB
Python

# dlitz 2025
# Ref: https://github.com/esphome/starter-components/blob/main/components/empty_binary_sensor/binary_sensor.py
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import binary_sensor
from esphome.const import CONF_ID
CONF_DETECT_STATUS = "detect_status"
CONF_WARNING = "warning"
CONF_ERROR = "error"
DETECT_STATUS_ENUM = {
CONF_WARNING: 1,
CONF_ERROR: 2,
}
app_status_ns = cg.esphome_ns.namespace("app_status")
AppStatus = app_status_ns.class_("AppStatus", binary_sensor.BinarySensor, cg.PollingComponent)
#CONFIG_SCHEMA = binary_sensor.binary_sensor_schema(AppStatus).extend({cv.GenerateID(): cv.declare_id(AppStatus)}).extend(cv.COMPONENT_SCHEMA)
CONFIG_SCHEMA = binary_sensor.binary_sensor_schema(AppStatus).extend({
cv.GenerateID(): cv.declare_id(AppStatus),
cv.Optional(CONF_DETECT_STATUS, default=[CONF_WARNING, CONF_ERROR]): cv.ensure_list(cv.enum(DETECT_STATUS_ENUM)),
}).extend(cv.polling_component_schema(default_update_interval="60s"))
async def to_code(config):
var = await binary_sensor.new_binary_sensor(config)
await cg.register_component(var, config)
cg.add(var.set_include_warnings(CONF_WARNING in config[CONF_DETECT_STATUS]))
cg.add(var.set_include_errors(CONF_ERROR in config[CONF_DETECT_STATUS]))