Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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