def register_action(name, type_, schema): validator = templatize(schema).extend({ cv.GenerateID(CONF_TRANSMITTER_ID): cv.use_id(RemoteTransmitterBase), cv.Optional(CONF_REPEAT): validate_repeat, }) registerer = automation.register_action( 'remote_transmitter.transmit_{}'.format(name), type_, validator) def decorator(func): @coroutine def new_func(config, action_id, template_arg, args): transmitter = yield cg.get_variable(config[CONF_TRANSMITTER_ID]) var = cg.new_Pvariable(action_id, template_arg) cg.add(var.set_parent(transmitter)) if CONF_REPEAT in config: conf = config[CONF_REPEAT] template_ = yield cg.templatable(conf[CONF_TIMES], args, cg.uint32) cg.add(var.set_send_times(template_)) template_ = yield cg.templatable(conf[CONF_WAIT_TIME], args, cg.uint32) cg.add(var.set_send_wait(template_)) yield coroutine(func)(var, config, args) yield var return registerer(new_func) return decorator
def register_action(name, type_, schema): validator = templatize(schema).extend(MIDEA_ACTION_BASE_SCHEMA) registerer = automation.register_action(f"midea_ac.{name}", type_, validator) def decorator(func): async def new_func(config, action_id, template_arg, args): ac_ = await cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg) cg.add(var.set_parent(ac_)) await coroutine(func)(var, config, args) return var return registerer(new_func) return decorator
def register_action(name, type_, schema): validator = templatize(schema).extend(BASE_REMOTE_TRANSMITTER_SCHEMA) registerer = automation.register_action( f"remote_transmitter.transmit_{name}", type_, validator ) def decorator(func): async def new_func(config, action_id, template_arg, args): transmitter = await cg.get_variable(config[CONF_TRANSMITTER_ID]) var = cg.new_Pvariable(action_id, template_arg) cg.add(var.set_parent(transmitter)) if CONF_REPEAT in config: conf = config[CONF_REPEAT] template_ = await cg.templatable(conf[CONF_TIMES], args, cg.uint32) cg.add(var.set_send_times(template_)) template_ = await cg.templatable(conf[CONF_WAIT_TIME], args, cg.uint32) cg.add(var.set_send_wait(template_)) await coroutine(func)(var, config, args) return var return registerer(new_func) return decorator