NEWS
[Gelöst] evtl. [Bug] MultiHost JavaScript Adapter - Instanz kann nicht ausgewählt werden
-
Hi Zusammen,
ich habe zwei Raspberries: ioBroker-Pi2 & ioBroker-Pi3
MultiHost sollte auch soweit passen:
https://ibb.co/mmGpNw ~~Jetzt möchte ich auf meinem 2. Raspi ein JavaScript laufen lassen, um ein Relais zu schalten. Die Implementierung passt auch soweit und funktioniert auch im Single Modus.
Im Multi Host Modus jedoch kann ich die JavaScript Instanz nicht mehr auswählen. Wenn ich im Reiter die Instanz auswähle (nachdem ich 3-5x klicken musst, da das Drop Down immer wieder zu geht ), stellt sobald ich das Skript Starte , ioBroker die Instanz von der ausgewählten auf die alte auf dem falschen PI zurück.
Egal was ich mache, ich kann kein Skript auf der Instanz "1" laufen lassen. Irgendwie fühlt sich das wie ein Bug an, da ich auch keine Meldung im Log o.Ä. sehe. Den Browser wechseln und Adapter entfernen habe ich auch schon probiert bring auch nix
Edit: Redis hab ich nicht laufen.
Danke für eure Hilfe.
https://ibb.co/e5WvvG
https://ibb.co/hB0Yhw~~tldr; MultiHost 2 Pis, Skript auf 2/Slave Pi läuft nicht, da sich die Instanz nicht auswählen lässt bzw. zurückspringt. -
Hat du eine JavaScript Instanz auf den Master und eine 2te auf den seperaten Host installiert?
Der Wert 0/1/2 bei den scripten bezieht sich auf die Instanz nicht den Host
–-----------------------
Send from mobile device
-
Hat du eine JavaScript Instanz auf den Master und eine 2te auf den seperaten Host installiert?
Der Wert 0/1/2 bei den scripten bezieht sich auf die Instanz nicht den Host
–-----------------------
Send from mobile device `
Ja habe Instanz 0 auf dem Master (RPi 3) und Instanz 1 auf dem Slave. Auf dem letzten (etwas schmalen ;)) Screenshot kannst du hinten sehen, dass die zwei Instanzen auf unterschiedlichen Hosts (pi2 und pi3) laufen.
Im log sehe ich auch nur dass er das Skript dann auf Instanz 0 ausführt. Also kein error, stack trace oder ähnliches.
-
Ja habe Instanz 0 auf dem Master (RPi 3) und Instanz 1 auf dem Slave. Auf dem letzten (etwas schmalen ;)) Screenshot kannst du hinten sehen, dass die zwei Instanzen auf unterschiedlichen Hosts (pi2 und pi3) laufen.
Im log sehe ich auch nur dass er das Skript dann auf Instanz 0 ausführt. Also kein error, stack trace oder ähnliches. `
Sorry hatte den screenshot nicht gesehen in tapatalk.
Ich habe soeben bei mir probiert und kan den fehler nicht reproducieren:
Js-Controller 1.2.3
Javascript 3.4.0
Mein master laeuft auf nem Nuc (VMWare) und der Slave is ein Pi.
In welchem browser aenderst du die einstellungen ?
-
JavaScript Adapter 3.5.0
Controller ist 1.1.3
Ich werde nachher wenn ich daheim bin mal den Controller updaten, evtl hängt es damit zusammen…hoffentlich
An Browsern habe ich Chrome Mac, Safari und Chrome Android jetzt gerade über VPN probiert
-
An Browsern habe ich Chrome Mac, Safari und Chrome Android jetzt gerade über VPN probiert `
Alles per Mobil oder auch von pc aus?
Der Admin Interface geht nicht immer einwandfrei mit solchen Sachen von Telefon/Tablet
–-----------------------
Send from mobile device
-
An Browsern habe ich Chrome Mac, Safari und Chrome Android jetzt gerade über VPN probiert `
Alles per Mobil oder auch von pc aus?
Der Admin Interface geht nicht immer einwandfrei mit solchen Sachen von Telefon/Tablet
–-----------------------
Send from mobile device `
Nein alles vom Mac, bis auf den Chrome auf Android
Bin nur gerade noch nicht daheim und wollte schnell die Controller Version überprüfen, da habe ich das auch direkt nochmal mobil nachgestellt.
Schaffe es hoffentlich nachher noch vorm Weihnachtsmarkt schnell den Controller upzudaten auf beiden Pis und melde mich dann mit Feedback
-
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!