NEWS
JavaSkripte Ausführung kontrollieren
-
Ich habe eine Frage zu der Ausführung von JavaSkripten.
Kann ich irgendwie kontrollieren, ob diese Skripte abgearbeitet werden, bzw. wenn sie nicht oder nicht vollständig abgearbeitet werden, an welcher Stelle es hängt?
Ich habe diverse Skripte, die seit Monaten erfolgreich laufen - d.h. die Skripte funktionieren und die erwarteten Ergebnisse kommen zustande. Sowohl als aktive Schalthandlungen, als auch als erzeuge Datenpunkte.
Nun beobachte ich in letzter Zeit, das immer mehr Skripte nicht mehr ausgeführt werden. Nicht alle, aber doch einige. Es hat an diesen Skripten keine Änderungen gegeben, trotzdem kommt z.B. das erwartete Schaltergebnis nicht mehr so zustande wie es früher einmal der Fall der war.
Gefühlt scheint das in direktem Zusammenhang mit der Update Orgie von socketio, web und admin (alle auf dem Stand LATEST) zu stehen.
Hat dazu jemand ähnlich Beobachtungen gemacht? Der javaSkript Engine ist bei 4.4.3 und der js-controller bei 2.2.9
-
@JB_Sullivan sagte in JavaSkripte Ausführung kontrollieren:
Kann ich irgendwie kontrollieren, ob diese Skripte abgearbeitet werden, bzw. wenn sie nicht oder nicht vollständig abgearbeitet werden, an welcher Stelle es hängt?
Bei Blockly Debug Bausteine einbauen und in Javascript log Ausgaben einbauen.
Hat dazu jemand ähnlich Beobachtungen gemacht? Der javaSkript Engine ist bei 4.4.3 und der js-controller bei 2.2.9
nein
Nun beobachte ich in letzter Zeit, das immer mehr Skripte nicht mehr ausgeführt werden.
Zeige doch mal so ein Beispiel.
-
So, hier habe ich mal so ein Beispiel, was den Ausgabe Datenpunkt ums verrecken nicht umsteuert. Ich habe auch DEBUG schon aktiviert, aber da kommt keinerlei (Fehler)Meldung.
Alle drei Datenpunkte der Personen stehen auf True - also müsste auch der Datenpunkt Virtual.ZuHause auf True gesteuert werden - das passiert aber nicht.
Ich habe noch mehrere so einfache Skripte die nicht mehr funktionieren wollen - und die haben in der Vergangenheit schon funktioniert.
Hier das Blockly Skript als Export.
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="comment" id="OZ-OoG95J,8[{57yMhJg" x="125" y="22"> <field name="COMMENT">Anwesenheitserkennung über FritzBox Presence Adapter</field> <next> <block type="on_ext" id="t_ljO^x7l!kVFXD#_qda"> <mutation items="3"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="GE(oQT[tP*B/**;0L_4O"> <field name="oid">fb-checkpresence.0.Jörg.presence</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="IK0-A,^Cj#q;hp2rdF3F"> <field name="oid">fb-checkpresence.0.Sabine.presence</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id="~B8E.+cphlRJKFx~bbwH"> <field name="oid">fb-checkpresence.0.Jannick.presence</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="+ULlOdwf`B}A3:(J:gC+"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="6maHa51t,-3e@{mV7:SV"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="Y2Ea0;:j5EZ#nN1VO;qc"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="1y1LDlnkB#RY[wpivM1m"> <field name="ATTR">val</field> <field name="OID">fb-checkpresence.0.Jörg.presence</field> </block> </value> <value name="B"> <block type="logic_boolean" id="s[DDneF!Ztt8E50ym@5_"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="Xa{OVTLgF(`!TVme)MS3"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="b(}yuBe=VjrydO{/4nFC"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="MZ_,rW=v8?(Zcj8T;5}G"> <field name="ATTR">val</field> <field name="OID">fb-checkpresence.0.Sabine.presence</field> </block> </value> <value name="B"> <block type="logic_boolean" id="*Sa8]#~%z*:0W[.2l```"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="o(DO@`YnP54HY}O?o4nL"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="2nr`Julf[zwt{;88(P;Q"> <field name="ATTR">val</field> <field name="OID">fb-checkpresence.0.Jannick.presence</field> </block> </value> <value name="B"> <block type="logic_boolean" id=")/VHxU+x_yobE0N:MGZ:"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="i`EVyvgBB~GoBs%xEIl["> <mutation delay_input="false"></mutation> <field name="OID">innogy-smarthome.0.Virtual.Zuhause.Value</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="`Od(+PTr]8ns1V6Y6UB="> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="control" id="q|[Gb?MAWUwlAqhD)]Nk"> <mutation delay_input="false"></mutation> <field name="OID">innogy-smarthome.0.Virtual.Zuhause.Value</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="5ehF[-Pgw9At%^^9GSL_"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </xml>
-
Dein Blockly sieht so aus. Ich habe diesen Adapter nicht, aber warum steht der Trigger auf wurde aktualisiert ? In Deinem sonst Zweig ist gar nix und der letzte steuere Befehl ist unter Deiner eigentlichen Prüfung ?
Probiere mal bitte so
-
Das hatte ich auch schon - macht vom Ergebnis keinen Unterschied.
Hier mal die LOG Datei vom DEBUG. Offensichtlich wird nach umsteuern auf True sofort, wer weiß wodurch auch immer, sofort wieder auf False umgesteuert.
2020-03-15 10:24:25.978 - [32minfo[39m: javascript.0 (9596) script.js.Aktiv.ZuHause: getState(id=fb-checkpresence.0.Jörg.presence, timerId=undefined) => {"val":true,"ack":true,"ts":1584183260684,"q":0,"from":"system.adapter.fb-checkpresence.0","user":"system.user.admin","lc":1584183260684} 2020-03-15 10:24:25.979 - [32minfo[39m: javascript.0 (9596) script.js.Aktiv.ZuHause: setForeignState(id=innogy-smarthome.0.Virtual.Zuhause.Value, state=true) 2020-03-15 10:24:25.979 - [33mwarn[39m: javascript.0 (9596) script.js.Aktiv.ZuHause: setForeignState(id=innogy-smarthome.0.Virtual.Zuhause.Value, state=true) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist 2020-03-15 10:24:25.979 - [32minfo[39m: javascript.0 (9596) script.js.Aktiv.ZuHause: setForeignState(id=innogy-smarthome.0.Virtual.Zuhause.Value, state=false) 2020-03-15 10:24:25.979 - [33mwarn[39m: javascript.0 (9596) script.js.Aktiv.ZuHause: setForeignState(id=innogy-smarthome.0.Virtual.Zuhause.Value, state=false) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist
-
@JB_Sullivan
Dein Blockly, so wie oben, läuft bei Aktualisierung durch und stellt dann zum Schluss immer auf false, wenn alle anderen wahr sind. Ich denke schon das es einen Unterschied macht.
Hast Du denn meinen Vorschlag probiert ? -
@dslraser sagte in JavaSkripte Ausführung kontrollieren:
@JB_Sullivan
Dein Blockly, so wie oben, läuft bei Aktualisierung durch und stellt dann zum Schluss immer auf false, wenn alle anderen wahr sind. Ich denke schon das es einen Unterschied macht.
Hast Du denn meinen Vorschlag probiert ?Ja, habe ich gemacht, aber der Wert bleibt immer auf false obwohl alle drei Eingangswerte auf true stehen.
Mal eine andere Frage - wie hast du das gemacht, das die "ODER" Verknüpfungen so angeordnet werden? Bei mir macht er das immer hintereinander weg, was sehr nervig beim editieren ist - viel Scrollerei.
-
Mal eine andere Frage - wie hast du das gemacht, das die "ODER" Verknüpfungen so angeordnet werden?
rechte Maustaste auf den Baustein und externe Eingänge auswählen.
-
Ich "vermute" ich habe den Fehler gefunden - ggf. gibt es ein Problem mit der DEBUG Erkennung.
Man kann ja einmal unter den JavaSkripten diese spezifisch auf DEBUG stellen, was eine anschließende Ausführung verhindert und einen entsprechenden LOG Eintrag erzeugt - auch das die Aktion wegen DEBUG nicht ausgeführt wurde..
Man kann aber auch die Java Skript Engine Instanz auf DEBUG stellen. So wie es bei mir aussieht, scheint auch mit dieser Einstellung die Ausführung der Skripte verhindert zu werden - allerdings ohne Hinweistext.
Ich habe jetzt das Instanz DEBUG wieder auf INFO gestellt und nun laufen meine Skripte wieder alle - merkwürdig, merkwürdig.