esphome: name: sleepingroom platform: ESP32 board: nodemcu-32s # Dirty hack, because on_value_range does not trigger green if sensor # value is within green range on boot. on_boot: then: - output.set_level: id: led_green level: 58% - output.set_level: id: led_red level: 0% - text_sensor.template.publish: id: co2_warn state: "grün" wifi: ssid: "Voltage-legacy" password: !secret voltage_legacy_psk use_address: sleepingroom.home power_save_mode: high fast_connect: on # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Schlafzimmer Fallback Hotspot" password: !secret fallback_psk captive_portal: # Enable logging logger: # Enable Home Assistant API api: password: !secret api # Enable over-the-air updates ota: password: !secret ota # Initialize I²C i2c: - id: bus_a sda: 13 scl: 16 scan: true # Initialize LEDC GPIOs output: - platform: ledc pin: GPIO17 id: led_red - platform: ledc pin: GPIO18 id: led_green - platform: ledc pin: GPIO19 id: led_blue # Initialize UART for Vindriktning sensor uart: rx_pin: GPIO26 baud_rate: 9600 # Create text sensor to represent CO2 LED warn state (somewhat redundant) text_sensor: - platform: template name: "Schlafzimmer CO2 Warnstufe" id: co2_warn sensor: # WiFi signal strength - platform: wifi_signal name: "WiFi Signalstärke" update_interval: 60s # SCD30 CO2 + Temperature + Humidity Sensor # • Luftqualität Kategorie 1: die LEDs leuchten grün (bis 800 ppm) # • Luftqualität Kategorie 2: die LEDs leuchten gelb (900-1200 ppm) # • Luftqualität Kategorie 3: die LEDs leuchten orange (1200 bis 1600ppm) # • Luftqualität Kategorie 4: die LEDs leuchten rot (ab 1600ppm) - platform: scd30 i2c_id: bus_a co2: name: "Schlafzimmer CO2" id: co2_value accuracy_decimals: 1 on_value_range: - above: 380 below: 800 then: - output.set_level: id: led_green level: 58% - output.set_level: id: led_red level: 0% - text_sensor.template.publish: id: co2_warn state: "grün" - above: 800 below: 1200 then: - output.set_level: id: led_green level: 58% - output.set_level: id: led_red level: 80% - text_sensor.template.publish: id: co2_warn state: "gelb" - above: 1200 below: 1600 then: - output.set_level: id: led_green level: 50% - output.set_level: id: led_red level: 100% - text_sensor.template.publish: id: co2_warn state: "orange" - above: 1600 then: - output.set_level: id: led_green level: 0% - output.set_level: id: led_red level: 100% - text_sensor.template.publish: id: co2_warn state: "rot" temperature: name: "Schlafzimmer Temperatur" accuracy_decimals: 2 humidity: name: "Schlafzimmer Luftfeuchtigkeit" accuracy_decimals: 1 # SCD30 temp sensor is a bit off temperature_offset: 1.5 °C ambient_pressure_compensation: 1 automatic_self_calibration: True address: 0x61 update_interval: 60s - platform: bmp280 i2c_id: bus_a temperature: name: "Schlafzimmer Temperatur alt" oversampling: 16x pressure: name: "Schlafzimmer Luftdruck" address: 0x76 update_interval: 60s # Vindriktning particulate matter sensor - platform: pm1006 pm_2_5: name: "Feinstaub PM 2.5µm" # Analog photo diode voltage - platform: adc pin: 32 name: "Spannung Photodiode" attenuation: 11db update_interval: 1s internal: true # IR Receiver, dumps all received values into serial remote_receiver: pin: number: 23 inverted: True dump: all # IR Transmitter remote_transmitter: pin: GPIO22 # Infrared remotes use a 50% carrier signal carrier_duty_percent: 50% # Temporary test switches switch: - platform: template name: Yamaha Power Button turn_on_action: - remote_transmitter.transmit_nec: address: 0x7E81 command: 0x54AB - platform: template name: Samsung Power Button turn_on_action: - remote_transmitter.transmit_samsung: data: 0xE0E040BF nbits: 32 #script: # - id: startup_animation # then: # - delay: 5s # -