NEWS
js-controller 3.3 jetzt im Beta
-
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 backup
bzw kopieren desiobroker-data
Verzeichnisses 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@version
installiert 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 io
und auchps auxww|grep backup
). Es passiert manchmal das trotz dem Stoppen noch Zombies zurückbleiben - Wie üblich wird das Update dann per
iobroker upgrade self
ausgefü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 fix
wer 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-controller
versuchen. 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 start
starten.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 upgrade
beachtet 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
Ich hab vorhin Admin 5.0.11 und gerade js-controller 3.3.1 auf meinem Testsystem eingespielt
ioBroker startet ca. alle 30s neu29 Apr 2021 23:50:03.002 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:49:30.136 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:48:57.379 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:48:24.775 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:47:52.089 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:47:19.246 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:46:46.447 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:46:13.675 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:45:40.712 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:45:08.134 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:44:35.505 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:44:02.155 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:43:28.777 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:42:54.366 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:42:21.666 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:41:49.149 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:41:16.509 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker
beim Start kommt folgende Ausgabe:
29 Apr 2021 23:47:19.894 host.ioBrokerTestsystem-Server Error inMem-objects listening on port 9001: Error: listen EADDRINUSE: address already in use 127.0.0.1:9001 29 Apr 2021 23:47:19.250 host.ioBrokerTestsystem ip addresses: 192.168.178.77 fe80::f854:cfff:fe5f:6c25 29 Apr 2021 23:47:19.248 host.ioBrokerTestsystem hostname: ioBrokerTestsystem, node: v12.21.0 29 Apr 2021 23:47:19.246 host.ioBrokerTestsystem Copyright (c) 2014-2021 bluefox, 2014 hobbyquaker 29 Apr 2021 23:47:19.241 host.ioBrokerTestsystem iobroker.js-controller version 3.3.1 js-controller starting
Zusätzlich kommen sehr viele Warnungen von sehr vielen Adapter in dem Stil
... has wrong type "number" but has to be "boolean"
Hier müssen vermutlich bei den Adapter einzelne Issues angelegt werden oder?
-
@feuersturm ALso wenn der Fehler kommt das Port 9001 belegt ist dann läuft da noch was. hat das stoppen des controllers vor dem update wirklich geklappt?? Beende nochmal , checke die Prozesse und starte neu
... has wrong type "number" but has to be "boolean"
Ja bitte bei den Adaptern Issues anlegen
-
Läuft, ich teste weiter.
-
@apollon77 Sieht jetzt besser aus. Die regelmäßigen Restarts sind jetzt weg
-
@apollon77 Läuft auf meinem Testsystem. ioBroker lief dann aber ohne das ich
iobroker start
eingeben musste -
@fredf Hm ... wäre mir neu dad ein Controller upgrade den Controller selbst restartet ...
-
@apollon77 Vorher natürlich gestoppt. KA, liegts an jsonl?
-
@feuersturm sagte in js-controller 3.3 jetzt im Latest:
Zusätzlich kommen sehr viele Warnungen von sehr vielen Adapter in dem Stil
Jupp, habe auch schon einige issues angelegt. Kommt ja bei vielen daher.
-
Hallo zusammen, diesmal will iobroker update bei mir nicht so richtig...
iobroker gestoppt, dann:root@ioBroker2:~# iobroker update No connection to databases possible ... root@ioBroker2:~#
den Fixer hab ich eben schon mal drüber gebügelt, bleibt aber bei der Ausgabe. Entweder ich bin noch zu müde - oder dat jeht nit bei mir aktuell?
NACHTRAG (aktueller Status):
node: v12.22.1 js-controller: 3.2.16 Objects type: jsonl States type: jsonl
-
Gerade alles aktualliesiert, da ich warn jede menge hatte mal den fixer drüber laufen lassen.
Dann noch mal update und bei upgraderock@rock:/opt/iobroker$ iobroker upgrade Uncaught Rejection: TypeError: Cannot read property 'indexOf' of undefined at Upgrade.upgradeAdapter (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupUpgrade.js:328:21) at Upgrade._upgradeAdapterHelper (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupUpgrade.js:156:14) at Upgrade.upgradeAdapterHelper (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupUpgrade.js:136:18) at /opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js:989:37 at Immediate.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js:2615:45) at processImmediate (internal/timers.js:463:21) rock@rock:/opt/iobroker$
-
@kueppert Als Workaround: Starte nochmal, mach den "update" befehl dann" und stoppe dann und mache dann upgrade self. Da hat jsonl bei dir nicht genug zeit zum starten ... ist mit controller 3.3 optimiert bzw im jsonl Thread schauen
-
@fredf Grund gefunden. Danke.
-
@apollon77 während iobroker läuft, war Schritt 1 möglich
root@ioBroker2:~# iobroker update Used repository: latest_neu hash unchanged, use cached sources update done
danach wieder iobroker gestoppt, dann gehts wieder nicht weiter:
root@ioBroker2:~# iobroker stop root@ioBroker2:~# iobroker upgrade self No connection to databases possible ...
-
@kueppert Dann nimm mal den "harten weg":
cd /opt/iobroker npm i iobroker.js-controller
Geht der?
Und danach checke mal ob dann bei ausgeschaltetem iobroker wenn die 3.3 drauf ist ein "iobroker update" geht
-
@apollon77 update ging so. ANbei schon mal das Log. Ich mach jetzt nen Reboot und schaue, ob Update dann geht:
root@ioBroker2:~# iobroker stop root@ioBroker2:~# cd /opt/iobroker root@ioBroker2:/opt/iobroker# npm i iobroker.js-controller npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 > iobroker.js-controller@3.3.1 preinstall /opt/iobroker/node_modules/iobroker.js-controller > node lib/preinstallCheck.js NPM version: 6.14.12 > iobroker.js-controller@3.3.1 install /opt/iobroker/node_modules/iobroker.js-controller > node iobroker.js setup first object _design/system updated > esbuild@0.11.16 postinstall /opt/iobroker/node_modules/esbuild > node install.js npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.1 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: osx-temperature-sensor@^1.0.7 (node_modules/iobroker.info/node_modules/osx-temperature-sensor): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for osx-temperature-sensor@1.0.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN bl@0.7.0 requires a peer of stream-browserify@* but none is installed. You must install peer dependencies yourself. + iobroker.js-controller@3.3.1 added 19 packages from 36 contributors, removed 76 packages, updated 30 packages and moved 1 package in 52.619s 56 packages are looking for funding run `npm fund` for details
NACHTRAG: iobroker update funktioniert nun nach dem manuellen Update auf JS 3.3
-
-
@thomas-braun hab ich jetzt noch nachgeholt, danke dir. Hab auch mal wieder in deinem Werkzeugkasten gelesen, weil ich vorher noch nen Update von der VM gemacht hab - nur an die User hab ich mich nicht gehalten, wie immer ^^
-
@kueppert Du solltest dir schleunigst den root-login abgewöhnen.
-
Bei mir läuft das Log ebenfalls mit Meldungen über "wrong type" voll.
Nun könnte ich ja tatsächlich bei allen Adaptern in Github ein Issue aufmachen, aber ich kann zum Teil gar keinen Fehler feststellen.
Beispiel Info-Adapter:
info.0 2021-04-30 09:19:57.851 warn (1455) State value to set for "info.0.sysinfo.disks.fsSize.fs0.used_hist" has wrong type "string" but has to be "array"
und dann schaue ich mir den Datenpunkt an und siehe da ... der ist doch vom Typ "array".
Was also könnte am Adapter geändert werden?{ "from": "system.adapter.info.0", "user": "system.user.admin", "ts": 1553260102115, "common": { "name": "used_hist", "type": "array", "role": "value", "read": true, "write": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "info.0.sysinfo.disks.fsSize.fs0.used_hist", "type": "state" }