Bewegungssensor an D1 Mini... einmal ausgelöst und setzt sich nicht zurück

Guten Abend liebe Gemeinde, habe oben gesagtes Problem. Hab in meiner Fundkiste noch einen D1 Mini und einen Pir Sensor von AZ-Delivery gefunden. Plan ist es eine Automation zu basteln das wenn der Sensor auslöst eine kleine Wasserpumpe via Shelly Plug für 5 sek zum laufen zu bringen. Hintergrund, habe gerade ein neues Beet gebastelt, aber meine Katze meint das wäre auch ein cooles Katzenklo. Alle Pflanzen ausgebuddelt. Denke mal ne Dusche wird da helfen.
Wie gesagt hab ich den Sensor am Start, nur hat er einmal ausgelöst und meint das wars jetzt. Er setzt sich nicht zurück oder erkennt auch nicht wenn neue Bewegung ins Spiel kommt. Denke mal ich muss da bei ESP Home noch irgendwas dazu schreiben damit das Teil macht was es soll. Aber was?

Anbei der ESP Home Code

captive_portal:

binary_sensor:
  - platform: gpio
    pin: GPIO4
    name: "Bewegungssensor Katzenschreck"
    device_class: motion

Auch ich hab hier einen PIR-Sensor an einem ESP32 laufen. Die Einstellungen sind so wie bei dir:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO14
      inverted: False
    id: trhs_Bewegung
    name: "Bewegung Treppenhaus"
    device_class: motion   

Auch bei Verwendung des GPIO4 sehe ich bei deinem ESP8266 keine Probleme.

Was passiert denn, wenn du die Spannung mal weg nimmst? Schaltet er dann noch einmal oder passiert nichts?
Es wäre vielleicht auch hilfreich, zu wissen, welchen PIR Sensor du verwendest.
Ist das ein nackter Sensor oder ist da noch mehr verbaut?
Wenn da PullUp oder Pulldown-Widerstände fehlen, könnte es sein, daß du in deiner YAML noch einen Pullup oder Pulldown aktivieren musst.

1 „Gefällt mir“

Wenn ich die Spannung weg nehme passiert nix, steht dann immer noch da “ausglöst vor …” der Sensor ist von AZ-Delivery.

diser ist es

Vermutlich hat der Eingang keinen Pull-up oder Pull-Down Widerstand.
Schau mal nach, irgendein Eingang auf der linken Seite hat das per default.
siehe LOLIN D1 mini — WEMOS documentation

Laut Schematic V4.0.0[PDF] sollte es GPIO15 sein

1 „Gefällt mir“

Den GPIO15 sollte man besser vermeiden, da es passieren kann, daß der ESP nicht bootet, wenn der auf Masse gezogen wird.

(Tabelle weiter unten)

Besser ist es, einfach in der YAML einen Pullup zu aktivieren.

Ich meinte eher, was passiert, wenn du die Spannung nur kurz weg nimmst. Funktioniert die Erkennung, nachdem die Spannung wieder da und der ESP hochgefahren ist, wieder einmal oder nicht?

1 „Gefällt mir“

Irgendwas stimmt hier grundlegend nicht. Hab den Sensor komplett abgesteckt und den ESP neu gebootet. Trotzem steht da “Bewegung erkannt vor z.B. 10sek”. Pullup hatte ich zuvor auch aktiviert, da war keine Veränderung festzustellen. Daher mal ganz abgezogen und trotzdem erkennt er eine Bewegung obwohl der PIR garnicht dran ist. Sehr seltsam. So sieht der Code jetzt aus:

binary_sensor:
  - platform: gpio
    device_class: Motion
    pin:
      number: GPIO04
      mode:
        input: true
        pullup: true
    name: "Bewegungssensor Katzenschreck"

Wenn du den Pullup aktivierst, wirst du immer Bewegung erkennen, falls du den Eingang nicht invertierst.
Du solltest besser den pulldown aktivieren

1 „Gefällt mir“

ESP sagt mir das pulldown nur auf GPIO16 funktioniert, ist das normal?

Läuft jetzt mit GPIO16 und pulldown einwandfrei. Danke für Deine Hilfe.

Stimmt… Da war ja was.
Allerdings würde ich den GPIO16 eher nicht verwenden, da das ein spezieller Pin ist, der dazu da ist, den ESP aus dem Sleepmode wecken kann. Außerdem ist GPIO16 beim Booten high, was je nach Eingangsbeschaltung zu einem Kurzschluss führen kann.
Da wirst du wohl einen externen Pulldown-Widerstand verwenden müssen.
Jetzt fällt mir wieder ein, warum ich lieber den ESP32 verwende, wenn ich mehr als nur ein paar GPIOs brauche…

Einen ESP 32 hätte ich auch noch da, meinst Du das ist sicherer? Außerdem hab ich jetzt das Problem das der Shelly welcher die Wasserpumpe schaltet erst ca. 10sek nachdem der Pir eine Bewegung erkannt hat einschaltet. Hab hier einige Shellys am Start und eigendlich schalten die sofort.

Für einen einfachen Bewegungsmelder ist ein ESP32 eigentlich vollkommen überdimensioniert und bringt keine nennenswerten Vorteile. Ich würde einfach einen externen Pulldown Widerstand dazu bauen.

Zu dem Problem mit dem langsamen Schalten würde ich mir den Bewegungsmelder einfach mal auf ein Dashboard holen, um zu sehen, ob der zeitnah im HA ankommt.

Bei allen meinen 6 HC-SR501 PIRs betreibe ich sie mit 5V Versorgung und hänge die Signalleitung einfach an einen D1Mini GPIO.

binary_sensor:
  - platform: gpio
    name: "Küchenstation Bewegungsmelder"
    device_class: motion
    id: kuechenstation_pir
    pin: 
      #D7
      number: GPIO13
    filters:
      - delayed_off: 500ms
    on_state:  
      then:
        - if:
            condition: 
              binary_sensor.is_on: kuechenstation_pir
            then:
              - script.execute: process_movement

Ich verwende folgende PIRs: HC-SR501 HC-SR505 MH-SR602 Einstellen IR Pyroelektrische Infrarot Mini PIR Bewegungs-sensor-detektor-modul Menschen Halterung für Arduino - AliExpress 502

Das ganze soll max. 2 Wochen laufen, danach hoffe ich das die Katze einen Bogen um das Beet macht. Also wäre der ESP 32 wieder verwendbar. Und natürlich hab ich den Pir auf dem Dashboard integriert. Ich sehe wenn eine Bewegung erfolgt und nach ca. 10sek schaltet aber erst die Pumpe. Wenn ich den Shelly Plug mit dem Handy per Weboberfläche schalte dauert das keine Sekunde.

Die 10 Sekunden Verzögerung werden nicht vom D1Mini (ESP8266) und auch nicht vom HC-SR501 Board erzeugt, das muss einen anderen Grund haben. Bei mir hängen alle PIRs an einen D1 Mini und sobald eine Bewegung erkannt wird, geht sofort zum Beispiel ein LED Streifen an oder die ESP-Cam in der Garage wird aus dem Schlaf geweckt und startet. Im Wohnzimmer springt die Stehlampe sofort an, wenn ich den Raum betrete…

Sorry, ich habe von der ganzen Programiererei nicht wirklich groß Ahnung. Sieht irgendwie kompliziert aus… :grimacing:

Ich habe in der Automation z.B. eine Verzögerung mit aktiviert. Quasie das die Pumpe nur 3 sek laufen soll. Bis dahin ist die Katze nass. Das mit den 3 sek funktioniert auch, aber warum heist das Verzögerung und nicht Schaltzeit oder so? Vielleicht mache ich ja da was falsch.

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Für die Erkennung der Bewegung ist alles ab (und inklusive) “on_state:” nicht notwendig. Bei mir wird gleich vom D1 Mini auf die Bewegung reagiert. Wenn zum Beispiel Meldungen wie “Die Waschmaschhine ist fertig!” bereitstehen, dann sorgt das Skript dafür, dass sie erst bei Bewegung im Raum abgespielt werden und nicht wenn keiner da ist. Zusätzlich macht das Skript Licht, wenn es dunkel ist.