30 lines
1.3 KiB
Python
30 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
|
|
|
|
from enum import IntEnum
|
|
class DetectStatusEnum(IntEnum):
|
|
warning = 1
|
|
error = 2
|
|
|
|
CONF_DETECT_STATUS = "detect_status"
|
|
CONF_INVERTED = "inverted"
|
|
|
|
app_status_ns = cg.esphome_ns.namespace("app_status")
|
|
AppStatusBinarySensor = app_status_ns.class_("AppStatusBinarySensor", binary_sensor.BinarySensor, cg.PollingComponent)
|
|
|
|
#CONFIG_SCHEMA = binary_sensor.binary_sensor_schema(AppStatusBinarySensor).extend({cv.GenerateID(): cv.declare_id(AppStatusBinarySensor)}).extend(cv.COMPONENT_SCHEMA)
|
|
CONFIG_SCHEMA = binary_sensor.binary_sensor_schema(AppStatusBinarySensor).extend({
|
|
cv.GenerateID(): cv.declare_id(AppStatusBinarySensor),
|
|
#cv.Optional(CONF_DETECT_STATUS, default=["warning", "error"]): cv.ensure_list(cv.enum({e.name: e.value for e in DetectStatusEnum})),
|
|
cv.Optional(CONF_INVERTED, default=False): cv.boolean,
|
|
}).extend(cv.COMPONENT_SCHEMA)
|
|
|
|
async def to_code(config):
|
|
var = await binary_sensor.new_binary_sensor(config)
|
|
await cg.register_component(var, config)
|
|
cg.add(var.set_inverted(config[CONF_INVERTED]))
|