NEWS
Gelöst: Warum wird dieses Skript bei Neustart ausgeführt?
-
Hallo zusammen
ich habe unten eingefügtes Skript laufen. Tut wunderbar, was es soll. ABÄR:
Wenn ich ioBroker neustarte (da ich noch in der Einfindungsphase bin und ab und an ein Backup einspiele etc. passiert das hin und wieder) wird dieses Skript nach dem Neustart automatisch ausgeführt.Ihr könnt Euch sicher vorstellen, was ich für mächtigen Ärger bekam, als ich letzte Nacht einen ioBroker Neustart ausführte und dann mitten in der Nacht das Schlafzimmer der Person hell erleuchtet wurde... Habe es eben ausprobiert: Ist reprodzierbar...
Was kann ich machen? Gibt es, ähnlich wie bei Homematic, eine Möglichkeit ein Skript nach dem Neustart nicht auszuführen oder ist grundsätzlich was falsch im Skript?
Hier das Skript:
Vielen Dank
Lem
-
@lemonbiter
setze mal den Trigger auf "geändert" an der Stelle: oder besser noch "grösser als letzter"
Denke der Wert wird bei Starten des Brokers geprüft / aktualisiert.
-
Lieber Alex, war auch mein erster Gedanke. Aber leider funktioniert das Skript dann nicht. Es sind Xiaomi Taster...
Danek dennoch sehr!
-
Setze die Definition der Variablen in einen Timeout der die erst nach X Sekunden setzt.
EDIT: oder gleich alles. (wenn das mit Bloody geht)
-
@lemonbiter
hi, ok, habe mir das nochmal angeschaut.
Das Problem liegt daran, denke ich, das der letzte Wert. z.B. 1002 drin stehen bleibt und beim Start dann auch drin ist. somit geht auf aktualisieren und grösser... nicht.
zudem löst dann dein script aus, da 1002 schon drin steht und deine Bedingung stimmt. -
@lemonbiter
Warum wird das Skript beim Start des ioBroker ausgeführt ? Weil der deconz adapter alle States abfragt und aktualisiert.. Dann kommt der Trigger.Wenn du eine neue Version des Adapters (ab welcher genau kann ich nicht sagen) einsetzt solltest Du an Stelle des buttonevent den buttonpressed nutzen können, dann mit "Größer als letztes" an Stelle von "wurde geändert"
A.
-
Nicht geschrieben weil ich nicht weiß was was ist. Du hast bei Anerkannt als: egal stehen. Einer der beiden Werte könnte dein Problem auch lösen.
EDIT: Das Skript wird ausgeführt weil der Adapter sehr wahrscheinlich den Wert bei Neustart aktualisiert mit ack:true.
-
Vielen Dank. Ich denke ihr habt verdammt recht mit der Annahme, dass 1002 im Status steht und das Script deswegen triggert.
Ihr habt verdammt unrecht, wenn ihr glaubt, ich würde nun wissen was zu tun ist
Bin ja Anfänger... LOLAlso so verstehe ich Euch:
Erstens als Trigger "buttenpressed" abfragen, da gibt es tatsächlich 1002 und 1004
Zweitens "wurde aktualisiert" auf "wurde geändert" setzen. Demnach sollte das Skript so aussehen?Kanns grad mal wieder nicht testen. Chefin schläft...
Wenns morgen läuft faxe ich Euch ein BierDanke nochmals sehr und ich melde mich nach dem Test
LG
Lem -
@lemonbiter so sieht es gut aus
A.
-
Und wenns nicht geht versuche mal diese Einstellung aus:
Bild war nicht das was ich zeigen wollte. s.u.
-
@lemonbiter
Also, beim Neustart wird ja jedes Skript aktiviert.
Gibt es darin Blöcke, die nicht von einem Trigger umschlossen sind, werden diese ausgeführt.
Ist der Trigger erfüllt, wird er ausgeführt...Mal zwei Fragen:
Erstens, wieso nutzt Du überhaupt Variablen und vergleichst nicht direkt mit dem Wert? Also "falls Wert = 1002 mache"...
Finde es ein wenig "overkill", wenn der Wert einer Variablen nur einmal genutzt wird
Zweitens, kann das Objekt nur die Werte 1002 und 1004 haben?
Dann kannst Du Dir, meiner Meinung nach, das "sonst falls" sparen und es durch ein simples "sonst" ersetzen.Außerdem, Du vergleichst einmal auf "=0" und einmal auf ">=0", es wird also im Fall von "0" beides "wahr" sein.
Zum Schluss, denke der Trigger sollte auf "Aktualisierung" stehen, nicht auf "Änderung", sonst passiert nix, wenn Du nach einem Einfachklick nochmals einfach klickst.
Du könntest "Änderung" verwenden, dann müsstest Du aber dafür sorgen, dass der Wert, nachdem er genutzt wurde, z.B. auf "0" gesetzt wird (dann brauchst Du aber doch Dein "sonst falls" ). -
@lemonbiter
gerade nochmal nachgesehen war quark für den Schalter. Mein Hue Dimmer sendet nur Werte mit ack:true. -
@Alex-0
@ticaki
@Asgothian
@padrinoSo, getestet, läuft so wie oben. Ich danke Euch sehr, der Familienfriede ist zunächst wieder hergestellt
LG
Lem -
Das mit den Variablen ist ein Test gewesen. Ist eines der ersten Skripte und da wollte ich mal schauen ob ich was verstanden habe von den Schulungsvideos... HA!
Das Objekt "butonevent" kann insgesamt 1001, 1002, 1003 und 1004 haben.
Der Vergleich 0 und größer 0 rührt daher, dass der Taster (buttonevent) einen Homematic Dimmer steuert, und wenn beispielsweise die Lampe am Dimmer selbst auf 20% gestellt wurde, würde es in meinen Augen nicht funktionieren mit 1001 auszuschalten. Ebenso dimmt ja der Doppeklick auf 50% Helligkeit. Dann wäre der Dimmwert ergo nicht auf 0 und 1001 würde nicht ausschalten... Das Problem ist, dass der HM Dimmer kein Toggle kann.
Kann ich, mal abgesehen von der Variable also wirklich was einsparen?
Danke Dir für Deine Tipps
LG
Lem -
@lemonbiter
soweit ich das sehe könntest du auf > 0 testen und dann "sonst" verwenden.Im Moment testes du erst auf = 0 und dann auf >=0
-
@ticaki
Danke, werde ich gleich morgen mal testen!LG
Lem -
Darauf hab' ich doch oben auch schon hingewiesen.
@padrino sagte:
Außerdem, Du vergleichst einmal auf "=0" und einmal auf ">=0", es wird also im Fall von "0" beides "wahr" sein.