NEWS
Blockly: Trigger - Ausschalten, aber keine Ausschaltverzögerung
-
Hi.
Seit Tagen hänge ich über ein Phänomen, das ich mir endlich erklären - aber nicht lösen - konnte:
Ich habe in VIS Schalter, womit ich SONOFF Steckdosen aktiveren kann. Daran hängen Lampen und Kameras. Da wir gelegentlich vergessen die Schalter auch wieder auszuschalten, wollte ich einen Ausschalttrigger setzen: Die Lampen sollen nach 10 Minuten und die Kameras nach 60 Minuten automatisch ausgeschaltet werden.
Merkwürdigerweise wird der Schalter in der gleichen Zeitspanne <u>nach dem Ausschalten</u> durch den Trigger blockiert.
Beispiel: Die Kameras wurden durch uns angeschaltet. Nach 60 Minuten stellt der Trigger die Kameras aus. In den folgenden 60 Minuten werden die Kameras bei Aktivierung durch uns umgehend ausgeschaltet. Nach den 60 Minuten funktioniert der Ausschaltmechanismus wieder normal. Auf der SONOFF Tomasoto Konsole sehe ich alle 5 Minuten in den ersten 60 Minuten nach der Triggerausschaltung mit dem IOBroker "Lookup" ein OFF Befehl vom IOBroker.
Wo ist in meinem Blockly Skript der Denkfehler? Schön wäre auch ein "Nachtriggern", wenn in den 60 Minuten mal die Kameras aus- und wieder eingeschaltet wurden…
Danke im Voraus.
-
Ich vermute die Steckdose sendet regelmäßig Statusupdates, während sie angeschaltet ist (alle 5 Minuten?). Jedes dieser Updates startet einen weiteren Trigger, der 60 Min später die Steckdose ausschaltet.
Du solltest deinen Trigger ändern, dass er
1. nur auf anerkannt = wahr reagiert (also wenn die Steckdose wirklich an ist und nicht wenn der Befehl kam)
2. nur reagiert, wenn der Wert sich geändert hat (also beim Umschalten von aus zu an) und wahr ist.
Wie genau 2. in Blockly am einfachsten geht, weiß ich gerade nicht. Eventuell gibts nen erweiterten Trigger-Block.
-
Ich vermute die Steckdose sendet regelmäßig Statusupdates, während sie angeschaltet ist (alle 5 Minuten?). Jedes dieser Updates startet einen weiteren Trigger, der 60 Min später die Steckdose ausschaltet. `
Ne, dieser "Lookup" geschieht immer alle 5 Minuten.
Habe mal das SONOFF Logfile angehangen:
-
Lookup zu jeder 2:21 und 7:21 Minute (gelegentlich plus 1 Sekunde)
-
einmal Licht anschalten um 09:49:21
-
nach 10 Minuten wird es durch den Trigger 2x ausgeschaltet um 09:59:21
-
danach kommen in den folgenden 10 Minuten zu jedem Lookup weiterhin ein OFF Befehl
-
20 Minuten nach dem Anschalten kommt mit dem Lookup um 10:12:23 kein OFF Befehl mehr
09:42:21 MQT: tele/sonoff/STATE = {"Time":"2018.05.25 09:42:21","Uptime":17,"Vcc":3.469,"POWER":"OFF","Wifi":{"AP":1,"SSId":"xxx","RSSI":100,"APMac":"80:2A::::"}} 09:47:21 MQT: tele/sonoff/STATE = {"Time":"2018.05.25 09:47:21","Uptime":17,"Vcc":3.469,"POWER":"OFF","Wifi":{"AP":1,"SSId":"xxx","RSSI":98,"APMac":"80:2A::::"}} 09:49:21 MQT: stat/sonoff/RESULT = {"POWER":"ON"} 09:49:21 MQT: stat/sonoff/POWER = ON 09:52:22 MQT: tele/sonoff/STATE = {"Time":"2018.05.25 09:52:22","Uptime":17,"Vcc":3.466,"POWER":"ON","Wifi":{"AP":1,"SSId":"xxx","RSSI":100,"APMac":"80:2A::::"}} 09:57:22 MQT: tele/sonoff/STATE = {"Time":"2018.05.25 09:57:22","Uptime":17,"Vcc":3.471,"POWER":"ON","Wifi":{"AP":1,"SSId":"xxx","RSSI":100,"APMac":"80:2A::::"}} 09:59:21 MQT: stat/sonoff/RESULT = {"POWER":"OFF"} 09:59:21 MQT: stat/sonoff/POWER = OFF 09:59:21 MQT: stat/sonoff/RESULT = {"POWER":"OFF"} 09:59:21 MQT: stat/sonoff/POWER = OFF 10:02:00 MQT: tele/sonoff/UPTIME = {"Time":"2018.05.25 10:02:00","Uptime":18} 10:02:23 MQT: tele/sonoff/STATE = {"Time":"2018.05.25 10:02:23","Uptime":18,"Vcc":3.468,"POWER":"OFF","Wifi":{"AP":1,"SSId":"xxx","RSSI":98,"APMac":"80:2A::::"}} 10:02:23 MQT: stat/sonoff/RESULT = {"POWER":"OFF"} 10:02:23 MQT: stat/sonoff/POWER = OFF 10:07:23 MQT: tele/sonoff/STATE = {"Time":"2018.05.25 10:07:23","Uptime":18,"Vcc":3.466,"POWER":"OFF","Wifi":{"AP":1,"SSId":"xxx","RSSI":92,"APMac":"80:2A::::"}} 10:07:23 MQT: stat/sonoff/RESULT = {"POWER":"OFF"} 10:07:23 MQT: stat/sonoff/POWER = OFF 10:12:23 MQT: tele/sonoff/STATE = {"Time":"2018.05.25 10:12:23","Uptime":18,"Vcc":3.468,"POWER":"OFF","Wifi":{"AP":1,"SSId":"xxx","RSSI":96,"APMac":"80:2A::::"}} 10:17:23 MQT: tele/sonoff/STATE = {"Time":"2018.05.25 10:17:23","Uptime":18,"Vcc":3.468,"POWER":"OFF","Wifi":{"AP":1,"SSId":"xxx","RSSI":96,"APMac":"80:2A::::"}}
Deine Tipps werde ich nachher zuhause testen. Danke.
-
-
Dann hat dieser "Lookup" vermutlich eine Aktualisierung des States zur Folge, was meine Theorie bestätigt.
-
Dann hat dieser "Lookup" vermutlich eine Aktualisierung des States zur Folge, was meine Theorie bestätigt. `
Wenn ich Dich richtig verstehe, siehst Du einen Re-Trigger durch das Lookup. Nur, warum endet es dann nach der eingetragenen Verzögerung? Eigentlich müsste es sich dann unendlich wiederholen. Oder nicht?
-
Nein, du triggerst ja auf Power = wahr. Nach 60 Minuten wird abgeschaltet, d.h. ab da wird kein neuer Timeout erstellt. Dann werden allerdings noch die zuvor erstellten Timeouts ausgeführt, d.h. 11 oder 12x sollte alle 5 Minuten ein Abschaltbefehl kommen. Nach insgesamt 120 Minuten sind alle Timeouts fertig, d.h. dann bist du wieder im Ausgangszustand angekommen.
-
…Dann werden allerdings noch die zuvor erstellten Timeouts ausgeführt, d.h. 11 oder 12x sollte alle 5 Minuten ein Abschaltbefehl kommen... `
Puuuh, Du hast sowas von Recht :!:
Mist, das habe ich nicht bedacht…
Wie ändere ich meinen Trigger, dass er nur auf anerkannt = wahr reagiert? Zur Auswahl gibt es nur "egal", "Update" und "Befehl".
-
Das müsste "Update" (=Bestätigung vom Gerät) sein. Das wichtigste ist aber dass du nur auf Änderung Power = falsch => wahr triggerst.
Dürfte mit diesem Block
https://github.com/ioBroker/ioBroker.ja … ate-change
gehen und einer darin geschachtelten Abfrage ob der Wert true ist.
-
Das müsste "Update" (=Bestätigung vom Gerät) sein. Das wichtigste ist aber dass du nur auf Änderung Power = falsch => wahr triggerst. `
Allein das Ändern auf Update hat noch keine Änderung gebracht. Nun schaue ich mir Deinen github Link an. Wobei ich von Hand nach "Trigger on state change" suchen musste - der Link selber hat mich wo ganz anders auf die Seite gebracht
-
Allein das Ändern auf Update hat noch keine Änderung gebracht. `
Richtig, das schließt nur einen einzigen Trigger aus, wenn du manuell der Steckdose befiehlst, anzugehen.
Wenn das dann mal läuft, kannst du dieses Problem auch lösen:
> Schön wäre auch ein "Nachtriggern", wenn in den 60 Minuten mal die Kameras aus- und wieder eingeschaltet wurden…
=> Stichpunkt "löschen falls läuft" -
Versuche mal anstelle "ist wahr" mit "ist größer als letztes" zu triggern.
-
Hallo Ihr beiden.
Danke für den schnellen Support :!:
Versuche mal anstelle "ist wahr" mit "ist größer als letztes" zu triggern. `
> Schön wäre auch ein "Nachtriggern", wenn in den 60 Minuten mal die Kameras aus- und wieder eingeschaltet wurden…
=> Stichpunkt "löschen falls läuft" `Habe nun beides eingebaut. Mal gucken, wie das Ergebnis gleich ausfällt…
1. Update: "Update" führt weiterhin, das gar nicht mehr abgeschaltet wird. Habe wieder auf "egal" gestellt.
2. Update: Nun scheint es korrekt zu funktionieren. Danke