ich nutze einen Bewegungsmelder als Auslöser, um Dashboards anzuzeigen, bzw. deren Rechner aus dem Schlaf zu holen. 4 Minuten bleiben sie an und fahren dann runter.
Wenn nun innerhalb dieser 4 Minuten eine neue oder weitere Bewegungen stattfinden, sollen die 4 Minuten immer von vorn beginnen.
Wie setze ich das um? Geht das überhaupt mit einer einfachen Automation?
Mit dem Modus restart könnte es grundsätzlich funktionieren, wenn der Bewegungsmelder in der Zeit wieder ausschlägt. Automation modes - Home Assistant
Nur würde dann Deine Bedingung vermutlich keinen Sinn ergeben. Und es wird getriggert, wenn der Bewegungsmelder ausgeht, richtig? Dann funktioniert es ebenfalls nicht, falls der Bewegungsmelder danach wieder einschaltet und eingeschaltet bleibt.
So wirklich verstehe ich den angestrebten Zweck auch nicht, weshalb es gerade schwer fällt Tipps zur Umsetzung zu geben.
Ich schreib immer so.
Licht bei Bewegung erkannt an.
Licht wenn 4 Minuten nicht erkannt aus.
Wenn in der Zwischenzeit wieder Bewegung erkannt wird greift die aus Bedingung erst wenn die Bewegung wirklich weg ist.
Könntest Du mir das für meine Sachen umschreiben oder mehr Hilfe geben? Ich habe ja nur einen Script, der ausgeführt werden soll und keine entitäten. Es wird durch das Script der Power Button vom PC für eine Sekunde gedrückt. Vielleicht kann man das ja auch hier drinnen lösen?
Nachtrag:
Ich habe es mal probiert. Sieht jetzt so aus bei mir. Das Display geht an. Wenn ich mich aber in den Bewegungssensor bewege, wird das Display sofort wieder ausgeschaltet auch innerhalb der 4 Minuten. Wo liegt der Fehler?
alias: Display Schaltung
description: ""
trigger:
- platform: state
entity_id:
- binary_sensor.hue_motion_sensor_1_bewegung
to: "on"
id: an
from: "off"
- platform: state
entity_id:
- binary_sensor.hue_motion_sensor_1_bewegung
to: "off"
id: aus
for:
hours: 0
minutes: 4
seconds: 0
from: "on"
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: an
sequence:
- service: script.taste_eine_sekunde_drucken
data: {}
- conditions:
- condition: trigger
id: aus
sequence:
- service: script.taste_eine_sekunde_drucken
data: {}
mode: single
Also der Sinn den ich damit bezwecke ist eigentlich ganz einfach. Ich habe einige Displays in der Wohnung hinter dehnen jedes mal ein Intel NUC PC I7 oder I5 hängt. Ich möchte diese einfach nicht durchgehend am Laufen haben, da im Idle ca. 25 Watt verbraten werden.
Diese Bewegungsmelder schalten dann den Power Button vom PC ein und wecken die PC auf!
Prüfst du denn aktuell innerhalb deines Scripts, ob der PC läuft?
Du rufts mit der Automation ja das gleiche Script auf, egal ob ein- oder ausgeschaltet werden soll.
Wenn du bei der choose für “an” noch die Bedingung vom Anfang mit der Prüfung auf den sensor unter 11 ergänzt, dann sollte kein erneuter Scriptaufruf innerhalb der 4 Minuten stattfinden, da der Wert dann über den 11 liegen sollte.
Ich habe solche timergeschichten auch mit timern gelöst.
Ich sehe das wie @totow, delays versuche ich zu vermeiden.
Ich habe mir ein paar Timer angelegt, mit 1, 5 und 30 Minuten (helper).
Bei einem BWM starte ich z. B. den 5min.Timer.
Wird innerhalb der der Zeit eine neue Bewegung erkannt, setzt sich der Timer zurück und startet neu.
Wird keine neue Bewegung erkannt, geht es weiter in der Automation.
Die Automation selbst steht auf “neu starten”
Doch noch mal eine Frage dazu. Kann ich auch hier in dieser Automation so lösen, dass diese Taste des Gerätes für eine Sekunde gedrückt wird, ohne das über einen Script zu machen?
Ich würde sagen Ja.
Ein Script ist wenn man es grob nimmt eine Automation ohne Trigger und Bedingungen und muss dafür ausgeführt werden.
Alles was du in einem Script ausführst kannst du auch direkt in der Automation ausführen.