NEWS
Skript nur einmal ausführen
-
Hey Leute,
ich hänge gerade an einem Problem wo ich einfach keine Lösung finde. Habe diverse Beispiele schon probiert aber komme leider auf keine Lösung. Zur Veranschaulichung:
Rad indoor trainer sendet die Wattzahl an iobroker. Dementsprechend soll wenn ich anfange zu trainieren und die Wattzahl über 0W steigt ein SSH Skript ausgeführt werden und die Rollos nach unten fahren. Das Problem ist wenn ich als Trigger sage "wurde geändert" oder "aktualisiert", wird das Skript alle 2 Sekunden ausgeführt da sich die Wattzahl ständig ändert und über 0 ist. Das Abfrageintervall der Wattzahl ist alle 2 Sekunden. Deswegen bräuchte ich etwas, dass nur einmalig ausgeführt wird wenn über 0W und sich dann wieder scharfstellt wenn es die 0W erreicht hat usw...
Aktuell sieht das so aus:
Jemand ein Idee?
-
Erstelle eine Variable und setze diese ausserhalb vom trigger auf 0. Ergänze nun deine Abfrage >0 um "und" Variable = 0 und in der Abfrage setzt du deine Variable dann auf 1. Zweite Abfrage wenn Watt = 0 dann setze Variable wieder auf 0.
Gruß//Lucky
-
@waterchill sagte: Jemand ein Idee?
-
Danke für die schnelle Hilfe. Den Tipp von @Lucky_ESA verstehe ich in der Theorie, scheitert etwas an der Umsetzung. Hatte mit Variablen noch nicht viel am Hut. Der Tipp von @paul53 funktioniert im Prinzip jedoch habe ich eine Kleinigkeit nicht bedacht. Das SSH Skript was ausgeführt wird, startet quasi den MQTT client neu was dazu führt dass die Wattzahl kurzzeitig auf 0 absinkt und somit das ganze sich imemrwieder aktiviert. Man müsste also noch eine Verzögerung oser sowas einbauen. Habe es mal so versucht aber klappt leider nicht.
-
@waterchill
Versuche es mal so: -
DAnke diese Version funktioniert, obwohl ich es echt nicht verstehe, vorallem dieses "nicht"Verzögerung das geht nicht in meine Birne rein. Egal trotzdem Danke
-
@waterchill sagte: "nicht"Verzögerung das geht nicht in meine Birne rein.
Mit "Ausführen timeout" wird die Timervariable
timeout
gesetzt, mit "stop timeout" wird sie auf null zurück gesetzt, so dass "nicht timeout" nach 5 s wieder true liefert.