NEWS
js-controller 3.3 jetzt im Beta
-
Ich habe im fritzdect Adapter zum Anlegen von Datenpunkten die folgende Definition verwendet:
type: 'state', common: { name: name, type: 'number', read: true, write: false, role: 'date', desc: name },scheint aber irgenwie doch kein number zu sein, weil der neue Controller folgendes meldet.
2021-05-01 13:01:41.805 - warn: fritzdect.0 (13627) State value to set for "fritzdect.0.DECT_099950226513.windowopenactiveendtime" has wrong type "object" but has to be "number"
was kann ich da im Adapter anpassen, das der Datenpunkt number für Zeitstempel eine Nummer ist?
Gruß
Klaus -
Hallo ioBroker-Community,
diesmal etwas früher als ursprünglich geplant, kommt heute der neue js-controller 3.3 (Releasename "Hannah") ins Latest Repository (sollte im laufe des Abends bei allen auftauchen). Der Grund ist, dass wir für Admin5 ein paar Optimierungen und Verbesserungen benötigen.
Node.js Versions-Anforderungen
Die unterstützten Node.js Versionen bleiben in diesem Update gleich: 10.x, 12.x und auch 14.x werden offiziell unterstützt. Aufgrund der übergreifenden Adapter-Kompatibilität bleibt die empfohlene Node.js Version für ioBroker aktuell weiterhin auf 12.x. Falls jemand wirklich mit Node.js 16.x experimentieren will, dann bitte AUSSCHLIESSLICH mit npm 6 !! (die npm Entwickler haben in npm 7 wieder Dinge geändert, die wir noch untersuchen)
Bitte beachtet weiterhin bei Node.js Updates die Anleitung im Forum unter https://forum.iobroker.net/topic/44566/how-to-node-js-für-iobroker-richtig-updaten-2021-editionInformationen zur Version
Auch wenn die Zeit seit dem letzten js-controller Update recht kurz war sind ein paar Optimierungen und Verbesserungen und neue Features zusammengekommen.
Auch daran den Wildwuchs in der Umsetzung einiger Adapter etwas einzugrenzen wurde weiter gearbeitet, was ggf. zu neuen Log-Meldungen für bestimmte Fälle führt. Bitte unterstützt hier wieder und legt bei den relevanten Adaptern im GitHub Issues an, damit diese Dinge gefixt werden können.Besonders zu Erwähnen ist diesmal, dass Adapter-Abhängigkeiten bei Updates besser berücksichtigt werden und das die Startreihenfolge von Adaptern nach Typ optimiert wird und auch mitbestimmen kann (mit Admin5). Detailliertere Informationen zu allen Änderungen und Features findet Ihr weiter unten und im Changelog. Ich hoffe auch diesmal auf Eure tatkräftige Unterstützung, sodass der Latest-Release dann genau so reibungslos verläuft wie bei den letzten Versionen.
In Summe sind in diese Version über 120 commits eingeflossen. Dafür bedenke mich diesmal besonders bei foxriver76, AlCalzone und natürlich Bluefox und auch ein paar weiteren Entwicklern für die aktive Mitarbeit an dieser Version!
Der js-controller 3.3 ist generell kompatibel mit allen bestehenden ioBroker-Systemen. Ein Update von der 2.0/2.1/2.2/3.x ist problemlos möglich. Nur die Node.js Version muss weiterhin mindestens 10.x sein, wie oben bereits ausgeführt. Wer überlegt die Node.js Version anzuheben bitte weiter unten im Abschnitt "Was ist zu testen" lesen 🙂
Es gibt aktuell keine inkompatiblem Adapter, aber einige Empfehlungen weiter unten.
Installation
VOR der Installation
Wie bei jedem Test dieser Art: Bitte macht ein Backup!
iobroker backupbzw kopieren desiobroker-dataVerzeichnisses reichen an sich aus. Bitte nicht das node_modules Verzeichnis einfach kopieren, da sonst symbolische Links kaputt gehen können, was zu größeren Problemen danach führt. Die alte Version des js-controller kann im Notfall einfach wieder pernpm install iobroker.js-controller@versioninstalliert werden und sollte alles wieder herstellen.Für die User die deie experimentelle JSONL-Datenbank ausprobieren bitte unter https://forum.iobroker.net/post/622194 nachsehen.
Nötige Adapter-Aktualisierungen
Aktuell sind keine Inkompatibilitäten bekannt. Admin sollte mit 4.x und auch 5.x funktionieren, mit Admin 5.x sollten die potentiell fehlenden Adapternamen wieder angezeigt werden.
Es werden aber, wie oben ausgeführt, einige Adapter ggf Warnungen ins Log schreiben. Falls das Problematisch ist ist aktuell die einzige Option das Loglevel der Instanz auf "Error" zu setzen.
Achtung: MASTER-Systeme Reihenfolgen beachten!
Bei einem Multi-Host-System, welches auf js-controller 2.2, 3.1 oder 3.2 läuft, ist es beim Update auf Version 3.3 empfohlen, zuerst das Master-System zu aktualisieren. Der Master muss dann wieder gestartet werden. Die Slaves werden danach aktualisiert!
Bei Updates von Master/Slave-Systemen mit js-controller 1.5 oder früher auf die 3.3 müssen zwingend zuerst die Slaves und der Master als letztes aktualisiert werden. Beim Slave Update muss der alte Master aber noch laufen. Die Slaves bleiben nach dem Update offline und können sich nicht zum Master verbinden und werden erst wieder funktionieren wenn auch der Master auf die 3.3 aktualisiert wurde!
Windows
Auf Systemen, die mit dem neuen Windows Installer eingerichtet wurden weiss ich gerade nicht wie der aktuelle Prozess ist, da der Windows installer nicht ganz aktuell ist. Bitte hier berichten dann kann ich ergänzen.
Für alle "alten manuellen" Installationen gilt
iobroker update- ioBroker muss gestoppt sein.
- Vor dem Update bitte prüfen das keine Prozesse mehr laufen
iobroker upgrade self- ioBroker starten
Linux
iobroker update- 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)
Wichtig: Falls es mit js.controller 3.2.x bei update oder upgrade einen Fehler gibt "No connection to database" dann bitte nochmals versuchen, wenn wieder passiert folgende Schritte ausführen:
- Editiere /opt/iobroker/iobroker-data/iobroker.json
- Unter objects und states gibt es ein ' "connectTimeout": 2000,`
- Zahl ändern in 5000 draus.
- Neu versuchen
- Nach dem Upgrade am besten den Wert wieder zurücketzen weil der js-controller 3.3 hier optimiert und länger wartet
Bei Fehlern:
Wenn bei der Installation Fehler wegen fehlender Zugriffsrechte auftreten, am besten den Installation-Fixer (iobroker fixwer schon einen js-controller 2.x oder höher hat, alternativ weiterhin manuell via curl -sL https://iobroker.net/fix.sh | bash -) nutzen und die Installation wiederholen.
Falls es auch danach noch Fehler gibt, bitte die Installation erneut mittelssudo -H -u iobroker npm install iobroker.js-controllerversuchen. Bitte berichtet solche Fälle hier im Thread.NACH der Installation
Nach der Installation sollte der ioBroker automatisch wiederder gestartet werden. Falls doch nicht bitte mittels
iobroker startstarten.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.
Falls im Log Warn-Meldungen auftauchen mit dem Hinweis diese an den Entwickler zu senden, dann bitte schauen welcher Adapter es ist und entsprechend dort Issues bitte anlegen!
Was hat sich geändert, was besonders ansehen/beachten?
Neben einiger weiterer Bugfixes gibt es folgende Änderungen und Fixes zu erwähnen:
- generell siehe Changelog, speziell auch für Features
- Adapter-Instanzen starten nach den definierten Tiers
iobroker upgradebeachtet nun Adpater-Abhängigkeiten- backitup wird automatisch installiert bei neuen Installationen
- Einige Adapter werden Warnungen ausgeben wenn State-Werte gesetzt werden, da nun auch Datentypen und min/max-Werte geprüft werden. Bitte bei den Adapter-Repos melden
Speziell die Entwickler sollten bitte die genannten Deprecations und neuen Features anschauen und beachten.
Wie bereits gesagt, viele Änderungen fanden hinter den Kulissen statt. Hier für Interessierte als Spoiler eine Zusammenfassung:
Generell ist zu testen, ob alles noch so funktioniert wie vorher auch. Das ist das wichtigste!
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, Infos zur OS- und Node.js-Umgebung sowie genaue Schritte zur Reproduktion des Problems), umso schneller können wir Fehler einkreisen und beheben.
Wir wünschen allen viel Spaß beim Testen und vielen Dank für Eure Unterstützung!
Ingo
@apollon77 Moin,
Hab auch gerade auf die aktuelle gesetzt.
Was mir aufgefallen ist.
Das wenn das System komplett neu gestartet wird, also kompletten Rechner. Linux. Kein Dokker-
Geht die Weboberfläche nicht. Obwohl iobroker status running ist. Erst nach Manuellen iobroker stop, iobroker start startet auch die Weboberfläche.
-
iobroker update ok, iobroker upgrade, ja geht, aber es wird das Paket min. 2 mal installiert welches als Update ansteht. Obwohl installation auch beim ersten mal ohne Fehler war. Erst wenn 2 mal installiert ist, dann beendet er auch die upgrade Routine.
-
Wenn wir gerade dabei sind upgrade, kann man das Y default bitte setzen, ohne das man es jedes mal eingeben muss und Enter drücken muss.
cu Deta
-
@apollon77 hatte ich auch noch nicht...
woody@ioBroker:~$ iobroker upgrade self Update js-controller from @3.3.5 to @3.3.7 NPM version: 6.14.12 npm install iobroker.js-controller@3.3.7 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call) Trying to install "esbuild-linux-64" using npm Failed to install "esbuild-linux-64" using npm: Command failed: npm install --loglevel=error --prefer-offline --no-audit --progress=false esbuild-linux-64@0.11.18 npm ERR! code ETARGET npm ERR! notarget No matching version found for esbuild-linux-64@0.11.18. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist. npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2021-05-03T06_24_24_305Z-debug.log Trying to download "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.11.18.tgz" Install successful woody@ioBroker:~$ iobroker start woody@ioBroker:~$ iobroker status iobroker is running on this host. Objects type: file States type: fileläuft aber...
-
@apollon77 hatte ich auch noch nicht...
woody@ioBroker:~$ iobroker upgrade self Update js-controller from @3.3.5 to @3.3.7 NPM version: 6.14.12 npm install iobroker.js-controller@3.3.7 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call) Trying to install "esbuild-linux-64" using npm Failed to install "esbuild-linux-64" using npm: Command failed: npm install --loglevel=error --prefer-offline --no-audit --progress=false esbuild-linux-64@0.11.18 npm ERR! code ETARGET npm ERR! notarget No matching version found for esbuild-linux-64@0.11.18. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist. npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2021-05-03T06_24_24_305Z-debug.log Trying to download "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.11.18.tgz" Install successful woody@ioBroker:~$ iobroker start woody@ioBroker:~$ iobroker status iobroker is running on this host. Objects type: file States type: fileläuft aber...
-
@da_woody ich komme gerade von 3.3.2 auf 3.3.7 und hatte keinerlei Probleme. Hilft dir nicht weiter, aber liegt ggf an der Version, von der das Update gemacht wird. Ist ne Info, die ggf den Entwicklern weiterhilft, daher erwähne ich es hier.
@kueppert
Hängt wohl eher an der CPU.
Dennpi@chet:/opt/iobroker $ npm list esbuild-linux-64 iobroker.inst@3.0.0 /opt/iobroker └── (empty) -
@apollon77 hatte ich auch noch nicht...
woody@ioBroker:~$ iobroker upgrade self Update js-controller from @3.3.5 to @3.3.7 NPM version: 6.14.12 npm install iobroker.js-controller@3.3.7 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call) Trying to install "esbuild-linux-64" using npm Failed to install "esbuild-linux-64" using npm: Command failed: npm install --loglevel=error --prefer-offline --no-audit --progress=false esbuild-linux-64@0.11.18 npm ERR! code ETARGET npm ERR! notarget No matching version found for esbuild-linux-64@0.11.18. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist. npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2021-05-03T06_24_24_305Z-debug.log Trying to download "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.11.18.tgz" Install successful woody@ioBroker:~$ iobroker start woody@ioBroker:~$ iobroker status iobroker is running on this host. Objects type: file States type: fileläuft aber...
och - und ich dachte es wäre Windows spezifisch - https://github.com/ioBroker/ioBroker.js-controller/issues/1321#issuecomment-830870803
@deta Das Phänomen mit 2x installieren hatte ich auch - siehe issue.
-
och - und ich dachte es wäre Windows spezifisch - https://github.com/ioBroker/ioBroker.js-controller/issues/1321#issuecomment-830870803
@deta Das Phänomen mit 2x installieren hatte ich auch - siehe issue.
@jb_sullivan habs ein 2.x versucht
woody@ioBroker:~$ iobroker upgrade self Host "ioBroker" is up to date. woody@ioBroker:~$scheint ok zu sein...
-
Ich habe im fritzdect Adapter zum Anlegen von Datenpunkten die folgende Definition verwendet:
type: 'state', common: { name: name, type: 'number', read: true, write: false, role: 'date', desc: name },scheint aber irgenwie doch kein number zu sein, weil der neue Controller folgendes meldet.
2021-05-01 13:01:41.805 - warn: fritzdect.0 (13627) State value to set for "fritzdect.0.DECT_099950226513.windowopenactiveendtime" has wrong type "object" but has to be "number"
was kann ich da im Adapter anpassen, das der Datenpunkt number für Zeitstempel eine Nummer ist?
Gruß
Klaus@foxthefox DIe Frage ist ja was Du wie reinschreibst. Wenn Du direkt ein Date object reinschreibst ist das falsch. mit "myDate.getTime()" solltest du es korrekt schreiben. oder getString()
Definition für role date is:
date (common.type = string - parsable by "new Date(ddd)" string date (common.type = number - epoch seconds * 1000 -
@apollon77 Moin,
Hab auch gerade auf die aktuelle gesetzt.
Was mir aufgefallen ist.
Das wenn das System komplett neu gestartet wird, also kompletten Rechner. Linux. Kein Dokker-
Geht die Weboberfläche nicht. Obwohl iobroker status running ist. Erst nach Manuellen iobroker stop, iobroker start startet auch die Weboberfläche.
-
iobroker update ok, iobroker upgrade, ja geht, aber es wird das Paket min. 2 mal installiert welches als Update ansteht. Obwohl installation auch beim ersten mal ohne Fehler war. Erst wenn 2 mal installiert ist, dann beendet er auch die upgrade Routine.
-
Wenn wir gerade dabei sind upgrade, kann man das Y default bitte setzen, ohne das man es jedes mal eingeben muss und Enter drücken muss.
cu Deta
@deta sagte in js-controller 3.3 jetzt im Latest:
Wenn wir gerade dabei sind upgrade, kann man das Y default bitte setzen, ohne das man es jedes mal eingeben muss und Enter drücken muss.
Halte ich nicht für sinnvoll, wenn man sicher ist was man tut (bzw. sowieso einfach nur Enter hämmert), kann man
iob upgrade -ynutzen. -
-
apropos default-Einstellungen:
früher hatte ich einmalig beim Update-log Fenster die Checkbox Schließen wenn fertig angehakt.
Das blieb dann bei jedem weiteren Update so.bei Admin 5 muss ich das jetzt jedesmal wieder aktivieren.
Ist das gewollt? -
apropos default-Einstellungen:
früher hatte ich einmalig beim Update-log Fenster die Checkbox Schließen wenn fertig angehakt.
Das blieb dann bei jedem weiteren Update so.bei Admin 5 muss ich das jetzt jedesmal wieder aktivieren.
Ist das gewollt? -
@homoran glaube Admin 5 passt hier net ganz. Weiß wohl auch nur BF.
Wo wir gerade bei update im Terminal sind...
Könnte man die Ausgabe der ganzen Liste an Adaptern bei einem
iobroker updatenicht auf die installierten oder updatebaren Adapter kürzen? Was interessiert mich die Version eines Adapters den ich eh nicht nutze?
Im Moment pipe ich das ganze nämlich noch durch ein grep durch.
Vielleicht mit einer Option --long für die volle Liste.Feature-Request am besten wo? js-controller? Admin?
-
apropos default-Einstellungen:
früher hatte ich einmalig beim Update-log Fenster die Checkbox Schließen wenn fertig angehakt.
Das blieb dann bei jedem weiteren Update so.bei Admin 5 muss ich das jetzt jedesmal wieder aktivieren.
Ist das gewollt? -
Wo wir gerade bei update im Terminal sind...
Könnte man die Ausgabe der ganzen Liste an Adaptern bei einem
iobroker updatenicht auf die installierten oder updatebaren Adapter kürzen? Was interessiert mich die Version eines Adapters den ich eh nicht nutze?
Im Moment pipe ich das ganze nämlich noch durch ein grep durch.
Vielleicht mit einer Option --long für die volle Liste.Feature-Request am besten wo? js-controller? Admin?
@thomas-braun Feature Request js-controller bitte
-
Wo wir gerade bei update im Terminal sind...
Könnte man die Ausgabe der ganzen Liste an Adaptern bei einem
iobroker updatenicht auf die installierten oder updatebaren Adapter kürzen? Was interessiert mich die Version eines Adapters den ich eh nicht nutze?
Im Moment pipe ich das ganze nämlich noch durch ein grep durch.
Vielleicht mit einer Option --long für die volle Liste.Feature-Request am besten wo? js-controller? Admin?
@thomas-braun Bei Upgrade wo man keinen Einfluss hat, wird die unnötig lange Liste ja seit dem aktuellen Controller nicht mehr angezeigt.
Bei update hast du einen Einfluss:
iob update -iiob update --help iobroker update [<repositoryUrl>] Update repository and list adapters Options: --help Show help [boolean] -v, --version Show version [boolean] -u, --updateable Only show updateable adapters [boolean] -i, --installed Only show installed adapters [boolean] -f, --force Bypass hash check [boolean]Also wäre wenn dann die Diskussion,
-idefault zu machen und dafür ein-aFlag. CLI ist immer Controller aktuell. -
@thomas-braun Bei Upgrade wo man keinen Einfluss hat, wird die unnötig lange Liste ja seit dem aktuellen Controller nicht mehr angezeigt.
Bei update hast du einen Einfluss:
iob update -iiob update --help iobroker update [<repositoryUrl>] Update repository and list adapters Options: --help Show help [boolean] -v, --version Show version [boolean] -u, --updateable Only show updateable adapters [boolean] -i, --installed Only show installed adapters [boolean] -f, --force Bypass hash check [boolean]Also wäre wenn dann die Diskussion,
-idefault zu machen und dafür ein-aFlag. CLI ist immer Controller aktuell.Ahhhhhhh!!!!
Und ich pipe und greppe da immer wild durch die Gegend rum...Hatte ich echt nicht auf'm Schirm, die Option -i
Danke fürs drauf stupsen. -
@thomas-braun Bei Upgrade wo man keinen Einfluss hat, wird die unnötig lange Liste ja seit dem aktuellen Controller nicht mehr angezeigt.
Bei update hast du einen Einfluss:
iob update -iiob update --help iobroker update [<repositoryUrl>] Update repository and list adapters Options: --help Show help [boolean] -v, --version Show version [boolean] -u, --updateable Only show updateable adapters [boolean] -i, --installed Only show installed adapters [boolean] -f, --force Bypass hash check [boolean]Also wäre wenn dann die Diskussion,
-idefault zu machen und dafür ein-aFlag. CLI ist immer Controller aktuell.@foxriver76 sagte in js-controller 3.3 jetzt im Latest:
Also wäre wenn dann die Diskussion, -i default zu machen und dafür ein -a Flag. CLI ist immer Controller aktuell.
Wär ich fast für :)
-
@apollon77 sagte in js-controller 3.3 jetzt im Latest:
@homoran Issue anlegen
-
@foxriver76 sagte in js-controller 3.3 jetzt im Latest:
Also wäre wenn dann die Diskussion, -i default zu machen und dafür ein -a Flag. CLI ist immer Controller aktuell.
Wär ich fast für :)
@apollon77 sagte in js-controller 3.3 jetzt im Latest:
@foxriver76 sagte in js-controller 3.3 jetzt im Latest:
Also wäre wenn dann die Diskussion, -i default zu machen und dafür ein -a Flag. CLI ist immer Controller aktuell.
Wär ich fast für :)
Hätte ich im Angebot:
https://github.com/ioBroker/ioBroker.js-controller/pull/1330 -
@apollon77 sagte in js-controller 3.3 jetzt im Latest:
@foxriver76 sagte in js-controller 3.3 jetzt im Latest:
Also wäre wenn dann die Diskussion, -i default zu machen und dafür ein -a Flag. CLI ist immer Controller aktuell.
Wär ich fast für :)
Hätte ich im Angebot:
https://github.com/ioBroker/ioBroker.js-controller/pull/1330@foxriver76 hätte ich auch nichts dagegn. gerade jetzt, bei täglichen updates fällt das auf.