def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield cover.register_cover(var, config) if CONF_LAMBDA in config: template_ = yield cg.process_lambda( config[CONF_LAMBDA], [], return_type=cg.optional.template(float)) cg.add(var.set_state_lambda(template_)) if CONF_OPEN_ACTION in config: yield automation.build_automation(var.get_open_trigger(), [], config[CONF_OPEN_ACTION]) if CONF_CLOSE_ACTION in config: yield automation.build_automation(var.get_close_trigger(), [], config[CONF_CLOSE_ACTION]) if CONF_STOP_ACTION in config: yield automation.build_automation(var.get_stop_trigger(), [], config[CONF_STOP_ACTION]) if CONF_TILT_ACTION in config: yield automation.build_automation(var.get_tilt_trigger(), [(float, 'tilt')], config[CONF_TILT_ACTION]) cg.add(var.set_has_tilt(True)) if CONF_TILT_LAMBDA in config: tilt_template_ = yield cg.process_lambda( config[CONF_TILT_LAMBDA], [], return_type=cg.optional.template(float)) cg.add(var.set_tilt_lambda(tilt_template_)) cg.add(var.set_optimistic(config[CONF_OPTIMISTIC])) cg.add(var.set_assumed_state(config[CONF_ASSUMED_STATE])) cg.add(var.set_restore_mode(config[CONF_RESTORE_MODE]))
def http_request_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_URL], args, cg.std_string) cg.add(var.set_url(template_)) cg.add(var.set_method(config[CONF_METHOD])) if CONF_BODY in config: template_ = yield cg.templatable(config[CONF_BODY], args, cg.std_string) cg.add(var.set_body(template_)) if CONF_JSON in config: json_ = config[CONF_JSON] if isinstance(json_, Lambda): args_ = args + [(cg.JsonObjectRef, "root")] lambda_ = yield cg.process_lambda(json_, args_, return_type=cg.void) cg.add(var.set_json(lambda_)) else: for key in json_: template_ = yield cg.templatable(json_[key], args, cg.std_string) cg.add(var.add_json(key, template_)) for key in config.get(CONF_HEADERS, []): template_ = yield cg.templatable( config[CONF_HEADERS][key], args, cg.const_char_ptr ) cg.add(var.add_header(key, template_)) for conf in config.get(CONF_ON_RESPONSE, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID]) cg.add(var.register_response_trigger(trigger)) yield automation.build_automation(trigger, [(int, "status_code")], conf) yield var
def to_code(config): if config[CONF_MODEL] == "M5STACK": lcd_type = ILI9341M5Stack if config[CONF_MODEL] == "TFT_2.4": lcd_type = ILI9341TFT24 rhs = lcd_type.new() var = cg.Pvariable(config[CONF_ID], rhs) yield cg.register_component(var, config) yield display.register_display(var, config) yield spi.register_spi_device(var, config) cg.add(var.set_model(config[CONF_MODEL])) dc = yield cg.gpio_pin_expression(config[CONF_DC_PIN]) cg.add(var.set_dc_pin(dc)) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(display.DisplayBufferRef, "it")], return_type=cg.void) cg.add(var.set_writer(lambda_)) if CONF_RESET_PIN in config: reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN]) cg.add(var.set_reset_pin(reset)) if CONF_LED_PIN in config: led_pin = yield cg.gpio_pin_expression(config[CONF_LED_PIN]) cg.add(var.set_led_pin(led_pin))
def http_request_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_URL], args, cg.std_string) cg.add(var.set_url(template_)) cg.add(var.set_method(config[CONF_METHOD])) if CONF_BODY in config: template_ = yield cg.templatable(config[CONF_BODY], args, cg.std_string) cg.add(var.set_body(template_)) if CONF_JSON in config: json_ = config[CONF_JSON] if isinstance(json_, Lambda): args_ = args + [(cg.JsonObjectRef, 'root')] lambda_ = yield cg.process_lambda(json_, args_, return_type=cg.void) cg.add(var.set_json(lambda_)) else: for key in json_: template_ = yield cg.templatable(json_[key], args, cg.std_string) cg.add(var.add_json(key, template_)) for key in config.get(CONF_HEADERS, []): template_ = yield cg.templatable(config[CONF_HEADERS][key], args, cg.const_char_ptr) cg.add(var.add_header(key, template_)) yield var
def to_code(config): model_type, model = MODELS[config[CONF_MODEL]] if model_type == 'a': rhs = WaveshareEPaperTypeA.new(model) var = cg.Pvariable(config[CONF_ID], rhs, type=WaveshareEPaperTypeA) elif model_type == 'b': rhs = model.new() var = cg.Pvariable(config[CONF_ID], rhs, type=model) else: raise NotImplementedError() yield cg.register_component(var, config) yield display.register_display(var, config) yield spi.register_spi_device(var, config) dc = yield cg.gpio_pin_expression(config[CONF_DC_PIN]) cg.add(var.set_dc_pin(dc)) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(display.DisplayBufferRef, 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_)) if CONF_RESET_PIN in config: reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN]) cg.add(var.set_reset_pin(reset)) if CONF_BUSY_PIN in config: reset = yield cg.gpio_pin_expression(config[CONF_BUSY_PIN]) cg.add(var.set_busy_pin(reset)) if CONF_FULL_UPDATE_EVERY in config: cg.add(var.set_full_update_every(config[CONF_FULL_UPDATE_EVERY]))
def logger_log_action_to_code(config, action_id, template_arg, args): esp_log = LOG_LEVEL_TO_ESP_LOG[config[CONF_LEVEL]] args_ = [cg.RawExpression(str(x)) for x in config[CONF_ARGS]] text = str(cg.statement(esp_log(config[CONF_TAG], config[CONF_FORMAT], *args_))) lambda_ = yield cg.process_lambda(Lambda(text), args, return_type=cg.void) yield cg.new_Pvariable(action_id, template_arg, lambda_)
def addressable_lambda_effect_to_code(config, effect_id): args = [(AddressableLightRef, 'it'), (ESPColor, 'current_color')] lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], args, return_type=cg.void) var = cg.new_Pvariable(effect_id, config[CONF_NAME], lambda_, config[CONF_UPDATE_INTERVAL]) yield var
def retry_action_to_code(config, action_id, template_arg, args): max_retries = config[c.CONF_MAX_RETRIES] text = "if(sendaction->get_send_attempts() < {}) " \ "{{sendaction->stop(); sendaction->send(); return true;}} " \ "else " \ "{{return false;}}".format(max_retries) lambda_ = yield cg.process_lambda(Lambda(text), args, return_type=cg.bool_) yield cg.new_Pvariable(action_id, template_arg, lambda_)
def display_lambda_effect_to_code(config, effect_id): args = [(DisplayBufferRef, 'it'), (bool, 'initial_run')] lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], args, return_type=cg.void) var = cg.new_Pvariable(effect_id, config[CONF_NAME], lambda_, config[CONF_UPDATE_INTERVAL]) yield var
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 sensor.register_sensor(var, config) if CONF_LAMBDA in config: template_ = yield cg.process_lambda( config[CONF_LAMBDA], [], return_type=cg.optional.template(float)) cg.add(var.set_template(template_))
def to_code(config): template_ = yield cg.process_lambda(config[CONF_LAMBDA], [], return_type=cg.std_vector.template( sensor.SensorPtr)) rhs = CustomSensorConstructor(template_) var = cg.variable(config[CONF_ID], rhs) for i, conf in enumerate(config[CONF_SENSORS]): sens = cg.Pvariable(conf[CONF_ID], var.get_sensor(i)) yield sensor.register_sensor(sens, conf)
def to_code(config): template_ = yield cg.process_lambda(config[CONF_LAMBDA], [], return_type=cg.std_vector.template( cg.ComponentPtr)) rhs = CustomComponentConstructor(template_) var = cg.variable(config[CONF_ID], rhs) for i, conf in enumerate(config.get(CONF_COMPONENTS, [])): comp = cg.Pvariable(conf[CONF_ID], var.get_component(i)) yield cg.register_component(comp, conf)
def to_code(config): template_ = yield cg.process_lambda(config[CONF_LAMBDA], [], return_type=cg.std_vector.template( cover.Cover.operator('ptr'))) rhs = CustomCoverConstructor(template_) custom = cg.variable(config[CONF_ID], rhs) for i, conf in enumerate(config[CONF_COVERS]): rhs = custom.Pget_cover(i) yield cover.register_cover(rhs, conf)
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield lcd_base.setup_lcd_display(var, config) yield i2c.register_i2c_device(var, config) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda( config[CONF_LAMBDA], [(PCF8574LCDDisplay.operator('ref'), 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_))
def to_code(config): template_ = yield cg.process_lambda(config[CONF_LAMBDA], [], return_type=cg.std_vector.template( light.LightOutput.operator('ptr'))) rhs = CustomLightOutputConstructor(template_) custom = cg.variable(config[CONF_ID], rhs) for i, conf in enumerate(config[CONF_LIGHTS]): rhs = custom.Pget_light(i) yield light.register_light(rhs, conf)
def setup_st7735(var, config): yield cg.register_component(var, config) yield display.register_display(var, config) if CONF_RESET_PIN in config: reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN]) cg.add(var.set_reset_pin(reset)) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda( config[CONF_LAMBDA], [(display.DisplayBufferRef, 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_))
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield uart.register_uart_device(var, config) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(NextionRef, 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_)) yield display.register_display(var, config)
def setup_lcd_display(var, config): yield cg.register_component(var, config) yield display.register_display(var, config) cg.add( var.set_dimensions(config[CONF_DIMENSIONS][0], config[CONF_DIMENSIONS][1])) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(LCDDisplayRef, 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_))
def to_code(config): template_ = yield cg.process_lambda( config[CONF_LAMBDA], [], return_type=cg.std_vector.template(binary_sensor.BinarySensorPtr), ) rhs = CustomBinarySensorConstructor(template_) custom = cg.variable(config[CONF_ID], rhs) for i, conf in enumerate(config[CONF_BINARY_SENSORS]): rhs = custom.Pget_binary_sensor(i) yield binary_sensor.register_binary_sensor(rhs, conf)
def setup_display_core_(var, config): if CONF_ROTATION in config: cg.add(var.set_rotation(DISPLAY_ROTATIONS[config[CONF_ROTATION]])) if CONF_PAGES in config: pages = [] for conf in config[CONF_PAGES]: lambda_ = yield cg.process_lambda(conf[CONF_LAMBDA], [(DisplayBufferRef, 'it')], return_type=cg.void) page = cg.new_Pvariable(conf[CONF_ID], lambda_) pages.append(page) cg.add(var.set_pages(pages))
def addressable_lambda_effect_to_code(config, effect_id): args = [ (AddressableLightRef, "it"), (Color, "current_color"), (bool, "initial_run"), ] lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], args, return_type=cg.void) var = cg.new_Pvariable(effect_id, config[CONF_NAME], lambda_, config[CONF_UPDATE_INTERVAL]) yield var
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield spi.register_spi_device(var, config) yield display.register_display(var, config) cg.add(var.set_num_chips(config[CONF_NUM_CHIPS])) cg.add(var.set_intensity(config[CONF_INTENSITY])) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(MAX7219ComponentRef, 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_))
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) wrapped_light = yield cg.get_variable(config[CONF_ADDRESSABLE_LIGHT_ID]) cg.add(var.set_width(config[CONF_WIDTH])) cg.add(var.set_height(config[CONF_HEIGHT])) cg.add(var.set_light(wrapped_light)) yield cg.register_component(var, config) yield display.register_display(var, config) if CONF_PIXEL_MAPPER in config: pixel_mapper_template_ = yield cg.process_lambda( config[CONF_PIXEL_MAPPER], [(int, "x"), (int, "y")], return_type=cg.int_, ) cg.add(var.set_pixel_mapper(pixel_mapper_template_)) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(display.DisplayBufferRef, "it")], return_type=cg.void) cg.add(var.set_writer(lambda_))
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 setup_ssd1331(var, config): yield cg.register_component(var, config) yield display.register_display(var, config) if CONF_RESET_PIN in config: reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN]) cg.add(var.set_reset_pin(reset)) if CONF_BRIGHTNESS in config: cg.add(var.init_brightness(config[CONF_BRIGHTNESS])) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(display.DisplayBufferRef, "it")], return_type=cg.void) cg.add(var.set_writer(lambda_))
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield spi.register_spi_device(var, config) yield display.register_display(var, config) if CONF_RESET_PIN in config: reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN]) cg.add(var.set_reset_pin(reset)) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(display.DisplayBufferRef, 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_))
def setup_ssd1036(var, config): yield cg.register_component(var, config) yield display.register_display(var, config) cg.add(var.set_model(config[CONF_MODEL])) if CONF_RESET_PIN in config: reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN]) cg.add(var.set_reset_pin(reset)) if CONF_EXTERNAL_VCC in config: cg.add(var.set_external_vcc(config[CONF_EXTERNAL_VCC])) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(display.DisplayBufferRef, 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_))
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield display.register_display(var, config) clk = yield cg.gpio_pin_expression(config[CONF_CLK_PIN]) cg.add(var.set_clk_pin(clk)) dio = yield cg.gpio_pin_expression(config[CONF_DIO_PIN]) cg.add(var.set_dio_pin(dio)) cg.add(var.set_intensity(config[CONF_INTENSITY])) if CONF_LAMBDA in config: lambda_ = yield cg.process_lambda(config[CONF_LAMBDA], [(TM1637DisplayRef, 'it')], return_type=cg.void) cg.add(var.set_writer(lambda_))
def to_code(config): type = config[CONF_TYPE] if type == "binary": ret_type = output.BinaryOutputPtr klass = CustomBinaryOutputConstructor else: ret_type = output.FloatOutputPtr klass = CustomFloatOutputConstructor template_ = yield cg.process_lambda( config[CONF_LAMBDA], [], return_type=cg.std_vector.template(ret_type)) rhs = klass(template_) custom = cg.variable(config[CONF_ID], rhs) for i, conf in enumerate(config[CONF_OUTPUTS]): out = cg.Pvariable(conf[CONF_ID], custom.get_output(i)) yield output.register_output(out, conf)