esphomeyaml: name: test1 platform: ESP32 board: nodemcu-32s # Use latest upstream esphomelib git version. esphomelib_version: dev # Use this for testing while developing: # esphomelib_version: # local: ~/path/to/esphomelib use_custom_code: false 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!"); build_path: build/test1 wifi: ssid: 'MySSID' password: 'password1' 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 hostname: myverylonghostname 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: id: deep_sleep_1 - topic: livingroom/ota_mode then: - deep_sleep.enter: id: deep_sleep_1 on_json_message: topic: the/topic then: - lambda: |- int data = x["my_data"]; ESP_LOGD("main", "The data is: %d", data); - light.turn_on: id: living_room_lights transition_length: !lambda |- int length = 1000; if (x.containsKey("length")) length = x["length"]; return length; effect: !lambda |- const char *effect = "None"; if (x.containsKey("effect")) effect = x["effect"]; return effect; i2c: sda: 21 scl: 22 scan: True frequency: 100kHz spi: clk_pin: GPIO21 mosi_pin: GPIO22 miso_pin: GPIO23 uart: tx_pin: GPIO22 rx_pin: GPIO23 baud_rate: 115200 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://esphomelib.com/_static/webserver-v1.min.css js_url: https://esphomelib.com/_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 run_cycles: 500 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 filters: - offset: 2.0 - multiply: 1.2 - filter_out: 42.0 - filter_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 - unique: - 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); 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: ads1115 multiplexer: 'A0_A1' gain: 1.024 id: my_sensor filters: state_topic: hi/me retain: false availability: - 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 - platform: total_daily_energy power_id: hlw8012_power name: "HLW8012 Total Daily Energy" - 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: 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 - platform: sht3xd temperature: name: "Living Room Temperature 8" humidity: name: "Living Room Humidity 8" address: 0x44 update_interval: 15s - platform: template name: "Template Sensor" lambda: >- if (id(ultrasonic_sensor1).state > 1) { return 42.0; } else { return {}; } update_interval: 15s - 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_meter: 5.5 id: ultrasonic_sensor1 - platform: uptime name: Uptime Sensor - platform: wifi_signal name: "WiFi Signal Sensor" update_interval: 15s 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 - heartbeat: 1s 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: status name: "Living Room Status" - platform: esp32_touch name: "ESP32 Touch Pad GPIO27" pin: GPIO27 threshold: 1000 - platform: nextion page_id: 0 component_id: 2 name: "Nextion Component 2 Touch" - platform: template name: "Garage Door Open" 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; } - 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 pca9685: frequency: 500 address: 0x0 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 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 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: - fastled_color_wipe: - fastled_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 - fastled_scan: - fastled_scan: name: Scan Effect With Custom Values move_interval: 100ms - fastled_twinkle: - fastled_twinkle: name: Twinkle Effect With Custom Values twinkle_probability: 5% progress_interval: 4ms - fastled_random_twinkle: - fastled_random_twinkle: name: Random Twinkle Effect With Custom Values twinkle_probability: 5% progress_interval: 32ms - fastled_fireworks: - fastled_fireworks: name: Fireworks Effect With Custom Values update_interval: 32ms spark_probability: 10% use_random_color: false fade_out_rate: 120 - fastled_flicker: - fastled_flicker: name: Flicker Effect With Custom Values update_interval: 16ms intensity: 5% - platform: fastled_spi chipset: WS2801 data_pin: GPIO23 clock_pin: GPIO22 num_leds: 60 rgb_order: BRG name: "FastLED SPI Light" remote_transmitter: - pin: 32 switch: - platform: gpio pin: GPIO25 name: "Living Room Dehumidifier" icon: "mdi:restart" inverted: True command_topic: custom_command_topic - platform: remote_transmitter name: "Panasonic TV Off" nec: address: 0x4242 command: 0x8484 repeat: 25 - platform: remote_transmitter name: "Panasonic TV Off" lg: data: 4294967295 nbits: 28 repeat: 25 - platform: remote_transmitter name: "Panasonic TV Off" samsung: data: 0xABCDEF repeat: 25 - platform: remote_transmitter name: "Panasonic TV Off" sony: data: 0xABCDEF nbits: 12 repeat: 25 - platform: remote_transmitter name: "Panasonic TV Off" panasonic: address: 0x4004 command: 0x1000BCD repeat: 25 - platform: remote_transmitter name: "Panasonic TV Off" rc_switch_raw: code: '001010011001111101011011' protocol: 1 repeat: 25 - platform: remote_transmitter name: "Panasonic TV Off" 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 repeat: 25 - platform: remote_transmitter name: "Panasonic TV Off" rc_switch_type_b: address: 4 channel: 2 state: True - platform: remote_transmitter name: "Panasonic TV Off" rc_switch_type_c: family: 'a' group: 1 device: 2 state: True - platform: remote_transmitter name: "Panasonic TV Off" id: living_room_lights_on rc_switch_type_d: group: 'a' device: 2 state: True - platform: remote_transmitter name: "Panasonic TV Off" id: living_room_lights_off raw: carrier_frequency: 35kHz data: - 1000 - -1000 - platform: template name: Living Room Lights optimistic: True 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 - 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 restore_state: True - platform: uart name: "UART String Output" data: 'DataToSend' - platform: uart name: "UART Bytes Output" data: [0xDE, 0xAD, 0xBE, 0xEF] - platform: template optimistic: true 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; 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 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 lambda: |- it.rectangle(0, 0, it.get_width(), it.get_height()); - 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: time: - platform: sntp id: sntp_time servers: - 0.pool.ntp.org - 1.pool.ntp.org - 2.pool.ntp.org on_time: cron: '/30 0-30,30/5 * ? JAN-DEC MON,SAT-SUN,TUE-FRI' then: - lambda: 'ESP_LOGD("main", "time");' cover: - platform: template name: "Template Cover" lambda: >- if (id(binary_sensor1).state) { return cover::COVER_OPEN; } else { return {}; } optimistic: true debug: pcf8574: - id: 'pcf8574_hub' address: 0x21 pcf8575: False 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