def wifi_network(config, static_ip): ap = cg.variable(config[CONF_ID], WiFiAP()) if CONF_SSID in config: cg.add(ap.set_ssid(config[CONF_SSID])) if CONF_PASSWORD in config: cg.add(ap.set_password(config[CONF_PASSWORD])) if CONF_EAP in config: cg.add(ap.set_eap(eap_auth(config[CONF_EAP]))) cg.add_define('ESPHOME_WIFI_WPA2_EAP') if CONF_BSSID in config: cg.add(ap.set_bssid([HexInt(i) for i in config[CONF_BSSID].parts])) if CONF_HIDDEN in config: cg.add(ap.set_hidden(config[CONF_HIDDEN])) if CONF_CHANNEL in config: cg.add(ap.set_channel(config[CONF_CHANNEL])) if static_ip is not None: cg.add(ap.set_manual_ip(manual_ip(static_ip))) if CONF_PRIORITY in config: cg.add(ap.set_priority(config[CONF_PRIORITY])) return ap
def nec_action(var, config, args): template_ = yield cg.templatable(config[CONF_ADDRESS], args, cg.uint16) cg.add(var.set_address(template_)) template_ = yield cg.templatable(config[CONF_COMMAND], args, cg.uint16) cg.add(var.set_command(template_))
def sony_action(var, config, args): template_ = yield cg.templatable(config[CONF_DATA], args, cg.uint16) cg.add(var.set_data(template_)) template_ = yield cg.templatable(config[CONF_NBITS], args, cg.uint32) cg.add(var.set_nbits(template_))
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 jvc_action(var, config, args): template_ = yield cg.templatable(config[CONF_DATA], args, cg.uint32) cg.add(var.set_data(template_))
def setup_binary_sensor_core_(var, config): cg.add(var.set_name(config[CONF_NAME])) if CONF_INTERNAL in config: cg.add(var.set_internal(CONF_INTERNAL)) if CONF_DEVICE_CLASS in config: cg.add(var.set_device_class(config[CONF_DEVICE_CLASS])) if CONF_INVERTED in config: cg.add(var.set_inverted(config[CONF_INVERTED])) if CONF_FILTERS in config: filters = yield cg.build_registry_list(FILTER_REGISTRY, config[CONF_FILTERS]) cg.add(var.add_filters(filters)) for conf in config.get(CONF_ON_PRESS, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var) yield automation.build_automation(trigger, [], conf) for conf in config.get(CONF_ON_RELEASE, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var) yield automation.build_automation(trigger, [], conf) for conf in config.get(CONF_ON_CLICK, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var, conf[CONF_MIN_LENGTH], conf[CONF_MAX_LENGTH]) yield automation.build_automation(trigger, [], conf) for conf in config.get(CONF_ON_DOUBLE_CLICK, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var, conf[CONF_MIN_LENGTH], conf[CONF_MAX_LENGTH]) yield automation.build_automation(trigger, [], conf) for conf in config.get(CONF_ON_MULTI_CLICK, []): timings = [] for tim in conf[CONF_TIMING]: timings.append( cg.StructInitializer( MultiClickTriggerEvent, ('state', tim[CONF_STATE]), ('min_length', tim[CONF_MIN_LENGTH]), ('max_length', tim.get(CONF_MAX_LENGTH, 4294967294)), )) trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var, timings) if CONF_INVALID_COOLDOWN in conf: cg.add(trigger.set_invalid_cooldown(conf[CONF_INVALID_COOLDOWN])) yield cg.register_component(trigger, conf) yield automation.build_automation(trigger, [], conf) for conf in config.get(CONF_ON_STATE, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var) yield automation.build_automation(trigger, [(bool, 'x')], conf) if CONF_MQTT_ID in config: mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var) yield mqtt.register_mqtt_component(mqtt_, config)
def register_switch(var, config): if not CORE.has_id(config[CONF_ID]): var = cg.Pvariable(config[CONF_ID], var) cg.add(cg.App.register_switch(var)) yield setup_switch_core_(var, config)
async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) await uart.register_uart_device(var, config) if CONF_INTERNAL_TEMP in config: sens = await sensor.new_sensor(config[CONF_INTERNAL_TEMP]) cg.add(var.set_internal_temp_sensor(sens)) if CONF_BATTERY_VOLT in config: sens = await sensor.new_sensor(config[CONF_BATTERY_VOLT]) cg.add(var.set_battery_volt_sensor(sens)) if CONF_BATTERY_LEVEL in config: sens = await sensor.new_sensor(config[CONF_BATTERY_LEVEL]) cg.add(var.set_battery_level_sensor(sens)) if CONF_POWER_LOAD in config: sens = await sensor.new_sensor(config[CONF_POWER_LOAD]) cg.add(var.set_power_load_sensor(sens)) if CONF_INPUT_VOLT in config: sens = await sensor.new_sensor(config[CONF_INPUT_VOLT]) cg.add(var.set_input_volt_sensor(sens)) if CONF_OUTPUT_VOLT in config: sens = await sensor.new_sensor(config[CONF_OUTPUT_VOLT]) cg.add(var.set_output_volt_sensor(sens)) if CONF_LINE_FREQ in config: sens = await sensor.new_sensor(config[CONF_LINE_FREQ]) cg.add(var.set_line_freq_sensor(sens)) if CONF_EST_RUNTIME in config: sens = await sensor.new_sensor(config[CONF_EST_RUNTIME]) cg.add(var.set_est_runtime_sensor(sens))
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]))
def setup_light_core_(light_var, output_var, config): cg.add(light_var.set_restore_mode(config[CONF_RESTORE_MODE])) if CONF_INTERNAL in config: cg.add(light_var.set_internal(config[CONF_INTERNAL])) if CONF_DEFAULT_TRANSITION_LENGTH in config: cg.add(light_var.set_default_transition_length(config[CONF_DEFAULT_TRANSITION_LENGTH])) if CONF_GAMMA_CORRECT in config: cg.add(light_var.set_gamma_correct(config[CONF_GAMMA_CORRECT])) effects = yield cg.build_registry_list(EFFECTS_REGISTRY, config.get(CONF_EFFECTS, [])) cg.add(light_var.add_effects(effects)) for conf in config.get(CONF_ON_TURN_ON, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], light_var) yield auto.build_automation(trigger, [], conf) for conf in config.get(CONF_ON_TURN_OFF, []): trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], light_var) yield auto.build_automation(trigger, [], conf) if CONF_COLOR_CORRECT in config: cg.add(output_var.set_correction(*config[CONF_COLOR_CORRECT])) if CONF_POWER_SUPPLY in config: var_ = yield cg.get_variable(config[CONF_POWER_SUPPLY]) cg.add(output_var.set_power_supply(var_)) if CONF_MQTT_ID in config: mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], light_var) yield mqtt.register_mqtt_component(mqtt_, config)
def register_light(output_var, config): light_var = cg.new_Pvariable(config[CONF_ID], config[CONF_NAME], output_var) cg.add(cg.App.register_light(light_var)) yield cg.register_component(light_var, config) yield setup_light_core_(light_var, output_var, config)
async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) await i2c.register_i2c_device(var, config) cg.add(var.set_integration_time(config[CONF_INTEGRATION_TIME])) cg.add(var.set_gain(config[CONF_GAIN])) cg.add(var.set_glass_attenuation_factor(config[CONF_GLASS_ATTENUATION_FACTOR])) if CONF_RED_CHANNEL in config: sens = await sensor.new_sensor(config[CONF_RED_CHANNEL]) cg.add(var.set_red_sensor(sens)) if CONF_GREEN_CHANNEL in config: sens = await sensor.new_sensor(config[CONF_GREEN_CHANNEL]) cg.add(var.set_green_sensor(sens)) if CONF_BLUE_CHANNEL in config: sens = await sensor.new_sensor(config[CONF_BLUE_CHANNEL]) cg.add(var.set_blue_sensor(sens)) if CONF_CLEAR_CHANNEL in config: sens = await sensor.new_sensor(config[CONF_CLEAR_CHANNEL]) cg.add(var.set_clear_sensor(sens)) if CONF_ILLUMINANCE in config: sens = await sensor.new_sensor(config[CONF_ILLUMINANCE]) cg.add(var.set_illuminance_sensor(sens)) if CONF_COLOR_TEMPERATURE in config: sens = await sensor.new_sensor(config[CONF_COLOR_TEMPERATURE]) cg.add(var.set_color_temperature_sensor(sens))
async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) await i2c.register_i2c_device(var, config) if CONF_TEMPERATURE in config: conf = config[CONF_TEMPERATURE] sens = await sensor.new_sensor(conf) cg.add(var.set_temperature_sensor(sens)) cg.add(var.set_temperature_oversampling(conf[CONF_OVERSAMPLING])) if CONF_PRESSURE in config: conf = config[CONF_PRESSURE] sens = await sensor.new_sensor(conf) cg.add(var.set_pressure_sensor(sens)) cg.add(var.set_pressure_oversampling(conf[CONF_OVERSAMPLING])) if CONF_HUMIDITY in config: conf = config[CONF_HUMIDITY] sens = await sensor.new_sensor(conf) cg.add(var.set_humidity_sensor(sens)) cg.add(var.set_humidity_oversampling(conf[CONF_OVERSAMPLING])) cg.add(var.set_iir_filter(config[CONF_IIR_FILTER]))
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) cg.add(var.set_use_address(config[CONF_USE_ADDRESS])) for network in config.get(CONF_NETWORKS, []): cg.add(var.add_sta(wifi_network(network, config.get(CONF_MANUAL_IP)))) if CONF_AP in config: conf = config[CONF_AP] ip_config = conf.get(CONF_MANUAL_IP, config.get(CONF_MANUAL_IP)) cg.add(var.set_ap(wifi_network(conf, ip_config))) cg.add(var.set_ap_timeout(conf[CONF_AP_TIMEOUT])) cg.add(var.set_reboot_timeout(config[CONF_REBOOT_TIMEOUT])) cg.add(var.set_power_save_mode(config[CONF_POWER_SAVE_MODE])) cg.add(var.set_fast_connect(config[CONF_FAST_CONNECT])) if CONF_OUTPUT_POWER in config: cg.add(var.set_output_power(config[CONF_OUTPUT_POWER])) if CORE.is_esp8266: cg.add_library('ESP8266WiFi', None) cg.add_define('USE_WIFI') # Register at end for OTA safe mode yield cg.register_component(var, config)
async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) out = await cg.get_variable(config[CONF_OUTPUT]) cg.add(var.set_output(out)) cg.add(var.set_min_level(config[CONF_MIN_LEVEL])) cg.add(var.set_idle_level(config[CONF_IDLE_LEVEL])) cg.add(var.set_max_level(config[CONF_MAX_LEVEL])) cg.add(var.set_restore(config[CONF_RESTORE])) cg.add(var.set_auto_detach_time(config[CONF_AUTO_DETACH_TIME])) cg.add(var.set_transition_length(config[CONF_TRANSITION_LENGTH]))
def register_listener(var, config): receiver = yield cg.get_variable(config[CONF_RECEIVER_ID]) cg.add(receiver.register_listener(var))
async def servo_write_to_code(config, action_id, template_arg, args): paren = await cg.get_variable(config[CONF_ID]) var = cg.new_Pvariable(action_id, template_arg, paren) template_ = await cg.templatable(config[CONF_LEVEL], args, float) cg.add(var.set_value(template_)) return var
def rc_switch_raw_binary_sensor(var, config): cg.add(var.set_protocol(build_rc_switch_protocol(config[CONF_PROTOCOL]))) cg.add(var.set_code(config[CONF_CODE]))
def register_binary_sensor(var, config): if not CORE.has_id(config[CONF_ID]): var = cg.Pvariable(config[CONF_ID], var) cg.add(cg.App.register_binary_sensor(var)) yield setup_binary_sensor_core_(var, config)
def rc_switch_type_b_binary_sensor(var, config): cg.add(var.set_protocol(build_rc_switch_protocol(config[CONF_PROTOCOL]))) cg.add( var.set_type_b(config[CONF_ADDRESS], config[CONF_CHANNEL], config[CONF_STATE]))
async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) await spi.register_spi_device(var, config) for i, phase in enumerate([CONF_PHASE_A, CONF_PHASE_B, CONF_PHASE_C]): if phase not in config: continue conf = config[phase] cg.add(var.set_volt_gain(i, conf[CONF_GAIN_VOLTAGE])) cg.add(var.set_ct_gain(i, conf[CONF_GAIN_CT])) if CONF_VOLTAGE in conf: sens = await sensor.new_sensor(conf[CONF_VOLTAGE]) cg.add(var.set_voltage_sensor(i, sens)) if CONF_CURRENT in conf: sens = await sensor.new_sensor(conf[CONF_CURRENT]) cg.add(var.set_current_sensor(i, sens)) if CONF_POWER in conf: sens = await sensor.new_sensor(conf[CONF_POWER]) cg.add(var.set_power_sensor(i, sens)) if CONF_REACTIVE_POWER in conf: sens = await sensor.new_sensor(conf[CONF_REACTIVE_POWER]) cg.add(var.set_reactive_power_sensor(i, sens)) if CONF_POWER_FACTOR in conf: sens = await sensor.new_sensor(conf[CONF_POWER_FACTOR]) cg.add(var.set_power_factor_sensor(i, sens)) if CONF_FORWARD_ACTIVE_ENERGY in conf: sens = await sensor.new_sensor(conf[CONF_FORWARD_ACTIVE_ENERGY]) cg.add(var.set_forward_active_energy_sensor(i, sens)) if CONF_REVERSE_ACTIVE_ENERGY in conf: sens = await sensor.new_sensor(conf[CONF_REVERSE_ACTIVE_ENERGY]) cg.add(var.set_reverse_active_energy_sensor(i, sens)) if CONF_FREQUENCY in config: sens = await sensor.new_sensor(config[CONF_FREQUENCY]) cg.add(var.set_freq_sensor(sens)) if CONF_CHIP_TEMPERATURE in config: sens = await sensor.new_sensor(config[CONF_CHIP_TEMPERATURE]) cg.add(var.set_chip_temperature_sensor(sens)) cg.add(var.set_line_freq(config[CONF_LINE_FREQUENCY])) cg.add(var.set_current_phases(config[CONF_CURRENT_PHASES])) cg.add(var.set_pga_gain(config[CONF_GAIN_PGA]))
def rc_switch_type_d_binary_sensor(var, config): cg.add(var.set_protocol(build_rc_switch_protocol(config[CONF_PROTOCOL]))) cg.add( var.set_type_d(config[CONF_GROUP], config[CONF_DEVICE], config[CONF_STATE]))
def jvc_binary_sensor(var, config): cg.add(var.set_data(cg.StructInitializer( JVCData, ('data', config[CONF_DATA]), )))
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) sel = yield cg.gpio_pin_expression(config[CONF_SEL_PIN]) cg.add(var.set_sel_pin(sel)) cf = yield cg.gpio_pin_expression(config[CONF_CF_PIN]) cg.add(var.set_cf_pin(cf)) cf1 = yield cg.gpio_pin_expression(config[CONF_CF1_PIN]) cg.add(var.set_cf1_pin(cf1)) if CONF_VOLTAGE in config: sens = yield sensor.new_sensor(config[CONF_VOLTAGE]) cg.add(var.set_voltage_sensor(sens)) if CONF_CURRENT in config: sens = yield sensor.new_sensor(config[CONF_CURRENT]) cg.add(var.set_current_sensor(sens)) if CONF_POWER in config: sens = yield sensor.new_sensor(config[CONF_POWER]) cg.add(var.set_power_sensor(sens)) cg.add(var.set_current_resistor(config[CONF_CURRENT_RESISTOR])) cg.add(var.set_voltage_divider(config[CONF_VOLTAGE_DIVIDER])) cg.add(var.set_change_mode_every(config[CONF_CHANGE_MODE_EVERY]))
def nec_binary_sensor(var, config): cg.add(var.set_data(cg.StructInitializer( NECData, ('address', config[CONF_ADDRESS]), ('command', config[CONF_COMMAND]), )))
async def setup_conf(config, key, hub): if key in config: conf = config[key] sens = await sensor.new_sensor(conf) cg.add(getattr(hub, f"set_{key}_sensor")(sens))
def sony_binary_sensor(var, config): cg.add(var.set_data(cg.StructInitializer( SonyData, ('data', config[CONF_DATA]), ('nbits', config[CONF_NBITS]), )))
def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield uart.register_uart_device(var, config) cg.add(var.use_strength_icon(config[CONF_STRENGTH_ICON]))
def raw_binary_sensor(var, config): code_ = config[CONF_CODE] arr = cg.progmem_array(config[CONF_CODE_STORAGE_ID], code_) cg.add(var.set_data(arr)) cg.add(var.set_len(len(code_)))
async def register_sensor(var, config): if not CORE.has_id(config[CONF_ID]): var = cg.Pvariable(config[CONF_ID], var) cg.add(cg.App.register_sensor(var)) await setup_sensor_core_(var, config)