-
Notifications
You must be signed in to change notification settings - Fork 7
/
multisensor.yaml
212 lines (199 loc) · 6.09 KB
/
multisensor.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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
#
# START The below parts are generated for you, don't replace or alter them
#
esphome:
name: <your-device-name>
esp32:
board: esp32dev
framework:
type: arduino'
ota:
password: "a-secret-password"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: <your-device-name>
password: "another-secret-password"
captive_portal:
#
# END The above parts are generated for you, don't replace or alter them
#
# Disable logging (you can still view logs live from ESPHome)
logger:
baud_rate: 0
# Enable Home Assistant API
api:
services:
# Creates a Home Assistant service to calibrate CO2-sensor to 400ppm
# Calibrate it once in a well ventilated room and you are good
- service: mhz19_calibrate_zero
then:
- mhz19.calibrate_zero: mhz19_<name>
# Creates a Home Assistant service to play a RTTTL-tune
# Try passing the following two examples as song_str to the Home Assistant service:
# two short:d=4,o=5,b=100:16e6,16e6
# starwars:d=4,o=5,b=180:8f,8f,8f,2a#.,2f.6,8d#6,8d6,8c6,2a#.6,f.6,8d#6,8d6,8c6,2a#.6,f.6,8d#6,8d6,8d#6,2c6,p,8f,8f,8f,2a#.,2f.6,8d#6,8d6,8c6,2a#.6,f.6,8d#6,8d6,8c6,2a#.6,f.6,8d#6,8d6,8d#6,2c6
# (including the name of the tune, e.g. "two short" and "starwars")
- service: play_rtttl
variables:
song_str: string
then:
- rtttl.play:
rtttl: !lambda 'return song_str;'
# Buzzer
output:
- platform: ledc
pin: GPIO22
id: rtttl_out
rtttl:
output: rtttl_out
on_finished_playback:
- logger.log: 'Song ended!'
# CO2 sensor comms
# For this to work you may have to set logger baud_rate to 0
uart:
- id: co2
rx_pin: 3
tx_pin: 1
baud_rate: 9600
# Light sensor comms
i2c:
- id: light
sda: 18
scl: 19
scan: true
sensor:
# Sound sensor
- platform: adc
id: adc_lyd_<name>
pin: 33
name: "Sound sensor voltage <name>"
update_interval: 100ms
attenuation: auto
# Don't send sound sensor readings to HA
internal: true
# Sound level measurement based upon sound sensor
- platform: ct_clamp
sensor: adc_lyd_<name>
name: "Sound sensor level <name>"
# Lower sample duration gives less reliable readings
sample_duration: 500ms
update_interval: 500ms
filters:
# Consider everything below threshold to be zero
# You may adjust threshold and delta to your liking
- lambda: |-
float THRESHOLD = 0.5;
if (x < THRESHOLD) {
return 0;
} else {
return x;
}
# When above threshold, only send results when more than "delta" difference since last time
# This reduces the amount of data sent to HA so your log doesn't fill up
- delta: 0.05
# CO2 sensor (depends on uart-config)
# Remove or comment out if you use the alternative design
- platform: mhz19
id: mhz19_<name>
uart_id: co2
co2:
name: "CO2 <name>"
filters:
- delta: 10.0
temperature:
name: "Temperature <name> (internal)"
filters:
- delta: 0.5
# Hide this value from Home Assistant
# The MH-Z19 temperature readings are notoriously inaccurate
internal: true
# This sensor will report every 10 seconds, but only if the change is bigger than delta
update_interval: 10s
# Calibrate sensor manually through the exposed service further up
automatic_baseline_calibration: false
# Light sensor (depends on i2c-config)
# Remove if you use the alternative design
- platform: tsl2591
i2c_id: light
name: "Light <name>"
id: light_<name>
address: 0x29
update_interval: 2s
# Used to calculate/calibrate Lux
device_factor: 53
# Used to calculate/calibrate Lux
glass_attenuation_factor: 7.7
# Lower sample durataion gives less reliable readings
integration_time: 600ms
# It works really badly without gain set to auto
# High gain is useful at night
# Low gain is useful at day
# On Low, the sensor will always show -1 in bright daylight
# On auto, calculated Lux will go to -1 when the sensor is over or under saturated
# but it will change gain automataically, and the next reading will be sensible
gain: auto
visible:
name: "Visible light <name>"
internal: true
infrared:
name: "Infrared light <name>"
internal: false
filters:
- delta: 10.0
full_spectrum:
name: "Full spectrum light <name>"
internal: true
calculated_lux:
id: i_lux
accuracy_decimals: 0
name: "Lux <name>"
filters:
# Don't bother sending result if Lux is below zero
# This will make the stats from the sensor nicer and you avoid having sudden -1 when changing gains
- lambda: |-
float MIN = 0.0;
if (MIN <= x) return x;
else return {};
- delta: 10.0
# START alternative light sensor
# Light sensor for the alternative design
# Uncomment if you use the alternative design
#- platform: adc
# pin: A0
# name: "Illuminance <name>"
# device_class: illuminance
# unit_of_measurement: lx
# Without this, you can't measure the full range of lux this unit is capable of
# attenuation: auto
# filters:
# Conversion formula to Lux
# https://esphome.io/cookbook/temt6000.html
# - lambda: |-
# return (x / 10000.0) * 2000000.0;
# - delta: 10.0
# END alternative light sensor
# Temperature and relative humidity sensor
- platform: dht
model: DHT22
pin: GPIO32
temperature:
name: "Temperature <name>"
filters:
# Because the temperature sensor is partly within an enclosure with othe electronics, the measured
# temperature will be higher than the real room temperature. Monitor real temperature and set an
# offset to calibrate the temperature correctly
- offset: -6
- delta: 0.5
humidity:
name: "Relative humidity <name>"
filters:
- delta: 1.0
update_interval: 10s
# Motion sensor
binary_sensor:
- platform: gpio
pin: GPIO27
name: "Motion <name>"
device_class: motion