Compare commits

..

2 Commits

3 changed files with 251 additions and 5 deletions

View File

@ -342,11 +342,15 @@
to: home to: home
from: not_home from: not_home
condition: condition:
- condition: sun - condition: or
before: sunrise conditions:
before_offset: '+1' - condition: sun
after: sunset after: sunset
after_offset: '-1' before: sunrise
before_offset: '+1'
after_offset: '-1'
- condition: sun
before: sunrise
action: action:
- service: script.moodlight_neutral - service: script.moodlight_neutral
- service: light.turn_on - service: light.turn_on

236
esphome/livingroom.yaml Normal file
View File

@ -0,0 +1,236 @@
esphome:
name: livingroom
platform: ESP32
board: nodemcu-32s
on_boot:
then:
- light.turn_on:
id: co2_light
red: 0%
green: 100%
blue: 9%
- delay: 1.5s
- light.turn_on:
id: co2_light
red: 100%
green: 75%
blue: 0%
- delay: 1.5s
- light.turn_on:
id: co2_light
red: 100%
green: 0%
blue: 0%
- delay: 1.5s
- light.turn_on:
id: co2_light
red: 100%
green: 75%
blue: 0%
- delay: 1.5s
- light.turn_on:
id: co2_light
red: 0%
green: 100%
blue: 9%
- text_sensor.template.publish:
id: co2_warn
state: "grün"
- text_sensor.template.publish:
id: pm25_warn
state: "grün"
wifi:
ssid: "Voltage-legacy"
password: !secret voltage_legacy_psk
use_address: livingroom.home
power_save_mode: high
fast_connect: on
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Wohnzimmer Fallback Hotspot"
password: !secret fallback_psk
captive_portal:
# Enable logging
logger:
level: DEBUG
# 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
max_power: 50%
- platform: ledc
pin: GPIO19
id: led_blue
# Define RGB mode for LED
light:
- platform: rgb
id: co2_light
name: "CO2 Status LED"
red: led_red
green: led_green
blue: led_blue
internal: true
# 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: "Wohnzimmer CO2 Warnstufe"
id: co2_warn
- platform: template
name: "Wohnzimmer Feinstaub Warnstufe"
id: pm25_warn
sensor:
# WiFi signal strength
- platform: wifi_signal
name: "WiFi Signalstärke"
update_interval: 60s
# SCD30 CO2 + temperature + humidity sensor
# * air quality category 0: LED is purple, sensor needs calibration (<380ppm)
# • air quality category 1: LED is green (380-800ppm)
# • air quality category 2: LED is yellow (900-1200ppm)
# • air quality category 3: LED is orange/amber (1200 to 1600ppm)
# • air quality category 4: LED is red (1600-2000ppm)
- platform: scd30
i2c_id: bus_a
co2:
name: "Wohnzimmer CO2"
id: co2_value
accuracy_decimals: 1
on_value_range:
- below: 380
then:
- text_sensor.template.publish:
id: co2_warn
state: "Kalibrierung nötig"
- light.turn_on:
id: co2_light
red: 75%
green: 0%
blue: 100%
- above: 380
below: 800
then:
- text_sensor.template.publish:
id: co2_warn
state: "grün"
- light.turn_on:
id: co2_light
red: 0%
green: 100%
blue: 0%
- above: 800
below: 1200
then:
- text_sensor.template.publish:
id: co2_warn
state: "gelb"
- light.turn_on:
id: co2_light
red: 100%
green: 100%
blue: 0%
- above: 1200
below: 1600
then:
- text_sensor.template.publish:
id: co2_warn
state: "orange"
- light.turn_on:
id: co2_light
red: 100%
green: 75%
blue: 0%
- above: 1600
then:
- text_sensor.template.publish:
id: co2_warn
state: "rot"
- light.turn_on:
id: co2_light
red: 100%
green: 0%
blue: 0%
temperature:
name: "Wohnzimmer Temperatur"
accuracy_decimals: 2
humidity:
name: "Wohnzimmer 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
# Vindriktning particulate matter sensor
- platform: pm1006
pm_2_5:
name: "Wohnzimmer Feinstaub PM 2.5µm"
on_value_range:
- above: 0
below: 35
then:
- text_sensor.template.publish:
id: pm25_warn
state: "grün"
- above: 35
below: 85
then:
- text_sensor.template.publish:
id: pm25_warn
state: "orange"
- above: 85
then:
- text_sensor.template.publish:
id: pm25_warn
state: "rot"
# Analog photo diode voltage
- platform: adc
pin: 32
name: "Spannung Photodiode"
attenuation: 11db
update_interval: 1s
internal: true
on_value_range:
- below: 0.25
then:
light.turn_on:
id: co2_light
brightness: 30%
- above: 0.4
then:
light.turn_on:
id: co2_light
brightness: 60%

View File

@ -0,0 +1,6 @@
nvs, data, nvs, 0x009000, 0x005000,
otadata, data, ota, 0x00e000, 0x002000,
app0, app, ota_0, 0x010000, 0x1C0000,
app1, app, ota_1, 0x1D0000, 0x1C0000,
eeprom, data, 0x99, 0x390000, 0x001000,
spiffs, data, spiffs, 0x391000, 0x00F000
1 nvs, data, nvs, 0x009000, 0x005000,
2 otadata, data, ota, 0x00e000, 0x002000,
3 app0, app, ota_0, 0x010000, 0x1C0000,
4 app1, app, ota_1, 0x1D0000, 0x1C0000,
5 eeprom, data, 0x99, 0x390000, 0x001000,
6 spiffs, data, spiffs, 0x391000, 0x00F000