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
def rc_switch_type_b_action(var, config, args): proto = yield cg.templatable(config[CONF_PROTOCOL], args, RCSwitchBase, to_exp=build_rc_switch_protocol) cg.add(var.set_protocol(proto)) cg.add( var.set_address((yield cg.templatable(config[CONF_ADDRESS], args, cg.uint8)))) cg.add( var.set_channel((yield cg.templatable(config[CONF_CHANNEL], args, cg.uint8)))) cg.add( var.set_state((yield cg.templatable(config[CONF_STATE], args, bool))))
def rc_switch_type_a_action(var, config, args): proto = yield cg.templatable(config[CONF_PROTOCOL], args, RCSwitchBase, to_exp=build_rc_switch_protocol) cg.add(var.set_protocol(proto)) cg.add( var.set_group((yield cg.templatable(config[CONF_GROUP], args, cg.std_string)))) cg.add( var.set_device((yield cg.templatable(config[CONF_DEVICE], args, cg.std_string)))) cg.add( var.set_state((yield cg.templatable(config[CONF_STATE], args, bool))))
def cover_template_publish_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) if CONF_STATE in config: template_ = yield cg.templatable(config[CONF_STATE], args, float) cg.add(var.set_position(template_)) if CONF_POSITION in config: template_ = yield cg.templatable(config[CONF_POSITION], args, float) cg.add(var.set_position(template_)) if CONF_CURRENT_OPERATION in config: template_ = yield cg.templatable(config[CONF_CURRENT_OPERATION], args, cover.CoverOperation) cg.add(var.set_current_operation(template_)) yield var
def homeassistant_event_to_code(config, action_id, template_arg, args): serv = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, serv, True) templ = yield cg.templatable(config[CONF_EVENT], args, None) cg.add(var.set_service(templ)) for key, value in config[CONF_DATA].items(): templ = yield cg.templatable(value, args, None) cg.add(var.add_data(key, templ)) for key, value in config[CONF_DATA_TEMPLATE].items(): templ = yield cg.templatable(value, args, None) cg.add(var.add_data_template(key, templ)) for key, value in config[CONF_VARIABLES].items(): templ = yield cg.templatable(value, args, None) cg.add(var.add_variable(key, templ)) yield var
def cover_control_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) if CONF_STOP in config: template_ = yield cg.templatable(config[CONF_STOP], args, bool) cg.add(var.set_stop(template_)) if CONF_STATE in config: template_ = yield cg.templatable(config[CONF_STATE], args, float) cg.add(var.set_position(template_)) if CONF_POSITION in config: template_ = yield cg.templatable(config[CONF_POSITION], args, float) cg.add(var.set_position(template_)) if CONF_TILT in config: template_ = yield cg.templatable(config[CONF_TILT], args, float) cg.add(var.set_tilt(template_)) yield var
def deep_sleep_enter_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) if CONF_SLEEP_DURATION in config: template_ = yield cg.templatable(config[CONF_SLEEP_DURATION], args, cg.int32) cg.add(var.set_sleep_duration(template_)) yield var
def templated_payload_getter_to_code(type, config, payload_id, template_arg, args): template_arg = cg.TemplateArguments(type, *[arg[0] for arg in args]) var = cg.new_Pvariable(payload_id, template_arg, args) template = yield cg.templatable(config[ehc.CONF_VALUE], args, type) cg.add(var.set_value(template)) yield var
def homeassistant_tag_scanned_to_code(config, action_id, template_arg, args): serv = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, serv, True) cg.add(var.set_service("esphome.tag_scanned")) templ = yield cg.templatable(config[CONF_TAG], args, cg.std_string) cg.add(var.add_data("tag_id", templ)) yield var
def fingerprint_grow_delete_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) yield cg.register_parented(var, config[CONF_ID]) template_ = yield cg.templatable(config[CONF_FINGER_ID], args, cg.uint16) cg.add(var.set_finger_id(template_)) yield var
def sim800l_dial_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) template_ = yield cg.templatable(config[CONF_RECIPIENT], args, cg.std_string) cg.add(var.set_recipient(template_)) yield var
def for_condition_to_code(config, condition_id, template_arg, args): condition = yield build_condition(config[CONF_CONDITION], cg.TemplateArguments(), []) var = cg.new_Pvariable(condition_id, template_arg, condition) yield cg.register_component(var, config) templ = yield cg.templatable(config[CONF_TIME], args, cg.uint32) cg.add(var.set_time(templ)) yield var
def mqtt_publish_json_action_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) template_ = yield cg.templatable(config[CONF_TOPIC], args, cg.std_string) cg.add(var.set_topic(template_)) args_ = args + [(cg.JsonObjectRef, 'root')] lambda_ = yield cg.process_lambda(config[CONF_PAYLOAD], args_, return_type=cg.void) cg.add(var.set_payload(lambda_)) template_ = yield cg.templatable(config[CONF_QOS], args, cg.uint8) cg.add(var.set_qos(template_)) template_ = yield cg.templatable(config[CONF_RETAIN], args, bool) cg.add(var.set_retain(template_)) yield var
def sun_below_horizon_to_code(config, condition_id, template_arg, args): var = cg.new_Pvariable(condition_id, template_arg) yield cg.register_parented(var, config[CONF_ID]) templ = yield cg.templatable(config[CONF_ELEVATION], args, cg.double) cg.add(var.set_elevation(templ)) cg.add(var.set_above(False)) yield var
def nexa_action(var, config, args): cg.add( var.set_device((yield cg.templatable(config[CONF_DEVICE], args, cg.uint32)))) cg.add( var.set_group((yield cg.templatable(config[CONF_GROUP], args, cg.uint8)))) cg.add( var.set_state((yield cg.templatable(config[CONF_STATE], args, cg.uint8)))) cg.add( var.set_channel((yield cg.templatable(config[CONF_CHANNEL], args, cg.uint8)))) cg.add( var.set_level((yield cg.templatable(config[CONF_LEVEL], args, cg.uint8))))
def thermostat_uh_report_position_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) template_ = yield cg.templatable(config[CONF_POSITION], args, cg.int32) cg.add(var.set_position(template_)) yield var
def text_sensor_template_publish_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) template_ = yield cg.templatable(config[CONF_STATE], args, cg.std_string) cg.add(var.set_state(template_)) yield var
def globals_set_to_code(config, action_id, template_arg, args): full_id, paren = yield cg.get_variable_with_full_id(config[CONF_ID]) template_arg = cg.TemplateArguments(full_id.type, *template_arg) var = cg.new_Pvariable(action_id, template_arg, paren) templ = yield cg.templatable(config[CONF_VALUE], args, None) cg.add(var.set_value(templ)) yield var
def tm1651_set_level_percent_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) yield cg.register_parented(var, config[CONF_ID]) template_ = yield cg.templatable(config[CONF_LEVEL_PERCENT], args, cg.uint8) cg.add(var.set_level_percent(template_)) yield var
def light_toggle_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) if CONF_TRANSITION_LENGTH in config: template_ = yield cg.templatable(config[CONF_TRANSITION_LENGTH], args, cg.uint32) cg.add(var.set_transition_length(template_)) yield var
def fingerprint_grow_led_control_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) yield cg.register_parented(var, config[CONF_ID]) template_ = yield cg.templatable(config[CONF_STATE], args, cg.bool_) cg.add(var.set_state(template_)) yield var
def setup_sensor_core_(var, config): cg.add(var.set_name(config[CONF_NAME])) if CONF_INTERNAL in config: cg.add(var.set_internal(config[CONF_INTERNAL])) if CONF_DEVICE_CLASS in config: cg.add(var.set_device_class(config[CONF_DEVICE_CLASS])) if CONF_UNIT_OF_MEASUREMENT in config: cg.add(var.set_unit_of_measurement(config[CONF_UNIT_OF_MEASUREMENT])) if CONF_ICON in config: cg.add(var.set_icon(config[CONF_ICON])) if CONF_ACCURACY_DECIMALS in config: cg.add(var.set_accuracy_decimals(config[CONF_ACCURACY_DECIMALS])) cg.add(var.set_force_update(config[CONF_FORCE_UPDATE])) if config.get(CONF_FILTERS): # must exist and not be empty filters = yield build_filters(config[CONF_FILTERS]) cg.add(var.set_filters(filters)) for conf in config.get(CONF_ON_VALUE, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var) yield automation.build_automation(trigger, [(float, "x")], conf) for conf in config.get(CONF_ON_RAW_VALUE, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var) yield automation.build_automation(trigger, [(float, "x")], conf) for conf in config.get(CONF_ON_VALUE_RANGE, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var) yield cg.register_component(trigger, conf) if CONF_ABOVE in conf: template_ = yield cg.templatable(conf[CONF_ABOVE], [(float, "x")], float) cg.add(trigger.set_min(template_)) if CONF_BELOW in conf: template_ = yield cg.templatable(conf[CONF_BELOW], [(float, "x")], float) cg.add(trigger.set_max(template_)) yield automation.build_automation(trigger, [(float, "x")], conf) if CONF_MQTT_ID in config: mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var) yield mqtt.register_mqtt_component(mqtt_, config) if CONF_EXPIRE_AFTER in config: if config[CONF_EXPIRE_AFTER] is None: cg.add(mqtt_.disable_expire_after()) else: cg.add(mqtt_.set_expire_after(config[CONF_EXPIRE_AFTER]))
def climate_control_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) if CONF_MODE in config: template_ = yield cg.templatable(config[CONF_MODE], args, ClimateMode) cg.add(var.set_mode(template_)) if CONF_TARGET_TEMPERATURE in config: template_ = yield cg.templatable(config[CONF_TARGET_TEMPERATURE], args, float) cg.add(var.set_target_temperature(template_)) if CONF_TARGET_TEMPERATURE_LOW in config: template_ = yield cg.templatable(config[CONF_TARGET_TEMPERATURE_LOW], args, float) cg.add(var.set_target_temperature_low(template_)) if CONF_TARGET_TEMPERATURE_HIGH in config: template_ = yield cg.templatable(config[CONF_TARGET_TEMPERATURE_HIGH], args, float) cg.add(var.set_target_temperature_high(template_)) if CONF_AWAY in config: template_ = yield cg.templatable(config[CONF_AWAY], args, bool) cg.add(var.set_away(template_)) if CONF_FAN_MODE in config: template_ = yield cg.templatable(config[CONF_FAN_MODE], args, ClimateFanMode) cg.add(var.set_fan_mode(template_)) if CONF_SWING_MODE in config: template_ = yield cg.templatable(config[CONF_SWING_MODE], args, ClimateSwingMode) cg.add(var.set_swing_mode(template_)) yield var
def fingerprint_grow_aura_led_control_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) yield cg.register_parented(var, config[CONF_ID]) for key in [CONF_STATE, CONF_SPEED, CONF_COLOR, CONF_COUNT]: template_ = yield cg.templatable(config[key], args, cg.uint8) cg.add(getattr(var, f"set_{key}")(template_)) yield var
def display_page_show_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) if isinstance(config[CONF_ID], core.Lambda): template_ = yield cg.templatable(config[CONF_ID], args, DisplayPagePtr) cg.add(var.set_page(template_)) else: paren = yield cg.get_variable(config[CONF_ID]) cg.add(var.set_page(paren)) yield var
def register_rs485_device(var, config): paren = yield cg.get_variable(config[CONF_RS485_ID]) cg.add(paren.register_listener(var)) yield var device = yield state_hex_expression(config[CONF_DEVICE]) cg.add(var.set_device(device)) if CONF_SUB_DEVICE in config: sub_device = yield state_hex_expression(config[CONF_SUB_DEVICE]) cg.add(var.set_sub_device(sub_device)) if CONF_STATE_ON in config: state_on = yield state_hex_expression(config[CONF_STATE_ON]) cg.add(var.set_state_on(state_on)) if CONF_STATE_OFF in config: state_off = yield state_hex_expression(config[CONF_STATE_OFF]) cg.add(var.set_state_off(state_off)) if CONF_COMMAND_ON in config: data = config[CONF_COMMAND_ON] if cg.is_template(data): command_on = yield cg.templatable(data, [], cmd_hex_t) cg.add(var.set_command_on(command_on)) else: command_on = yield command_hex_expression(config[CONF_COMMAND_ON]) cg.add(var.set_command_on(command_on)) if CONF_COMMAND_OFF in config: data = config[CONF_COMMAND_OFF] if cg.is_template(data): command_off = yield cg.templatable(data, [], cmd_hex_t) cg.add(var.set_command_off(command_off)) else: command_off = yield command_hex_expression( config[CONF_COMMAND_OFF]) cg.add(var.set_command_off(command_off)) if CONF_COMMAND_STATE in config: command_state = yield command_hex_expression( config[CONF_COMMAND_STATE]) cg.add(var.set_command_state(command_state))
def rs485_write_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) yield cg.register_parented(var, config[CONF_ID]) data = config[CONF_DATA] if cg.is_template(data): templ = yield cg.templatable(data, args, cmd_hex_t) cg.add(var.set_data_template(templ)) else: cmd = yield command_hex_expression(config) cg.add(var.set_data_static(cmd)) yield var
def light_addressable_set_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) if CONF_RANGE_FROM in config: templ = yield cg.templatable(config[CONF_RANGE_FROM], args, cg.int32) cg.add(var.set_range_from(templ)) if CONF_RANGE_TO in config: templ = yield cg.templatable(config[CONF_RANGE_TO], args, cg.int32) cg.add(var.set_range_to(templ)) def rgbw_to_exp(x): return int(round(x * 255)) if CONF_RED in config: templ = yield cg.templatable( config[CONF_RED], args, cg.uint8, to_exp=rgbw_to_exp ) cg.add(var.set_red(templ)) if CONF_GREEN in config: templ = yield cg.templatable( config[CONF_GREEN], args, cg.uint8, to_exp=rgbw_to_exp ) cg.add(var.set_green(templ)) if CONF_BLUE in config: templ = yield cg.templatable( config[CONF_BLUE], args, cg.uint8, to_exp=rgbw_to_exp ) cg.add(var.set_blue(templ)) if CONF_WHITE in config: templ = yield cg.templatable( config[CONF_WHITE], args, cg.uint8, to_exp=rgbw_to_exp ) cg.add(var.set_white(templ)) yield var
def uart_write_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) yield cg.register_parented(var, config[CONF_ID]) data = config[CONF_DATA] if isinstance(data, binary_type): data = [char_to_byte(x) for x in data] if cg.is_template(data): templ = yield cg.templatable(data, args, cg.std_vector.template(cg.uint8)) cg.add(var.set_data_template(templ)) else: cg.add(var.set_data_static(data)) yield var
def light_control_to_code(config, action_id, template_arg, args): paren = yield cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) if CONF_STATE in config: template_ = yield cg.templatable(config[CONF_STATE], args, bool) cg.add(var.set_state(template_)) if CONF_TRANSITION_LENGTH in config: template_ = yield cg.templatable(config[CONF_TRANSITION_LENGTH], args, cg.uint32) cg.add(var.set_transition_length(template_)) if CONF_FLASH_LENGTH in config: template_ = yield cg.templatable(config[CONF_FLASH_LENGTH], args, cg.uint32) cg.add(var.set_flash_length(template_)) if CONF_BRIGHTNESS in config: template_ = yield cg.templatable(config[CONF_BRIGHTNESS], args, float) cg.add(var.set_brightness(template_)) if CONF_RED in config: template_ = yield cg.templatable(config[CONF_RED], args, float) cg.add(var.set_red(template_)) if CONF_GREEN in config: template_ = yield cg.templatable(config[CONF_GREEN], args, float) cg.add(var.set_green(template_)) if CONF_BLUE in config: template_ = yield cg.templatable(config[CONF_BLUE], args, float) cg.add(var.set_blue(template_)) if CONF_WHITE in config: template_ = yield cg.templatable(config[CONF_WHITE], args, float) cg.add(var.set_white(template_)) if CONF_COLOR_TEMPERATURE in config: template_ = yield cg.templatable(config[CONF_COLOR_TEMPERATURE], args, float) cg.add(var.set_color_temperature(template_)) if CONF_EFFECT in config: template_ = yield cg.templatable(config[CONF_EFFECT], args, cg.std_string) cg.add(var.set_effect(template_)) yield var