NEWS
Blockly nach Alarm nicht mehr ausführen
-
Hallo zusammen,
ich habe eine Shelly Plug S an einem Gerät hängen. Wenn dort der Strom zwischen 2 Werten liegt, soll ich einen Pushover Alarm bekommen. Soweit klappt das auch mit diesem Skript:
Das Problem ist allerdings, dass er den Alarm immer wieder rausschickt, sobald sich der Wert innerhalb des Bereichs ändert. Ich möchte aber dass er nur EINMAL alarmiert und dann erst wieder wenn der Wert einmal AUßERHALB des "Fehler-Bereichs" war und dann wieder IN den Bereich wandert. Außerdem hätte ich noch gerne eine Verzögerung nach der Prüfung um false positive auszuschließen.
Beipspiel: Normalstrom sind 14-16 Watt AN und 0 Watt AUS. Besteht mein "Fehler", zieht das Gerät ca 7 Watt.
Wenn nun also der Wert auf 7 Watt steht, hätte ich gerne EINMAL eine Nachricht. Dann behebe ich den Fehler, Wert geht auf 0 oder 14-16 Watt (je nachdem ob an oder aus). Und dann soll er bim nächsten mal wenn er bei 7 Watt ist wieder alarmiert werden.
Und die Verzögerung bei der Prüfung hätte ich gerne, dass ich nicht beim normalen Ausschalten, wenn der Wert mal kurz im Bereich liegt direkt ein Alarm kommt.Ich hoffe ich hab das soweit verständlich ausgedrückt.
Geht das so wie ich mir das vorstelle?
Gruß
-
@chesterb sagte: nur EINMAL alarmiert und dann erst wieder wenn der Wert einmal AUßERHALB des "Fehler-Bereichs" war und dann wieder IN den Bereich wandert.
Versuche es mal so:
Anmerkung: Man muss erst eine dummy-Variable erstellen, um an die Timer-Variable timeout zu gelangen.
-
@paul53 Besten dank, werde ich testen!
-
@chesterb damit wirst du maximal einmal pro “timeout” eine Meldung bekommen - die erste erst wenn “timeout” um ist - bei dem Beispiel also Max. eine Meldung alle 1000 ms.
Ich würde Folgendes tun:
Einen Trigger auf wurde geändert.
Darin ein falls “wert” < Grenzwert und “vorheriger Wert >= Grenzwert => ein timeout, darin dann die Nachricht.
Mit einem sonst falls wert >= Grenzwert stop timeout.Die Bausteine “wert” und “vorheriger Wert” sind der gleiche Baustein unterschiedlich eingestellt.
(Hab leider kein Zugriff auf Blockly)
Damit wird der timeout nur aktiv wenn der Wert unter den Grenzwert fällt. Unterhalb des Grenzwertes kann der Wert machen was er will, es gibt erst dann eine 2. Meldung wenn er wieder über den Grenzwert geklettert ist.
A.
-
@asgothian sagte: damit wirst du maximal einmal pro “timeout” eine Meldung bekommen
Solange der Wert im Bereich zwischen 5 und 10 schwankt, kommt keine weitere Meldung, denn weitere Meldungen werden durch "sonst falls nicht timeout" verhindert. Die Timer-Variable timeout wird erst durch "stop timeout" auf null zurück gesetzt.
-
@paul53 meines Wissens wird die timeout Variable auch bei ausführen des timeout auf null bzw. Undefined gesetzt.
A.
-
@asgothian sagte: meines Wissens wird die timeout Variable auch bei ausführen des timeout auf null bzw. Undefined gesetzt.
Teste es.