ESPHome :: Bewegungsmelder als Bewegungs- und Anwesenheitserkennung

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

Deine E-Mail-Adresse wird nicht veröffentlicht.