esphome: name: $devicename comment: $devicecomment platform: ESP8266 board: d1_mini build_path: build/test3 on_boot: - wait_until: - api.connected - wifi.connected - time.has_time includes: - custom.h substitutions: devicename: test3 devicecomment: test3 device min_sub: '0.03' max_sub: '12.0%' 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 - service: battery_level_percent variables: level_percent: int then: - tm1651.set_level_percent: id: tm1651_battery level_percent: !lambda 'return level_percent;' - service: battery_level variables: level: int then: - tm1651.set_level: id: tm1651_battery level: !lambda 'return level;' - service: battery_brightness variables: brightness: int then: - tm1651.set_brightness: id: tm1651_battery brightness: !lambda 'return brightness;' - service: battery_turn_on then: - tm1651.turn_on: id: tm1651_battery - service: battery_turn_on then: - tm1651.turn_off: id: tm1651_battery - service: pid_set_control_parameters then: - climate.pid.set_control_parameters: id: pid_climate kp: 1.0 kd: 1.0 ki: 1.0 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 reboot_timeout: 15min logger: hardware_uart: UART1 level: DEBUG esp8266_store_log_strings_in_flash: false web_server: deep_sleep: run_duration: 20s sleep_duration: 50s wled: adalight: sensor: - platform: apds9960 type: proximity name: APDS9960 Proximity - platform: vl53l0x name: 'VL53L0x Distance' address: 0x29 update_interval: 60s enable_pin: GPIO13 timeout: 200us - 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: aht10 temperature: name: 'Temperature' humidity: name: 'Humidity' - 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 irq_pin: GPIO16 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 - platform: pzem004t voltage: name: 'PZEM00T Voltage' current: name: 'PZEM004T Current' power: name: 'PZEM004T Power' - platform: pzemac voltage: name: 'PZEMAC Voltage' current: name: 'PZEMAC Current' power: name: 'PZEMAC Power' energy: name: 'PZEMAC Energy' frequency: name: 'PZEMAC Frequency' power_factor: name: 'PZEMAC Power Factor' - platform: pzemdc voltage: name: 'PZEMDC Voltage' current: name: 'PZEMDC Current' power: name: 'PZEMDC Power' - platform: tmp102 name: 'TMP102 Temperature' - platform: hm3301 pm_1_0: name: 'PM1.0' pm_2_5: name: 'PM2.5' pm_10_0: name: 'PM10.0' aqi: name: 'AQI' calculation_type: 'AQI' - platform: pmsx003 type: PMSX003 pm_1_0: name: 'PM 1.0 Concentration' pm_2_5: name: 'PM 2.5 Concentration' pm_10_0: name: 'PM 10.0 Concentration' - platform: pmsx003 type: PMS5003T pm_2_5: name: 'PM 2.5 Concentration' temperature: name: 'PMS Temperature' humidity: name: 'PMS Humidity' - platform: pmsx003 type: PMS5003ST pm_2_5: name: 'PM 2.5 Concentration' temperature: name: 'PMS Temperature' humidity: name: 'PMS Humidity' formaldehyde: name: 'PMS Formaldehyde Concentration' - platform: cse7766 voltage: name: 'CSE7766 Voltage' current: name: 'CSE7766 Current' power: name: 'CSE776 Power' - platform: ezo id: ph_ezo address: 99 unit_of_measurement: 'pH' 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: mcp23xxx: mcp23017_hub number: 0 mode: OUTPUT interlock: &interlock [gpio_switch1, gpio_switch2, gpio_switch3] - platform: gpio id: gpio_switch2 pin: mcp23xxx: 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 - platform: thermostat name: Thermostat 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 dry_action: - switch.turn_on: gpio_switch2 fan_only_action: - switch.turn_on: gpio_switch1 auto_mode: - switch.turn_on: gpio_switch2 off_mode: - switch.turn_on: gpio_switch1 heat_mode: - switch.turn_on: gpio_switch2 cool_mode: - switch.turn_on: gpio_switch1 dry_mode: - switch.turn_on: gpio_switch2 fan_only_mode: - switch.turn_on: gpio_switch1 fan_mode_auto_action: - switch.turn_on: gpio_switch2 fan_mode_on_action: - switch.turn_on: gpio_switch1 fan_mode_off_action: - switch.turn_on: gpio_switch2 fan_mode_low_action: - switch.turn_on: gpio_switch1 fan_mode_medium_action: - switch.turn_on: gpio_switch2 fan_mode_high_action: - switch.turn_on: gpio_switch1 fan_mode_middle_action: - switch.turn_on: gpio_switch2 fan_mode_focus_action: - switch.turn_on: gpio_switch1 fan_mode_diffuse_action: - switch.turn_on: gpio_switch2 swing_off_action: - switch.turn_on: gpio_switch1 swing_horizontal_action: - switch.turn_on: gpio_switch2 swing_vertical_action: - switch.turn_on: gpio_switch1 swing_both_action: - switch.turn_on: gpio_switch2 hysteresis: 0.2 away_config: default_target_temperature_low: 16°C default_target_temperature_high: 20°C - platform: pid id: pid_climate name: 'PID Climate Controller' sensor: ha_hello_world default_target_temperature: 21°C heat_output: my_slow_pwm control_parameters: kp: 0.0 ki: 0.0 kd: 0.0 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;' position_action: - output.set_level: id: out level: !lambda 'return pos;' output: - platform: esp8266_pwm id: out pin: D3 frequency: 50Hz - platform: esp8266_pwm id: out2 pin: D4 - 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 - platform: ac_dimmer id: dimmer1 gate_pin: GPIO5 zero_cross_pin: GPIO12 - platform: slow_pwm pin: GPIO5 id: my_slow_pwm period: 15s mcp23017: id: mcp23017_hub mcp23008: id: mcp23008_hub e131: light: - platform: neopixelbus name: Neopixelbus Light pin: GPIO1 type: GRBW variant: SK6812 method: ESP8266_UART0 num_leds: 100 effects: - wled: - adalight: - e131: universe: 1 - platform: hbridge name: Icicle Lights pin_a: out pin_b: out2 servo: id: my_servo output: out restore: true min_level: $min_sub max_level: $max_sub 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' - sim800l.dial: recipient: '+1234' dfplayer: on_finished_playback: then: if: condition: not: dfplayer.is_playing then: logger.log: 'Playback finished event' tm1651: id: tm1651_battery clk_pin: D6 dio_pin: D5 rf_bridge: on_code_received: - lambda: |- uint32_t test; test = data.sync; test = data.low; test = data.high; test = data.code; - rf_bridge.send_code: sync: 0x1234 low: 0x1234 high: 0x1234 code: 0x123456 - rf_bridge.learn on_advanced_code_received: - lambda: |- uint32_t test; std::string test_code; test = data.length; test = data.protocol; test_code = data.code; - rf_bridge.start_advanced_sniffing - rf_bridge.stop_advanced_sniffing - rf_bridge.send_advanced_code: length: 0x04 protocol: 0x01 code: 'ABC123' - rf_bridge.send_raw: raw: 'AAA5070008001000ABC12355' - http_request.get: url: https://esphome.io headers: Content-Type: application/json verify_ssl: false - http_request.post: url: https://esphome.io verify_ssl: false json: key: !lambda |- return id(version_sensor).state; greeting: 'Hello World' - http_request.send: method: PUT url: https://esphome.io headers: Content-Type: application/json body: 'Some data' verify_ssl: false display: - platform: max7219digit cs_pin: GPIO15 num_chips: 4 rotate_chip: 0 intensity: 10 scroll_mode: 'STOP' id: my_matrix lambda: |- it.printdigit("hello"); http_request: useragent: esphome/device timeout: 10s