Letzter täglicher Build
Build erfolgreich
Zuletzt gebaut: 01.09.2026, 15:17
Build-Details & Log anzeigen
rgb-treppe-leds.jpg
1205.9 KB

rgb-treppe-schaltplan.png
146.8 KB

rgb-treppe.jpg
720.7 KB
1substitutions:
2 # ------------------
3 # Pin-Belegung
4 # ------------------
5 lightlevel_pin: A0
6 pir_down_pin: D5
7 pir_up_pin: D7
8 led_pin: D6
9
10 statusled_pir_up_pin: D1
11 statusled_pir_down_pin: D2
12 statusled_light_pin: D8
13
14
15 # ------------------
16 # LED Timings
17 # ------------------
18 # Gibt die Zeit an, nach der die Treppe sich automatisch wieder ausschaltet,
19 # wenn bis dahin keine Bewegung am anderen Ende erkannt wurde.
20 timeout_seconds: 60s
21
22 # Gibt an, wie lange die Abschaltung verzögert werden soll,
23 # nach dem eine Bewegung am Ziel der Treppe erkannt wurde.
24 switchoff_delay_seconds: 10s
25
26 # Gibt an, wie lange die Treppe nach abschalten der LEDs deaktiviert sein soll,
27 # Bevor sie durch Bewegung wieder ausgelöst werden kann.
28 cooldown_seconds: 5s
29
30
31
32 # ------------------------
33 # Effekt-Einstellungen
34 # ------------------------
35
36 # Folgende Effekte stehen zur Verfügung:
37 #
38 # Rainbow
39 # Color Wipe Up
40 # Color Wipe Down
41 # Rocket
42 # Firework
43 # Stufenlicht rauf
44 # Stufenlicht rauf animiert
45 # Stufenlicht rauf colorized
46 # Stufenlicht rauf aus
47 # Stufenlicht runter
48 # Stufenlicht runter animiert
49 # Stufenlicht runter colorized
50 # Stufenlicht runter aus
51
52 # Effekt-Name für das einschalten der Treppe von unten nach oben.
53 led_effect_up: "Stufenlicht rauf colorized"
54
55 # Effekt-Name für das einschalten der Treppe von oben nach unten.
56 led_effect_down: "Stufenlicht runter colorized"
57
58 # Effekt-Name für das abschalten der Treppe von unten nach oben.
59 # Wird kein Effektname angegeben, werden die LEDs nur ausgeschaltet.
60 led_effect_up_off: "Stufenlicht rauf aus"
61
62 # Effekt-Name für das abschalten der Treppe von oben nach unten.
63 # Wird kein Effektname angegeben, werden die LEDs nur ausgeschaltet.
64 led_effect_down_off: "Stufenlicht runter aus"
65 led_effect_off_timeout: 10s
66
67 # Gibt an, wie viele beleuchtete Stufen die Treppe besitzt
68 stufen_anzahl: "16"
69
70 # Gibt an, wie viele LEDs je Stufe existieren
71 # (Anzahl der Zahlenwerte muss mit "stufen_anzahl" übereinstimmen)
72 leds_pro_stufe: "{36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36}" #, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}"
73
74 # Gibt die Farbe je Stufe an (für "Colorized" Animation)
75 # (Anzahl der Zahlenwerte muss mit "stufen_anzahl" übereinstimmen)
76 farbe_je_stufe: "{Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181), Color(39,111,181) }"
77
78
79 # ------------------
80 # System
81 # ------------------
82 # Anzahl der LEDs
83 led_anzahl: "576"
84
85 # Gibt an, ob die Treppe anhand des Lichtsensors ein/ausgeschaltet werden soll
86 # Da der Fotowiderstand bei Dunkelheit weniger Strom durchlässt,
87 # ist die Treppe bei aktiviertem Lichtsensor nur aktiv,
88 # Wenn der Sensorwert unter dem "lightlevel_maxvalue" Wert liegt.
89 light_sensor_active: "false"
90 lightlevel_maxvalue: "0.7"
91
92 # Gibt an, ob die Treppe anhand des Sonnenstandes automatisch ein/ausgeschaltet werden soll.
93 # Wenn aktiv (true) ist schaltet sich die Treppe nur nach Sonnenuntergang ein.
94 sun_active: "false"
95
96 # Höhen/Breitengrad für Sonnenstandsermittlung
97 latitude: "51.138374°"
98 longitude: "7.185790°"
99
100
101 # WLAN Zugangsdaten
102 wifi_ssid: !secret wifi_ssid
103 wifi_password: !secret wifi_password
104
105# -------------------------------------------------------------
106# -------------------------------------------------------------
107# AB HIER MUSS NICHTS MEHR GEÄNDERT WERDEN
108# -------------------------------------------------------------
109# -------------------------------------------------------------
110
111
112wifi:
113 ssid: ${wifi_ssid}
114 password: ${wifi_password}
115
116 ap:
117 ssid: "RGB-Treppe"
118 password: "fnlIp2hjHmrL"
119 ap_timeout: 30s
120
121web_server:
122captive_portal:
123
124api:
125 encryption:
126 key: !secret ESPHOME_ENCRYPTION_KEY
127
128ota:
129 platform: esphome
130 password: !secret ota_password
131
132
133esphome:
134 name: shys-rgb-treppe
135 friendly_name: SHYS RGB Treppe
136 on_boot:
137 priority: 500
138 then:
139 - switch.turn_on: treppe_aktiv
140
141esp8266:
142 board: nodemcuv2
143
144logger:
145
146
147globals:
148 - id: treppe_rauf_laeuft
149 type: bool
150 restore_value: no
151 initial_value: 'false'
152
153 - id: treppe_runter_laeuft
154 type: bool
155 restore_value: no
156 initial_value: 'false'
157
158 - id: led_anzahl
159 type: int
160 restore_value: yes
161 initial_value: '120'
162
163 - id: stufen_anzahl
164 type: int
165 restore_value: yes
166 initial_value: '12'
167
168
169number:
170 - platform: template
171 id: led_count_test
172 name: "led_count_test"
173 optimistic: true
174 min_value: 0
175 max_value: 1000
176 step: 1
177 initial_value: 120
178 restore_value: true
179
180
181sun:
182 latitude: ${latitude}
183 longitude: ${longitude}
184
185time:
186 - platform: homeassistant
187 id: local_time
188 - platform: sntp
189 id: sntp_time
190
191
192script:
193 - id: treppe_rauf_aktivieren
194 mode: restart
195 then:
196 - if:
197 condition:
198 - switch.is_on: treppe_aktiv
199 - or:
200 - lambda: return id(rgbtreppe_helligkeitssensor).state < ${lightlevel_maxvalue};
201 - lambda: return ${light_sensor_active} == false;
202 - or:
203 - not:
204 - wifi.connected:
205 - sun.is_below_horizon:
206 - lambda: return ${sun_active} == false;
207 - lambda: return id(treppe_rauf_laeuft) == false && id(treppe_runter_laeuft) == false;
208
209 then:
210 - text_sensor.template.publish:
211 id: treppen_status
212 state: "Treppe rauf"
213 - lambda: id(treppe_rauf_laeuft) = true;
214 - light.turn_on:
215 id: rgbtreppe_led
216 effect: ${led_effect_up}
217
218 # Trennung + zusätzliches if für "restart"-Mode
219 - if:
220 condition:
221 - lambda: return id(treppe_rauf_laeuft) == true;
222 then:
223 - wait_until:
224 timeout: ${timeout_seconds}
225 condition:
226 binary_sensor.is_on: rgbtreppe_pir_o
227 - script.execute: treppe_rauf_deaktivieren
228
229 - id: treppe_runter_aktivieren
230 mode: restart
231 then:
232 - if:
233 condition:
234 - switch.is_on: treppe_aktiv
235 - or:
236 - lambda: return id(rgbtreppe_helligkeitssensor).state < ${lightlevel_maxvalue};
237 - lambda: return ${light_sensor_active} == false;
238 - or:
239 - not:
240 - wifi.connected:
241 - sun.is_below_horizon:
242 - lambda: return ${sun_active} == false;
243 - lambda: return id(treppe_rauf_laeuft) == false && id(treppe_runter_laeuft) == false;
244
245 then:
246 - text_sensor.template.publish:
247 id: treppen_status
248 state: "Treppe runter"
249 - lambda: id(treppe_runter_laeuft) = true;
250 - light.turn_on:
251 id: rgbtreppe_led
252 effect: ${led_effect_down}
253 # Trennung + zusätzliches if für "restart"-Mode
254 - if:
255 condition:
256 - lambda: return id(treppe_runter_laeuft) == true;
257 then:
258 - wait_until:
259 timeout: ${timeout_seconds}
260 condition:
261 binary_sensor.is_on: rgbtreppe_pir_u
262 - script.execute: treppe_runter_deaktivieren
263
264 - id: treppe_rauf_deaktivieren
265 mode: restart
266 then:
267 - delay: ${switchoff_delay_seconds}
268
269 - if:
270 condition:
271 - not:
272 - lambda: 'return strcmp("${led_effect_up_off}", "") == 0;'
273 then:
274 - light.turn_on:
275 id: rgbtreppe_led
276 effect: ${led_effect_up_off}
277 - delay: ${led_effect_off_timeout}
278
279 - light.turn_off:
280 id: rgbtreppe_led
281 - delay: ${cooldown_seconds}
282 - lambda: id(treppe_rauf_laeuft) = false;
283
284
285 - id: treppe_runter_deaktivieren
286 mode: restart
287 then:
288 - delay: ${switchoff_delay_seconds}
289
290 - if:
291 condition:
292 - not:
293 - lambda: 'return strcmp("${led_effect_down_off}", "") == 0;'
294 then:
295 - light.turn_on:
296 id: rgbtreppe_led
297 effect: ${led_effect_down_off}
298 - delay: ${led_effect_off_timeout}
299
300 - light.turn_off:
301 id: rgbtreppe_led
302 - delay: ${cooldown_seconds}
303 - lambda: id(treppe_runter_laeuft) = false;
304
305
306text_sensor:
307 - platform: template
308 name: "Treppen-Status"
309 id: treppen_status
310 lambda: return {"idle"};
311
312
313sensor:
314 - platform: adc
315 pin: ${lightlevel_pin}
316 name: "RGB-Treppe Helligkeitssensor"
317 update_interval: 30s
318 id: rgbtreppe_helligkeitssensor
319
320
321binary_sensor:
322 - platform: gpio
323 pin: ${pir_down_pin}
324 name: "Treppe Bewegungsmelder unten"
325 device_class: motion
326 id: rgbtreppe_pir_u
327 on_press:
328 then:
329 - script.execute: treppe_rauf_aktivieren
330
331 - platform: gpio
332 pin: ${pir_up_pin}
333 name: "Treppe Bewegungsmelder oben"
334 device_class: motion
335 id: rgbtreppe_pir_o
336 on_press:
337 then:
338 - script.execute: treppe_runter_aktivieren
339
340switch:
341 - platform: gpio
342 pin: ${statusled_pir_up_pin}
343 name: "RGB-Treppe PIR oben Status LED"
344 id: rgbtreppe_pir_status_o
345 internal: true
346
347 - platform: gpio
348 pin: ${statusled_pir_down_pin}
349 name: "RGB-Treppe PIR unten Status LED"
350 id: rgbtreppe_pir_status_u
351 internal: true
352
353 - platform: gpio
354 pin: ${statusled_light_pin}
355 name: "RGB-Treppe Helligkeit Status LED"
356 id: rgbtreppe_hell_status
357 internal: true
358
359 - platform: template
360 name: "Treppe Aktiviert"
361 id: treppe_aktiv
362 optimistic: true
363
364
365
366light:
367 - platform: neopixelbus
368 type: GRB
369 variant: WS2812
370 pin: ${led_pin}
371 num_leds: ${led_anzahl}
372 default_transition_length: 3s
373 name: "Treppe Oben LED"
374 id: rgbtreppe_led
375 restore_mode: ALWAYS_OFF
376
377 on_turn_off:
378 - text_sensor.template.publish:
379 id: treppen_status
380 state: "idle"
381
382 effects:
383 - addressable_rainbow:
384 name: Rainbow
385 speed: 10
386 width: 90
387
388 - addressable_color_wipe:
389 name: Color Wipe Down
390 colors:
391 - red: 0%
392 green: 0%
393 blue: 100%
394 num_leds: 30
395 - red: 30%
396 green: 100%
397 blue: 60%
398 num_leds: 30
399 add_led_interval: 50ms
400 reverse: false
401
402 - addressable_color_wipe:
403 name: Color Wipe Up
404 colors:
405 - red: 0%
406 green: 0%
407 blue: 100%
408 num_leds: 30
409 - red: 30%
410 green: 100%
411 blue: 60%
412 num_leds: 30
413 add_led_interval: 50ms
414 reverse: true
415
416 - addressable_color_wipe:
417 name: Rocket
418 colors:
419 - red: 100%
420 green: 0%
421 blue: 0%
422 num_leds: 3
423 - red: 100%
424 green: 100%
425 blue: 100%
426 num_leds: 2
427 - red: 100%
428 green: 0%
429 blue: 0%
430 num_leds: 3
431 - red: 100%
432 green: 100%
433 blue: 100%
434 num_leds: 2
435
436 - red: 10%
437 green: 5%
438 blue: 2%
439 num_leds: 1
440 - red: 30%
441 green: 15%
442 blue: 6%
443 num_leds: 1
444 - red: 70%
445 green: 30%
446 blue: 10%
447 num_leds: 1
448 - red: 100%
449 green: 80%
450 blue: 20%
451 num_leds: 1
452 - red: 100%
453 green: 40%
454 blue: 10%
455 num_leds: 1
456 - red: 10%
457 green: 5%
458 blue: 1%
459 num_leds: 1
460 - red: 0%
461 green: 0%
462 blue: 0%
463 num_leds: 1
464 - red: 10%
465 green: 5%
466 blue: 1%
467 num_leds: 1
468
469 - red: 0%
470 green: 0%
471 blue: 0%
472 num_leds: 155
473 add_led_interval: 20ms
474 reverse: true
475
476 - addressable_fireworks:
477 name: Firework
478 update_interval: 32ms
479 spark_probability: 40%
480 use_random_color: true
481 fade_out_rate: 120
482
483
484 # Bei diesem Effekt wird jede Stufe einzeln in einer Zufalls-Farbe eingeschaltet. (Laufrichtung von Stripe-Start nach Stripe-Ende)
485 # In diesem Effekt behalten die Stufen bis zum abschalten ihre Farbe.
486 #
487 # - anzahl - muss auf die Anzahl der Stufen angepasst werden
488 # - ledStufe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Anzahl der LEDs beinhaltet.
489 # Die Anzahl der in ledStufe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
490 - addressable_lambda:
491 name: "Stufenlicht rauf"
492 update_interval: 16ms
493 lambda: |-
494 static const int16_t anzahl = ${stufen_anzahl};
495 int ledStufe[anzahl] = ${leds_pro_stufe};
496 int von = 0;
497
498 static uint16_t progress = 0;
499 if (initial_run) {
500 progress = -1;
501 }
502
503 for(int stufe=0; stufe < anzahl; stufe++){
504 if(stufe == progress){
505 it.range(von, von + ledStufe[stufe]) = esphome::Color::random_color();
506 } else {
507 von += ledStufe[stufe];
508 }
509 }
510
511 if(progress >= 0){
512 delay(300);
513 }
514 progress++;
515
516
517 # Beim animierten Effekt wird jede Stufe einzeln in einer Zufalls-Farbe eingeschaltet. (Laufrichtung von Stripe-Start nach Stripe-Ende)
518 # Sobald alle Stufen aktiv sind, wird bei der ersten Stufe wieder mit einer neuen Zufalls-Farbe angefangen.
519 #
520 # - anzahl - muss auf die Anzahl der Stufen angepasst werden
521 # - ledStufe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Anzahl der LEDs beinhaltet.
522 # Die Anzahl der in ledStufe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
523 - addressable_lambda:
524 name: "Stufenlicht rauf animiert"
525 update_interval: 16ms
526 lambda: |-
527 static const int16_t anzahl = ${stufen_anzahl};
528 int ledStufe[anzahl] = ${leds_pro_stufe};
529
530 int von = 0;
531 static uint16_t progress = 0;
532 if (initial_run) {
533 progress = -1;
534 }
535
536 for(int stufe=0; stufe < anzahl; stufe++){
537 if(stufe == progress){
538 it.range(von, von + ledStufe[stufe]) = esphome::Color::random_color();
539 } else {
540 von += ledStufe[stufe];
541 }
542 }
543
544 if(progress >= 0){
545 delay(300);
546 }
547
548 if(progress > anzahl){
549 progress = 0;
550 } else {
551 progress++;
552 }
553
554
555 # Beim colorized Effekt wird jede Stufe einzeln in einer Festgelegten-Farbe eingeschaltet. (Laufrichtung von Stripe-Start nach Stripe-Ende)
556 # Die Farbauswahl kann für jede Stufe individuell erfolgen
557 #
558 # - anzahl - muss auf die Anzahl der Stufen angepasst werden
559 # - ledStufe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Anzahl der LEDs beinhaltet.
560 # Die Anzahl der in ledStufe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
561 # - ledStufenFarbe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Farbe beinhaltet.
562 # Die Anzahl der in ledStufenFarbe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
563 # Die Farben sind in der Form "Color(rot, grün, blau)" anzugeben,
564 # wobei hier für rot, grün und blau jeweils eine Zahl zwischen 0 und 255 angegeben werden muss.
565 - addressable_lambda:
566 name: "Stufenlicht rauf colorized"
567 update_interval: 16ms
568 lambda: |-
569 static const int16_t anzahl = ${stufen_anzahl};
570 int ledStufe[anzahl] = ${leds_pro_stufe};
571 Color ledStufenFarbe[anzahl] = ${farbe_je_stufe};
572
573 int von = 0;
574 static uint16_t progress = 0;
575 if (initial_run) {
576 progress = -1;
577 }
578
579 for(int stufe=0; stufe < anzahl; stufe++){
580 if(stufe == progress){
581 it.range(von, von + ledStufe[stufe]) = ledStufenFarbe[stufe];
582 } else {
583 von += ledStufe[stufe];
584 }
585 }
586
587 if(progress >= 0){
588 delay(200);
589 }
590 progress++;
591
592
593 # Bei diesem Effekt wird jede Stufe einzeln ausgeschaltet. (Laufrichtung von Stripe-Start nach Stripe-Ende)
594 #
595 # - anzahl - muss auf die Anzahl der Stufen angepasst werden
596 # - ledStufe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Anzahl der LEDs beinhaltet.
597 # Die Anzahl der in ledStufe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
598 - addressable_lambda:
599 name: "Stufenlicht rauf aus"
600 update_interval: 16ms
601 lambda: |-
602 static const int16_t anzahl = ${stufen_anzahl};
603 int ledStufe[anzahl] = ${leds_pro_stufe};
604 int von = 0;
605
606 static uint16_t progress = 0;
607 if (initial_run) {
608 progress = -1;
609 }
610
611 for(int stufe=0; stufe < anzahl; stufe++){
612 if(stufe == progress){
613 it.range(von, von + ledStufe[stufe]) = esphome::Color(0,0,0);
614 } else {
615 von += ledStufe[stufe];
616 }
617 }
618
619 if(progress >= 0){
620 delay(500);
621 }
622
623 progress++;
624
625
626 # Bei diesem Effekt wird jede Stufe einzeln in einer Zufalls-Farbe eingeschaltet. (Laufrichtung von Stripe-Ende nach Stripe-Start)
627 # In diesem Effekt behalten die Stufen bis zum abschalten ihre Farbe.
628 #
629 # - anzahl - muss auf die Anzahl der Stufen angepasst werden
630 # - ledStufe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Anzahl der LEDs beinhaltet.
631 # Die Anzahl der in ledStufe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
632 - addressable_lambda:
633 name: "Stufenlicht runter"
634 update_interval: 16ms
635 lambda: |-
636 static const int16_t anzahl = ${stufen_anzahl};
637 int ledStufe[anzahl] = ${leds_pro_stufe};
638 int von = 0;
639
640 static uint16_t progress = 0;
641 if (initial_run) {
642 progress = anzahl;
643 }
644
645 for(int stufe=0; stufe < anzahl; stufe++){
646 if(stufe == progress){
647 it.range(von, von + ledStufe[stufe]) = esphome::Color::random_color();
648 } else {
649 von += ledStufe[stufe];
650 }
651 }
652
653 if(progress < anzahl){
654 delay(300);
655 }
656 progress--;
657
658
659 # Beim animierten Effekt wird jede Stufe einzeln in einer Zufalls-Farbe eingeschaltet. (Laufrichtung von Stripe-Ende nach Stripe-Start)
660 # Sobald alle Stufen aktiv sind, wird bei der ersten Stufe wieder mit einer neuen Zufalls-Farbe angefangen.
661 #
662 # - anzahl - muss auf die Anzahl der Stufen angepasst werden
663 # - ledStufe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Anzahl der LEDs beinhaltet.
664 # Die Anzahl der in ledStufe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
665 - addressable_lambda:
666 name: "Stufenlicht runter animiert"
667 update_interval: 16ms
668 lambda: |-
669 static const uint16_t anzahl = ${stufen_anzahl};
670 int ledStufe[anzahl] = ${leds_pro_stufe};
671 int von = 0;
672
673 static uint16_t progress = 0;
674 if (initial_run) {
675 progress = anzahl;
676 }
677
678 for(int stufe=0; stufe < anzahl; stufe++){
679 if(stufe == progress){
680 it.range(von, von + ledStufe[stufe]) = esphome::Color::random_color();
681 } else {
682 von += ledStufe[stufe];
683 }
684 }
685
686 if(progress < anzahl){
687 delay(300);
688 }
689
690 if(progress <= 0){
691 progress = anzahl-1;
692 } else {
693 progress--;
694 }
695
696
697 # Beim colorized Effekt wird jede Stufe einzeln in einer Festgelegten-Farbe eingeschaltet. (Laufrichtung von Stripe-Ende nach Stripe-Start)
698 # Die Farbauswahl kann für jede Stufe individuell erfolgen
699 #
700 # - anzahl - muss auf die Anzahl der Stufen angepasst werden
701 # - ledStufe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Anzahl der LEDs beinhaltet.
702 # Die Anzahl der in ledStufe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
703 # - ledStufenFarbe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Farbe beinhaltet.
704 # Die Anzahl der in ledStufenFarbe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
705 # Die Farben sind in der Form "Color(rot, grün, blau)" anzugeben,
706 # wobei hier für rot, grün und blau jeweils eine Zahl zwischen 0 und 255 angegeben werden muss.
707 - addressable_lambda:
708 name: "Stufenlicht runter colorized"
709 update_interval: 16ms
710 lambda: |-
711 static const int16_t anzahl = ${stufen_anzahl};
712 int ledStufe[anzahl] = ${leds_pro_stufe};
713 Color ledStufenFarbe[anzahl] = ${farbe_je_stufe};
714
715 int von = 0;
716 static uint16_t progress = 0;
717 if (initial_run) {
718 progress = anzahl;
719 }
720
721 for(int stufe=0; stufe < anzahl; stufe++){
722 if(stufe == progress){
723 it.range(von, von + ledStufe[stufe]) = ledStufenFarbe[stufe];
724 } else {
725 von += ledStufe[stufe];
726 }
727 }
728
729 if(progress < anzahl){
730 delay(200);
731 }
732 progress--;
733
734
735 # Bei diesem Effekt wird jede Stufe einzeln ausgeschaltet. (Laufrichtung von Stripe-Ende nach Stripe-Start)
736 #
737 # - anzahl - muss auf die Anzahl der Stufen angepasst werden
738 # - ledStufe[anzahl] - ist ein Array, welches für jede Stufe die jeweilige Anzahl der LEDs beinhaltet.
739 # Die Anzahl der in ledStufe enthaltenen Einträge muss der Anzahl der Stufen entsprechen!
740 - addressable_lambda:
741 name: "Stufenlicht runter aus"
742 update_interval: 16ms
743 lambda: |-
744 static const uint16_t anzahl = ${stufen_anzahl};
745 int ledStufe[anzahl] = ${leds_pro_stufe};
746 int von = 0;
747
748 static uint16_t progress = 0;
749 if (initial_run) {
750 progress = anzahl;
751 }
752
753 for(int stufe=0; stufe < anzahl; stufe++){
754 if(stufe == progress){
755 it.range(von, von + ledStufe[stufe]) = esphome::Color(0,0,0);
756 } else {
757 von += ledStufe[stufe];
758 }
759 }
760 if(progress < anzahl){
761 delay(500);
762 }
763
764 progress--;thumb.png
158.0 KB