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
    - topic: livingroom/ota_mode
      then:
      - deep_sleep.enter:
  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

ads1115:
  address: 0x48

dallas:
  pin: GPIO23

as3935_spi:
  cs_pin: GPIO12
  irq_pin: GPIO13

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
    force_update: true
    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
      - median:
          window_size: 5
          send_every: 5
          send_first_at: 3
      - 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"
      reactive_power:
        name: "EMON Reactive Power CT1"
      power_factor:
        name: "EMON Power Factor 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: ina226
    address: 0x40
    shunt_resistance: 0.1 ohm
    current:
      name: "INA226 Current"
    power:
      name: "INA226 Power"
    bus_voltage:
      name: "INA226 Bus Voltage"
    shunt_voltage:
      name: "INA226 Shunt Voltage"
    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
    reference_temperature:
      name: "MAX31855 Internal Temperature"
  - platform: max31865
    name: "Water Tank Temperature"
    cs_pin: GPIO23
    update_interval: 15s
    reference_resistance: "430 Ω"
    rtd_nominal_resistance: "100 Ω"
  - platform: mhz19
    co2:
      name: "MH-Z19 CO2 Value"
    temperature:
      name: "MH-Z19 Temperature"
    update_interval: 15s
    automatic_baseline_calibration: false
  - 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"
    id: rotary_encoder1
    pin_a: GPIO23
    pin_b: GPIO24
    pin_reset: GPIO25
    filters:
      - or:
        - debounce: 0.1s
        - delta: 10
    resolution: 4
    min_value: -10
    max_value: 30
    on_value:
      - sensor.rotary_encoder.set_value:
          id: rotary_encoder1
          value: 10
      - sensor.rotary_encoder.set_value:
          id: rotary_encoder1
          value: !lambda 'return -1;'
  - platform: pulse_width
    name: Pulse Width
    pin: GPIO12
  - platform: senseair
    co2:
      name: "SenseAir CO2 Value"
    update_interval: 15s
  - platform: sht3xd
    temperature:
      name: "Living Room Temperature 8"
    humidity:
      name: "Living Room Humidity 8"
    address: 0x44
    update_interval: 15s
  - platform: sts3x
    name: "Living Room Temperature 9"
    address: 0x4A
  - platform: scd30
    co2:
      name: "Living Room CO2 9"
    temperature:
      name: "Living Room Temperature 9"
    humidity:
      name: "Living Room Humidity 9"
    address: 0x61
    update_interval: 15s
  - platform: sgp30
    eco2:
      name: "Workshop eCO2"
      accuracy_decimals: 1
    tvoc:
      name: "Workshop TVOC"
      accuracy_decimals: 1
    address: 0x58
    update_interval: 5s
  - platform: shtcx
    temperature:
      name: "Living Room Temperature 10"
    humidity:
      name: "Living Room Humidity 10"
    address: 0x70
    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"
  - platform: as3935
    lightning_energy:
      name: "Lightning Energy"
    distance:
      name: "Distance Storm"

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
      - output.ledc.set_frequency:
          id: gpio_19
          frequency: 500.0Hz
      - output.ledc.set_frequency:
          id: gpio_19
          frequency: !lambda 'return 500.0;'
  - 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: "MCP21 binary sensor"
    pin:
      mcp23017: mcp23017_hub
      number: 1
      mode: INPUT
      inverted: True
  - platform: gpio
    name: "MCP22 binary sensor"
    pin:
      mcp23008: mcp23008_hub
      number: 7
      mode: INPUT_PULLUP
      inverted: False

  - 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]
  - platform: as3935
    name: "Storm Alert"

pca9685:
  frequency: 500
  address: 0x0

tlc59208f:
  - address: 0x20
    id: tlc59208f_1
  - address: 0x22
    id: tlc59208f_2
  - address: 0x24
    id: tlc59208f_3

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
    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: tlc59208f
    id: tlc_0
    channel: 0
    tlc59208f_id: 'tlc59208f_1'
  - platform: tlc59208f
    id: tlc_1
    channel: 1
    tlc59208f_id: 'tlc59208f_1'
  - platform: tlc59208f
    id: tlc_2
    channel: 2
    tlc59208f_id: 'tlc59208f_1'
  - platform: tlc59208f
    id: tlc_3
    channel: 0
    tlc59208f_id: 'tlc59208f_2'
  - platform: tlc59208f
    id: tlc_4
    channel: 1
    tlc59208f_id: 'tlc59208f_2'
  - platform: tlc59208f
    id: tlc_5
    channel: 2
    tlc59208f_id: 'tlc59208f_2'
  - platform: tlc59208f
    id: tlc_6
    channel: 0
    tlc59208f_id: 'tlc59208f_3'
  - platform: tlc59208f
    id: tlc_7
    channel: 1
    tlc59208f_id: 'tlc59208f_3'
  - platform: tlc59208f
    id: tlc_8
    channel: 2
    tlc59208f_id: 'tlc59208f_3'
  - 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: gpio
    id: id23
    pin:
      mcp23008: mcp23008_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
  brightness: 60%
  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: ssd1325_spi
  model: "SSD1325 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'

mcp23008:
  - id: 'mcp23008_hub'
    address: 0x22

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"
