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)
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_))
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]))
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)
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))
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]))
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))
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]))
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]))
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield switch.register_switch(var, config)