NEWS
Javascript - doppelte Ausführung von Scripten
-
Hallo Gemeinde
Aktuell passiert es hier das Scripte zweimal hintereinander abgearbeitet werden.
So kommen sayit Texte über Sonos 2 mal in folge. Aber auch Schaltaktionen mit HM Komponenten werden 2 mal abgearbeitet.
z.B. es gibt ein Script in dem ein Bewegungsmelder einen Schaltaktor toggelt und nach 1000ms zurück toggelt.
Wenn der Bewegungsmelder auslöst höre ich normalerweise klack –- klack. Mittlerweile höre ich klack --- klack-klack --- klack.
Wenn ich den Javascript Adapter neu starte ist für 4-5 Tage alles OK, dann fängt das doppelt ausführen wieder an.
Gibt es da - ausser den Adapter per Cron regelmässig neu zu starten- einen Stellschraube an der ich drehen kann?
-
wat hör ich zum ersten mal.. ich habe unzählige Scripte laufen.. ohne dass diese 2 mal ausgeführt werden.. und mein Pi rennt manchmal Wochenlang..
-
Hast du mal ein Beispielskript mit dem das auftritt? Eventuell liegt es ja an deinem Code.
-
Na klar, hier der Blockly Export.
Einfacher geht's ja kaum:
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on" id="hT;GJ~fjM7|ThoXeV8[U" x="37" y="13"><field name="OID">hm-rpc.0.MEQ1849371.3.MOTION</field> <field name="CONDITION">ne</field> <statement name="STATEMENT"><block type="controls_if" id="4oqT?{Hb#hBnv@g)4Aco"><value name="IF0"><block type="logic_compare" id="v-pM/7T%BWW68i81[.[H"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Qok0AE7Dy[=-()j:M13#"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.MEQ1849371.3.MOTION</field></block></value> <value name="B"><block type="logic_boolean" id="i!iE]bKPj:z1X5+2zB*c"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="control" id="4R(@t59#XCK[+LZ_!t51"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.1.CUX0200006.1.TOGGLE</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="MD-{YDe2,0Z~BbLI2LVn"><field name="BOOL">TRUE</field></block></value> <next><block type="control" id="{h^uHFL*!XA/G=[884#V"><mutation delay_input="true"></mutation> <field name="OID">hm-rpc.1.CUX0200006.1.TOGGLE</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="C8~GAaI{^Mh}PEES7Rrx"><field name="BOOL">FALSE</field></block></value></block></next></block></statement></block></statement></block></xml>
-
Danke, aber ich bin nicht so der Blockly-Typ. Schon gar nicht wenns um den rohen XML-Code geht
Geht auch ein Screenshot?
-
Auch das:
Hier der Code den Blockly erzeugt:
on({id: "hm-rpc.0.MEQ1849371.3.MOTION"/*Bewegung-OG_Flur.MOTION*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.MEQ1849371.3.MOTION").val == true) { setState("hm-rpc.1.CUX0200006.1.TOGGLE"/*OG_Flur_Wandtablet.TOGGLE*/, true); setStateDelayed("hm-rpc.1.CUX0200006.1.TOGGLE"/*OG_Flur_Wandtablet.TOGGLE*/, false, 1000, false); } });
Screenshot kommt noch
-
So, hier der Screenshot:
-
Liegt das Script unter "Global"??
Wenn ja, nimm es da raus. Hatte ich glaub ich zum Anfang auch mal.
MfG
dna909
-
Ne, da liegts nicht. Unter "global" hab ich gar nix.
-
Ich hab das auch seit ein paar Tagen so ähnlich.
Zuerst kann man wohl hiermit checken ob was doppelt läuft:
ps -A | grep io
Ist bei mir nicht der Fall.
Bei mir läuft das Script parallel auf instanz.1, obwohl das script auf instanz.0 gestellt ist. Ich habe mal in Vergangenheit zum Testen die Instanz gewechselt. Das bleibt irgendwo noch gespeichert. Nur wo? Deswegen will das Script nicht mehr laufen. Hatte ich monatelang ohne Probleme am Laufen.
javascript.1 2017-08-03 13:59:15.483 info Stop script script.js.common.Telegram.Cam2_motion javascript.0 2017-08-03 13:59:15.483 info Stop script script.js.common.Telegram.Cam2_motion javascript.0 2017-08-03 13:59:14.561 info Stop script script.js.common.Telegram.Cam2_motion
-
Bei mir läuft das Script parallel auf instanz.1, obwohl das script auf instanz.0 gestellt ist. `
@Linedancer hast du mehrere Instanzen vom JavaScript-Adapter?Das könnte erklären, warum ich solche Probleme noch nicht hatte. Ich habe nur eine Instanz.
-
Stell mal bei "ist anerkannt" auf bestätigt, oder was da noch zur Auswahl steht. So, wie das bei dir steht, kommt eine Ansage beim Ändern des Datenpunktes und eine Ansage beim Bestätigen durch die CCU.
Enrico
-
Ne, hab nur eine Instanz laufen.
@ RappiRN
Das klingt interessant, wird ausprobiert. Würde aber nicht erklären warum das Problem erst nach ein paar Tagen auftaucht und nach Adapter Neustart erstmal verschwindet.
-
@Linedancer hast du mehrere Instanzen vom JavaScript-Adapter?
Das könnte erklären, warum ich solche Probleme noch nicht hatte. Ich habe nur eine Instanz. `
Ich habe auch zwei Instanzen.0 = produktiv
1 = testen
Ich probiere und teste etliches aus. Nachdem ich mir schon einigemale Instanz 0 abgeschossen habe, teste ich nur noch in Instanz 1.
Dopplungen habe ich noch nie gehabt.
Grüße
-
@Linedancer hast du mehrere Instanzen vom JavaScript-Adapter?
Das könnte erklären, warum ich solche Probleme noch nicht hatte. Ich habe nur eine Instanz. `
Ich habe auch zwei Instanzen.0 = produktiv
1 = testen
Ich probiere und teste etliches aus. Nachdem ich mir schon einigemale Instanz 0 abgeschossen habe, teste ich nur noch in Instanz 1.
Dopplungen habe ich noch nie gehabt.
Grüße `
ditto ich nutze auch 2 instanzen ..
und bis dato keine Probleme mit doppelung..
was ich mir mal eingebaut habe ist … ein Script setzt die variabe und ein anderes der einmal die woche läuft setzte die wieder um .. da suchst du dir nen wolf..
-
was ich mir mal eingebaut habe ist … ein Script setzt die variabe und ein anderes der einmal die woche läuft setzte die wieder um .. da suchst du dir nen wolf.. `
Das wäre so ein Wunsch… nach allen Scripten/Programmen suchen wo eine bestimmte Variable, State vorkommt... so wie bei homematic. -
Ja genau. Diesen Wunsch der globalen Suche hätte ich auch. Ich glaube das wurde auch irgendwo hier im Forum schon mal angesprochen.
Wäre mir wesentlich lieber als das ganze Alexa, Cloud und sonstwie Zeugs
Soll aber keine Kritik an Bluefox & Co. sein. Ich wollte mich nur mal outen als jemand für den der ganze SocialMedia-Kram noch nicht lebenswichtig ist
-
als workaround
exportiere alle Scripte.. diese liegen dann in txt format..
-
Das mit dem Exportieren ist schon klar. Aber auch wenn ich ein Dino bin
dieser Weg ist wohl dann doch mehr als mittelalterlich
-
Ich finde die Idee erstmal gar nicht schlecht mit dem Export. Habe ich gemacht. Alle Dateien sind aber .json!?