2021-08-24 13:08:35 +02:00
|
|
|
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
|
2021-09-02 22:05:19 +02:00
|
|
|
- platform: ledc
|
|
|
|
pin: GPIO19
|
|
|
|
id: led_blue
|
2021-08-24 13:08:35 +02:00
|
|
|
|
2021-08-28 19:36:14 +02:00
|
|
|
# Initialize UART for Vindriktning sensor
|
|
|
|
uart:
|
|
|
|
rx_pin: GPIO14
|
|
|
|
baud_rate: 9600
|
|
|
|
|
2021-08-24 13:08:35 +02:00
|
|
|
# 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
|
2021-08-28 19:36:14 +02:00
|
|
|
# Vindriktning particulate matter sensor
|
|
|
|
- platform: pm1006
|
|
|
|
pm_2_5:
|
|
|
|
name: "Feinstaub PM 2.5µm"
|
2021-09-02 22:05:19 +02:00
|
|
|
# Analog photo diode voltage
|
|
|
|
- platform: adc
|
|
|
|
pin: 32
|
|
|
|
name: "Spannung Photodiode"
|
|
|
|
attenuation: 11db
|
|
|
|
update_interval: 10s
|
2021-08-24 13:08:35 +02:00
|
|
|
|
2021-08-28 19:36:14 +02:00
|
|
|
# IR Receiver, dumps all received values into serial
|
2021-08-25 07:32:57 +02:00
|
|
|
remote_receiver:
|
|
|
|
pin:
|
|
|
|
number: 23
|
2021-08-28 19:36:14 +02:00
|
|
|
inverted: True
|
2021-08-25 07:32:57 +02:00
|
|
|
dump: all
|
|
|
|
|
2021-08-28 19:36:14 +02:00
|
|
|
# IR Transmitter
|
2021-08-25 07:32:57 +02:00
|
|
|
remote_transmitter:
|
|
|
|
pin: GPIO22
|
|
|
|
# Infrared remotes use a 50% carrier signal
|
|
|
|
carrier_duty_percent: 50%
|
|
|
|
|
2021-08-28 19:36:14 +02:00
|
|
|
# Temporary test switches
|
2021-08-25 07:32:57 +02:00
|
|
|
switch:
|
|
|
|
- platform: template
|
|
|
|
name: Yamaha Power Button
|
|
|
|
turn_on_action:
|
2021-08-28 19:36:14 +02:00
|
|
|
- remote_transmitter.transmit_nec:
|
|
|
|
address: 0x7E81
|
|
|
|
command: 0x54AB
|
2021-08-25 07:32:57 +02:00
|
|
|
- platform: template
|
|
|
|
name: Samsung Power Button
|
|
|
|
turn_on_action:
|
2021-08-28 19:36:14 +02:00
|
|
|
- remote_transmitter.transmit_samsung:
|
|
|
|
data: 0xE0E040BF
|
|
|
|
nbits: 32
|
2021-08-25 07:32:57 +02:00
|
|
|
#script:
|
|
|
|
# - id: startup_animation
|
|
|
|
# then:
|
|
|
|
# - delay: 5s
|
|
|
|
# -
|