diff --git a/tests/test1.yaml b/tests/test1.yaml
new file mode 100644
index 0000000000..1080c84ca1
--- /dev/null
+++ b/tests/test1.yaml
@@ -0,0 +1,1366 @@
+esphome:
+  name: test1
+  platform: ESP32
+  board: nodemcu-32s
+  on_boot:
+    priority: 150.0
+    then:
+      - lambda: >-
+          ESP_LOGD("main", "ON BOOT!");
+  on_shutdown:
+    then:
+      - lambda: >-
+          ESP_LOGD("main", "ON SHUTDOWN!");
+  on_loop:
+    then:
+      - lambda: >-
+          ESP_LOGV("main", "ON LOOP!");
+      - light.addressable_set:
+          id: addr1
+          range_from: 0
+          range_to: 100
+          red: 100%
+          green: !lambda 'return 255;'
+          blue: 0%
+          white: 100%
+  build_path: build/test1
+
+wifi:
+  networks:
+  - ssid: 'MySSID'
+    password: 'password1'
+  - ssid: 'MySSID2'
+    password: ''
+    channel: 14
+    bssid: 'A1:63:95:47:D3:1D'
+  manual_ip:
+    static_ip: 192.168.178.230
+    gateway: 192.168.178.1
+    subnet: 255.255.255.0
+    dns1: 1.1.1.1
+    dns2: 1.2.2.1
+  domain: .local
+  reboot_timeout: 120s
+  power_save_mode: none
+
+mqtt:
+  broker: '192.168.178.84'
+  port: 1883
+  username: 'debug'
+  password: 'debug'
+  client_id: someclient
+  discovery: True
+  discovery_retain: False
+  discovery_prefix: discovery
+  topic_prefix: helloworld
+  log_topic:
+    topic: helloworld/hi
+    level: INFO
+  birth_message:
+  will_message:
+  shutdown_message:
+    topic: topic/to/send/to
+    payload: hi
+    qos: 2
+    retain: True
+  keepalive: 60s
+  reboot_timeout: 60s
+  on_message:
+    - topic: my/custom/topic
+      qos: 0
+      then:
+        - lambda: >-
+            ESP_LOGD("main", "Got message %s", x.c_str());
+    - topic: livingroom/ota_mode
+      then:
+      - deep_sleep.prevent: deep_sleep_1
+    - topic: livingroom/ota_mode
+      then:
+      - deep_sleep.enter: deep_sleep_1
+  on_json_message:
+    topic: the/topic
+    then:
+    - if:
+        condition:
+          - wifi.connected:
+          - mqtt.connected:
+          - light.is_on: kitchen
+          - light.is_off: kitchen
+        then:
+        - lambda: |-
+            int data = x["my_data"];
+            ESP_LOGD("main", "The data is: %d", data);
+        - light.turn_on:
+            id: living_room_lights
+            brightness: !lambda |-
+              float brightness = 1.0;
+              if (x.containsKey("brightness"))
+                brightness = x["brightness"];
+              return brightness;
+            effect: !lambda |-
+              const char *effect = "None";
+              if (x.containsKey("effect"))
+                effect = x["effect"];
+              return effect;
+        - light.control:
+            id: living_room_lights
+            brightness: !lambda 'return id(living_room_lights).current_values.get_brightness() + 0.5;'
+        - light.dim_relative:
+            id: living_room_lights
+            relative_brightness: 5%
+        - uart.write:
+            id: uart0
+            data: Hello World
+        - uart.write: [0x00, 0x20, 0x30]
+        - uart.write: !lambda |-
+            return {};
+
+i2c:
+  sda: 21
+  scl: 22
+  scan: True
+  frequency: 100kHz
+  setup_priority: -100
+
+spi:
+  clk_pin: GPIO21
+  mosi_pin: GPIO22
+  miso_pin: GPIO23
+
+uart:
+  tx_pin: GPIO22
+  rx_pin: GPIO23
+  baud_rate: 115200
+  id: uart0
+
+ota:
+  safe_mode: True
+  password: 'superlongpasswordthatnoonewillknow'
+  port: 3286
+
+logger:
+  baud_rate: 0
+  level: VERBOSE
+  logs:
+    mqtt.component: DEBUG
+    mqtt.client: ERROR
+
+web_server:
+  port: 8080
+  css_url: https://esphome.io/_static/webserver-v1.min.css
+  js_url: https://esphome.io/_static/webserver-v1.min.js
+
+power_supply:
+  id: 'atx_power_supply'
+  enable_time: 20ms
+  keep_on_time: 10s
+  pin:
+    number: 13
+    inverted: true
+
+deep_sleep:
+  run_duration: 20s
+  sleep_duration: 50s
+  wakeup_pin: GPIO39
+  wakeup_pin_mode: INVERT_WAKEUP
+  id: deep_sleep_1
+
+ads1115:
+  address: 0x48
+
+dallas:
+  pin: GPIO23
+
+sensor:
+  - platform: adc
+    pin: A0
+    name: "Living Room Brightness"
+    update_interval: '1:01'
+    attenuation: 2.5db
+    unit_of_measurement: "°C"
+    icon: "mdi:water-percent"
+    accuracy_decimals: 5
+    expire_after: 120s
+    setup_priority: -100
+    filters:
+      - offset: 2.0
+      - multiply: 1.2
+      - calibrate_linear:
+        - 0.0 -> 0.0
+        - 40.0 -> 45.0
+        - 100.0 -> 102.5
+      - filter_out: 42.0
+      - filter_out: nan
+      - sliding_window_moving_average:
+          window_size: 15
+          send_every: 15
+          send_first_at: 15
+      - exponential_moving_average:
+          alpha: 0.1
+          send_every: 15
+      - throttle: 1s
+      - heartbeat: 5s
+      - debounce: 0.1s
+      - delta: 5.0
+      - or:
+        - throttle: 1s
+        - delta: 5.0
+      - lambda: return x * (9.0/5.0) + 32.0;
+    on_value:
+      then:
+        - lambda: |-
+            ESP_LOGD("main", "Got value %f", x);
+            id(my_sensor).publish_state(42.0);
+            ESP_LOGI("main", "Value of my sensor: %f", id(my_sensor).state);
+            ESP_LOGI("main", "Raw Value of my sensor: %f", id(my_sensor).state);
+    on_value_range:
+      above: 5
+      below: 10
+      then:
+        - lambda: >-
+            ESP_LOGD("main", "Got value range %f", x);
+        - wait_until:
+            binary_sensor.is_on: binary_sensor1
+    on_raw_value:
+      - lambda: >-
+          ESP_LOGD("main", "Got raw value %f", x);
+      - logger.log:
+          level: DEBUG
+          format: "Got raw value %f"
+          args: ['x']
+      - logger.log: "Got raw value NAN"
+      - mqtt.publish:
+          topic: some/topic
+          payload: Hello
+          qos: 2
+          retain: True
+  - platform: esp32_hall
+    name: ESP32 Hall Sensor
+  - platform: ads1115
+    multiplexer: 'A0_A1'
+    gain: 1.024
+    id: my_sensor
+    filters:
+    state_topic: hi/me
+    retain: false
+    availability:
+  - platform: atm90e32
+    cs_pin: 5
+    phase_a:
+      voltage:
+        name: "EMON Line Voltage A"
+      current:
+        name: "EMON CT1 Current"
+      power:
+        name: "EMON Active Power CT1"
+      gain_voltage: 47660
+      gain_ct: 12577
+    phase_b:
+      current:
+        name: "EMON CT2 Current"
+      power:
+        name: "EMON Active Power CT2"
+      gain_voltage: 47660
+      gain_ct: 12577
+    phase_c:
+      current:
+        name: "EMON CT3 Current"
+      power:
+        name: "EMON Active Power CT3"
+      gain_voltage: 47660
+      gain_ct: 12577
+    frequency:
+      name: "EMON Line Frequency"
+    line_frequency: 50Hz
+    gain_pga: 2X
+  - platform: bh1750
+    name: "Living Room Brightness 3"
+    internal: true
+    address: 0x23
+    resolution: 1.0
+    update_interval: 30s
+    retain: False
+    availability:
+    state_topic: livingroom/custom_state_topic
+  - platform: bme280
+    temperature:
+      name: "Outside Temperature"
+      oversampling: 16x
+    pressure:
+      name: "Outside Pressure"
+      oversampling: none
+    humidity:
+      name: "Outside Humidity"
+      oversampling: 8x
+    address: 0x77
+    iir_filter: 16x
+    update_interval: 15s
+  - platform: bme680
+    temperature:
+      name: "Outside Temperature"
+      oversampling: 16x
+    pressure:
+      name: "Outside Pressure"
+    humidity:
+      name: "Outside Humidity"
+    gas_resistance:
+      name: "Outside Gas Sensor"
+    address: 0x77
+    heater:
+      temperature: 320
+      duration: 150ms
+    update_interval: 15s
+  - platform: bmp085
+    temperature:
+      name: "Outside Temperature"
+    pressure:
+      name: "Outside Pressure"
+      filters:
+        - lambda: >-
+            return x / powf(1.0 - (x / 44330.0), 5.255);
+    update_interval: 15s
+  - platform: bmp280
+    temperature:
+      name: "Outside Temperature"
+      oversampling: 16x
+    pressure:
+      name: "Outside Pressure"
+    address: 0x77
+    update_interval: 15s
+    iir_filter: 16x
+  - platform: dallas
+    address: 0x1C0000031EDD2A28
+    name: "Living Room Temperature"
+    resolution: 9
+  - platform: dallas
+    index: 1
+    name: "Living Room Temperature 2"
+  - platform: dht
+    pin: GPIO26
+    temperature:
+      name: "Living Room Temperature 3"
+    humidity:
+      name: "Living Room Humidity 3"
+    model: AM2302
+    update_interval: 15s
+  - platform: dht12
+    temperature:
+      name: "Living Room Temperature 4"
+    humidity:
+      name: "Living Room Humidity 4"
+    update_interval: 15s
+  - platform: duty_cycle
+    pin: GPIO25
+    name: Duty Cycle Sensor
+  - platform: esp32_hall
+    name: "ESP32 Hall Sensor"
+    update_interval: 15s
+  - platform: hdc1080
+    temperature:
+      name: "Living Room Temperature 5"
+    humidity:
+      name: "Living Room Pressure 5"
+    update_interval: 15s
+  - platform: hlw8012
+    sel_pin: 5
+    cf_pin: 14
+    cf1_pin: 13
+    current:
+      name: "HLW8012 Current"
+    voltage:
+      name: "HLW8012 Voltage"
+    power:
+      name: "HLW8012 Power"
+      id: hlw8012_power
+    update_interval: 15s
+    current_resistor: 0.001 ohm
+    voltage_divider: 2351
+    change_mode_every: 16
+    initial_mode: VOLTAGE
+  - platform: total_daily_energy
+    power_id: hlw8012_power
+    name: "HLW8012 Total Daily Energy"
+  - platform: integration
+    sensor: hlw8012_power
+    name: "Integration Sensor"
+    time_unit: s
+  - platform: hmc5883l
+    address: 0x68
+    field_strength_x:
+      name: "HMC5883L Field Strength X"
+    field_strength_y:
+      name: "HMC5883L Field Strength Y"
+    field_strength_z:
+      name: "HMC5883L Field Strength Z"
+    heading:
+      name: "HMC5883L Heading"
+    range: 130uT
+    update_interval: 15s
+  - platform: hx711
+    name: "HX711 Value"
+    dout_pin: GPIO23
+    clk_pin: GPIO24
+    gain: 128
+    update_interval: 15s
+  - platform: ina219
+    address: 0x40
+    shunt_resistance: 0.1 ohm
+    current:
+      name: "INA219 Current"
+    power:
+      name: "INA219 Power"
+    bus_voltage:
+      name: "INA219 Bus Voltage"
+    shunt_voltage:
+      name: "INA219 Shunt Voltage"
+    max_voltage: 32.0V
+    max_current: 3.2A
+    update_interval: 15s
+  - platform: ina3221
+    address: 0x40
+    channel_1:
+      shunt_resistance: 0.1 ohm
+      current:
+        name: "INA3221 Channel 1 Current"
+      power:
+        name: "INA3221 Channel 1 Power"
+      bus_voltage:
+        name: "INA3221 Channel 1 Bus Voltage"
+      shunt_voltage:
+        name: "INA3221 Channel 1 Shunt Voltage"
+    update_interval: 15s
+  - platform: htu21d
+    temperature:
+      name: "Living Room Temperature 6"
+    humidity:
+      name: "Living Room Humidity 6"
+    update_interval: 15s
+  - platform: max6675
+    name: "Living Room Temperature"
+    cs_pin: GPIO23
+    update_interval: 15s
+  - platform: max31855
+    name: "Den Temperature"
+    cs_pin: GPIO23
+    update_interval: 15s
+  - platform: mhz19
+    co2:
+      name: "MH-Z19 CO2 Value"
+    temperature:
+      name: "MH-Z19 Temperature"
+    update_interval: 15s
+  - platform: mpu6050
+    address: 0x68
+    accel_x:
+      name: "MPU6050 Accel X"
+    accel_y:
+      name: "MPU6050 Accel Y"
+    accel_z:
+      name: "MPU6050 Accel z"
+    gyro_x:
+      name: "MPU6050 Gyro X"
+    gyro_y:
+      name: "MPU6050 Gyro Y"
+    gyro_z:
+      name: "MPU6050 Gyro z"
+    temperature:
+      name: "MPU6050 Temperature"
+  - platform: ms5611
+    temperature:
+      name: "Outside Temperature"
+    pressure:
+      name: "Outside Pressure"
+    address: 0x77
+    update_interval: 15s
+  - platform: pulse_counter
+    name: "Pulse Counter"
+    pin: GPIO12
+    count_mode:
+      rising_edge: INCREMENT
+      falling_edge: DECREMENT
+    internal_filter: 13us
+    update_interval: 15s
+  - platform: rotary_encoder
+    name: "Rotary Encoder"
+    pin_a: GPIO23
+    pin_b: GPIO24
+    pin_reset: GPIO25
+    filters:
+      - or:
+        - debounce: 0.1s
+        - delta: 10
+    resolution: 4
+    min_value: -10
+    max_value: 30
+  - platform: pulse_width
+    name: Pulse Width
+    pin: GPIO12
+  - platform: sht3xd
+    temperature:
+      name: "Living Room Temperature 8"
+    humidity:
+      name: "Living Room Humidity 8"
+    address: 0x44
+    update_interval: 15s
+  - platform: sts3x
+    temperature:
+      name: "Living Room Temperature 9"
+    address: 0x4A
+    update_interval: 15s
+  - platform: template
+    name: "Template Sensor"
+    id: template_sensor
+    lambda: |-
+      if (id(ultrasonic_sensor1).state > 1) {
+        return 42.0;
+      } else {
+        return {};
+      }
+    update_interval: 15s
+    on_value:
+      - sensor.template.publish:
+          id: template_sensor
+          state: 43.0
+      - sensor.template.publish:
+          id: template_sensor
+          state: !lambda 'return NAN;'
+  - platform: tsl2561
+    name: "TSL2561 Ambient Light"
+    address: 0x39
+    update_interval: 15s
+    is_cs_package: true
+    integration_time: 402ms
+    gain: 16x
+  - platform: ultrasonic
+    trigger_pin: GPIO24
+    echo_pin:
+      number: GPIO23
+      inverted: true
+    name: "Ultrasonic Sensor"
+    timeout: 5.5m
+    id: ultrasonic_sensor1
+  - platform: uptime
+    name: Uptime Sensor
+  - platform: wifi_signal
+    name: "WiFi Signal Sensor"
+    update_interval: 15s
+  - platform: mqtt_subscribe
+    name: "MQTT Subscribe Sensor 1"
+    topic: "mqtt/topic"
+    id: the_sensor
+    qos: 2
+    on_value:
+      - mqtt.publish_json:
+          topic: the/topic
+          payload: |-
+            root["key"] = id(the_sensor).state;
+            root["greeting"] = "Hello World";
+  - platform: sds011
+    pm_2_5:
+      name: "SDS011 PM2.5"
+    pm_10_0:
+      name: "SDS011 PM10.0"
+    update_interval: 5min
+    rx_only: false
+  - platform: ccs811
+    eco2:
+      name: CCS811 eCO2
+    tvoc:
+      name: CCS811 TVOC
+    update_interval: 30s
+    baseline: 0x4242
+  - platform: tx20
+    wind_speed:
+      name: "Windspeed"
+    wind_direction_degrees:
+      name: "Winddirection Degrees"
+    pin: 
+      number: GPIO04
+      mode: INPUT
+  - platform: zyaura
+    clock_pin: GPIO5
+    data_pin: GPIO4
+    co2:
+      name: "ZyAura CO2"
+    temperature:
+      name: "ZyAura Temperature"
+    humidity:
+      name: "ZyAura Humidity"
+
+
+esp32_touch:
+  setup_mode: False
+  iir_filter: 10ms
+  sleep_duration: 27ms
+  measurement_duration: 8ms
+  low_voltage_reference: 0.5V
+  high_voltage_reference: 2.7V
+  voltage_attenuation: 1.5V
+
+binary_sensor:
+  - platform: gpio
+    pin: GPIO9
+    name: "Living Room Window"
+    device_class: window
+    filters:
+      - invert:
+      - delayed_on: 40ms
+      - delayed_off: 40ms
+    on_press:
+      then:
+        - lambda: >-
+            ESP_LOGD("main", "Pressed");
+    on_release:
+      then:
+        - lambda: >-
+            ESP_LOGD("main", "Released");
+    on_click:
+      - min_length: 50ms
+        max_length: 350ms
+        then:
+          - lambda: >-
+              ESP_LOGD("main", "Clicked");
+      - then:
+          - lambda: >-
+              ESP_LOGD("main", "Clicked");
+    on_double_click:
+      - min_length: 50ms
+        max_length: 350ms
+        then:
+         - lambda: >-
+             ESP_LOGD("main", "Double Clicked");
+      - then:
+         - lambda: >-
+             ESP_LOGD("main", "Double Clicked");
+    on_multi_click:
+    - timing:
+      - ON for at most 1s
+      - OFF for at most 1s
+      - ON for at most 1s
+      - OFF for at least 0.2s
+      then:
+      - logger.log:
+          format: "Multi Clicked TWO"
+          level: warn
+    - timing:
+      - OFF for 1s to 2s
+      - ON for 1s to 2s
+      - OFF for at least 0.5s
+      then:
+      - logger.log:
+          format: "Multi Clicked LONG SINGLE"
+          level: warn
+    - timing:
+      - ON for at most 1s
+      - OFF for at least 0.5s
+      then:
+      - logger.log:
+          format: "Multi Clicked SINGLE"
+          level: warn
+    id: binary_sensor1
+  - platform: gpio
+    pin:
+      number: GPIO9
+      mode: INPUT_PULLUP
+    name: "Living Room Window 2"
+  - platform: status
+    name: "Living Room Status"
+  - platform: esp32_touch
+    name: "ESP32 Touch Pad GPIO27"
+    pin: GPIO27
+    threshold: 1000
+    id: btn_left
+  - platform: nextion
+    page_id: 0
+    component_id: 2
+    name: "Nextion Component 2 Touch"
+  - platform: template
+    name: "Garage Door Open"
+    id: garage_door
+    lambda: |-
+      if (isnan(id(my_sensor).state)) {
+        // isnan checks if the ultrasonic sensor echo
+        // has timed out, resulting in a NaN (not a number) state
+        // in that case, return {} to indicate that we don't know.
+        return {};
+      } else if (id(my_sensor).state > 30) {
+        // Garage Door is open.
+        return true;
+      } else {
+        // Garage Door is closed.
+        return false;
+      }
+    on_press:
+      - binary_sensor.template.publish:
+          id: garage_door
+          state: OFF
+  - platform: pn532
+    uid: 74-10-37-94
+    name: "PN532 NFC Tag"
+  - platform: rdm6300
+    uid: 7616525
+    name: "RDM6300 NFC Tag"
+  - platform: gpio
+    name: "PCF binary sensor"
+    pin:
+      pcf8574: pcf8574_hub
+      number: 1
+      mode: INPUT
+      inverted: True
+  - platform: gpio
+    name: "MCP binary sensor"
+    pin:
+      mcp23017: mcp23017_hub
+      number: 1
+      mode: INPUT
+      inverted: True
+  - platform: remote_receiver
+    name: "Raw Remote Receiver Test"
+    raw:
+      code: [5685, -4252, 1711, -2265, 1712, -2265, 1711, -2264, 1712, -2266,
+             3700, -2263, 1712, -4254, 1711, -4249, 1715, -2266, 1710, -2267,
+             1709, -2265, 3704, -4250, 1712, -4254, 3700, -2260, 1714, -2265,
+             1712, -2262, 1714, -2267, 1709]
+
+pca9685:
+  frequency: 500
+  address: 0x0
+
+my9231:
+  data_pin: GPIO12
+  clock_pin: GPIO14
+  num_channels: 6
+  num_chips: 2
+  bit_depth: 16
+
+output:
+  - platform: gpio
+    pin: GPIO26
+    id: gpio_26
+    power_supply: atx_power_supply
+    inverted: False
+  - platform: ledc
+    pin: 19
+    id: gpio_19
+    frequency: 1500Hz
+    bit_depth: 8
+    channel: 14
+    max_power: 0.5
+  - platform: pca9685
+    id: pca_0
+    channel: 0
+  - platform: pca9685
+    id: pca_1
+    channel: 1
+  - platform: pca9685
+    id: pca_2
+    channel: 2
+  - platform: pca9685
+    id: pca_3
+    channel: 3
+  - platform: pca9685
+    id: pca_4
+    channel: 4
+  - platform: pca9685
+    id: pca_5
+    channel: 5
+  - platform: pca9685
+    id: pca_6
+    channel: 6
+  - platform: pca9685
+    id: pca_7
+    channel: 7
+  - platform: gpio
+    id: id2
+    pin:
+      pcf8574: pcf8574_hub
+      number: 0
+      mode: OUTPUT
+      inverted: False
+  - platform: gpio
+    id: id22
+    pin:
+      mcp23017: mcp23017_hub
+      number: 0
+      mode: OUTPUT
+      inverted: False
+  - platform: my9231
+    id: my_0
+    channel: 0
+  - platform: my9231
+    id: my_1
+    channel: 1
+  - platform: my9231
+    id: my_2
+    channel: 2
+  - platform: my9231
+    id: my_3
+    channel: 3
+  - platform: my9231
+    id: my_4
+    channel: 4
+  - platform: my9231
+    id: my_5
+    channel: 5
+
+light:
+  - platform: binary
+    name: "Desk Lamp"
+    output: gpio_26
+    effects:
+      - strobe:
+      - strobe:
+          name: "My Strobe"
+          colors:
+            - state: True
+              duration: 250ms
+            - state: False
+              duration: 250ms
+  - platform: monochromatic
+    name: "Kitchen Lights"
+    id: kitchen
+    output: gpio_19
+    gamma_correct: 2.8
+    default_transition_length: 2s
+    effects:
+      - strobe:
+      - flicker:
+      - flicker:
+          name: "My Flicker"
+          alpha: 98%
+          intensity: 1.5%
+      - lambda:
+          name: My Custom Effect
+          update_interval: 1s
+          lambda: |-
+            static int state = 0;
+            state += 1;
+            if (state == 4)
+              state = 0;
+  - platform: rgb
+    name: "Living Room Lights"
+    id: living_room_lights
+    red: pca_0
+    green: pca_1
+    blue: pca_2
+  - platform: rgbw
+    name: "Living Room Lights 2"
+    red: pca_3
+    green: pca_4
+    blue: pca_5
+    white: pca_6
+  - platform: rgbww
+    name: "Living Room Lights 2"
+    red: pca_3
+    green: pca_4
+    blue: pca_5
+    cold_white: pca_6
+    warm_white: pca_6
+    cold_white_color_temperature: 153 mireds
+    warm_white_color_temperature: 500 mireds
+  - platform: cwww
+    name: "Living Room Lights 2"
+    cold_white: pca_6
+    warm_white: pca_6
+    cold_white_color_temperature: 153 mireds
+    warm_white_color_temperature: 500 mireds
+  - platform: fastled_clockless
+    id: addr1
+    chipset: WS2811
+    pin: GPIO23
+    num_leds: 60
+    rgb_order: BRG
+    max_refresh_rate: 20ms
+    power_supply: atx_power_supply
+    color_correct: [75%, 100%, 50%]
+    name: "FastLED WS2811 Light"
+    effects:
+    - addressable_color_wipe:
+    - addressable_color_wipe:
+        name: Color Wipe Effect With Custom Values
+        colors:
+        - red: 100%
+          green: 100%
+          blue: 100%
+          num_leds: 1
+        - red: 0%
+          green: 0%
+          blue: 0%
+          num_leds: 1
+        add_led_interval: 100ms
+        reverse: False
+    - addressable_scan:
+    - addressable_scan:
+        name: Scan Effect With Custom Values
+        move_interval: 100ms
+    - addressable_twinkle:
+    - addressable_twinkle:
+        name: Twinkle Effect With Custom Values
+        twinkle_probability: 5%
+        progress_interval: 4ms
+    - addressable_random_twinkle:
+    - addressable_random_twinkle:
+        name: Random Twinkle Effect With Custom Values
+        twinkle_probability: 5%
+        progress_interval: 32ms
+    - addressable_fireworks:
+    - addressable_fireworks:
+        name: Fireworks Effect With Custom Values
+        update_interval: 32ms
+        spark_probability: 10%
+        use_random_color: false
+        fade_out_rate: 120
+    - addressable_flicker:
+    - addressable_flicker:
+        name: Flicker Effect With Custom Values
+        update_interval: 16ms
+        intensity: 5%
+    - addressable_lambda:
+          name: "Test For Custom Lambda Effect"
+          lambda: |-
+            it[0] = current_color;
+                
+    - automation:
+        name: Custom Effect
+        sequence:
+          - light.addressable_set:
+              id: addr1
+              red: 100%
+              green: 100%
+              blue: 0%
+          - delay: 100ms
+          - light.addressable_set:
+              id: addr1
+              red: 0%
+              green: 100%
+              blue: 0%
+  - platform: fastled_spi
+    id: addr2
+    chipset: WS2801
+    data_pin: GPIO23
+    clock_pin: GPIO22
+    num_leds: 60
+    rgb_order: BRG
+    name: "FastLED SPI Light"
+  - platform: neopixelbus
+    id: addr3
+    name: "Neopixelbus Light"
+    gamma_correct: 2.8
+    color_correct: [0.0, 0.0, 0.0, 0.0]
+    default_transition_length: 10s
+    power_supply: atx_power_supply
+    effects:
+    - addressable_flicker:
+        name: Flicker Effect With Custom Values
+        update_interval: 16ms
+        intensity: 5%
+    type: GRBW
+    variant: SK6812
+    method: ESP32_I2S_0
+    num_leds: 60
+    pin: GPIO23
+  - platform: partition
+    name: "Partition Light"
+    segments:
+      - id: addr1
+        from: 0
+        to: 0
+      - id: addr2
+        from: 1
+        to: 10
+      - id: addr2
+        from: 20
+        to: 25
+
+remote_transmitter:
+  - pin: 32
+    carrier_duty_percent: 100%
+
+climate:
+  - platform: tcl112
+    name: TCL112 Climate With Sensor
+    supports_heat: True
+    supports_cool: True
+    sensor: my_sensor
+  - platform: tcl112
+    name: TCL112 Climate
+  - platform: coolix
+    name: Coolix Climate With Sensor
+    supports_heat: True
+    supports_cool: True
+    sensor: my_sensor
+  - platform: coolix
+    name: Coolix Climate
+
+switch:
+  - platform: gpio
+    pin: GPIO25
+    name: "Living Room Dehumidifier"
+    icon: "mdi:restart"
+    inverted: True
+    command_topic: custom_command_topic
+    restore_mode: ALWAYS_OFF
+  - platform: template
+    name: JVC Off
+    id: living_room_lights_on
+    turn_on_action:
+      remote_transmitter.transmit_jvc:
+        data: 0x10EF
+  - platform: template
+    name: NEC
+    id: living_room_lights_off
+    turn_on_action:
+      remote_transmitter.transmit_nec:
+        address: 0x4242
+        command: 0x8484
+  - platform: template
+    name: LG
+    turn_on_action:
+      remote_transmitter.transmit_lg:
+        data: 4294967295
+        nbits: 28
+  - platform: template
+    name: Samsung
+    turn_on_action:
+      remote_transmitter.transmit_samsung:
+        data: 0xABCDEF
+  - platform: template
+    name: Sony
+    turn_on_action:
+      remote_transmitter.transmit_sony:
+        data: 0xABCDEF
+        nbits: 12
+  - platform: template
+    name: Panasonic
+    turn_on_action:
+      remote_transmitter.transmit_panasonic:
+        address: 0x4004
+        command: 0x1000BCD
+  - platform: template
+    name: RC Switch Raw
+    turn_on_action:
+      remote_transmitter.transmit_rc_switch_raw:
+        code: '00101001100111110101xxxx'
+        protocol: 1
+  - platform: template
+    name: RC Switch Type A
+    turn_on_action:
+      remote_transmitter.transmit_rc_switch_type_a:
+        group: '11001'
+        device: '01000'
+        state: True
+        protocol:
+          pulse_length: 175
+          sync: [1, 31]
+          zero: [1, 3]
+          one: [3, 1]
+          inverted: False
+  - platform: template
+    name: RC Switch Type B
+    turn_on_action:
+      remote_transmitter.transmit_rc_switch_type_b:
+        address: 4
+        channel: 2
+        state: True
+  - platform: template
+    name: RC Switch Type C
+    turn_on_action:
+      remote_transmitter.transmit_rc_switch_type_c:
+        family: 'a'
+        group: 1
+        device: 2
+        state: True
+  - platform: template
+    name: RC Switch Type D
+    turn_on_action:
+      remote_transmitter.transmit_rc_switch_type_d:
+        group: 'a'
+        device: 2
+        state: True
+  - platform: template
+    name: RC5
+    turn_on_action:
+      remote_transmitter.transmit_rc5:
+        address: 0x00
+        command: 0x0B
+  - platform: template
+    name: RC5
+    turn_on_action:
+      remote_transmitter.transmit_raw:
+        code: [1000, -1000]
+  - platform: template
+    name: Living Room Lights
+    id: livingroom_lights
+    optimistic: True
+    assumed_state: yes
+    turn_on_action:
+    - switch.turn_on: living_room_lights_on
+    - output.set_level:
+        id: gpio_19
+        level: 50%
+    - output.set_level:
+        id: gpio_19
+        level: !lambda 'return 0.5;'
+    turn_off_action:
+    - switch.turn_on: living_room_lights_off
+    restore_state: False
+    on_turn_on:
+      - switch.template.publish:
+          id: livingroom_lights
+          state: yes
+  - platform: restart
+    name: "Living Room Restart"
+  - platform: shutdown
+    name: "Living Room Shutdown"
+  - platform: output
+    name: "Generic Output"
+    output: pca_6
+  - platform: template
+    name: "Template Switch"
+    id: my_switch
+    lambda: |-
+      if (id(binary_sensor1).state) {
+        return true;
+      } else {
+        return {};
+      }
+      id(my_switch).publish_state(false);
+      id(my_switch).publish_state(true);
+      if (id(my_switch).state) {
+        // Switch is ON, do something here
+        id(my_switch).turn_off();
+        id(my_switch).turn_on();
+      } else {
+        // Switch is OFF, do something else here
+      }
+    optimistic: true
+    assumed_state: no
+    restore_state: True
+    on_turn_off:
+      - switch.template.publish:
+          id: my_switch
+          state: !lambda 'return false;'
+  - platform: uart
+    name: "UART String Output"
+    data: 'DataToSend'
+  - platform: uart
+    name: "UART Bytes Output"
+    data: [0xDE, 0xAD, 0xBE, 0xEF]
+  - platform: template
+    assumed_state: yes
+    name: Stepper Switch
+    turn_on_action:
+    - stepper.set_target:
+        id: my_stepper
+        target: !lambda |-
+          static int32_t i = 0;
+          i += 1000;
+          if (i > 5000) {
+            i = -5000;
+          }
+          return i;
+    - stepper.report_position:
+        id: my_stepper
+        position: 0
+
+fan:
+  - platform: binary
+    output: gpio_26
+    name: "Living Room Fan 1"
+  - platform: speed
+    output: pca_6
+    name: "Living Room Fan 2"
+    speed:
+      low: 0.45
+      medium: 0.75
+      high: 1.0
+
+interval:
+  - interval: 10s
+    then:
+    - display.page.show: !lambda |-
+        if (true) return id(page1); else return id(page2);
+    -  display.page.show_next: display1
+    -  display.page.show_previous: display1
+  - interval: 2s
+    then:
+      - lambda: |-
+            static uint16_t btn_left_state = id(btn_left)->get_value();
+
+            ESP_LOGD("adaptive touch", "___  Touch Pad '%s' (T%u): val: %u state: %u tres:%u", id(btn_left)->get_name().c_str(), id(btn_left)->get_touch_pad(), id(btn_left)->get_value(), btn_left_state, id(btn_left)->get_threshold());
+            
+            btn_left_state = ((uint32_t) id(btn_left)->get_value()  +  63 * (uint32_t)btn_left_state) >> 6;
+
+            id(btn_left)->set_threshold(btn_left_state * 0.9);
+
+display:
+- platform: lcd_gpio
+  dimensions: 18x4
+  data_pins:
+  - GPIO19
+  - GPIO20
+  - GPIO21
+  - GPIO22
+  enable_pin: GPIO23
+  rs_pin: GPIO24
+  lambda: |-
+    it.print("Hello World!");
+- platform: lcd_pcf8574
+  dimensions: 18x4
+  address: 0x3F
+  lambda: |-
+    it.print("Hello World!");
+- platform: max7219
+  cs_pin: GPIO23
+  num_chips: 1
+  lambda: |-
+    it.print("01234567");
+- platform: nextion
+  lambda: |-
+    it.set_component_value("gauge", 50);
+    it.set_component_text("textview", "Hello World!");
+- platform: ssd1306_i2c
+  model: "SSD1306 128x64"
+  reset_pin: GPIO23
+  address: 0x3C
+  id: display1
+  pages:
+    - id: page1
+      lambda: |-
+        it.rectangle(0, 0, it.get_width(), it.get_height());
+    - id: page2
+      lambda: |-
+        // Nothing
+- platform: ssd1306_spi
+  model: "SSD1306 128x64"
+  cs_pin: GPIO23
+  dc_pin: GPIO23
+  reset_pin: GPIO23
+  lambda: |-
+    it.rectangle(0, 0, it.get_width(), it.get_height());
+- platform: waveshare_epaper
+  cs_pin: GPIO23
+  dc_pin: GPIO23
+  busy_pin: GPIO23
+  reset_pin: GPIO23
+  model: 2.90in
+  full_update_every: 30
+  lambda: |-
+    it.rectangle(0, 0, it.get_width(), it.get_height());
+
+remote_receiver:
+  pin: GPIO32
+  dump: all
+
+status_led:
+  pin: GPIO2
+
+pn532:
+  cs_pin: GPIO23
+  update_interval: 1s
+  on_tag:
+    - lambda: |-
+        ESP_LOGD("main", "Found tag %s", x.c_str());
+    - mqtt.publish:
+        topic: the/topic
+        payload: !lambda 'return x;'
+
+rdm6300:
+
+gps:
+
+time:
+- platform: sntp
+  id: sntp_time
+  servers:
+  - 0.pool.ntp.org
+  - 1.pool.ntp.org
+  - 192.168.178.1
+  on_time:
+    cron: '/30 0-30,30/5 * ? JAN-DEC MON,SAT-SUN,TUE-FRI'
+    then:
+      - lambda: 'ESP_LOGD("main", "time");'
+- platform: gps
+
+cover:
+  - platform: template
+    name: "Template Cover"
+    id: template_cover
+    lambda: |-
+      if (id(binary_sensor1).state) {
+        return COVER_OPEN;
+      } else {
+        return {};
+      }
+    optimistic: true
+    open_action:
+      - cover.template.publish:
+          id: template_cover
+          state: CLOSED
+    assumed_state: no
+
+debug:
+
+pcf8574:
+  - id: 'pcf8574_hub'
+    address: 0x21
+    pcf8575: False
+
+mcp23017:
+  - id: 'mcp23017_hub'
+
+stepper:
+- platform: a4988
+  id: my_stepper
+  step_pin: GPIO23
+  dir_pin: GPIO24
+  sleep_pin: GPIO25
+  max_speed: 250 steps/s
+  acceleration: 100 steps/s^2
+  deceleration: 200 steps/s^2
+
+
+globals:
+- id: glob_int
+  type: int
+  restore_value: yes
+  initial_value: '0'
+- id: glob_float
+  type: float
+  restore_value: yes
+  initial_value: '0.0f'
+- id: glob_bool
+  type: bool
+  restore_value: no
+  initial_value: 'true'
+- id: glob_string
+  type: std::string
+  restore_value: no
+  # initial_value: ""
+
+text_sensor:
+- platform: mqtt_subscribe
+  name: "MQTT Subscribe Text"
+  topic: "the/topic"
+  qos: 2
+  on_value:
+  - text_sensor.template.publish:
+      id: template_text
+      state: Hello World
+  - text_sensor.template.publish:
+      id: template_text
+      state: |-
+        return "Hello World2";
+  - globals.set:
+      id: glob_int
+      value: '0'
+- platform: template
+  name: Template Text Sensor
+  id: template_text
+- platform: wifi_info
+  ip_address:
+    name: "IP Address"
+  ssid:
+    name: "SSID"
+  bssid:
+    name: "BSSID"