-
Notifications
You must be signed in to change notification settings - Fork 2
/
co2sensor.yaml
150 lines (142 loc) · 4.7 KB
/
co2sensor.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
substitutions:
node_name: !env_var co2ampel
esphome:
name: co2ampel_${node_name}
platform: ESP32
board: esp32doit-devkit-v1
on_boot:
- display.page.show: boot
ota:
safe_mode: True
password: !secret ota_passwd
logger:
level: DEBUG
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_passwd
ap:
ssid: "co2ampel"
password: ""
captive_portal:
mqtt:
broker: co2.cyber23.de
topic_prefix: co2ampel/${node_name}
birth_message:
topic: co2ampel/${node_name}/status
payload: online
will_message:
topic: co2ampel/${node_name}/status
payload: offline
uart:
rx_pin: GPIO16
tx_pin: GPIO17
baud_rate: 9600
id: uart_mhz19
light:
- platform: neopixelbus
pin: GPIO4
num_leds: 12
name: "ws2812 ring"
id: "ws2812"
restore_mode: ALWAYS_OFF
output:
- platform: ledc
pin: GPIO12
id: buzzer
sensor:
- platform: mhz19
update_interval: 10s
automatic_baseline_calibration: true
uart_id: uart_mhz19
temperature:
name: ${node_name} Temperature
id: mhz19_temp
co2:
name: ${node_name} PPM
id: mhz19_co2
on_value:
then:
if:
condition:
sensor.in_range:
id: mhz19_co2
above: 0
below: 800
then:
- light.turn_off:
id: ws2812
- display.page.show: co2
else:
if:
condition:
sensor.in_range:
id: mhz19_co2
above: 800
below: 1000
then:
- light.turn_on:
id: ws2812
brightness: 80%
red: 50%
green: 50%
blue: 0%
- display.page.show: co2
else:
if:
condition:
sensor.in_range:
id: mhz19_co2
above: 1000
then:
- light.turn_on:
id: ws2812
brightness: 100%
red: 100%
green: 0%
blue: 0%
# - output.turn_on: buzzer
# - output.ledc.set_frequency:
# id: buzzer
# frequency: "5000Hz"
# - output.set_level:
# id: buzzer
# level: "20%"
# - delay: 10ms
# - output.turn_off: buzzer
- delay: 500ms
- light.toggle: ws2812
- delay: 500ms
- light.toggle: ws2812
- delay: 500ms
- light.toggle: ws2812
- delay: 500ms
- light.toggle: ws2812
- lambda: |-
static int num_executions = 0;
ESP_LOGD("main", "I am at execution number %d", num_executions);
num_executions += 1;
- display.page.show: co2
i2c:
sda: GPIO21
scl: GPIO22
font:
- file: "font.ttf"
id: cust_font
size: 70
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
address: 0x3C
brightness: 100%
update_interval: 10s
pages:
- id: boot
lambda: |-
it.printf(64, 0, id(cust_font), COLOR_ON, TextAlign::TOP_CENTER, ":-)");
- id: co2
lambda: |-
int ergb;
ergb = id(mhz19_co2).state/100;
it.printf(64, 0, id(cust_font), COLOR_ON, TextAlign::TOP_CENTER, "%.0i", ergb);
# it.printf(64, 16, id(cust_font), COLOR_ON, TextAlign::TOP_CENTER, "%.0fPPM", id(mhz19_co2).state);
# it.printf(64, 40, id(cust_font),TextAlign::TOP_CENTER, "%.0f°C", id(mhz19_temp).state);