entregas_lock.yaml
· 7.6 KiB · YAML
Surowy
globals:
- id: ready_to_open
type: bool
initial_value: 'false'
esphome:
name: entregas-lock
friendly_name: entregas-lock
on_boot:
then:
- logger.log: "MUSICA INICIO"
- rtttl.play: 'MUSICASTART:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p'
- script.execute:
id: blinkme
script:
- id: blinkme
then:
- repeat:
count: 12
then:
- switch.toggle: led_color_red
- delay: 250ms
- switch.toggle: led_color_yellow
- delay: 250ms
- switch.toggle: led_color_green
- delay: 250ms
#Default to red (not OPEN and turn yellow off in case it just blinked)
- switch.turn_on: led_color_red
- switch.turn_off: led_color_yellow
- switch.turn_off: led_color_green
# A gente NAO PODE FECHAR A fechadura, so saber se alguem fechou
- id: fechatudo
then:
#Apos 2 segundos se a luz ainda esta ligada, desliga ela
- delay: 2s
- if:
condition:
- switch.is_on: entregas_luz
then:
- script.execute: fechaluz
- id: fechaluz
then:
- switch.turn_off: led_color_yellow
- switch.turn_off: entregas_luz
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
level: INFO
# Enable Home Assistant API
api:
encryption:
key: "fbVMcTv0SYXALJA9EH3nGGUdbq6qT3jHX13SwBFX5zY="
ota:
- platform: esphome
password: "7e81e3c2e64ece75a819c6e535781b27"
button:
- platform: "restart"
name: "Restart Entregas lock"
web_server:
port: 80
interval:
# Permanently blink Green Led
- interval: 1s
then:
- if:
condition:
lambda: 'return id(ready_to_open) == false;'
then:
- switch.turn_on: led_color_yellow
- delay: 100ms
- switch.toggle: led_color_yellow
- delay: 100ms
- switch.toggle: led_color_yellow
- delay: 100ms
- switch.toggle: led_color_yellow
else:
- switch.turn_on: led_color_red
- switch.turn_off: led_color_green
- repeat:
count: 9
then:
- delay: 100ms
- switch.toggle: led_color_red
- switch.toggle: led_color_green
#-----------------------
# GPIO music thing
#-----------------------
output:
- platform: ledc
pin: GPIO14
id: rtttl_out
rtttl:
output: rtttl_out
gain: 60%
switch:
#-----------------------
# GPIO R, G, B Leds
#-----------------------
- platform: gpio
internal: true
name: "LED Red"
id: led_color_red
pin:
number: GPIO25
inverted: False
- platform: gpio
internal: true
name: "LED Yellow"
id: led_color_yellow
pin:
number: GPIO32
inverted: False
- platform: gpio
internal: true
name: "LED Green"
id: led_color_green
pin:
number: GPIO33
inverted: False
#-----------------------
# GPIO PULSO FECHADURA (abrir 500 ms)
#-----------------------
- platform: gpio
pin:
number: GPIO26
inverted: True
#mode:
#output: True
#open_drain: True
#pullup: True
id: entrega_lock_abrir
name: "Caixa entregas abrir pulso"
icon: "mdi:gate"
restore_mode: RESTORE_DEFAULT_OFF
on_turn_on:
- logger.log: "PULSO DE ABERTURA"
- switch.turn_on: led_color_yellow
#Blink big green light once when sending unlock pulse
- switch.turn_on: entregas_luz
- globals.set:
id: ready_to_open
value: 'true'
- delay: 500ms
#SO ligar 0.5 segundos o pulso para abrir a fechadura soltar de novo
#ela vai fechar mesmo fisicamente com o botao
- switch.turn_off: entrega_lock_abrir
- switch.turn_off: entregas_luz
- delay: 1s
#Blink light fast
- switch.turn_on: entregas_luz
- repeat:
count: 20
then:
- switch.toggle: entregas_luz
- delay: 50ms
- delay: 30s
- script.execute: fechatudo
#-----------------------
# GPIO LUZ GRANDE VERDE RELE
#-----------------------
- platform: gpio
pin:
number: GPIO23
inverted: True
#mode:
# output: True
# open_drain: True
#pullup: True
id: entregas_luz
name: "Caixa entregas Luz"
icon: "mdi:gate"
restore_mode: RESTORE_DEFAULT_OFF
- platform: gpio
pin:
number: GPIO22
inverted: true
id: entregas_ventilador
name: "Caixa entregas ventilador"
icon: "mdi:fan"
restore_mode: RESTORE_DEFAULT_OFF
sensor:
- platform: wifi_signal
id: wifi_signal_db
name: "WiFi Signal Realtime dB"
update_interval: 5s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
id: wifi_signal_percent
name: "WiFi Signal Realtime"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "%"
entity_category: "diagnostic"
binary_sensor:
#-----------------------
# SENSOR VIRTUAL, Se chamou o pulso uma vez, ready_to_open==true
#-----------------------
- platform: template
id: fechadura_unlocked
name: "Caixa entregas desbloqueada"
device_class: LOCK
lambda: |-
if ( id(ready_to_open)==true)
return true;
else
return false;
on_press:
then:
- logger.log: "FECHADURA DESBLOQUEADA"
- rtttl.play: "MUSICAABERTA:d=4,o=5,b=100:16e6,16e6,32p,8e6,16c6,8e6,8g6,8p,8g"
on_release:
then:
- logger.log: "FECHADURA BLOQUEADA"
#-----------------------
# GPIO SENSOR PORTA IMã
#-----------------------
- platform: gpio
id: fechadura_aberta
pin:
number: GPIO27 #same as D27 on Wroom-32
mode:
input: true
pullup: True
filters:
- delayed_on_off: 0.25s
name: "Caixa entregas aberta"
device_class: DOOR
on_press:
then:
- switch.turn_on: led_color_green
- switch.turn_off: led_color_red
- logger.log: "PORTA ABERTA"
- rtttl.play: 'MUSICA_ABERTA:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p'
- delay: 3s #DEIXAR MUSIC UNLOCK
on_release:
then:
- logger.log: "PORTA FECHADA"
#A PORTA FECHOU FISICAMENTE, A porta não esta mais em estado de abrir
- globals.set:
id: ready_to_open
value: 'false' #either off and on, stop progress
- switch.turn_off: entrega_lock_abrir #Make sure there is no more energy on the lock
- switch.turn_on: led_color_red
- switch.turn_off: led_color_green
- rtttl.play: "MUSICAFECHADA:d=4,o=5,b=100:16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16d#6,8p,16d6,8p,16c6"
- delay: 3s #DEIXAR MUSIC LOCK
- script.execute: fechaluz
text_sensor:
- platform: wifi_info
ip_address:
name: ESP IP Address
ssid:
name: ESP Connected SSID
bssid:
name: ESP Connected BSSID
mac_address:
name: ESP Mac Wifi Address
# scan_results:
# name: ESP Latest Scan Results Realtime
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
power_save_mode: none
reboot_timeout: 300s
domain: .canoa.lan
# Enable fallback hotspot (captive portal) in case wifi connection fails
# ap:
# ssid: "Entregas-Lock Fallback Hotspot"
# password: "hkTXpbcVbEv0"
#captive_portal:
1 | globals: |
2 | - id: ready_to_open |
3 | type: bool |
4 | initial_value: 'false' |
5 | |
6 | esphome: |
7 | name: entregas-lock |
8 | friendly_name: entregas-lock |
9 | on_boot: |
10 | then: |
11 | - logger.log: "MUSICA INICIO" |
12 | - rtttl.play: 'MUSICASTART:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p' |
13 | - script.execute: |
14 | id: blinkme |
15 | |
16 | script: |
17 | - id: blinkme |
18 | then: |
19 | - repeat: |
20 | count: 12 |
21 | then: |
22 | |
23 | - switch.toggle: led_color_red |
24 | - delay: 250ms |
25 | - switch.toggle: led_color_yellow |
26 | - delay: 250ms |
27 | - switch.toggle: led_color_green |
28 | - delay: 250ms |
29 | #Default to red (not OPEN and turn yellow off in case it just blinked) |
30 | - switch.turn_on: led_color_red |
31 | - switch.turn_off: led_color_yellow |
32 | - switch.turn_off: led_color_green |
33 | |
34 | # A gente NAO PODE FECHAR A fechadura, so saber se alguem fechou |
35 | - id: fechatudo |
36 | then: |
37 | |
38 | #Apos 2 segundos se a luz ainda esta ligada, desliga ela |
39 | - delay: 2s |
40 | |
41 | - if: |
42 | condition: |
43 | - switch.is_on: entregas_luz |
44 | then: |
45 | - script.execute: fechaluz |
46 | |
47 | |
48 | - id: fechaluz |
49 | then: |
50 | |
51 | - switch.turn_off: led_color_yellow |
52 | - switch.turn_off: entregas_luz |
53 | |
54 | |
55 | esp32: |
56 | board: esp32dev |
57 | framework: |
58 | type: arduino |
59 | |
60 | # Enable logging |
61 | logger: |
62 | level: INFO |
63 | |
64 | # Enable Home Assistant API |
65 | api: |
66 | encryption: |
67 | key: "fbVMcTv0SYXALJA9EH3nGGUdbq6qT3jHX13SwBFX5zY=" |
68 | |
69 | ota: |
70 | - platform: esphome |
71 | password: "7e81e3c2e64ece75a819c6e535781b27" |
72 | |
73 | button: |
74 | - platform: "restart" |
75 | name: "Restart Entregas lock" |
76 | |
77 | web_server: |
78 | port: 80 |
79 | |
80 | |
81 | interval: |
82 | |
83 | # Permanently blink Green Led |
84 | - interval: 1s |
85 | then: |
86 | - if: |
87 | condition: |
88 | lambda: 'return id(ready_to_open) == false;' |
89 | then: |
90 | - switch.turn_on: led_color_yellow |
91 | - delay: 100ms |
92 | - switch.toggle: led_color_yellow |
93 | - delay: 100ms |
94 | - switch.toggle: led_color_yellow |
95 | - delay: 100ms |
96 | - switch.toggle: led_color_yellow |
97 | else: |
98 | - switch.turn_on: led_color_red |
99 | - switch.turn_off: led_color_green |
100 | - repeat: |
101 | count: 9 |
102 | then: |
103 | - delay: 100ms |
104 | - switch.toggle: led_color_red |
105 | - switch.toggle: led_color_green |
106 | |
107 | |
108 | #----------------------- |
109 | # GPIO music thing |
110 | #----------------------- |
111 | output: |
112 | - platform: ledc |
113 | pin: GPIO14 |
114 | id: rtttl_out |
115 | |
116 | rtttl: |
117 | output: rtttl_out |
118 | gain: 60% |
119 | |
120 | switch: |
121 | |
122 | #----------------------- |
123 | # GPIO R, G, B Leds |
124 | #----------------------- |
125 | |
126 | - platform: gpio |
127 | internal: true |
128 | name: "LED Red" |
129 | id: led_color_red |
130 | pin: |
131 | number: GPIO25 |
132 | inverted: False |
133 | |
134 | - platform: gpio |
135 | internal: true |
136 | name: "LED Yellow" |
137 | id: led_color_yellow |
138 | pin: |
139 | number: GPIO32 |
140 | inverted: False |
141 | |
142 | - platform: gpio |
143 | internal: true |
144 | name: "LED Green" |
145 | id: led_color_green |
146 | pin: |
147 | number: GPIO33 |
148 | inverted: False |
149 | |
150 | #----------------------- |
151 | # GPIO PULSO FECHADURA (abrir 500 ms) |
152 | #----------------------- |
153 | - platform: gpio |
154 | pin: |
155 | number: GPIO26 |
156 | inverted: True |
157 | #mode: |
158 | #output: True |
159 | #open_drain: True |
160 | #pullup: True |
161 | |
162 | |
163 | id: entrega_lock_abrir |
164 | name: "Caixa entregas abrir pulso" |
165 | icon: "mdi:gate" |
166 | |
167 | restore_mode: RESTORE_DEFAULT_OFF |
168 | |
169 | on_turn_on: |
170 | - logger.log: "PULSO DE ABERTURA" |
171 | |
172 | - switch.turn_on: led_color_yellow |
173 | |
174 | #Blink big green light once when sending unlock pulse |
175 | - switch.turn_on: entregas_luz |
176 | - globals.set: |
177 | id: ready_to_open |
178 | value: 'true' |
179 | - delay: 500ms |
180 | #SO ligar 0.5 segundos o pulso para abrir a fechadura soltar de novo |
181 | #ela vai fechar mesmo fisicamente com o botao |
182 | - switch.turn_off: entrega_lock_abrir |
183 | - switch.turn_off: entregas_luz |
184 | - delay: 1s |
185 | |
186 | #Blink light fast |
187 | - switch.turn_on: entregas_luz |
188 | - repeat: |
189 | count: 20 |
190 | then: |
191 | - switch.toggle: entregas_luz |
192 | - delay: 50ms |
193 | |
194 | - delay: 30s |
195 | - script.execute: fechatudo |
196 | |
197 | |
198 | |
199 | |
200 | #----------------------- |
201 | # GPIO LUZ GRANDE VERDE RELE |
202 | #----------------------- |
203 | - platform: gpio |
204 | pin: |
205 | number: GPIO23 |
206 | inverted: True |
207 | #mode: |
208 | # output: True |
209 | # open_drain: True |
210 | #pullup: True |
211 | |
212 | id: entregas_luz |
213 | name: "Caixa entregas Luz" |
214 | icon: "mdi:gate" |
215 | restore_mode: RESTORE_DEFAULT_OFF |
216 | |
217 | - platform: gpio |
218 | |
219 | pin: |
220 | number: GPIO22 |
221 | inverted: true |
222 | id: entregas_ventilador |
223 | name: "Caixa entregas ventilador" |
224 | icon: "mdi:fan" |
225 | restore_mode: RESTORE_DEFAULT_OFF |
226 | |
227 | |
228 | |
229 | |
230 | sensor: |
231 | |
232 | - platform: wifi_signal |
233 | id: wifi_signal_db |
234 | name: "WiFi Signal Realtime dB" |
235 | update_interval: 5s |
236 | entity_category: "diagnostic" |
237 | |
238 | - platform: copy # Reports the WiFi signal strength in % |
239 | source_id: wifi_signal_db |
240 | id: wifi_signal_percent |
241 | name: "WiFi Signal Realtime" |
242 | filters: |
243 | - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0); |
244 | unit_of_measurement: "%" |
245 | entity_category: "diagnostic" |
246 | |
247 | |
248 | binary_sensor: |
249 | |
250 | #----------------------- |
251 | # SENSOR VIRTUAL, Se chamou o pulso uma vez, ready_to_open==true |
252 | #----------------------- |
253 | |
254 | - platform: template |
255 | id: fechadura_unlocked |
256 | name: "Caixa entregas desbloqueada" |
257 | device_class: LOCK |
258 | lambda: |- |
259 | if ( id(ready_to_open)==true) |
260 | return true; |
261 | else |
262 | return false; |
263 | on_press: |
264 | then: |
265 | - logger.log: "FECHADURA DESBLOQUEADA" |
266 | - rtttl.play: "MUSICAABERTA:d=4,o=5,b=100:16e6,16e6,32p,8e6,16c6,8e6,8g6,8p,8g" |
267 | on_release: |
268 | then: |
269 | - logger.log: "FECHADURA BLOQUEADA" |
270 | |
271 | #----------------------- |
272 | # GPIO SENSOR PORTA IMã |
273 | #----------------------- |
274 | - platform: gpio |
275 | id: fechadura_aberta |
276 | |
277 | pin: |
278 | number: GPIO27 #same as D27 on Wroom-32 |
279 | mode: |
280 | input: true |
281 | pullup: True |
282 | filters: |
283 | - delayed_on_off: 0.25s |
284 | name: "Caixa entregas aberta" |
285 | device_class: DOOR |
286 | on_press: |
287 | then: |
288 | - switch.turn_on: led_color_green |
289 | - switch.turn_off: led_color_red |
290 | - logger.log: "PORTA ABERTA" |
291 | - rtttl.play: 'MUSICA_ABERTA:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p' |
292 | - delay: 3s #DEIXAR MUSIC UNLOCK |
293 | |
294 | on_release: |
295 | then: |
296 | - logger.log: "PORTA FECHADA" |
297 | |
298 | #A PORTA FECHOU FISICAMENTE, A porta não esta mais em estado de abrir |
299 | - globals.set: |
300 | id: ready_to_open |
301 | value: 'false' #either off and on, stop progress |
302 | |
303 | - switch.turn_off: entrega_lock_abrir #Make sure there is no more energy on the lock |
304 | - switch.turn_on: led_color_red |
305 | - switch.turn_off: led_color_green |
306 | - rtttl.play: "MUSICAFECHADA:d=4,o=5,b=100:16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16d#6,8p,16d6,8p,16c6" |
307 | - delay: 3s #DEIXAR MUSIC LOCK |
308 | - script.execute: fechaluz |
309 | |
310 | |
311 | text_sensor: |
312 | - platform: wifi_info |
313 | ip_address: |
314 | name: ESP IP Address |
315 | ssid: |
316 | name: ESP Connected SSID |
317 | bssid: |
318 | name: ESP Connected BSSID |
319 | mac_address: |
320 | name: ESP Mac Wifi Address |
321 | # scan_results: |
322 | # name: ESP Latest Scan Results Realtime |
323 | |
324 | wifi: |
325 | ssid: !secret wifi_ssid |
326 | password: !secret wifi_password |
327 | power_save_mode: none |
328 | reboot_timeout: 300s |
329 | domain: .canoa.lan |
330 | |
331 | # Enable fallback hotspot (captive portal) in case wifi connection fails |
332 | # ap: |
333 | # ssid: "Entregas-Lock Fallback Hotspot" |
334 | # password: "hkTXpbcVbEv0" |
335 | |
336 | #captive_portal: |
337 | |
338 | |
339 | |
340 | |
341 |