esphome: name: $devicename comment: $devicecomment platform: ESP8266 board: d1_mini build_path: build/test3 on_boot: - wait_until: - api.connected - wifi.connected includes: - custom.h substitutions: devicename: test3 devicecomment: test3 device api: port: 8000 password: 'pwd' reboot_timeout: 0min services: - service: hello_world variables: name: string then: - logger.log: format: 'Hello World %s!' args: - name.c_str() - service: empty_service then: - logger.log: 'Service Called' - service: all_types variables: bool_: bool int_: int float_: float string_: string then: - logger.log: 'Something happened' - stepper.set_target: id: my_stepper2 target: !lambda 'return int_;' - service: array_types variables: bool_arr: bool[] int_arr: int[] float_arr: float[] string_arr: string[] then: - logger.log: format: 'Bool: %s (%u), Int: %d (%u), Float: %f (%u), String: %s (%u)' args: - YESNO(bool_arr[0]) - bool_arr.size() - int_arr[0] - int_arr.size() - float_arr[0] - float_arr.size() - string_arr[0].c_str() - string_arr.size() - service: dfplayer_next then: - dfplayer.play_next: - service: dfplayer_previous then: - dfplayer.play_previous: - service: dfplayer_play variables: file: int then: - dfplayer.play: !lambda 'return file;' - service: dfplayer_play_loop variables: file: int loop_: bool then: - dfplayer.play: file: !lambda 'return file;' loop: !lambda 'return loop_;' - service: dfplayer_play_folder variables: folder: int file: int then: - dfplayer.play_folder: folder: !lambda 'return folder;' file: !lambda 'return file;' - service: dfplayer_play_loo_folder variables: folder: int then: - dfplayer.play_folder: folder: !lambda 'return folder;' loop: True - service: dfplayer_set_device variables: device: int then: - dfplayer.set_device: device: TF_CARD - service: dfplayer_set_volume variables: volume: int then: - dfplayer.set_volume: !lambda 'return volume;' - service: dfplayer_set_eq variables: preset: int then: - dfplayer.set_eq: !lambda 'return static_cast(preset);' - service: dfplayer_sleep then: - dfplayer.sleep - service: dfplayer_reset then: - dfplayer.reset - service: dfplayer_start then: - dfplayer.start - service: dfplayer_pause then: - dfplayer.pause - service: dfplayer_stop then: - dfplayer.stop - service: dfplayer_random then: - dfplayer.random wifi: ssid: 'MySSID' password: 'password1' i2c: sda: 4 scl: 5 scan: False spi: clk_pin: GPIO12 mosi_pin: GPIO13 miso_pin: GPIO14 uart: tx_pin: GPIO1 rx_pin: GPIO3 baud_rate: 115200 ota: safe_mode: True port: 3286 logger: hardware_uart: UART1 level: DEBUG esp8266_store_log_strings_in_flash: false web_server: deep_sleep: run_duration: 20s sleep_duration: 50s sensor: - platform: apds9960 type: proximity name: APDS9960 Proximity - platform: apds9960 type: clear name: APDS9960 Clear - platform: apds9960 type: red name: APDS9960 Red - platform: apds9960 type: green name: APDS9960 Green - platform: apds9960 type: blue name: APDS9960 Blue - platform: homeassistant entity_id: sensor.hello_world id: ha_hello_world - platform: am2320 temperature: name: "Temperature" humidity: name: "Humidity" - platform: adc pin: VCC id: my_sensor filters: - offset: 5.0 - multiply: 2.0 - filter_out: NAN - sliding_window_moving_average: - exponential_moving_average: - lambda: 'return 0;' - delta: 100 - throttle: 100ms - debounce: 500s - calibrate_linear: - 0 -> 0 - 100 -> 100 - calibrate_polynomial: degree: 3 datapoints: - 0 -> 0 - 100 -> 200 - 400 -> 500 - -50 -> -1000 - -100 -> -10000 - platform: resistance sensor: my_sensor configuration: DOWNSTREAM resistor: 10kΩ reference_voltage: 3.3V name: Resistance id: resist - platform: ntc sensor: resist name: NTC Sensor calibration: b_constant: 3950 reference_resistance: 10k reference_temperature: 25°C - platform: ntc sensor: resist name: NTC Sensor2 calibration: - 10.0kOhm -> 25°C - 27.219kOhm -> 0°C - 14.674kOhm -> 15°C - platform: ct_clamp sensor: my_sensor name: CT Clamp sample_duration: 500ms update_interval: 5s - platform: tcs34725 red_channel: name: Red Channel green_channel: name: Green Channel blue_channel: name: Blue Channel clear_channel: name: Clear Channel illuminance: name: Illuminance color_temperature: name: Color Temperature integration_time: 700ms gain: 60x - platform: custom lambda: |- auto s = new CustomSensor(); App.register_component(s); return {s}; sensors: - id: custom_sensor name: Custom Sensor - platform: binary_sensor_map name: Binary Sensor Map type: group channels: - binary_sensor: bin1 value: 10.0 - binary_sensor: bin2 value: 15.0 - binary_sensor: bin3 value: 100.0 - platform: ade7953 voltage: name: ADE7953 Voltage current_a: name: ADE7953 Current A current_b: name: ADE7953 Current B active_power_a: name: ADE7953 Active Power A active_power_b: name: ADE7953 Active Power B time: - platform: homeassistant apds9960: address: 0x20 update_interval: 60s mpr121: id: mpr121_first address: 0x5A binary_sensor: - platform: apds9960 direction: up name: APDS9960 Up device_class: motion filters: - invert - delayed_on: 20ms - delayed_off: 20ms - lambda: 'return false;' on_state: - logger.log: New state id: my_binary_sensor - platform: apds9960 direction: down name: APDS9960 Down - platform: apds9960 direction: left name: APDS9960 Left - platform: apds9960 direction: right name: APDS9960 Right - platform: homeassistant entity_id: binary_sensor.hello_world id: ha_hello_world_binary - platform: mpr121 id: touchkey0 channel: 0 name: "touchkey0" - platform: mpr121 channel: 1 name: "touchkey1" id: bin1 - platform: mpr121 channel: 2 name: "touchkey2" id: bin2 - platform: mpr121 channel: 3 name: "touchkey3" id: bin3 on_press: then: - switch.toggle: mpr121_toggle - platform: ttp229_lsf channel: 1 name: TTP229 LSF Test - platform: ttp229_bsf channel: 1 name: TTP229 BSF Test - platform: custom lambda: |- auto s = new CustomBinarySensor(); App.register_component(s); return {s}; binary_sensors: - id: custom_binary_sensor name: Custom Binary Sensor globals: - id: my_global_string type: std::string initial_value: '""' remote_receiver: pin: GPIO12 dump: [] status_led: pin: GPIO2 text_sensor: - platform: version name: "ESPHome Version" icon: mdi:icon id: version_sensor on_value: - lambda: !lambda |- ESP_LOGD("main", "The state is %s=%s", x.c_str(), id(version_sensor).state.c_str()); - script.execute: my_script - script.wait: my_script - script.stop: my_script - homeassistant.service: service: notify.html5 data: title: New Humidity data_template: message: The humidity is {{ my_variable }}%. variables: my_variable: |- return id(version_sensor).state; - platform: template name: "Template Text Sensor" lambda: |- return {"Hello World"}; - platform: homeassistant entity_id: sensor.hello_world2 id: ha_hello_world2 - platform: custom lambda: |- auto s = new CustomTextSensor(); App.register_component(s); return {s}; text_sensors: - id: custom_text_sensor name: Custom Text Sensor script: - id: my_script then: - lambda: 'ESP_LOGD("main", "Hello World!");' switch: - platform: template name: "mpr121_toggle" id: mpr121_toggle optimistic: True - platform: gpio id: gpio_switch1 pin: mcp23017: mcp23017_hub number: 0 mode: OUTPUT interlock: &interlock [gpio_switch1, gpio_switch2, gpio_switch3] - platform: gpio id: gpio_switch2 pin: mcp23008: mcp23008_hub number: 0 mode: OUTPUT interlock: *interlock - platform: gpio id: gpio_switch3 pin: GPIO1 interlock: *interlock - platform: custom lambda: |- auto s = new CustomSwitch(); return {s}; switches: - id: custom_switch name: Custom Switch custom_component: lambda: |- auto s = new CustomComponent(); s->set_update_interval(15000); return {s}; stepper: - platform: uln2003 id: my_stepper pin_a: GPIO12 pin_b: GPIO13 pin_c: GPIO14 pin_d: GPIO15 sleep_when_done: no step_mode: HALF_STEP max_speed: 250 steps/s acceleration: inf deceleration: inf - platform: a4988 id: my_stepper2 step_pin: GPIO1 dir_pin: GPIO2 max_speed: 0.1 steps/s acceleration: 10 steps/s^2 deceleration: 10 steps/s^2 interval: interval: 5s then: - logger.log: "Interval Run" - stepper.set_target: id: my_stepper2 target: 500 - stepper.set_target: id: my_stepper target: !lambda 'return 0;' - stepper.report_position: id: my_stepper2 position: 0 - stepper.report_position: id: my_stepper position: !lambda 'return 50/100.0;' climate: - platform: bang_bang name: Bang Bang Climate sensor: ha_hello_world default_target_temperature_low: 18°C default_target_temperature_high: 24°C idle_action: - switch.turn_on: gpio_switch1 cool_action: - switch.turn_on: gpio_switch2 heat_action: - switch.turn_on: gpio_switch1 away_config: default_target_temperature_low: 16°C default_target_temperature_high: 20°C cover: - platform: endstop name: Endstop Cover stop_action: - switch.turn_on: gpio_switch1 open_endstop: my_binary_sensor open_action: - switch.turn_on: gpio_switch1 open_duration: 5min close_endstop: my_binary_sensor close_action: - switch.turn_on: gpio_switch2 - output.set_level: id: out level: 50% - output.esp8266_pwm.set_frequency: id: out frequency: 500.0Hz - output.esp8266_pwm.set_frequency: id: out frequency: !lambda 'return 500.0;' - servo.write: id: my_servo level: -100% - servo.write: id: my_servo level: !lambda 'return -1.0;' - delay: 2s - servo.detach: my_servo close_duration: 4.5min max_duration: 10min - platform: time_based name: Time Based Cover stop_action: - switch.turn_on: gpio_switch1 open_action: - switch.turn_on: gpio_switch1 open_duration: 5min close_action: - switch.turn_on: gpio_switch2 close_duration: 4.5min - platform: template name: Template Cover with Tilt tilt_lambda: "return 0.5;" tilt_action: - output.set_level: id: out level: !lambda "return tilt;" output: - platform: esp8266_pwm id: out pin: D3 frequency: 50Hz - platform: custom type: binary lambda: |- auto s = new CustomBinaryOutput(); App.register_component(s); return {s}; outputs: - id: custom_binary - platform: custom type: float lambda: |- auto s = new CustomFloatOutput(); App.register_component(s); return {s}; outputs: - id: custom_float mcp23017: id: mcp23017_hub mcp23008: id: mcp23008_hub light: - platform: neopixelbus name: Neopixelbus Light pin: GPIO1 type: GRBW variant: SK6812 method: ESP8266_UART0 num_leds: 100 servo: id: my_servo output: out ttp229_lsf: ttp229_bsf: sdo_pin: D0 scl_pin: D1 sim800l: on_sms_received: - lambda: |- std::string str; str = sender; str = message; - sim800l.send_sms: message: 'hello you' recipient: '+1234' dfplayer: on_finished_playback: then: if: condition: not: dfplayer.is_playing then: logger.log: 'Playback finished event'