NEWS
Timeout Frage/Hilfe bei Blockly Script
-
Hallo zusammen,
ich habe mir ein Script geschrieben das mir einen Alarm per Push schickt wenn eine meiner Shellys offline geht. Dies löst aber sofort aus, ab und an verlieren die mal das WLAN ganz kurz und ich bekomme wieder die Meldungen. Aktuelles Script hier
Ich weiß zwar wie ich mit "Ausführen nach x Sec" und Stop arbeite aber bis dato hab ich das immer nur in einer Verknüpfung mit "Falls Wert vom Objekt ist falsch und Falls Wert von Objekt ist falsch" usw. geschrieben. Siehe Screenshot eines Beispiels (hat nichts mit dem oben zu tun) hier:
Muss ich hier bei den vielen Objekten wirklich mit dem arbeiten oder gibts eine andere Idee wie ich mein bestehendes Script ändere.
Danke
-
@mhuber sagte: Screenshot eines Beispiels
Das funktioniert so nicht.
Der folgende Vorschlag funktioniert nur, wenn innerhalb der 15 Sekunden kein weiterer Shelly Offline geht, denn eigentlich bräuchte jeder Shelly seinen eigenen Timeout.
-
@paul53 danke! D.h. wenn ich es für alle ohne die "15 Sec" Problematik will dann müsste ich für alle Shellys so ein Script machen? Na bum das wird viel...
-
@mhuber sagte: "15 Sec" Problematik
Die Problematik bedeutet nur, dass weitere Offline innerhalb der Verzögerung ignoriert werden.
-
@paul53 ich weiß aber trotzdem danke, dachte man kann da vielleicht irgendwie was tricksen oder anders schreiben das trotzdem geht
-
@mhuber sagte in Timeout Frage/Hilfe bei Blockly Script:
@paul53 ich weiß aber trotzdem danke, dachte man kann da vielleicht irgendwie was tricksen oder anders schreiben das trotzdem geht
Kann man.
Ist aber etwas komplexer:
Teil 1:
Teil 2:
Das ganze basiert darauf das du eine Liste im Speicher hältst in der sich die Objekt ID's der Geräte befinden die offline sind (und für die noch keine Nachricht geschickt wurde). Wenn das 1. Gerät offline geht wird ein 15 s Timeout gestartet. Wenn der abläuft wird in der Liste der Offline-Geräte geschaut welche Geräte länger als 15 Sekunden offline sind - für die wird eine Nachricht gesendet - dann werden sie aus der Liste der Offline-Geräte entfernt. Zusätzlich wird geschaut welches Gerät am längsten offline ist (aber max. 15 Sekunden). Wenn es eines gibt wird der Timeout entsprechend neu gesetzt, so das er 15 Sekunden nach dem das Gerät online gegangen war aktiv wird. Ansonsten läuft der Timeout aus.
Wenn die Liste der offline-Geräte irgendwann leer läuft wird der Timeout auch angehalten.
A.
Nachtrag: ggf. kann es notwendig sein im Teil 2 die Max. Zeit für die Benachrichtigung von 15000 ms auf 15500 zu erhöhen, da das System etwas Zeit braucht das ganze auszuführen. Testen konnte ich das nicht - ich hab das Problem aktuell nicht. -
@asgothian na bum das ist ein ordentlich langes Script. Danke!!