import voluptuous as vol from esphome import pins import esphome.config_validation as cv from esphome.const import CONF_ENABLE_TIME, CONF_ID, CONF_KEEP_ON_TIME, CONF_PIN from esphome.cpp_generator import Pvariable, add from esphome.cpp_helpers import gpio_output_pin_expression, setup_component from esphome.cpp_types import App, Component, esphome_ns PowerSupplyComponent = esphome_ns.class_('PowerSupplyComponent', Component) MULTI_CONF = True CONFIG_SCHEMA = cv.Schema({ vol.Required(CONF_ID): cv.declare_variable_id(PowerSupplyComponent), vol.Required(CONF_PIN): pins.gpio_output_pin_schema, vol.Optional(CONF_ENABLE_TIME): cv.positive_time_period_milliseconds, vol.Optional(CONF_KEEP_ON_TIME): cv.positive_time_period_milliseconds, }).extend(cv.COMPONENT_SCHEMA.schema) def to_code(config): for pin in gpio_output_pin_expression(config[CONF_PIN]): yield rhs = App.make_power_supply(pin) psu = Pvariable(config[CONF_ID], rhs)
return cv.one_of(*UART_SELECTION_ESP8266, upper=True)(value) raise NotImplementedError def validate_local_no_higher_than_global(value): global_level = value.get(CONF_LEVEL, 'DEBUG') for tag, level in value.get(CONF_LOGS, {}).items(): if LOG_LEVEL_SEVERITY.index(level) > LOG_LEVEL_SEVERITY.index( global_level): raise EsphomeError( u"The local log level {} for {} must be less severe than the " u"global log level {}.".format(level, tag, global_level)) return value LogComponent = esphome_ns.class_('LogComponent', Component) CONFIG_SCHEMA = vol.All( cv.Schema({ cv.GenerateID(): cv.declare_variable_id(LogComponent), vol.Optional(CONF_BAUD_RATE, default=115200): cv.positive_int, vol.Optional(CONF_TX_BUFFER_SIZE, default=512): cv.validate_bytes, vol.Optional(CONF_HARDWARE_UART, default='UART0'): uart_selection, vol.Optional(CONF_LEVEL): is_log_level, vol.Optional(CONF_LOGS): cv.Schema({ cv.string: is_log_level, }) }), validate_local_no_higher_than_global) def to_code(config):
import voluptuous as vol import esphome.config_validation as cv from esphome.const import CONF_CSS_URL, CONF_ID, CONF_JS_URL, CONF_PORT from esphome.core import CORE from esphome.cpp_generator import Pvariable, add from esphome.cpp_helpers import setup_component from esphome.cpp_types import App, Component, StoringController, esphome_ns WebServer = esphome_ns.class_('WebServer', Component, StoringController) CONFIG_SCHEMA = vol.Schema({ cv.GenerateID(): cv.declare_variable_id(WebServer), vol.Optional(CONF_PORT): cv.port, vol.Optional(CONF_CSS_URL): cv.string, vol.Optional(CONF_JS_URL): cv.string, }).extend(cv.COMPONENT_SCHEMA.schema) def to_code(config): rhs = App.init_web_server(config.get(CONF_PORT)) web_server = Pvariable(config[CONF_ID], rhs) if CONF_CSS_URL in config: add(web_server.set_css_url(config[CONF_CSS_URL])) if CONF_JS_URL in config: add(web_server.set_js_url(config[CONF_JS_URL])) setup_component(web_server, config) REQUIRED_BUILD_FLAGS = '-DUSE_WEB_SERVER'
import voluptuous as vol from esphome import pins import esphome.config_validation as cv from esphome.const import CONF_CLK_PIN, CONF_ID, CONF_MISO_PIN, CONF_MOSI_PIN from esphome.cpp_generator import Pvariable, add from esphome.cpp_helpers import gpio_input_pin_expression, gpio_output_pin_expression, \ setup_component from esphome.cpp_types import App, Component, esphome_ns SPIComponent = esphome_ns.class_('SPIComponent', Component) SPIDevice = esphome_ns.class_('SPIDevice') MULTI_CONF = True CONFIG_SCHEMA = vol.All( vol.Schema({ cv.GenerateID(): cv.declare_variable_id(SPIComponent), vol.Required(CONF_CLK_PIN): pins.gpio_output_pin_schema, vol.Optional(CONF_MISO_PIN): pins.gpio_input_pin_schema, vol.Optional(CONF_MOSI_PIN): pins.gpio_output_pin_schema, }), cv.has_at_least_one_key(CONF_MISO_PIN, CONF_MOSI_PIN)) def to_code(config): for clk in gpio_output_pin_expression(config[CONF_CLK_PIN]): yield rhs = App.init_spi(clk) spi = Pvariable(config[CONF_ID], rhs) if CONF_MISO_PIN in config: for miso in gpio_input_pin_expression(config[CONF_MISO_PIN]): yield
import voluptuous as vol from esphome import automation import esphome.config_validation as cv from esphome.const import CONF_ID, CONF_INTERVAL from esphome.cpp_generator import Pvariable from esphome.cpp_helpers import setup_component from esphome.cpp_types import App, NoArg, PollingComponent, Trigger, esphome_ns IntervalTrigger = esphome_ns.class_('IntervalTrigger', Trigger.template(NoArg), PollingComponent) CONFIG_SCHEMA = automation.validate_automation( vol.Schema({ cv.GenerateID(): cv.declare_variable_id(IntervalTrigger), vol.Required(CONF_INTERVAL): cv.positive_time_period_milliseconds, }).extend(cv.COMPONENT_SCHEMA.schema)) def to_code(config): for conf in config: rhs = App.register_component(IntervalTrigger.new(conf[CONF_INTERVAL])) trigger = Pvariable(conf[CONF_ID], rhs) setup_component(trigger, conf) automation.build_automation(trigger, NoArg, conf)
import voluptuous as vol from esphome import config_validation as cv from esphome.const import CONF_ID, CONF_SCAN_INTERVAL, CONF_TYPE, CONF_UUID, ESP_PLATFORM_ESP32 from esphome.cpp_generator import Pvariable, RawExpression, add from esphome.cpp_helpers import setup_component from esphome.cpp_types import App, Component, esphome_ns ESP_PLATFORMS = [ESP_PLATFORM_ESP32] CONFLICTS_WITH = ['esp32_ble_tracker'] ESP32BLEBeacon = esphome_ns.class_('ESP32BLEBeacon', Component) CONF_MAJOR = 'major' CONF_MINOR = 'minor' CONFIG_SCHEMA = cv.Schema({ cv.GenerateID(): cv.declare_variable_id(ESP32BLEBeacon), vol.Required(CONF_TYPE): cv.one_of('IBEACON', upper=True), vol.Required(CONF_UUID): cv.uuid, vol.Optional(CONF_MAJOR): cv.uint16_t, vol.Optional(CONF_MINOR): cv.uint16_t, vol.Optional(CONF_SCAN_INTERVAL): cv.positive_time_period_milliseconds, }).extend(cv.COMPONENT_SCHEMA.schema) def to_code(config): uuid = config[CONF_UUID].hex uuid_arr = [RawExpression('0x{}'.format(uuid[i:i + 2])) for i in range(0, len(uuid), 2)] rhs = App.make_esp32_ble_beacon(uuid_arr) ble = Pvariable(config[CONF_ID], rhs)
EthernetType = esphome_ns.enum('EthernetType') ETHERNET_TYPES = { 'LAN8720': EthernetType.ETHERNET_TYPE_LAN8720, 'TLK110': EthernetType.ETHERNET_TYPE_TLK110, } eth_clock_mode_t = global_ns.enum('eth_clock_mode_t') CLK_MODES = { 'GPIO0_IN': eth_clock_mode_t.ETH_CLOCK_GPIO0_IN, 'GPIO0_OUT': eth_clock_mode_t.ETH_CLOCK_GPIO0_OUT, 'GPIO16_OUT': eth_clock_mode_t.ETH_CLOCK_GPIO16_OUT, 'GPIO17_OUT': eth_clock_mode_t.ETH_CLOCK_GPIO17_OUT, } EthernetComponent = esphome_ns.class_('EthernetComponent', Component) def validate(config): if CONF_USE_ADDRESS not in config: if CONF_MANUAL_IP in config: use_address = str(config[CONF_MANUAL_IP][CONF_STATIC_IP]) else: use_address = CORE.name + config[CONF_DOMAIN] config[CONF_USE_ADDRESS] = use_address return config CONFIG_SCHEMA = vol.All( cv.Schema({ cv.GenerateID():
import voluptuous as vol import esphome.config_validation as cv from esphome.const import CONF_AP, CONF_BSSID, CONF_CHANNEL, CONF_DNS1, CONF_DNS2, \ CONF_DOMAIN, CONF_FAST_CONNECT, CONF_GATEWAY, CONF_ID, CONF_MANUAL_IP, CONF_NETWORKS, \ CONF_PASSWORD, CONF_POWER_SAVE_MODE, CONF_REBOOT_TIMEOUT, CONF_SSID, CONF_STATIC_IP, \ CONF_SUBNET, CONF_USE_ADDRESS, CONF_HIDDEN from esphome.core import CORE, HexInt from esphome.cpp_generator import Pvariable, StructInitializer, add, variable from esphome.cpp_types import App, Component, esphome_ns, global_ns IPAddress = global_ns.class_('IPAddress') ManualIP = esphome_ns.struct('ManualIP') WiFiComponent = esphome_ns.class_('WiFiComponent', Component) WiFiAP = esphome_ns.struct('WiFiAP') WiFiPowerSaveMode = esphome_ns.enum('WiFiPowerSaveMode') WIFI_POWER_SAVE_MODES = { 'NONE': WiFiPowerSaveMode.WIFI_POWER_SAVE_NONE, 'LIGHT': WiFiPowerSaveMode.WIFI_POWER_SAVE_LIGHT, 'HIGH': WiFiPowerSaveMode.WIFI_POWER_SAVE_HIGH, } def validate_password(value): value = cv.string_strict(value) if not value: return value if len(value) < 8: raise vol.Invalid(u"WPA password must be at least 8 characters long") if len(value) > 64:
def shorthand_input_pullup_pin(value): value = input_pullup_pin(value) return {CONF_NUMBER: value} def validate_has_interrupt(value): if CORE.is_esp8266: if value[CONF_NUMBER] >= 16: raise vol.Invalid( "Pins GPIO16 and GPIO17 do not support interrupts and cannot be used " "here, got {}".format(value[CONF_NUMBER])) return value I2CDevice = esphome_ns.class_('I2CDevice') PCF8574Component = io_ns.class_('PCF8574Component', Component, I2CDevice) MCP23017 = io_ns.class_('MCP23017', Component, I2CDevice) PCF8574_OUTPUT_PIN_SCHEMA = cv.Schema({ vol.Required(CONF_PCF8574): cv.use_variable_id(PCF8574Component), vol.Required(CONF_NUMBER): vol.Coerce(int), vol.Optional(CONF_MODE): cv.one_of("OUTPUT", upper=True), vol.Optional(CONF_INVERTED, default=False): cv.boolean, }) PCF8574_INPUT_PIN_SCHEMA = PCF8574_OUTPUT_PIN_SCHEMA.extend({
import voluptuous as vol from esphome import pins import esphome.config_validation as cv from esphome.const import CONF_BAUD_RATE, CONF_ID, CONF_RX_PIN, CONF_TX_PIN from esphome.cpp_generator import Pvariable, add from esphome.cpp_helpers import setup_component from esphome.cpp_types import App, Component, esphome_ns UARTComponent = esphome_ns.class_('UARTComponent', Component) UARTDevice = esphome_ns.class_('UARTDevice') MULTI_CONF = True CONFIG_SCHEMA = vol.All(vol.Schema({ cv.GenerateID(): cv.declare_variable_id(UARTComponent), vol.Optional(CONF_TX_PIN): pins.output_pin, vol.Optional(CONF_RX_PIN): pins.input_pin, vol.Required(CONF_BAUD_RATE): cv.positive_int, }).extend(cv.COMPONENT_SCHEMA.schema), cv.has_at_least_one_key(CONF_TX_PIN, CONF_RX_PIN)) def to_code(config): rhs = App.init_uart(config[CONF_BAUD_RATE]) var = Pvariable(config[CONF_ID], rhs) if CONF_TX_PIN in config: add(var.set_tx_pin(config[CONF_TX_PIN])) if CONF_RX_PIN in config: add(var.set_rx_pin(config[CONF_RX_PIN])) setup_component(var, config)
import voluptuous as vol import esphome.config_validation as cv from esphome.const import CONF_COMPONENTS, CONF_ID, CONF_LAMBDA from esphome.cpp_generator import Pvariable, process_lambda, variable from esphome.cpp_helpers import setup_component from esphome.cpp_types import Component, ComponentPtr, esphome_ns, std_vector CustomComponentConstructor = esphome_ns.class_('CustomComponentConstructor') MULTI_CONF = True CONFIG_SCHEMA = vol.Schema({ cv.GenerateID(): cv.declare_variable_id(CustomComponentConstructor), vol.Required(CONF_LAMBDA): cv.lambda_, vol.Optional(CONF_COMPONENTS): cv.ensure_list( vol.Schema({ cv.GenerateID(): cv.declare_variable_id(Component) }).extend(cv.COMPONENT_SCHEMA.schema)), }) def to_code(config): for template_ in process_lambda( config[CONF_LAMBDA], [], return_type=std_vector.template(ComponentPtr)): yield rhs = CustomComponentConstructor(template_)
from esphome.const import CONF_ID, CONF_MODE, CONF_NUMBER, CONF_PINS, CONF_RUN_CYCLES, \ CONF_RUN_DURATION, CONF_SLEEP_DURATION, CONF_WAKEUP_PIN from esphome.cpp_generator import Pvariable, StructInitializer, add, get_variable from esphome.cpp_helpers import gpio_input_pin_expression, setup_component from esphome.cpp_types import Action, App, Component, esphome_ns, global_ns def validate_pin_number(value): valid_pins = [0, 2, 4, 12, 13, 14, 15, 25, 26, 27, 32, 39] if value[CONF_NUMBER] not in valid_pins: raise vol.Invalid(u"Only pins {} support wakeup" u"".format(', '.join(str(x) for x in valid_pins))) return value DeepSleepComponent = esphome_ns.class_('DeepSleepComponent', Component) EnterDeepSleepAction = esphome_ns.class_('EnterDeepSleepAction', Action) PreventDeepSleepAction = esphome_ns.class_('PreventDeepSleepAction', Action) WakeupPinMode = esphome_ns.enum('WakeupPinMode') WAKEUP_PIN_MODES = { 'IGNORE': WakeupPinMode.WAKEUP_PIN_MODE_IGNORE, 'KEEP_AWAKE': WakeupPinMode.WAKEUP_PIN_MODE_KEEP_AWAKE, 'INVERT_WAKEUP': WakeupPinMode.WAKEUP_PIN_MODE_INVERT_WAKEUP, } esp_sleep_ext1_wakeup_mode_t = global_ns.enum('esp_sleep_ext1_wakeup_mode_t') Ext1Wakeup = esphome_ns.struct('Ext1Wakeup') EXT1_WAKEUP_MODES = { 'ALL_LOW': esp_sleep_ext1_wakeup_mode_t.ESP_EXT1_WAKEUP_ALL_LOW, 'ANY_HIGH': esp_sleep_ext1_wakeup_mode_t.ESP_EXT1_WAKEUP_ANY_HIGH,
import voluptuous as vol from esphome.components import binary_sensor from esphome.components.esp32_ble_tracker import CONF_ESP32_BLE_ID, ESP32BLETracker, \ make_address_array import esphome.config_validation as cv from esphome.const import CONF_MAC_ADDRESS, CONF_NAME from esphome.cpp_generator import get_variable from esphome.cpp_types import esphome_ns DEPENDENCIES = ['esp32_ble_tracker'] ESP32BLEPresenceDevice = esphome_ns.class_('ESP32BLEPresenceDevice', binary_sensor.BinarySensor) PLATFORM_SCHEMA = cv.nameable( binary_sensor.BINARY_SENSOR_PLATFORM_SCHEMA.extend({ cv.GenerateID(): cv.declare_variable_id(ESP32BLEPresenceDevice), vol.Required(CONF_MAC_ADDRESS): cv.mac_address, cv.GenerateID(CONF_ESP32_BLE_ID): cv.use_variable_id(ESP32BLETracker) })) def to_code(config): for hub in get_variable(config[CONF_ESP32_BLE_ID]): yield rhs = hub.make_presence_sensor( config[CONF_NAME], make_address_array(config[CONF_MAC_ADDRESS])) binary_sensor.register_binary_sensor(rhs, config)
import voluptuous as vol from esphome import config_validation as cv, pins from esphome.const import CONF_FREQUENCY, CONF_ID, CONF_NAME, CONF_PIN, CONF_SCL, CONF_SDA, \ ESP_PLATFORM_ESP32 from esphome.cpp_generator import Pvariable, add from esphome.cpp_types import App, Nameable, PollingComponent, esphome_ns ESP_PLATFORMS = [ESP_PLATFORM_ESP32] ESP32Camera = esphome_ns.class_('ESP32Camera', PollingComponent, Nameable) ESP32CameraFrameSize = esphome_ns.enum('ESP32CameraFrameSize') FRAME_SIZES = { '160X120': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_160X120, 'QQVGA': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_160X120, '128x160': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_128X160, 'QQVGA2': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_128X160, '176X144': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_176X144, 'QCIF': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_176X144, '240X176': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_240X176, 'HQVGA': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_240X176, '320X240': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_320X240, 'QVGA': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_320X240, '400X296': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_400X296, 'CIF': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_400X296, '640X480': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_640X480, 'VGA': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_640X480, '800X600': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_800X600, 'SVGA': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_800X600, '1024X768': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_1024X768, 'XGA': ESP32CameraFrameSize.ESP32_CAMERA_SIZE_1024X768,
import voluptuous as vol from esphome import config_validation as cv, pins from esphome.const import CONF_ID, CONF_PIN from esphome.cpp_generator import Pvariable from esphome.cpp_helpers import gpio_output_pin_expression, setup_component from esphome.cpp_types import App, Component, esphome_ns StatusLEDComponent = esphome_ns.class_('StatusLEDComponent', Component) CONFIG_SCHEMA = cv.Schema({ cv.GenerateID(): cv.declare_variable_id(StatusLEDComponent), vol.Optional(CONF_PIN): pins.gpio_output_pin_schema, }).extend(cv.COMPONENT_SCHEMA.schema) def to_code(config): for pin in gpio_output_pin_expression(config[CONF_PIN]): yield rhs = App.make_status_led(pin) var = Pvariable(config[CONF_ID], rhs) setup_component(var, config) BUILD_FLAGS = '-DUSE_STATUS_LED'
import voluptuous as vol from esphome import automation from esphome.automation import ACTION_REGISTRY, maybe_simple_id import esphome.config_validation as cv from esphome.const import CONF_ID from esphome.cpp_generator import Pvariable, get_variable from esphome.cpp_types import Action, NoArg, Trigger, esphome_ns Script = esphome_ns.class_('Script', Trigger.template(NoArg)) ScriptExecuteAction = esphome_ns.class_('ScriptExecuteAction', Action) ScriptStopAction = esphome_ns.class_('ScriptStopAction', Action) CONFIG_SCHEMA = automation.validate_automation({ vol.Required(CONF_ID): cv.declare_variable_id(Script), }) def to_code(config): for conf in config: trigger = Pvariable(conf[CONF_ID], Script.new()) automation.build_automation(trigger, NoArg, conf) CONF_SCRIPT_EXECUTE = 'script.execute' SCRIPT_EXECUTE_ACTION_SCHEMA = maybe_simple_id({ vol.Required(CONF_ID): cv.use_variable_id(Script), })
import voluptuous as vol from esphome.automation import CONDITION_REGISTRY, Condition import esphome.config_validation as cv from esphome.const import CONF_AP, CONF_BSSID, CONF_CHANNEL, CONF_DNS1, CONF_DNS2, CONF_DOMAIN, \ CONF_FAST_CONNECT, CONF_GATEWAY, CONF_HIDDEN, CONF_ID, CONF_MANUAL_IP, CONF_NETWORKS, \ CONF_PASSWORD, CONF_POWER_SAVE_MODE, CONF_REBOOT_TIMEOUT, CONF_SSID, CONF_STATIC_IP, \ CONF_SUBNET, CONF_USE_ADDRESS from esphome.core import CORE, HexInt from esphome.cpp_generator import Pvariable, StructInitializer, add, variable from esphome.cpp_types import App, Component, esphome_ns, global_ns IPAddress = global_ns.class_('IPAddress') ManualIP = esphome_ns.struct('ManualIP') WiFiComponent = esphome_ns.class_('WiFiComponent', Component) WiFiAP = esphome_ns.struct('WiFiAP') WiFiPowerSaveMode = esphome_ns.enum('WiFiPowerSaveMode') WIFI_POWER_SAVE_MODES = { 'NONE': WiFiPowerSaveMode.WIFI_POWER_SAVE_NONE, 'LIGHT': WiFiPowerSaveMode.WIFI_POWER_SAVE_LIGHT, 'HIGH': WiFiPowerSaveMode.WIFI_POWER_SAVE_HIGH, } WiFiConnectedCondition = esphome_ns.class_('WiFiConnectedCondition', Condition) def validate_password(value): value = cv.string_strict(value) if not value: return value if len(value) < 8:
import voluptuous as vol from esphome.components import sensor from esphome.components.esp32_ble_tracker import CONF_ESP32_BLE_ID, ESP32BLETracker, \ make_address_array import esphome.config_validation as cv from esphome.const import CONF_MAC_ADDRESS, CONF_NAME from esphome.cpp_generator import get_variable from esphome.cpp_types import esphome_ns DEPENDENCIES = ['esp32_ble_tracker'] ESP32BLERSSISensor = esphome_ns.class_('ESP32BLERSSISensor', sensor.Sensor) PLATFORM_SCHEMA = cv.nameable( sensor.SENSOR_PLATFORM_SCHEMA.extend({ cv.GenerateID(): cv.declare_variable_id(ESP32BLERSSISensor), vol.Required(CONF_MAC_ADDRESS): cv.mac_address, cv.GenerateID(CONF_ESP32_BLE_ID): cv.use_variable_id(ESP32BLETracker) })) def to_code(config): for hub in get_variable(config[CONF_ESP32_BLE_ID]): yield rhs = hub.make_rssi_sensor(config[CONF_NAME], make_address_array(config[CONF_MAC_ADDRESS])) sensor.register_sensor(rhs, config)
import voluptuous as vol from esphome import config_validation as cv from esphome.const import CONF_ID, CONF_INITIAL_VALUE, CONF_RESTORE_VALUE, CONF_TYPE from esphome.cpp_generator import Pvariable, RawExpression, TemplateArguments, add from esphome.cpp_helpers import setup_component from esphome.cpp_types import App, Component, esphome_ns GlobalVariableComponent = esphome_ns.class_('GlobalVariableComponent', Component) MULTI_CONF = True CONFIG_SCHEMA = vol.Schema({ vol.Required(CONF_ID): cv.declare_variable_id(GlobalVariableComponent), vol.Required(CONF_TYPE): cv.string_strict, vol.Optional(CONF_INITIAL_VALUE): cv.string_strict, vol.Optional(CONF_RESTORE_VALUE): cv.boolean, }).extend(cv.COMPONENT_SCHEMA.schema) def to_code(config): type_ = RawExpression(config[CONF_TYPE]) template_args = TemplateArguments(type_) res_type = GlobalVariableComponent.template(template_args) initial_value = None if CONF_INITIAL_VALUE in config: initial_value = RawExpression(config[CONF_INITIAL_VALUE]) rhs = App.Pmake_global_variable(template_args, initial_value) glob = Pvariable(config[CONF_ID], rhs, type=res_type) if config.get(CONF_RESTORE_VALUE, False):
except vol.Invalid as err: err.prepend(path) raise err value[i] = { CONF_ACTION_ID: cv.declare_variable_id(Action)(item[CONF_ACTION_ID]), key: action, } return value ACTION_REGISTRY = ServiceRegistry() CONDITION_REGISTRY = ServiceRegistry() # pylint: disable=invalid-name DelayAction = esphome_ns.class_('DelayAction', Action, Component) LambdaAction = esphome_ns.class_('LambdaAction', Action) IfAction = esphome_ns.class_('IfAction', Action) WhileAction = esphome_ns.class_('WhileAction', Action) WaitUntilAction = esphome_ns.class_('WaitUntilAction', Action, Component) UpdateComponentAction = esphome_ns.class_('UpdateComponentAction', Action) Automation = esphome_ns.class_('Automation') Condition = esphome_ns.class_('Condition') AndCondition = esphome_ns.class_('AndCondition', Condition) OrCondition = esphome_ns.class_('OrCondition', Condition) RangeCondition = esphome_ns.class_('RangeCondition', Condition) LambdaCondition = esphome_ns.class_('LambdaCondition', Condition) def validate_automation(extra_schema=None,
import logging import voluptuous as vol import esphome.config_validation as cv from esphome.const import CONF_ID, CONF_OTA, CONF_PASSWORD, CONF_PORT, CONF_SAFE_MODE from esphome.core import CORE from esphome.cpp_generator import Pvariable, add from esphome.cpp_types import App, Component, esphome_ns _LOGGER = logging.getLogger(__name__) OTAComponent = esphome_ns.class_('OTAComponent', Component) CONFIG_SCHEMA = vol.Schema({ cv.GenerateID(): cv.declare_variable_id(OTAComponent), vol.Optional(CONF_SAFE_MODE, default=True): cv.boolean, vol.Optional(CONF_PORT): cv.port, vol.Optional(CONF_PASSWORD): cv.string, }) def to_code(config): rhs = App.init_ota() ota = Pvariable(config[CONF_ID], rhs) if CONF_PASSWORD in config: add(ota.set_auth_password(config[CONF_PASSWORD]))
import voluptuous as vol from esphome import config_validation as cv from esphome.components import sensor from esphome.const import CONF_ID, CONF_SCAN_INTERVAL, ESP_PLATFORM_ESP32 from esphome.core import HexInt from esphome.cpp_generator import Pvariable, add from esphome.cpp_helpers import setup_component from esphome.cpp_types import App, Component, esphome_ns ESP_PLATFORMS = [ESP_PLATFORM_ESP32] CONF_ESP32_BLE_ID = 'esp32_ble_id' ESP32BLETracker = esphome_ns.class_('ESP32BLETracker', Component) XiaomiSensor = esphome_ns.class_('XiaomiSensor', sensor.Sensor) XiaomiDevice = esphome_ns.class_('XiaomiDevice') XIAOMI_SENSOR_SCHEMA = sensor.SENSOR_SCHEMA.extend( {cv.GenerateID(): cv.declare_variable_id(XiaomiSensor)}) CONFIG_SCHEMA = cv.Schema({ cv.GenerateID(): cv.declare_variable_id(ESP32BLETracker), vol.Optional(CONF_SCAN_INTERVAL): cv.positive_time_period_seconds, }).extend(cv.COMPONENT_SCHEMA.schema) def make_address_array(address): return [HexInt(i) for i in address.parts]
import voluptuous as vol from esphome import pins import esphome.config_validation as cv from esphome.const import CONF_FREQUENCY, CONF_ID, CONF_RECEIVE_TIMEOUT, CONF_SCAN, CONF_SCL, \ CONF_SDA from esphome.cpp_generator import Pvariable, add from esphome.cpp_helpers import setup_component from esphome.cpp_types import App, Component, esphome_ns I2CComponent = esphome_ns.class_('I2CComponent', Component) I2CDevice = pins.I2CDevice CONFIG_SCHEMA = cv.Schema({ cv.GenerateID(): cv.declare_variable_id(I2CComponent), vol.Optional(CONF_SDA, default='SDA'): pins.input_pin, vol.Optional(CONF_SCL, default='SCL'): pins.input_pin, vol.Optional(CONF_FREQUENCY): vol.All(cv.frequency, vol.Range(min=0, min_included=False)), vol.Optional(CONF_SCAN, default=True): cv.boolean, vol.Optional(CONF_RECEIVE_TIMEOUT): cv.invalid("The receive_timeout option has been removed " "because timeouts are already handled by the " "low-level i2c interface.") }).extend(cv.COMPONENT_SCHEMA.schema)
import voluptuous as vol from esphome.automation import ACTION_REGISTRY from esphome.components.output import FloatOutput import esphome.config_validation as cv from esphome.const import CONF_ID, CONF_IDLE_LEVEL, CONF_MAX_LEVEL, CONF_MIN_LEVEL, CONF_OUTPUT, \ CONF_LEVEL from esphome.cpp_generator import Pvariable, add, get_variable, templatable from esphome.cpp_helpers import setup_component from esphome.cpp_types import App, Component, esphome_ns, Action, float_ Servo = esphome_ns.class_('Servo', Component) ServoWriteAction = esphome_ns.class_('ServoWriteAction', Action) MULTI_CONF = True CONFIG_SCHEMA = cv.Schema({ vol.Required(CONF_ID): cv.declare_variable_id(Servo), vol.Required(CONF_OUTPUT): cv.use_variable_id(FloatOutput), vol.Optional(CONF_MIN_LEVEL, default='3%'): cv.percentage, vol.Optional(CONF_IDLE_LEVEL, default='7.5%'): cv.percentage, vol.Optional(CONF_MAX_LEVEL, default='12%'): cv.percentage, }).extend(cv.COMPONENT_SCHEMA.schema) def to_code(config):