NEWS
[Gelöst] evtl. [Bug] MultiHost JavaScript Adapter - Instanz kann nicht ausgewählt werden
-
Habe jetzt die Controller auf beiden Hosts geupdated. Leider hat sich das Fehlerverhalten nicht geändert.
Auf beiden Raspberries läuft jetzt js-controller 1.2.3 …
Node auf beiden Raspis 6.11.2.
JavaScript Adapter 3.5.0
Beide JavaScript Adapter sind gleichgeschaltet.
Das Skript wird sofort beim Starten auf die 0. Instanz umgeschaltet ( der Instanz Dropdown springt zurück auf 0).
Code im Skript ist folgender: (auch wenn ich nicht davon ausgehe, dass das was damit zu tun hat).
console.log("Door Open Skript"); exec('/home/pi/dooropen'); stopScript();
Das Ausführen direkt am Terminal auf dem Pi2 funktioniert. Wenn ich den Slave Pi rausnehme und das Skript direkt auf dem Pi als eigener ioBroker ausführe klappt es auch. Nur im Multi Host Modus klappt es nicht
Irgendwelche Ideen ?
-
was sagt dein log wen du das script auf die andere instanz setzt (evenutell adapter erst auf debug).
Das verhalten wundert mich da ich ohne probleme die die scripte auf ner anderen instanz abspielen kan bei mir
Ich sehe beim umsetzen javascript.0 stop script blablabla und dan javascript.1 starte script blablabla
-
Habe mal ein Video angehängt… mal schauen ob das hilft ...
Edit: https://www.dropbox.com/s/1awylhw334s6l ... p.mov?dl=0
Wenn ich den Adapter ändere passiert im Log nichts...
Habe jetzt noch weiter getestet ... wenn ich noch einen dritten Adapter hinzufüge (auf dem Master). Also folgendes Setup habe:
Master: JavaScript0. & JavaScript2.
Slave: JavaScript1.
Bekomme ich beim Wechsel folgendes Log:
host.ioBroker-Pi3 2017-12-03 23:22:20.562 info object change system.adapter.javascript.2 host.ioBroker-Pi3 2017-12-03 23:21:58.888 warn Requested repository "undefined" does not exist in config. iobroker 2017-12-03 23:21:58.605 info exit 0 iobroker 2017-12-03 23:21:58.587 info host.ioBroker-Pi3 object system.adapter.javascript.2 created host.ioBroker-Pi3 2017-12-03 23:21:58.576 info object change system.adapter.javascript.2
Danach aber kann ich auch nicht zum JavaScript2. wechseln. Auch hier springt er immer wieder zum 0.
-
Wozu dient
stopScript();
? Was passiert, wenn Du es auskommentierst ?
Evtl. hilft es auch, das Skript erst nach Ausführung von exec(…) im Callback zu stoppen.
exec('/home/pi/dooropen', stopScript);
-
Wozu dient
stopScript();
? Was passiert, wenn Du es auskommentierst ?
Evtl. hilft es auch, das Skript erst nach Ausführung von exec(…) im Callback zu stoppen.
exec('/home/pi/dooropen', stopScript); ```` `
Mit dem StopScript() möchte ich nur verhindern dass das Skript dauerhaft auf Aktiv im ioBroker angezeigt wird.
Wenn ich das auskommentiere bleibt das Skript einfach weiterhin aktiv. Gerade extra nochmal ausprobiert.
Wenn ich es als CallBack einfüge, ist der Ablauf wieder wie vorher -> Sprung auf Instanz 0 und es passiert nichts.
Das Skript selber funktioniert wie gesagt einwandfrei, wenn ich es auf einer eigenen (nicht MultiHost) Instanz laufen lasse.
Aus mir unverständlichen Gründen springt einfach immer wenn ich eine andere JavaScript Instanz auswähle der Instanz DropDown wieder auf 0 und führt das Skript in Instanz 0 aus
Habe ja vorhin sogar alle JS Adapter gelöscht und neu eingefügt. Und auch die Skripte … hat auch nichts geholfen :S
-
Update:
Habe jetzt die Adapter deinstalliert und getauscht (also 0 auf dem Slave und 1 auf dem Master).
Nun ist es so dass die Skripte auf dem Slave korrekt laufen (Tür Summer geht), aber auf dem Master springen sie immer wieder auf den 0.
Habe dann auch noch den neuen ioBroker.Admin installiert (3.0.x), auch das hat nicht geholfen.
Was ich jetzt noch gemerkt habe, sowohl im Safari als auch im Chrome wird die Instanzauswahl nach dem Tab Wechsel (Skripte -> Szenen zB) nicht gespeichert…
-
Zusammenfassung, da ich wohl im Moment gar nicht mehr weiter weiß.
Multi Host Setup:
Raspberry Pi 3 -> Master
Raspberry Pi 2 -> Slave
JavaScript / Blockly Engine -> 3.5.0
Node v6.10.3
JavaScript Controller 1.2.3
ioBroker Admin 3.0.1
Fehler: Ich brauche zwei JavaScript Controller um jeweils lokale JavaScripts ausführen zu können (c++ Programme). Getrennt funktionieren die Skripte auf den Pi's.
Sobald ich allerdings MultiHost einstelle ,oder auf einem der beiden Pis zwei JS Adapter erstelle kann ich die Instanzen nicht wechseln (springt sofort zurück auf den 0 Adapter egal welcher das ist und führt es dann dort aus).
Es hat also scheinbar nichts mit MultiHost und nichts mit der Hardware o.Ä. zu tun… die Adapter sind auf dem neusten Stand. Eigentlich müsste das doch eine Standard Aktion sein, dass man mehrere JS Adapter hat ...
Getestet mit (auf unterschiedlicher Hardware):
Chrome für Mac
Safari
Microsoft Edge
Chrome für Android
-
Gelöst:
Habe den JavaScript Adapter auf beiden Instanzen auf 3.4.0 zurückgesetzt …. jetzt geht es ohne Probleme.
Ich setze mal den Titel auf Gelöst / Bug ... evtl interessiert es ja doch noch einen Entwickler zur Nachforschung
-
Ich setze mal den Titel auf Gelöst / Bug … evtl interessiert es ja doch noch einen Entwickler zur Nachforschung
`
Könntest du dafür auf github ein issue erstellen?
–-----------------------
Send from mobile device
-
Ich setze mal den Titel auf Gelöst / Bug … evtl interessiert es ja doch noch einen Entwickler zur Nachforschung
`
Könntest du dafür auf github ein issue erstellen?
–-----------------------
Send from mobile device `
Klar, done!