NEWS
js-controller 2.0 ab sofort im Latest Repo
js-controller 2.0 ab sofort im Latest Repo
-
@Jan1 sagte in js-controller 2.0 ab sofort im Latest Repo:
This adapter does not support compact mode. The below settings will have no effect!
Das sagt an sich schonmal das email bisher compact mode nicht unterstützt. Von daher kann der auch nicht im compact mode laufen.
Sonst gratuliere, hast noch nen Bug gefunden
Der passiert wenn man eine Instanz löscht und der Adapter da noch läuft. Würde aber erstmal keine extra neue Version machen sondern warten was noch kommt.@apollon77
Ja jetzt sehe ich es auch, voll überlesen
Der Bug scheint aber neu zu sein, da ich bis jetzt noch nie eine Instanz gestoppt hatte, bevor ich deinstalliert habe. Was solls, so oft deinstalliere ich eigentlich auch nicht und wenn man es weiß kann man auch damit leben. -
@apollon77
Ja jetzt sehe ich es auch, voll überlesen
Der Bug scheint aber neu zu sein, da ich bis jetzt noch nie eine Instanz gestoppt hatte, bevor ich deinstalliert habe. Was solls, so oft deinstalliere ich eigentlich auch nicht und wenn man es weiß kann man auch damit leben.@Jan1 sagte in js-controller 2.0 ab sofort im Latest Repo:
Der Bug scheint aber neu zu sein, da ich bis jetzt noch nie eine Instanz gestoppt hatte, bevor ich deinstalliert habe
Da mache ich immer , vorher stoppen.

-
@apollon77
Ja jetzt sehe ich es auch, voll überlesen
Der Bug scheint aber neu zu sein, da ich bis jetzt noch nie eine Instanz gestoppt hatte, bevor ich deinstalliert habe. Was solls, so oft deinstalliere ich eigentlich auch nicht und wenn man es weiß kann man auch damit leben. -
So, und weil es so schön ist (und doch noch ein paar Kleinigkeiten aufgekommen sind):
2.0.42 ist verfügbar im latest ab gleich:
- (Apollon77) Correct error message if certificate can not be parsed
- (bluefox) Fix upload of material adapter
- (Apollon77) prevent crash when adapter instance is deleted which is also running currently and if stopped by deletion
- (bluefox) make sure getForeignStates do not modify the input ids list
- (Apollon77) enhance
list instancesand only show compact infos if adapter supports it
-
2.0.42 ist bei mir jetzt on.
War nur ein kleines Gezehter.
Erst beim Slave den Update gemacht.
dann beim Master. da hat er mir dann Fehlermeldungen gebracht.
Nach dem Fix alles nochmal, da hat er aber kein Update mehr gemacht weil iobroker "up to date".
Komisch, komisch...... naja, die neue Version ist drauf. -
2.0.42 ist bei mir jetzt on.
War nur ein kleines Gezehter.
Erst beim Slave den Update gemacht.
dann beim Master. da hat er mir dann Fehlermeldungen gebracht.
Nach dem Fix alles nochmal, da hat er aber kein Update mehr gemacht weil iobroker "up to date".
Komisch, komisch...... naja, die neue Version ist drauf. -
hi...nach dem ich einige Files unter 0_userdata.0 abgelegt hatte, bekomme ich nun einen Fehler im BackupIt
ERROR] [minimal] - /opt/iobroker/node_modules/standard-as-callback/built/index.js:6 throw e; ^ Error: EISDIR: illegal operation on a directory, open '/opt/iobroker/node_modules/iobroker.js-controller/tmp/backup/files/0_userdata.0/files/icons/thermo/' at Object.openSync (fs.js:443:3) at Object.writeFileSync (fs.js:1194:35) at objects.readFile (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupBackup.js:57:24) at _getBinaryState (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInRedis.js:520:13) at client.getBuffer (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInRedis.js:329:17) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) at process._tickCallback (internal/process/next_tick.js:68:7) [DEBUG] [minimal] - doneDamit ich auch mal prüfen kann welches Files überhaupt da liegen, würde ich gerne auch darauf mit WSCP zugreifen wollen. Aber ich finde kein Folder mit 0_userdata.0 ... Was kann ich tun, um das zu prüfen?
-
hi...nach dem ich einige Files unter 0_userdata.0 abgelegt hatte, bekomme ich nun einen Fehler im BackupIt
ERROR] [minimal] - /opt/iobroker/node_modules/standard-as-callback/built/index.js:6 throw e; ^ Error: EISDIR: illegal operation on a directory, open '/opt/iobroker/node_modules/iobroker.js-controller/tmp/backup/files/0_userdata.0/files/icons/thermo/' at Object.openSync (fs.js:443:3) at Object.writeFileSync (fs.js:1194:35) at objects.readFile (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupBackup.js:57:24) at _getBinaryState (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInRedis.js:520:13) at client.getBuffer (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInRedis.js:329:17) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) at process._tickCallback (internal/process/next_tick.js:68:7) [DEBUG] [minimal] - doneDamit ich auch mal prüfen kann welches Files überhaupt da liegen, würde ich gerne auch darauf mit WSCP zugreifen wollen. Aber ich finde kein Folder mit 0_userdata.0 ... Was kann ich tun, um das zu prüfen?
@msauer Ich tippe eher das eine deiner obigen Versuche wo du einen Verzeichnisnamen angegeben hast dazu geführt haben das der Index kaputt ist. Er denkt das ein File da liegt wo eigentlich ein verzeichnis ist.
Ich schaue das ich das noch abfange.
Für dich: Bitte 2.0.42 installieren, ioBroker stoppen! Dann dort in /op/iobroker/iobroker-data/files/0_userdata.0 das _data.json löschen.
Dann 'iobroker file sync" aufrufen - damit sollte der Index neu erstellt werden.Dann neu versuchen bitte
-
@msauer Ich tippe eher das eine deiner obigen Versuche wo du einen Verzeichnisnamen angegeben hast dazu geführt haben das der Index kaputt ist. Er denkt das ein File da liegt wo eigentlich ein verzeichnis ist.
Ich schaue das ich das noch abfange.
Für dich: Bitte 2.0.42 installieren, ioBroker stoppen! Dann dort in /op/iobroker/iobroker-data/files/0_userdata.0 das _data.json löschen.
Dann 'iobroker file sync" aufrufen - damit sollte der Index neu erstellt werden.Dann neu versuchen bitte
@apollon77 sagte in js-controller 2.0 ab sofort im Latest Repo:
/iobroker-data/files/0_userdata.0
Das ist das Problem... es gibt kein Verzeichnis 0_userdata.0 in files
root@MSNUC-IOB:/opt/iobroker/iobroker-data/files# cd /opt/iobroker/iobroker-data/files/0_userdata.0 -bash: cd: /opt/iobroker/iobroker-data/files/0_userdata.0: Datei oder Verzeichnis nicht gefunden root@MSNUC-IOB:/opt/iobroker/iobroker-data/files#root@MSNUC-IOB:/opt/iobroker# cd iobroker-data/ root@MSNUC-IOB:/opt/iobroker/iobroker-data# cd files/ root@MSNUC-IOB:/opt/iobroker/iobroker-data/files# ls -la insgesamt 560 drwxrwxr-x+ 118 iobroker iobroker 4096 Sep 24 11:16 . drwxrwxr-x+ 8 iobroker iobroker 4096 Okt 22 20:40 .. drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 admin.admin drwxrwxr-x+ 3 iobroker iobroker 4096 Okt 22 20:40 alexa2.admin drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 amazon-dash.admin drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 cloud.admin drwxrwxr-x+ 3 iobroker iobroker 4096 Okt 22 20:40 daswetter.admin drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 discovery.admin drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 dwd.admin -
@apollon77 sagte in js-controller 2.0 ab sofort im Latest Repo:
/iobroker-data/files/0_userdata.0
Das ist das Problem... es gibt kein Verzeichnis 0_userdata.0 in files
root@MSNUC-IOB:/opt/iobroker/iobroker-data/files# cd /opt/iobroker/iobroker-data/files/0_userdata.0 -bash: cd: /opt/iobroker/iobroker-data/files/0_userdata.0: Datei oder Verzeichnis nicht gefunden root@MSNUC-IOB:/opt/iobroker/iobroker-data/files#root@MSNUC-IOB:/opt/iobroker# cd iobroker-data/ root@MSNUC-IOB:/opt/iobroker/iobroker-data# cd files/ root@MSNUC-IOB:/opt/iobroker/iobroker-data/files# ls -la insgesamt 560 drwxrwxr-x+ 118 iobroker iobroker 4096 Sep 24 11:16 . drwxrwxr-x+ 8 iobroker iobroker 4096 Okt 22 20:40 .. drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 admin.admin drwxrwxr-x+ 3 iobroker iobroker 4096 Okt 22 20:40 alexa2.admin drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 amazon-dash.admin drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 cloud.admin drwxrwxr-x+ 3 iobroker iobroker 4096 Okt 22 20:40 daswetter.admin drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 discovery.admin drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 22 20:40 dwd.admin -
@msauer Hast Du Objekte im redis? Der Fehler kommt nicht beim lesen, sondern wenn er versucht das zu schreiben fürs backup ...
@apollon77 Ja, Redis ist voll an...
Objects type: redis States type: redis -
@apollon77 Ja, Redis ist voll an...
Objects type: redis States type: redis -
@msauer Gut, haben wir so aufgeräumt. ich fixe noch die Schreib-Aktion das sowas nicht nochmal passiert
@apollon77 also .43 heute ??
-
Nur so als Hinweis/Frage: nach jedem Update ist der example_state unter 0_userdata wieder da, auch wenn ich ihn gelöscht habe. Korrekt? Soll so bleiben?
-
Hallo ioBroker-Community,
passend zum Erreichen der 30.000 aktive Installationen Marke vor ein paar Tagen möchten wir Euch nun gern den neuen js-controller 2.0 vorstellen. Dieser ist ab sofort im Latest Repository und auf npm verfügbar.
In einem internen Test und einen sehr umfangreichen Beta-Test in der Community haben wir dieses große Update des js-controllers bereits sehr intensiv getestet. Großer Dank geht an @Arteck, @sigi234, @SBorg, @opossum, @e-s, @e-i-k-e, @Yetiberg, @Jan1, @Einstein67, @Dr. Bakterius und viele andere mehr. Das war eine super Zusammenarbeit!
Es sind vor allem "unter der Haube" einige grundlegende Änderungen eingeflossen, die den Wechsel auf eine neue Hauptrelease-Nummer rechtfertigen. Mehr dazu weiter unten.
Der js-controller 2.0 ist generell kompatibel mit allen bestehenden ioBroker-Systemen. Es kann von jeder früheren Version auf die Version 2.0 aktualisiert werden. Einzig die Node.js Version muss vor dem Update mindestens auf 8.x, besser noch auf 10.x angehoben werden! Für Node.js 12 ist es aber noch etwas zu früh, da hier immer noch einige Adapter nicht kompatibel sind.
Falls Ihr in diesem Zuge die Nodejs Version aktualisiert bitte Die Infos/Anleitung unter https://forum.iobroker.net/topic/22867/how-to-node-js-für-iobroker-richtig-updaten berücksichtigen.Weiterhin wird der ioBroke-Eigene-Dateibereich (im Normalfall bisher unter <ioBroker-Verzeichnis>/iobroker-data/files/...) nun strikter behandelt und manuell oder per Skript (fs.write) dort direkt abgelegte/hinkopierte Dateien sind ggf. nicht mehr in Visualisierungen anzeigbar!
Skripte müssen angepasst werden (Nutzung von writeFile) bzw. die Dateien müssen in offiziell definierte Adpater-Basisverzeichnisse (z.B. vis.0, iqontrol.meta u.ä.) abgelegt werden. Nutzt am besten auch die offiziellen Uploader via Vis oder iqontrol, damit diese Dateien korrekt registriert sind. Diese Änderung wurde auch zur Erhöhung der Sicherheit umgesetzt! Der positive Nebeneffekt ist auch das die Files dann mit im Backup landen, was bisher nicht gegeben war!
Bei der Installation (oder nachträglich periobroker file sync) werden die erlaubten Verzeichnisse geprüft und bisher nicht registrierte Dateien aufgenommen. Wer komplett eigene Verzeichnisse angelegt hat bekommt dazu eine Fehlermelung - diese werden nicht automatisch übernommen und müssen manuell korrekt kopiert werden.Siehe dazu auch die Informationen zum Ordner 0_userdata.0!
Installation
VOR der Installation
Wie bei jedem Update dieser Art: Bitte macht ein Backup!
iobroker backup, bzw. kopieren desiobroker-dataVerzeichnisses reichen an sich im Zweifel auch aus (ioBroker vorher stoppen natürlich). Bitte nicht das node_modules Verzeichnis einfach kopieren, da sonst symbolische Links kaputt gehen können, was zu größeren Problemen danach führt.Nötige Adapter-Aktualisierungen
Die folgenden Adapter müssen auf die genannten Minimalversionsnummern aktualisiert werden, da diese sonst nicht mit dem js-controller 2.0 funktionieren. Diese Updates am besten vorher ausführen, weil alle genannten Versionen auch mit den alten js-controller Versionen funktionieren.
- simple-api 2.1.2 or higher
- email 1.0.5 or higher
- pushover 1.1.1 or higher
- hue 1.2.4 or higher
- node-red 1.10.1 or higher
- vis 1.2.2 or higher
- iqontrol 0.2.12 or higher
- socketio 2.1.2 or higher
- radar2 1.0.9 (GitHub version 1.2.0 muss manuell angepasst werden, siehe FAQ!)
- broadlink2 (siehe FAQ)
- tr-064 (wenn noch soef Originalversion bei Fehlern community Version installieren)
- sonos 2.0.0 or higher (Breaking change! No Webserver anymore!)
- web 2.4.9 or higher
- hqwidgets 1.1.3 or higher
- ble v0.10.1 or higher
Achtung: Slave-Systeme zuerst!
Bei einem Multi-Host-System ist es beim Update auf Version 2.0 sehr wichtig, die Slave-Systeme zuerst zu aktualisieren. Der Master wird als letztes aktualisiert!
Wenn diese Reihenfolge nicht eingehalten wird können sich die Slave-Systeme nicht mit dem master verbinden und das Update muss manuell ausgeführt werden (Details dazu siehe FAQ Post).
Windows
Auf Systemen, die mit dem neuen Windows Installer eingerichtet wurden, darf der js-controller nicht mir npm aktualisiert werden. Es wird eine neue Version des Windows Installers geben, die das Update des js-controllers mit wenigen Mausklicks ermöglicht. Wir updaten dazu hier im Thread.
Für alle "alten manuellen" Installationen gilt
- ioBroker muss gestoppt sein.
- Vor dem Update bitte prüfen das keine Prozesse mehr laufen
iobroker upgrade self- ioBroker starten
Linux
- ioBroker stoppen (
iobroker stop) - prüfen das keine Prozesse (Adapter, Backups) mehr laufen (
ps auxww|grep iound auchps auxww|grep backup). Es passiert manchmal das trotz dem Stoppen noch Zombies zurückbleiben - Wie üblich wird das Update dann per
iobroker upgrade selfausgeführt. - ioBroker starten (
iobroker start)
Bei Fehlern:
Wenn bei der Linux-Installation Fehler wegen fehlender Zugriffsrechte auftreten, am besten den Installation-Fixer nutzen und die Installation wiederholen.curl -sL https://iobroker.net/fix.sh | bash -Falls es auch danach noch Fehler gibt, bitte die Installation erneut mittels
sudo -H -u iobroker npm install iobroker.js-controllerversuchen. Bitte berichtet solche Fälle hier im Thread.NACH der Installation
Nach der Installation den ioBroker wieder starten (z.B. mittels
iobroker start).Wenn alles klappt merkt Ihr ausser der höheren Versionsnummer in der Host-Ansicht im Admin keinen Unterschied. Alles funktioniert weiterhin wie vorher. Alle Adapterinstanzen starten und funktionieren. Wenn das so ist hat alles geklappt. Die großen Änderungen sind alle "Unter der Haube" versteckt.
Dazu, was Euch jetzt die ganzen Neuerungen bringen, findet Ihr weiter unten in diesem Text Informationen. Neue Funktionen als Basis für Weiterentwicklungen wurden behutsam integriert und einige bestehende Probleme gezielt behoben.
Mit
iobroker helpwird eine Liste der möglichen Kommandozeilen-Kommandos angezeigt, die mit Version 2.0 um einige Befehle länger geworden ist.
Was hat sich geändert, was besonders ansehen/beachten?
Eine der größeren Änderungen ist, dass die ioBroker-eigenen States- und Objects-Datenbanken vollständig neu geschrieben wurden. Im ioBroker-System wird zur Kommunikation jetzt ein TCP-basiertes und mit Redis-kompatibles Protokoll verwendet. Vor allem "Reconnection from DB"-Fehler sollten dadurch jetzt der Vergangenheit angehören. Auf Basis dieser Änderungen planen wir für die Zukunft noch einige interessante Neuerungen.
Durch diese Änderung steht jetzt in Logs teilweise "connected to redis" obwohl Ihr gar keinen Redis nutzt. Ihr könnt allerdings weiterhin am Port erkennen wenn es die ioBroker-eigene Datenbank ist (normalerweise Ports 9000 und 9001). Erste Tests haben gezeigt das die CPU Belastung der Adapter-Prozesse und des js-controller geringer ist als in der alten Version, da das neue Protokoll deutlich schlanker ist. Es ist weiterhin flexibler und robuster - so lange die Netzwerkverbindung nicht abreißt. Aber selbst in solch einem Fall sollte ein automatischer Reconnect stattfinden und, wenn der Abbruch nich zu lang ist, alle Änderungen aus der Zeit ohne Verbindungen nochmals gesendet werden.
Also falls Ihr in der Vergangenheit von "Reconnect to DB" Meldungen und Effekten geplagt wart ist Euer Bericht für uns sehr interessannt.In diesem Zuge ist vor allem das Verhalten bei einer Unterbrechung der Verbindung zur Datenbank (egal ob Redis oder im "file" Falle der js-controller). Beim Verlust der Verbindung wird diese per Default in 5s Abständen bis zu 20 mal versucht wiederherzustellen. Wenn dies gelingt, bleibt das ganze System in Betrieb und in der Unterbrechungszeit aufgelaufene Befehle werden nachträglich ausgeführt. Bei Redis könnte diese Zeit sogar für ein Redis-Update ausreichen.
Erst danach (also nach ca. 90s) beenden sich Adapter und das System und ein automatischer Restart findet statt, wonach der js-controller wartet bis die Verbindung wieder da ist. Um ggf Netzwerk-Effekte abzufangen gibt es alle 30s einen Restart des Controllers.
Ebenso der berühmt berüchtigte "Error 7", welcher im Log erscheint wenn ein Adapterprozess bereits läuft, aber ein neuer gestartet werden soll wurde verbessert. Wenn ein neuer Prozess gestartet werden soll, sollten sich nun ggf noch laufende Prozesse automatisch selbst beenden und eine einmalige Meldung im Log erzeugen.
Wie bereits gesagt, viele Änderungen fanden hinter den Kulissen statt. Hier für Interessierte als Spoiler eine Zusammenfassung:
Weitere Details zu den Änderungen und Bugfixes ist im Changelog einzusehen.
Im dritten Post dieses Threads stellen wir einige neue Features im Detail etwas "weniger technisch" vor.

Wie Fehler melden?
Wer sich unsicher ist, ob ein Fehler vorliegt, sollte am besten hier im Thread das Problem beschreiben. So können wir alle versuchen, das Problem nachzuvollziehen und ggf. einzugrenzen.
Sobald ein Fehler auftritt der in einer Fehlermeldung oder einen Crash mit Fehlerdetails im Log oder auf Kommandozeile endet, dann dazu am besten direkt ein GitHub-Issue im js-controller Projekt öffnen und zusätzlich hier im Thread posten. Je detaillierter die Angaben im Issue sind (genaue Fehlermeldungen/Logs, Info zur verwendeten DB-Konstellation (file(file, file/redis, redis/redis ...), Infos zur OS- und Node.js-Umgebung sowie genaue Schritte zur Reproduktion des Problems), umso schneller können wir Fehler einkreisen und beheben.
Ingo
@apollon77 Ich möchte dir (und den anderen Entwicklern die hier dran waren) ein ganz dickes Lob aussprechen.
Der Controller läuft bei mir einwandfrei und ich habe zusätzlich festgestellt das meine Prozessorauslastung deutlichst zurückgegangen ist.
Der NUC langweilt sich so langsam wenn ihr so weitermacht.Ganz herzlichen Dank für eure Arbeit und eure Verbissenheit auch kleinste Fehler zu beheben. Das macht am ioBroker am meisten Spaß das ihr Entwickler so hinter der Sache steht.
-
@apollon77 Ich möchte dir (und den anderen Entwicklern die hier dran waren) ein ganz dickes Lob aussprechen.
Der Controller läuft bei mir einwandfrei und ich habe zusätzlich festgestellt das meine Prozessorauslastung deutlichst zurückgegangen ist.
Der NUC langweilt sich so langsam wenn ihr so weitermacht.Ganz herzlichen Dank für eure Arbeit und eure Verbissenheit auch kleinste Fehler zu beheben. Das macht am ioBroker am meisten Spaß das ihr Entwickler so hinter der Sache steht.
-
Halli Hallo an alle Latest Nutzer

Ein paar Kleinigkeiten sind dann doch noch aufgelaufen und daher habe ich gerade die 2.0.43 (aka Stable-RC4 ... jetzt wirklich die letzte
) auf npm und ins latest gepackt.Changelog:
- (Apollon77) enhance backup error handling for invalid files - they now display errors and not break the backup process
- (Apollon77) make sure new enabled/moved instances are started directly
- (Apollon77) increase object init timeout for adapter starts before complaining/stopping
- (Apollon77) fix file read/write to not allow invalid locations and add some more checking
- (Apollon77) add some more logging for ioredis initializations
Ingo
-
Halli Hallo an alle Latest Nutzer

Ein paar Kleinigkeiten sind dann doch noch aufgelaufen und daher habe ich gerade die 2.0.43 (aka Stable-RC4 ... jetzt wirklich die letzte
) auf npm und ins latest gepackt.Changelog:
- (Apollon77) enhance backup error handling for invalid files - they now display errors and not break the backup process
- (Apollon77) make sure new enabled/moved instances are started directly
- (Apollon77) increase object init timeout for adapter starts before complaining/stopping
- (Apollon77) fix file read/write to not allow invalid locations and add some more checking
- (Apollon77) add some more logging for ioredis initializations
Ingo