Das folgende ESPHome Programm ist für eine NodeMCU mit einem PIR und nicht adressierbaren RGB LEDs.
Der Bewegungsmelder ist nur aktiv nach Sonnenuntergang. Über einen Software-switch lassen sich die leds über Home Assistant auch dauerhaft aktivieren. Die Light-Komponente lässt sich aus HA heraus natürlich auch wie gewohnt manuell steuern.
configuration.yaml
1esphome:
2 name: test
3 platform: ESP8266
4 board: nodemcuv2
5
6
7wifi:
8 ssid: !secret WLanSSID
9 password: !secret WLanPassword
10
11 ap:
12 ssid: "RGB Sun Pir"
13 password: "gWef1LCbEILB"
14
15captive_portal:
16logger:
17
18api:
19 password: !secret HA_API_Password
20ota:
21 password: !secret HA_OTA_Password
22
23
24sun:
25# Hier die Koordinaten an euren Standort anpassen damit Sonnenauf-/untergang bestimmt werden kann
26 latitude: 51.138374°
27 longitude: 7.185790°
28
29time:
30 - platform: homeassistant
31 id: local_time
32
33
34binary_sensor:
35 - platform: gpio
36 pin: D1
37 name: "Bewegungsmelder"
38 device_class: motion
39 id: rgb_pir
40 on_press:
41 then:
42 - if:
43 condition:
44 - sun.is_below_horizon:
45 then:
46 - script.execute: switch_n_rgb_script
47
48light:
49 - platform: rgb
50 name: "RGB"
51 red: rgb_1
52 green: rgb_2
53 blue: rgb_3
54 id: rgb_led
55
56output:
57 - platform: esp8266_pwm
58 id: rgb_1
59 pin: D5
60 - platform: esp8266_pwm
61 id: rgb_2
62 pin: D6
63 - platform: esp8266_pwm
64 id: rgb_3
65 pin: D2
66
67
68# Helper um per HA das Abschalten per timeout generell zu verhindern
69switch:
70 - platform: gpio
71 pin: D3
72 name: "n-LEDs dauerhaft an"
73 id: n_leds_daueran
74 on_turn_on:
75 - light.turn_on: rgb_led
76 on_turn_off:
77 - light.turn_off: rgb_led
78
79
80# Script mit Mode=restart, damit der Timeout bei jeder erneuten Bewegung zurückgesetzt wird.
81# Wenn also das Licht eingeschaltet wurde, aber in den 2 Minuten delay erneut eine Bewegung erkannt wird,
82# wird das Script abgebrochen und neu gestartet, wodurch die 2 Minuten Wartezeit erneut beginnen
83script:
84- id: switch_n_rgb_script
85 mode: restart
86
87 then:
88 - light.turn_on: rgb_led
89 - delay: 2min
90 - if:
91 condition:
92 switch.is_off: n_leds_daueran
93 then:
94 - light.turn_off: rgb_led