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 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 - id: adalight_uart 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: prometheus: true 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 - 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 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: 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" 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 - 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: 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: uart_id: adalight_uart - e131: universe: 1 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' 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 display: - platform: max7219digit cs_pin: GPIO15 num_chips: 4 rotate_chip: 0 intensity: 10 scroll_mode: 'STOP' id: my_matrix lambda: |- it.printdigit("hello");