NEWS
js-controller 3.1 jetzt im STABLE!
-
Hallo ioBroker-Community,
nach einer längeren Test- und Latest-Phase kommt heute der neuen js-controller 3.1.4 (Releasename "Francesca") ins Stable Repository (sollte im laufe des Abends bei allen auftauchen). Ein großer Dank geht an alle User die bereits in den Letzten Tagen diese Version im Beta test und danach im Latest getestet und Probleme und Fehler zur Behebung gemeldet haben!
Node.js Versions-Anforderungen
Nach dem frühzeitigen aus für Node.js 8 bereits letzten November setzt diese neue Version nun Node.js 10.x voraus und funktioniert ebenso mit Node.js 12.x und auch mit Node.js 14.x. Wir heben mit diesem Release auch die empfohlene Node.js Version für ioBroker auf 12.x an.
Bitte beachtet weiterhin bei Node.js Updates die Anleitung im Forum unter https://forum.iobroker.net/post/266625Error/Crash-Reporting mittels Sentry
Der js-controller hat jetzt standardmässig Sentry als Fehler-Reporting eingebaut und aktiviert. Der js-controller weisst bei der Erstinstallation einer Version >3.1 beim Upgrade gesondert darauf hin! Diese Funktion kann, falls gewünscht, mittelsiobroker plugin disable sentry
deaktivier werden. Wenn also der js-controller mit einer Fehlermeldung abstürzt (und nur dann!) werden die Fehlerdetails anonymisiert an einen von uns selbst in Deutschland betriebenen Sentry-Server gemeldet. IPs o.ä. personalisierte Daten werden nicht gespeichert. Dieses Fehler-Reporting hilft uns bei Crashes schneller und genauer zu sehen was los ist und solche Fehler noch schneller beheben zu können. Bitte legt für Crashes die Ihr seht bitte trotzdem weiterhin GitHub-Issues an und unterstützt uns indem Ihr das Fehler-Reporting aktiviert lasst. Weitere Details findet Ihr unter https://github.com/ioBroker/plugin-sentry#what-is-sentrysentryio .
Auch immer mehr Adapter nutzen diese Form des Fehler-Reportings, was in den jeweiligen Readme's enthalten ist.Informationen zur Version
Diese Version bringt einige Features mit, ist aber ebenso der Beginn um "unter der Haube" einiges zu vereinheitlichen und Wildwuchs in der Umsetzung einiger Adapter etwas einzugrenzen. Es gibt allerdings auch neue Features mit die die Adapter-Entwicklung vereinfachen und Hürden abbauen. Aus diesem Grund ist auch die Liste der Themen welche vor allem für Entwickler relevant sind diesmal recht lang.
Allerdings werden Aktionen von Adaptern die eigentlich den Regeln widersprechen jetzt über Logging sichtbar gemacht. Bitte unterstützt hier und legt bei den relevanten Adaptern Issues an das diese Dinge gefixt werden können. Für den js-controller 3.2 (ca. September 2020) ist es geplant einige dieser "verbotenen Aktionen" auch wirklich zu verhindern. Dazu dann zu gegebener Zeit mehr.Darüber hinaus gibt es natürlich viele Optimierungen und Fixes. Mehr dazu weiter unten und im Changelog.
Ich bedenke mich diesmal besonders bei @foxriver76, @AlCalzone und natürlich @Bluefox für die aktive Mitarbeit an dieser Version!
Der js-controller 3.1 ist generell kompatibel mit allen bestehenden ioBroker-Systemen. Ein Update von der 2.0/2.1/2.2 ist problemlos möglich. Nur die Node.js Version muss jetzt mindestens 10.x sein, wie oben bereits ausgeführt. Wer überlegt die Node.js Version anzuheben bitte am besten als zweiten getrennten Schritt machen um sicherzustellen das man weiss wo ein potentielles Problem aufgetaucht ist! Bitte beachtet weiterhin bei Node.js Updates die Anleitung im Forum unter https://forum.iobroker.net/post/266625
Es gibt diesmal ein paar Adapter die Aktualisiert werden müssen und viele weitere die aktualisiert werden sollten um die oben genannten Warnungen zu vermeiden! Mehr dazu im nächsten Abschnitt!
Installation
VOR der Installation
Wie bei jedem Update dieser Art: Bitte macht ein Backup!
iobroker backup
, bzw. kopieren desiobroker-data
Verzeichnisses 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 3.1 funktionieren. Diese Updates am besten vorher ausführen, weil alle genannten Versionen auch mit den alten js-controller Versionen funktionieren.
- pushover 1.1.x funktioniert, falls 1.2.x im Einsatz ist bitte auf 1.3.x aktualisieren
- tr-064 4.0.0
- tr-064-community wird nun offiziell nicht mehr funktionieren.
- Die soef Adapter firetv und wifilight funktionieren nicht mehr und haben Updates bekommen: Bitte wifilight 1.1.0 bzw firetv 1.0.0 nutzen. Falls jemand "wifilight-community" oder "firetv-community" nutzt bitte wieder zurück auf die anderen wechseln.
- Der soef Adapter lightify funktioniert ebenso nicht mehr. Da Lightify als Platform allerdings in ein paar Monaten nicht mehr weiter betrieben wird haben wir entscheiden hier keinen Aufwand mehr reinzustecken. Am besten die Geräte über zigbee direkt anbinden.
Weiterhin SOLLTE der Javascript Adapter auf 4.6.17 aktuaisiert werden, da hier Fehlerfälle aus Skripten besser behandelt werden.
Es werden aber, wie oben ausgeführt, einige Adapter ggf Warnungen ins Log schreiben. Die wichtigsten Adapter sind mit neuen Versionen im Stable Repository allerdings schon gefixt. Falls ein Adapter "nervt" dann bitte dem Entwickler melden und den Loglevel auf "Error" setzen.
Achtung: Slave-Systeme zuerst!
Bei einem Multi-Host-System, welches auf js-controller 2.2 läuft ist es beim Update auf Version 3.1 empfohlen, zuerst die Slave-Systeme zu aktualisieren. Der Master wird als letztes aktualisiert!
Bei Updates von Master/Slave-Systemen mit js-controller 1.5 oder früher auf die 3.0 müssen zwingend zuerst die Slaves und der Master als letztes aktualisiert werden. Die Slaves bleiben nach dem Update offline und werden erst wieder funktionieren wenn auch der Master auf die 3.1 aktualisiert wurde!
Windows
Auf Systemen, die mit dem neuen Windows Installer eingerichtet wurden, darf der js-controller nicht mit 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 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
)
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 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 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 help
wird eine Liste der möglichen Kommandozeilen-Kommandos angezeigt, die mit Version 2.0 um einige Befehle länger geworden ist.
Welche Neuerungen sind erwähnenswert?
Neben einiger weiterer Bugfixes gibt es folgende Änderungen und Fixes zu erwähnen:
- Der neue js-controller kann erkennen wenn es ein Node.js Update gab durch welches ggf, Adapter nicht mehr funktionieren und sollte diese automatisch reparieren (rebuilden). Wer also überlegt in dem Zuge des Tests seine Node.js Version anzuheben bitte mal explizit NICHT die übliche Anleitung nach dem Node-js update mit dem Rebuild befolgen sondern ioBroker einfach nach dem Node.js Update starten.
- Einige Adapter fangen Probleme mit Modulen ab und loggen dann einen Fehler, der nicht als automatischer Rebuild erkannt wird. Diese können manuell mittels
iobroker rebuild adaptername
oder falls das nicht funktioniert hatiobroker rebuild adaptername --install
neu gebaut werden. Diese Befehle lösen faktisch reinstall.js u.a. ab. Falls es dennoch nicht funktioniert gelten die bisherigen rebuild Anleitungen - Der js-controller prüft jetzt vor jedem Start eines Adapters wie viel RAM noch frei ist und warnt im Log falls dies zu wenig ist. Die Standard-Limits sind 100MB (Warnung) bzw. 50MB (Fehler) und dies soll verhindern das mehr Adapter-Prozesse genutzt werden als RAM verfügbar ist. Hier sind wir gespannt auf Eure Berichte.
- Logfiles sollten jetzt wirklich nach dem täglichen rotieren auf Linux-Systemen als .gz Dateien abgelegt werden.
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.
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.
Ingo
-
FAQ
FAQ1: Ich sehe Einträge wie "Error from InMemDB: Error: ERROR readDir id=xxxxx: Not exists" im Log. Was muss ich tun
Dieser Fehler kommt wenn zB das Backup versucht auf einen nicht angelegten Ordner zuzugreifen und ist uns leider durchgerutscgt. Er wird im js-controller 3.2 gefixt sein (September 2020). Wer den Fehler so lange nicht ignorieren kann, kann in /opt/iobroker/iobroker-data/files (ausnahmsweise) manuell die genannten Ordner als Verzeichnis anlegen. Das reicht aus.FAQ2: Wie funktioniert jetzt dieses Automatische-Rebuild bei Nodejs-Updates?
Nach einem Update des nodejs bitte zu allererstiobroker fix
aufrufen. Danach einfach den ioBroker starten udn ins Log schauen.
Falls ein Adapter mit einer typischen Fehlermeldung abstürzt erkennt der js-controller dies und versucht ein "rebuild" anzustossen. Es kann sein das dies nicht beim ersten Versuch klappt!! Dann versucht der js.controller es danach pot. gleich nochmals, aber mit einem anderen rebuild Befehl! ALso lasst Ihn das am besten machen. Je nach Adapter dauert der Rebuild eine ganze Weile. Der Adapter wird danach neu gestartet.Falls das nach drei mal nicht geklappt hat erst dann bleibt der Adapter aus und Ihr müsst selbst Hand anlegen!
-
@apollon77 sagte in js-controller 3.1 jetzt im STABLE!:
Wenn also der js-controller mit einer Fehlermeldung abstürzt (und nur dann!) werden die Fehlerdetails anonymisiert...
Beim HmIP-Adapter landen die SGTINs der Komponenten im GitHub. Das halte ich nicht für anonym.
-
@oFbEQnpoLKKl6mbY5e13 Ok, anonymisiere ich noch und richte im Sentry dafür speziell die anonymisierung ein. Danke für das Feedback.
-
Alles gut.
-
Ist es normal dass eine Neuinstallation noch immer mit JS-Controller 2.2.9 ankommt?
-
@Einstein67 tja .... wenn du auf stable bist .... ja
-
Hier gehts ja um: "js-controller 3.1 jetzt im STABLE"
-
@Einstein67 Eins nach dem anderen ... das kommt jetzt in 5 Minuten dran ... DONE
-
@Einstein67 Die Synchronisation der Installationsquellen kann schon ein paar Stunden dauern. Und ich weiß nicht, ob der Installer nicht vielleicht eine fix Version anfordert.
-
@Thomas-Braun Ne läuft über einen npm Tag und den habe ich gerade aktualisiert
-
Todesmutig habe ich das Update von 2.2.9 gewagt. Docker von buanet V4.1 auf einem Synology.
Das schwierigste war im Terminal ein Befehl eingeben zu können. Immer wenn ich das Terminal im Docker geöffnet habe kam keine Eingabeaufforderung. Irgendwann sah ich dann endlich eine Eingabeauforderung und habe die Befehle ausgeführt. Vorher noch mittels Backup-Adapter ein Backup gezogen. Gestern Nacht hat mein Synology auch ein Komplettbackup gemacht so dass ich bei Problemen hoffentlich irgendwie wieder zurück käme aber dazu kam es nicht. Das Update war in ein paar Minuten durch und nach dem Starten von ioBroker sah das Log genauso unauffällig auf wie vorher. Vielen Dank an alle Entwickler. Nicht nur für den js-controller sondern für alle ioBroker Adapter. Ohne ioBroker wäre für mich ein Smarthome nicht denkbar.
Node.js habe ich noch 10.18.1. Dabei bleibe ich erstmal. Bin froh das dieses Update zu Problemfrei lief.
-
Könnte man einen weiteren Hinweis im Pop Up einbauen zum js-Controller 3.0/3.1 ,
vielleicht mit einem Link zu diesem Thread .
Zwecks Info für die Newbies ... der Grundvorraussetzung !?.
-
@cash sagte in js-controller 3.1 jetzt im STABLE!:
Todesmutig habe ich das Update von 2.2.9 gewagt. Docker von buanet V4.1 auf einem Synology...
Auch von mir ein dickes Dankeschön an die Entwickler und fleißigen Tester
Läuft (noch) alles geschmeidig und fehlerfrei. Dank der hiesigen Anleitung gar kein Problem!
-
da schliesse ich mich an.
Bei mir läuft iobroker im Docker (buanet) auf der Syno. Nach dem Update alles wieder fehlerfrei gestartet. Großartiger Job - Danke an alle Mitwirkenden!
-
Guten Abend,
wie erfolgt das update bein win (installer von stabilo..).
Habe noch nix gesehen von stabilo..
Oder habe ich etwas übersehen?
Ganz konkret:
Wie erfolgt update bei win (mit installer) bei einem master und slave system?mfg
-
Macht es Sinn gleich auf Node 14 zu gehen wenn man neuinstalliert?
-
@eviltrooper Nein. Ich würde zur Zeit 12 nehmen.
-
Ok. Danke
-
@Glasfaser Es gibt bereits einen Info Adapter Popup zu controler 3.1 ... sogar 2 ... je nachdem ob die nodejs Version < oder > 10 ist ... Da sind die Links drin.