Compare commits
No commits in common. "fe2a06fc1a7365dd8e613723168f50c75527c7bd" and "334169533e9904f12befc6729759c599064daf66" have entirely different histories.
fe2a06fc1a
...
334169533e
5
nodes/d1-mini-scd40-27afc1/.gitignore
vendored
5
nodes/d1-mini-scd40-27afc1/.gitignore
vendored
@ -1,5 +0,0 @@
|
|||||||
# Gitignore settings for ESPHome
|
|
||||||
# This is an example and may include too much for your use-case.
|
|
||||||
# You can modify this file to suit your needs.
|
|
||||||
/.esphome/
|
|
||||||
/secrets.yaml
|
|
@ -1,247 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
substitutions:
|
|
||||||
macsuffix: "27afc1"
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
power_save_mode: LIGHT
|
|
||||||
|
|
||||||
improv_serial:
|
|
||||||
|
|
||||||
globals:
|
|
||||||
# Configure CO2 indicator thresholds
|
|
||||||
- id: threshold1
|
|
||||||
type: float
|
|
||||||
initial_value: '750'
|
|
||||||
- id: threshold2
|
|
||||||
type: float
|
|
||||||
initial_value: '1200'
|
|
||||||
- id: threshold3
|
|
||||||
type: float
|
|
||||||
initial_value: '1500'
|
|
||||||
- id: threshold4
|
|
||||||
type: float
|
|
||||||
initial_value: '1750'
|
|
||||||
- id: threshold5
|
|
||||||
type: float
|
|
||||||
initial_value: '2000'
|
|
||||||
|
|
||||||
# Configure the brightness values for the LED indicator
|
|
||||||
- id: dim
|
|
||||||
type: float
|
|
||||||
initial_value: '0.5'
|
|
||||||
- id: bright
|
|
||||||
type: float
|
|
||||||
initial_value: '1.0'
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: "d1-mini-scd40-${macsuffix}"
|
|
||||||
project:
|
|
||||||
name: "cccda.d1-mini-scd40"
|
|
||||||
version: "2023052001"
|
|
||||||
comment: "https://git.darmstadt.ccc.de/cda/co2-sensor-workshop/"
|
|
||||||
on_boot:
|
|
||||||
then:
|
|
||||||
- light.turn_on:
|
|
||||||
id: indicator
|
|
||||||
red: 0
|
|
||||||
green: 0.2
|
|
||||||
blue: 1.0
|
|
||||||
effect: "None"
|
|
||||||
brightness: 30%
|
|
||||||
|
|
||||||
esp8266:
|
|
||||||
board: d1_mini
|
|
||||||
|
|
||||||
captive_portal:
|
|
||||||
|
|
||||||
logger:
|
|
||||||
level: DEBUG
|
|
||||||
logs:
|
|
||||||
light: INFO
|
|
||||||
sensor: INFO
|
|
||||||
|
|
||||||
web_server:
|
|
||||||
port: 80
|
|
||||||
|
|
||||||
api:
|
|
||||||
reboot_timeout: 0s
|
|
||||||
|
|
||||||
# Enable either SNTP or Home Assistant as a time source
|
|
||||||
time:
|
|
||||||
# https://esphome.io/components/time/sntp.html
|
|
||||||
- platform: sntp
|
|
||||||
id: time_source
|
|
||||||
timezone: "Europe/Berlin"
|
|
||||||
# Disable LED indicator during nighttime
|
|
||||||
# https://esphome.io/components/time/index.html#on-time-trigger
|
|
||||||
on_time:
|
|
||||||
- hours: 8
|
|
||||||
minutes: 0
|
|
||||||
seconds: 0
|
|
||||||
then:
|
|
||||||
- light.turn_on:
|
|
||||||
# cold white
|
|
||||||
id: indicator
|
|
||||||
red: 0.9
|
|
||||||
green: 0.9
|
|
||||||
blue: 0.9
|
|
||||||
effect: "None"
|
|
||||||
brightness: !lambda |-
|
|
||||||
return id(dim);
|
|
||||||
- logger.log: "Leaving night mode via on_time, enabling LED indicator."
|
|
||||||
- hours: 22
|
|
||||||
minutes: 0
|
|
||||||
seconds: 0
|
|
||||||
then:
|
|
||||||
- light.turn_off: indicator
|
|
||||||
- logger.log: "Entering night mode via on_time, disabling LED indicator."
|
|
||||||
on_time_sync:
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
lambda: |
|
|
||||||
return
|
|
||||||
(id(time_source).now().hour < 8 ||
|
|
||||||
id(time_source).now().hour >= 22);
|
|
||||||
then:
|
|
||||||
- light.turn_off: indicator
|
|
||||||
- logger.log: "Entering night mode via on_time_sync, disabling LED indicator."
|
|
||||||
|
|
||||||
i2c:
|
|
||||||
scl: GPIO5
|
|
||||||
sda: GPIO4
|
|
||||||
scan: false
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: scd4x
|
|
||||||
id: scd40
|
|
||||||
# low power mode
|
|
||||||
measurement_mode: low_power_periodic
|
|
||||||
update_interval: 30s
|
|
||||||
# Apply a temperature correction offset, that gets substracted
|
|
||||||
# from the measured temperature, defaults to 4.0
|
|
||||||
#temperature_offset: 1.5
|
|
||||||
co2:
|
|
||||||
name: "${macsuffix} CO2"
|
|
||||||
on_value:
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
and:
|
|
||||||
- lambda: return (x < id(threshold1));
|
|
||||||
- light.is_on: indicator
|
|
||||||
then:
|
|
||||||
- light.turn_on:
|
|
||||||
# cold white
|
|
||||||
id: indicator
|
|
||||||
red: 0.9
|
|
||||||
green: 0.9
|
|
||||||
blue: 0.9
|
|
||||||
effect: "None"
|
|
||||||
brightness: !lambda |-
|
|
||||||
return id(dim);
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
and:
|
|
||||||
- lambda: return (x > id(threshold1) and x < id(threshold2));
|
|
||||||
- light.is_on: indicator
|
|
||||||
then:
|
|
||||||
- light.turn_on:
|
|
||||||
# neutral white
|
|
||||||
id: indicator
|
|
||||||
red: 1.0
|
|
||||||
green: 0.84
|
|
||||||
blue: 0.54
|
|
||||||
effect: "None"
|
|
||||||
brightness: !lambda |-
|
|
||||||
return id(bright);
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
and:
|
|
||||||
- lambda: return (x > id(threshold2) and x < id(threshold3));
|
|
||||||
- light.is_on: indicator
|
|
||||||
then:
|
|
||||||
- light.turn_on:
|
|
||||||
# warmwhite
|
|
||||||
id: indicator
|
|
||||||
red: 1.0
|
|
||||||
green: 0.75
|
|
||||||
blue: 0.0
|
|
||||||
effect: "None"
|
|
||||||
brightness: !lambda |-
|
|
||||||
return id(bright);
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
and:
|
|
||||||
- lambda: return (x > id(threshold3) and x < id(threshold4));
|
|
||||||
- light.is_on: indicator
|
|
||||||
then:
|
|
||||||
- light.turn_on:
|
|
||||||
# orange
|
|
||||||
id: indicator
|
|
||||||
red: 1.0
|
|
||||||
green: 0.5
|
|
||||||
blue: 0.0
|
|
||||||
effect: "None"
|
|
||||||
brightness: !lambda |-
|
|
||||||
return id(bright);
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
and:
|
|
||||||
- lambda: return (x > id(threshold4) and x < id(threshold5));
|
|
||||||
- light.is_on: indicator
|
|
||||||
then:
|
|
||||||
- light.turn_on:
|
|
||||||
# red
|
|
||||||
id: indicator
|
|
||||||
red: 1.0
|
|
||||||
green: 0.0
|
|
||||||
blue: 0.0
|
|
||||||
effect: "None"
|
|
||||||
brightness: !lambda |-
|
|
||||||
return id(bright);
|
|
||||||
- if:
|
|
||||||
condition:
|
|
||||||
- lambda: return (x > id(threshold5));
|
|
||||||
- light.is_on: indicator
|
|
||||||
then:
|
|
||||||
- light.turn_on:
|
|
||||||
# red pulse
|
|
||||||
id: indicator
|
|
||||||
red: 1.0
|
|
||||||
green: 0.0
|
|
||||||
blue: 0.0
|
|
||||||
effect: "Fast Pulse"
|
|
||||||
brightness: !lambda |-
|
|
||||||
return id(bright);
|
|
||||||
humidity:
|
|
||||||
name: "${macsuffix} Humidity"
|
|
||||||
temperature:
|
|
||||||
name: "${macsuffix} Temperature"
|
|
||||||
|
|
||||||
button:
|
|
||||||
- platform: template
|
|
||||||
name: "${macsuffix} Force CO2 Sensor Calibration"
|
|
||||||
icon: "mdi:restart"
|
|
||||||
on_press:
|
|
||||||
then:
|
|
||||||
- scd4x.perform_forced_calibration:
|
|
||||||
# Average outdoor value for March 2023
|
|
||||||
# https://www.co2.earth/daily-co2
|
|
||||||
value: 421
|
|
||||||
id: scd40
|
|
||||||
|
|
||||||
light:
|
|
||||||
- platform: neopixelbus
|
|
||||||
id: indicator
|
|
||||||
name: "${macsuffix} CO2 Level Indicator"
|
|
||||||
type: GRB
|
|
||||||
variant: WS2812
|
|
||||||
pin: GPIO0
|
|
||||||
num_leds: 3
|
|
||||||
effects:
|
|
||||||
- pulse:
|
|
||||||
name: "Fast Pulse"
|
|
||||||
transition_length: 0.5s
|
|
||||||
update_interval: 0.5s
|
|
Loading…
Reference in New Issue
Block a user