Пример #1
0
def to_code(config):
    for template_ in process_lambda(config[CONF_LAMBDA], [],
                                    return_type=std_vector.template(switch.SwitchPtr)):
        yield

    rhs = CustomSwitchConstructor(template_)
    custom = variable(config[CONF_ID], rhs)
    for i, conf in enumerate(config[CONF_SWITCHES]):
        rhs = custom.Pget_switch(i)
        add(rhs.set_name(conf[CONF_NAME]))
        switch.register_switch(rhs, conf)
def to_code(config):
    for remote in get_variable(config[CONF_REMOTE_TRANSMITTER_ID]):
        yield
    rhs = transmitter_base(config)
    transmitter = Pvariable(config[CONF_TRANSMITTER_ID], rhs)

    if CONF_REPEAT in config:
        if isinstance(config[CONF_REPEAT], int):
            times = config[CONF_REPEAT]
            wait_us = 1000
        else:
            times = config[CONF_REPEAT][CONF_TIMES]
            wait_us = config[CONF_REPEAT][CONF_WAIT_TIME]
        add(transmitter.set_repeat(times, wait_us))

    switch.register_switch(remote.add_transmitter(transmitter), config)
Пример #3
0
def to_code(config):
    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)

    output_ = yield cg.get_variable(config[CONF_OUTPUT])
    cg.add(var.set_output(output_))
Пример #4
0
def to_code(config):
    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)

    paren = yield cg.get_variable(config[CONF_TUYA_ID])
    cg.add(var.set_tuya_parent(paren))

    cg.add(var.set_switch_id(config[CONF_SWITCH_DATAPOINT]))
Пример #5
0
def to_code(config):
    template_ = yield cg.process_lambda(
        config[CONF_LAMBDA], [], return_type=cg.std_vector.template(switch.SwitchPtr))

    rhs = CustomSwitchConstructor(template_)
    var = cg.variable(config[CONF_ID], rhs)
    for i, conf in enumerate(config[CONF_SWITCHES]):
        switch_ = cg.Pvariable(conf[CONF_ID], var.get_switch(i))
        yield switch.register_switch(switch_, conf)
Пример #6
0
def to_code(config):
    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)
    yield esp32_ble_client.register_ble_device(var, config)

    cg.add(var.set_address(config[CONF_MAC_ADDRESS].as_hex))
    cg.add(var.set_data_id(config[CONF_UID]))
    cg.add(var.set_data(config[CONF_DATA]))
def to_code(config):
    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)
    yield uart.register_uart_device(var, config)

    data = config[CONF_DATA]
    if isinstance(data, bytes):
        data = [HexInt(x) for x in data]
    cg.add(var.set_data(data))
Пример #8
0
def to_code(config):
    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)
    yield spi.register_spi_device(var, config)

    cg.add(var.set_q7rf_device_id(config[CONF_Q7RF_DEVICE_ID]))
    if CONF_Q7RF_RESEND_INTERVAL in config:
        cg.add(var.set_q7rf_resend_interval(config[CONF_Q7RF_RESEND_INTERVAL]))
    if CONF_Q7RF_TURN_ON_WATCHDOG_INTERVAL in config:
        cg.add(
            var.set_q7rf_turn_on_watchdog_interval(
                config[CONF_Q7RF_TURN_ON_WATCHDOG_INTERVAL]))
Пример #9
0
def to_code(config):
    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)

    pin = yield cg.gpio_pin_expression(config[CONF_PIN])
    cg.add(var.set_pin(pin))

    cg.add(var.set_restore_mode(config[CONF_RESTORE_MODE]))

    if CONF_INTERLOCK in config:
        interlock = []
        for it in config[CONF_INTERLOCK]:
            lock = yield cg.get_variable(it)
            interlock.append(lock)
        cg.add(var.set_interlock(interlock))
Пример #10
0
def to_code(config):
    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)

    if CONF_LAMBDA in config:
        template_ = yield cg.process_lambda(
            config[CONF_LAMBDA], [], return_type=cg.optional.template(bool))
        cg.add(var.set_state_lambda(template_))
    if CONF_TURN_OFF_ACTION in config:
        yield automation.build_automation(var.get_turn_off_trigger(), [],
                                          config[CONF_TURN_OFF_ACTION])
    if CONF_TURN_ON_ACTION in config:
        yield automation.build_automation(var.get_turn_on_trigger(), [],
                                          config[CONF_TURN_ON_ACTION])
    cg.add(var.set_optimistic(config[CONF_OPTIMISTIC]))
    cg.add(var.set_assumed_state(config[CONF_ASSUMED_STATE]))
    cg.add(var.set_restore_state(config[CONF_RESTORE_STATE]))
Пример #11
0
def to_code(config):
    # TODO: Seems like there should be a more object oriented way to do this.
    # Include the gpio_switch code incase a gpio.switch isn't used.
    CORE.extra_source_files.update({Path('esphome/components/gpio/switch/gpio_switch.h'): loader.SourceFile('esphome.components.gpio.switch', 'gpio_switch.h')})
    CORE.extra_source_files.update({Path('esphome/components/gpio/switch/gpio_switch.cpp'): loader.SourceFile('esphome.components.gpio.switch', 'gpio_switch.cpp')})

    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)

    if config[CONF_DOSAGE_SENSOR][CONF_NAME] == "Default":
        config[CONF_DOSAGE_SENSOR][CONF_NAME] = f"{ config[CONF_NAME] } Dosage"

    sens = yield sensor.new_sensor(config[CONF_DOSAGE_SENSOR])
    cg.add(var.set_sensor(sens))

    cg.add(var.set_dosage(config[CONF_DOSAGE]))
    cg.add(var.set_topic_dose_for_seconds(get_topic("dose_for_seconds", config)))
    cg.add(var.set_topic_dose_for_ms(get_topic("dose_for_ms", config)))
    cg.add(var.set_topic_dose(get_topic("dose", config)))
    cg.add(var.set_topic_set_dosage(get_topic("set_dosage", config)))

    if CONF_EXACT_TIMING in config:
        cg.add(var.set_exact_timing(config[CONF_EXACT_TIMING]))

    # TODO: Everything below here came from GPIOSwitch. It'd be better to find a way to use this DRYly.
    pin = yield cg.gpio_pin_expression(config[CONF_PIN])
    cg.add(var.set_pin(pin))

    cg.add(var.set_restore_mode(config[CONF_RESTORE_MODE]))

    if CONF_INTERLOCK in config:
        interlock = []
        for it in config[CONF_INTERLOCK]:
            lock = yield cg.get_variable(it)
            interlock.append(lock)
        cg.add(var.set_interlock(interlock))
        cg.add(var.set_interlock_wait_time(config[CONF_INTERLOCK_WAIT_TIME]))
Пример #12
0
def to_code(config):
    var = cg.new_Pvariable(config[CONF_ID])
    yield cg.register_component(var, config)
    yield switch.register_switch(var, config)