def register_action(name, action_type, schema): return ACTION_REGISTRY.register(name, action_type, schema) def register_condition(name, condition_type, schema): return CONDITION_REGISTRY.register(name, condition_type, schema) Action = cg.esphome_ns.class_("Action") Trigger = cg.esphome_ns.class_("Trigger") ACTION_REGISTRY = Registry() Condition = cg.esphome_ns.class_("Condition") CONDITION_REGISTRY = Registry() validate_action = cv.validate_registry_entry("action", ACTION_REGISTRY) validate_action_list = cv.validate_registry("action", ACTION_REGISTRY) validate_condition = cv.validate_registry_entry("condition", CONDITION_REGISTRY) validate_condition_list = cv.validate_registry("condition", CONDITION_REGISTRY) def validate_potentially_and_condition(value): if isinstance(value, list): with cv.remove_prepend_path(["and"]): return validate_condition({"and": value}) return validate_condition(value) DelayAction = cg.esphome_ns.class_("DelayAction", Action, cg.Component) LambdaAction = cg.esphome_ns.class_("LambdaAction", Action)
def declare_protocol(name): data = ns.struct(f"{name}Data") binary_sensor_ = ns.class_(f"{name}BinarySensor", RemoteReceiverBinarySensorBase) trigger = ns.class_(f"{name}Trigger", RemoteReceiverTrigger) action = ns.class_(f"{name}Action", RemoteTransmitterActionBase) dumper = ns.class_(f"{name}Dumper", RemoteTransmitterDumper) return data, binary_sensor_, trigger, action, dumper BINARY_SENSOR_REGISTRY = Registry( binary_sensor.BINARY_SENSOR_SCHEMA.extend({ cv.GenerateID(CONF_RECEIVER_ID): cv.use_id(RemoteReceiverBase), })) validate_binary_sensor = cv.validate_registry_entry("remote receiver", BINARY_SENSOR_REGISTRY) TRIGGER_REGISTRY = SimpleRegistry() DUMPER_REGISTRY = Registry({ cv.Optional(CONF_RECEIVER_ID): cv.invalid( "This has been removed in ESPHome 1.20.0 and the dumper attaches directly to the parent receiver." ), }) def validate_dumpers(value): if isinstance(value, str) and value.lower() == "all": return validate_dumpers(list(DUMPER_REGISTRY.keys())) return cv.validate_registry("dumper", DUMPER_REGISTRY)(value)
def register_action(name, action_type, schema): return ACTION_REGISTRY.register(name, action_type, schema) def register_condition(name, condition_type, schema): return CONDITION_REGISTRY.register(name, condition_type, schema) Action = cg.esphome_ns.class_('Action') Trigger = cg.esphome_ns.class_('Trigger') ACTION_REGISTRY = Registry() Condition = cg.esphome_ns.class_('Condition') CONDITION_REGISTRY = Registry() validate_action = cv.validate_registry_entry('action', ACTION_REGISTRY) validate_action_list = cv.validate_registry('action', ACTION_REGISTRY) validate_condition = cv.validate_registry_entry('condition', CONDITION_REGISTRY) validate_condition_list = cv.validate_registry('condition', CONDITION_REGISTRY) def validate_potentially_and_condition(value): if isinstance(value, list): with cv.remove_prepend_path(['and']): return validate_condition({ 'and': value }) return validate_condition(value) DelayAction = cg.esphome_ns.class_('DelayAction', Action, cg.Component)