In diesem Anwendungsfall nutze ich ein Bewegungsmelder dafür, um Bewegung in einem Raum zu erkennen – ja wer hätte es gedacht. Das ist aber nicht alles, denn der Bewegungsmelder wird auch dafür genutzt, um eine Art Anwesenheitserkennung – wenn auch Recht statisch – zu realisieren.
esphome:
name: sensor-003-001
platform: ESP8266
board: d1_mini
substitutions:
delay_time_anwesenheit: 5 min # Wird im Script id: erkannte_anwesenheit_off genutzt
gpio_sda: D2
gpio_scl: D1
gpio_motion1: D6
wifi:
ssid: ""
password: ""
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: ""
password: ""
captive_portal:
# Enable logging
logger:
ota:
password: ""
api:
password: ""
web_server:
port: 80
auth:
username: user
password: ""
mqtt:
broker: 10.1.2.4
username:
password:
time:
- platform: sntp
id: ntptime
timezone: Europe/Berlin #fuer Deutschland
i2c:
sda: $gpio_sda
scl: $gpio_scl
scan: true
id: bus_a
binary_sensor:
- platform: gpio
pin: $gpio_motion1
name: "005-Motion-01"
id: HWPIRSensor1
device_class: motion
on_press:
then:
- switch.turn_on: erkannt_bewegung_pub #virtuellen Switch einschalten (Bewebungsmelder) und Publisch auf Device-Webseite
- lambda: |-
id(erkannt_bewegung_pub).publish_state(true);
- switch.turn_on: erkannt_anwesenheit_pub #virtuellen Switch einschalten (Anwesenheitserkennung) und Publisch auf Device-Webseite
- lambda: |-
id(erkannt_anwesenheit_pub).publish_state(true);
- switch.turn_on: HWLED_erkannt_anwesenheit_pub #GPIO HardwareSwitch einschalten (LED) und Publisch auf Device-Webseite
- lambda: |-
id(HWLED_erkannt_anwesenheit_pub).publish_state(true);
on_release: #virtuelle Switche ausschalten (Aufruf der Funktion)
then:
- script.execute: erkannte_anwesenheit_off
switch:
- platform: template
name: "105-Motion"
id: erkannt_bewegung_pub
restore_state: yes
optimistic: yes
- platform: gpio
pin: GPIO2
name: "Hardware erkannte Anwesenheit LED"
id: HWLED_erkannt_anwesenheit_pub
inverted: True #die LED ist invers
script:
- id: erkannte_anwesenheit_off
mode: restart # Restart heißt: x Minuten nach dem letzten Trigger wird Aktion ausgeführt
then:
- switch.turn_off: erkannt_bewegung_pub #virtuellen Switch ausschalten (Bewebungsmelder) und Publisch auf Device-Webseite
- lambda: |-
id(erkannt_bewegung_pub).publish_state(false);
- delay: ${delay_time_anwesenheit}
- switch.turn_off: erkannt_anwesenheit_pub #virtuellen Switch nach DELAY ausschalten (Anwesenheit) und Publisch auf Device-Webseite
- lambda: |-
id(erkannt_anwesenheit_pub).publish_state(false);
- switch.turn_off: HWLED_erkannt_anwesenheit_pub #die LED ist invers, darum hier ON und true
- lambda: |-
id(HWLED_erkannt_anwesenheit_pub).publish_state(false);
Schreibe einen Kommentar