Пример #1
0
 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
Пример #2
0
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))))
Пример #3
0
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))))
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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
Пример #10
0
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
Пример #11
0
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
Пример #12
0
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
Пример #13
0
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
Пример #14
0
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
Пример #15
0
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))))
Пример #16
0
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
Пример #17
0
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
Пример #18
0
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
Пример #20
0
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
Пример #21
0
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
Пример #22
0
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]))
Пример #23
0
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
Пример #24
0
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
Пример #26
0
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))
Пример #27
0
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
Пример #28
0
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
Пример #29
0
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
Пример #30
0
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