NEWS
Zweite javascript Instanz
-
probiere ich aus
bzgl "info stop ….": kommt bei mir immer nach einen stop. iobroker scheint da aber schwierigkeiten zu haben, die Instanzen richtig zu trennen (oder ich verstehe was nicht :? ). Wie geschrieben, die Instanz .0 meldet, dass ein script aus der instanz .1 gestoppt wurde.
-
Bei deinem Instanzenproblem muss wohl einer der Profis ran, ich betreibe alles nur mit je 1 Instanz. Dein JS-Adapter ist aktuell?
Vielleicht hat das was mit dem https://trello.com/c/SiBDUPZp/144-bug-javascript-adapter-stopscript-startet-endlosschleife zu tun, dass stopScript nicht so ganz richtig funktioniert hat? :?
Auf den 2. Blick frage ich mich aber dennoch, warum getState synchron nicht funktioniert. Bluefox ?
-
instanzen sind alle auf dem neuesten Stand
-
log("A"); getState(id,function(err,state){_sendWOL(err,state)}); log("B"); ```` `
getState(id) mit callback ? getState(id) wird meiner Meinung nach vollständig ausgeführt und nicht nur angeschubst wie z.B. setState(id, val). Besser sollte das Skript so aussehen:
var id = 'javascript.' + instance + '.Sonstiges.WOL.PCGNOW'; function sendWOL(dp) { var status = dp.state.val; } on(id, sendWOL);
-
paul53, siehe OPs ersten Post:
> javascript.1 script.js.common.Sonstiges.WOL1: Cannot use sync getState, use callback instead getState("javascript.1.Sonstiges.WOL.PCGNOW", function (err, state){});
Hat mich auch etwas gewundert, aber die Meldung ist schon recht eindeutig. -
dank paul53 einen Schritt weiter
. Folgendes funktioniert jetzt:
instanz = 'javascript.1.'; var id = instanz + "Sonstiges.WOL.PCGNOW"; on(id,sendWOL); function sendWOL(obj) { if(obj.state.val) setState(id,false); }
Verstehen tue ich nicht, warum getState(id).val in einem Fehler endet, aber ein setState sauber durchläuft. Ich habe jetzt mal andere Ids ausprobiert - bei allen kommt die Fehlermeldung.
> 18:35:50.039 [error] javascript.1 script.js.common.Sonstiges.WOL1: Cannot use sync getState, use callback instead getState("javascript.1.Sonstiges.WOL.PCGNOW_MACADDRESS", function (err, state){});
Die Variante mit "getState(id,_sendWOL)" brachte leider auch keine Besserung.
Und das hier läßt mich auch immer noch verzweifeln (siehe Bild Anhang) - die Instanz .0 stoppt das Script der Instanz .1 - im log-Fenster sehe ich dann nach jedem dieser ".0-stops":
> javascript.1 script.js.common.Sonstiges.WOL1: registered 1 subscription and 0 schedules
1643_georg.png -
instanz = 'javascript.1.'; ```` `
–>
var instanz = 'javascript.1.';
Das wird zwar mit der Fehlermeldung und dem Stoppen des Skripts nichts zu tun haben, aber eine Skriptvariable sollte sauber deklariert werden.
-
:oops: copy/paste Fehler beim Übertrag - ist im Script richtig deklariert
-
Also ich beziehe mich jetzt mal auf das Skript ganz oben:
Du machst mit "on" ein Subscript wo Du an sich das State zurückbekommst nur um dann ind er Funktion nochmal den State zu lesen ?!
instanz = 'javascript.1.'; var id = instanz + "Sonstiges.WOL.PCGNOW"; on(id,sendWOL); function sendWOL(state) { var status = state.val; }
Geht das?
-
ja, nur funktioniert das getState grundsätzlich auf alle ids nicht.
-
hier bitte nichts mehr posten - Problemchen ist hierhin verschoben worden :