NEWS
js-controller 4.0.x jetzt für alle User im STABLE!
-
Hallo ioBroker-Community,
nach l
ä
ngerer Entwicklungszeit kommt heute der neue js-controller 4.0 (Releasename "Isabelle") f
ü
r alle User ins Stable Repository (sollte im laufe des Abends bei allen auftauchen). Dieser Artikel enth
ä
lt alle wichtigen Infos zu diesem Release und im zweiten Post eine kleine FAQ.
Ich bedanke mich bei allen flei
ß
igen Testern der Community w
ä
hrend der Beta Phase!Node.js Versions-Anforderungen
In diesem Release entf
ä
llt Node.js 10.x, welches seit April letztem Jahr nicht mehr gepflegt wird. Node.js 16.x ist dazugekommen. Die unterst
ü
tzten Node.js Versionen sind damit: 12.x, 14.x und 16.x. Die empfohlene Node.js Version f
ü
r ioBroker heben wir mit diesem Release auf 14.x an (siehe auch https://forum.iobroker.net/topic/49480/node-js-10-x-ist-tot-es-lebe-node-js-14). Node.js 16.x wird mit js-controller 4.0 nun auch mit npm 7 bzw. 8 unterst
ü
tzt.
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-edition . Infos ebenso hier in der FAQ hier im Thread.Informationen zur Version
Neben einigen Optimierungen und Verbesserungen stand der Haupt-Fokus dieser Version auf Performance-Verbesserungen. Ein paar neue Features sind aber ebenfalls hinzugekommen. 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.Mit dem js-controller 4.0 wird intern die Datenbank von "file" auf "jsonl" umgestellt. Dies geschieht bei der Installation automatisch ohne weitere Aktionen, wenn file genutzt wird. Weitere Details dazu sieht in der FAQ (Post #2)! Nach erfolgter Migration erscheint beim n
ä
chsten
Ö
ffnen (oder Reloads falls offen) des Admin5 auch eine Information dazu:
F
ü
r Redis Installationen haben wir ein Problem entdeckt, welches von der betriebssystem-Konfiguration von dem Host abh
ä
ngt wo der Redis-Server drauf l
ä
uft. Wer also Redis als Datenbank nutzt bitte unter https://forum.iobroker.net/topic/52976/wichtiger-hinweis-f
ü
r-redis-installationen nachsehen und sein System pr
ü
fen und potentiell beheben.Detailliertere Informationen zu allen
Ä
nderungen und Features findet Ihr weiter unten und im Changelog.In Summe sind in dieser Version wieder
ü
ber 120
Ä
nderungen in
ü
ber 450 commits eingeflossen. Daf
ü
r bedanke mich diesmal wieder 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 4.0 ist generell kompatibel mit allen bestehenden ioBroker-Systemen. Ein Update von der 2.0/2.1/2.2/3.x ist problemlos m
ö
glich. Wir empfehlen allerings vor dem Update auf die 4.0 idealerweise ein Update auf die 3.3.x durchzuf
ü
hren, da ein Downgrade nach einem erfolgten Update nur auf eine 3.3.x m
ö
glich ist (siehe FAQ)! Nur die Node.js Version muss weiterhin mindestens 12.x sein, wie oben bereits ausgef
ü
hrt.Aktuell ist nur node-red <2.4.2 inkompatibel, aber es gibt noch einige Versions-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. Eine alte 3.3.x-Version des js-controller kann im Notfall einfach wieder per npm install iobroker.js-controller@version("version" durch die gew
ü
nschte Versionsnummer ersetzen, vorher ins ioBroker Verzeichnis wechseln cd /opt/iobroker) installiert werden und sollte alles wieder herstellen.F
ü
r die User, welche die experimentelle JSONL-Datenbank bereits einsetzen,
ä
ndert sich nichts - ausser das dieser Datenbank-Typ nun die offizielle ist 
N
ö
tige Adapter-AktualisierungenAktuell sind drei Adapter bekannt, welche aktualisiert werden m
ü
ssen bzw. sollten:- Backitup sollte auf 2.3.3+ aktualisiert sein, damit vor allem Restores mit js-controller 4 sauber funktionieren
- Admin sollte auf 5.3.1+ aktualisiert sein, damit alle Settings f
ü
r den js-controller 4 korrekt editiert werden k
ö
nnen - Node-Red muss auf Verson 2.4.2 aktualisiert sein, da der Adapter sonst nicht funktioniert
- km200 (see https://github.com/frankjoke/ioBroker.km200/issues/69
Fix is described in https://forum.iobroker.net/post/760260 - systeminformation Am Ende der gleiche wie wie direkt oben dr
ü
ber bei km200
Am besten dennoch VOR dem js-controller Update alle verf
ü
gbaren Adapter-Updates pr
ü
fen und alle Updates installieren, die im Changelog auf Optimierungen oder Anpassungen f
ü
r den js-controller 4.0 hinweisen.Es werden aber, wie oben ausgef
ü
hrt, einige Adapter ggf. Warnungen ins Log schreiben - und ggf kommen ein paar neue dazu, welche aber prim
ä
r bei Objektanlagen interessant sind und weniger im Betrieb "nerven". Meldungen die vor dem Upgrade im Log waren sind jetzt auch noch da.
Bitte zuerst versuchen die gemeldeten Objekt-IDs via Admin zu l
ö
schen und den Adapter neu zu starten. Wenn die Meldungen danach nicht weg sein sollten ist aktuell die einzige Option das Loglevel der betroffenen Instanz auf "Warning" zu setzen - aber erst nachdem die Logs idealerweise in einem GitHub-Issue beim entsprechendem Adapter gemeldet wurden!Achtung: MASTER-Systeme Reihenfolgen beachten!
Bei einem Multi-Host-System, welches auf js-controller 2.2 oder 3.x l
ä
uft, ist es beim Update auf Version 4.0 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 4.0 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 4.0 aktualisiert wurde!Windows
Aus der Community kommt von @sigi234 eine Anleitung f
ü
r ein Windows Update https://forum.iobroker.net/topic/51574/windows-installation-updateF
ü
r alle "alten manuellen" Installationen giltiobroker update- ioBroker muss gestoppt sein.
- Vor dem Update bitte pr
ü
fen das keine Prozesse mehr laufen iobroker upgrade self- ioBroker starten
Linux
ACHTUNG: Wer von einer kleineren js-controller Version als 3.2 kommt, sollte direkt per npm installieren und NICHT per
iob uograde self!!iobroker update(Repository aktualisieren)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 iobroker fix(Alle Rechte im Dateisystem, Linux-Pakete u.
ä
. aktualisieren)iobroker upgrade self(Ausf
ü
hrung des Updates)iobroker start
Die Installation wird - wenn Sie von einem 2.x/3.x-System aus erfolgt - einige Warnungen/Fehler loggen. Wenn diese aussehen wie im folgenden Bild gezeigt (GET/SET-UNSUPPOTED bzw LUA script load error), ist dies erwartet und ok!
Update js-controller from @3.3.22 to @4.0.15 npm install iobroker.js-controller@4.0.15 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call) Server Objects 127.0.0.1:37942 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets"] Server Objects 127.0.0.1:37942 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.protocolVersion"] Server States 127.0.0.1:60678 Error from InMemDB: Error: GET-UNSUPPORTED for namespace meta.: Data=["meta.states.protocolVersion"] Server States 127.0.0.1:60680 Error from InMemDB: Error: PSUBSCRIBE-UNSUPPORTED for namespace meta.: Data=["meta.*"] Server Objects 127.0.0.1:37942 Error from InMemDB: Error: Unknown LUA script load Server Objects 127.0.0.1:37942 Error from InMemDB: Error: Unknown LUA script load Server Objects 127.0.0.1:37942 Error from InMemDB: Error: Unknown LUA script load Server Objects 127.0.0.1:37942 Error from InMemDB: Error: SET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets",{"type":"Buffer","data":[49]}] Server Objects 127.0.0.1:37942 Error from InMemDB: Error: multi NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: sadd NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: exec NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: multi NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: sadd NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: exec NOT SUPPORTEDWichtig: Falls es bei Updates von js-controller 3.2.x bei update oder upgrade einen Fehler gibt "No connection to database" dann bitte nochmals versuchen und wenn es wieder passiert folgende Schritte ausf
ü
hren:- Editiere /opt/iobroker/iobroker-data/iobroker.json
- Unter objects und states gibt es jeweils ein ' "connectTimeout": 2000,`
- Zahl
ä
ndern auf 5000 - Neu versuchen
- Der Wert kann so bleiben weil er eh beim js-controller 4 der neue Standardwert ist
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.Die Installation kann ggf. Warnungen ausspucken
ü
ber potentiell "deprecated" NPM Module oder Compiler-Warnungen oder (bei optionalen Paketen auch -Fehler) anzeigen (z.B, unix_dgram, serialport, pam_authentication und ggf andere). Hier gilt wie immer: Ignorieren 
Ebenso eine Aufforderung "npm audit fix" auszuf
ü
hren kann ignoriert werden!NACH der Installation
Nach der Installation sollte der ioBroker automatisch wieder starten. 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!
Wie bereits gesagt, viele
Ä
nderungen fanden hinter den Kulissen statt.BREAKING CHANGES
- Support for Node.js 10 is dropped! Supported are Node.js 12.x, 14.x and 16.x
- CLI command
iob update --updateablechanged toiob update --updatable - CLI command
iob update http://download.iobroker.net/sources-dist.jsonis not supported anymore - CLI command
iob rebuild adapternameis no longer supported because of the new way of automatic rebuilds and some unwanted side effects - CLI command
iob state get <id>will no longer handle binary state values (which was never really working before). We addediob state getBinary <id> <encoding>as new way. - Ensure that on a backup-restore the same adapters and adapter versions are restored as existing on backup time. Also check js-controller version and error on mismatch (is allowed to be forced accepted by --force parameter for restore)
- The "file" database will be automatically converted into JSONL and the database types that use "file" are adjusted to "jsonl" on installation (and backup restore). This means that a rollback of js-controller is only possible to 3.3 after 4.0 was installed! Rollback to former versions require a manual migration to "file" DB before the downgrade! (COMMUNICATION, TESTFOKUS)
Hier f
ü
r Interessierte als Spoiler noch alle weiteren
Ä
nderungen als Zusammenfassung:
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.Bitte checkt auch die "Known issues Liste" (zweiter Post) mit den Dingen die aktuell w
ä
hrend dem Beta-Test bekannt sind und bis zum Release noch angepasst werden.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
ß
mit der neuen Version des js-controller.Ingo
-
FAQ
Informationen zu pot. angezeigten Meldungen und Logs
(info) "Sets unsupported"
In MutliHost-Umgebungen wo noch nicht alle Hosts aktualisiert sind arbeitet eine Optimierung in einem Kompatibilit
ä
tsmodus. In diesem wird ggf vom js-controller und von Adaptern beim Start einmalig die Meldung "Sets unsupported" im Loglevel "info" geloggt. Diese verschwindet wenn alle Hosts auf js-controller 4.0+ sind.(warn) Object XXX is invalid: obj.common.min/max has an invalid type!
Dies ist eine neue Pr
ü
fung, wie oben bereits erw
ä
hnt, welche pr
ü
ft das der Minimum bzw Maximum Wert eines Objekts auch eine Zahl ist. Wenn diese Meldung kommt dann diese bitte per Issue an den Adapter-Entwickler weitergeben, das dies im Adapter behoben wird."Ignoring Directory "benchmark.files" because officially not created as meta ob ject. Please remove directory!"
Wenn bei der Inatallation des js-controller diese Meldung kommt:
The following notifications happened during sync: - Ignoring Directory "benchmark.files" because officially not created as meta ob ject. Please remove directory!Bitte ein
iob upload allausf
ü
hren. Falls Eintr
ä
ge von Adaptern enthalten sein sollten die nicht mehr installiert sind, dann k
ö
nnen diese Dateien manuell gel
ö
scht werden.TypeError: Cannot read property 'warn' of undefined
Falls der iobroker nicht mehr startet und im /var/log/syslog die untenstehende Fehlermeldung enthalten ist dann ist die backup Konfigurtation fehlerhaft.
/opt/iobroker/node_modules/@iobroker/db-base/lib/inMemFileDB.js:187 this.log.warn( ^ TypeError: Cannot read property 'warn' of undefined at ObjectsInMemoryServer.initBackupDir (/opt/iobroker/node_modules/@iobroker/db-base/lib/inMemFileDB.js:187:22)Bitte in /opt/iobroker/iobroker-data/iobroker.json im Bereich backup beo objects und states schauen das der Wert "period" eine Zahl in Minuten ist. Standard ist 120. Falls hier ein Wert
ü
ber 10.000 drin steht so ist dieser warum auch immer falsch eingetragen und muss bitte korrigiert werden. Danach tut alles wieder.Warning: Accessing non-existent property '...' of module exports inside circular dependency
Wenn beim Ausf
ü
hren von CLI Befehlen oder im ioBroker Log Meldungen wie die nachstehenden angezeigt werden so liegt dies an einer alten version der Library "mogodb" im System. Diese Meldungen kommen nicht vom js-controller Upgrade sondern von der Nutzung von Node.js 14+ und dieser Library. Diese wurde vom node-red Adapter ggf. installiert.(node:2218) Warning: Accessing non-existent property 'count' of module exports inside circular dependency (Use `node --trace-warnings ...` to show where the warning was created) (node:2218) Warning: Accessing non-existent property 'findOne' of module exports inside circular dependency (node:2218) Warning: Accessing non-existent property 'remove' of module exports inside circular dependency (node:2218) Warning: Accessing non-existent property 'updateOne' of module exports inside circular dependencyWenn ein Update des node-red Adapters (bzw Uninstall falls nicht ben
ö
tigt) nicht hilft dann bitte mit npm list mongodb(im iobroker Verzeichnis/opt/iobroker) rausfinden wo es herkommt. Falls etwas von "extranous" steht dann einfach pernpm uninstall mongodb(im iobroker Verzeichnis/opt/iobroker) l
ö
schen.Eine Backitup Instanz wird automatisch erstellt
Dies passiert weil Backitup f
ü
r Neuinstallationen ein Standardadapter ist. Der kleine Nebeneffekt ist, das, wenn noch keine Backitup Instanz existiert ABER der Adapter-Code auf einem Host installiert ist, dann dort eine Instanz angelegt wird. Wer das nicht will kann diese manuell wieder entfernen und dann aber am besten auch den Adapter deinstallieren. Dann passiert dies nicht noch einmal.Infos zum Thema "Rebuilds bei Node.js Aktualisierungen"
Generell gilt das Node.js Updates wie unter https://forum.iobroker.net/topic/44566/how-to-node-js-f
ü
r-iobroker-richtig-updaten-2021-edition beschrieben funktionieren. Der js-controller 4.0 f
ü
hrt nur die automatisierten Rebuilds etwas anders aus als die 3.3.In der neuen Version versuchen wir zuerst generell alle Module neu zu erstellen. Das sollte alle Probleme auf einen Schlag l
ö
sen. Falls das (und ja da kann es Gr
ü
nde geben) nicht funktioniert ist der zweite Versuch das wirklich betroffene NPM-Paket zu identifizieren (also z.B. direkt "serialport" o.
ä
.) und dieses neu zu kompilieren. Das hat deutlich weniger Nebeneffekte wie die bisherigen Versuche.Aktuell sind zwei Module bekannt die leider eine manuelle Korrekt ben
ö
tigen (wir haben es bei den Modulen gemeldet, sodass sich das in Zukunft l
ö
st). Dazu dann die Meldungen im Log befolgen.FAQ zur DB Umstellung File -> JSONL
Ich nutze Redis. Betrifft mich das?
Wenn Du f
ü
r beide Datenbanken einen Redis einsetzt dann nicht. Es ist nur relevant wenn eine oder beide DBs "File" sind.Was ist denn so besser an der "JSONL"-Datenbank anstelle "File"?
Von der Funktionalit
ä
t ist alles identisch! Die beiden Datenbanken unterscheiden sich nur darin wie die Daten gespeichert werden.Die File-DB schreibt hier alles in einem gro
ß
en JSON-File regelm
ä
ß
ig - bei Objekten sind dies schnell mal 20MB. Dies kann durchaus viel I/O verursachen und ist vor allem bei SD-Karten-Basierten Systemen nicht optimal, weil es die Karte sehr belastet. Aber auch f
ü
r SSDs ist dies nicht optimal. Zus
ä
tzlich besteht das Problem das ein Absturz beim Schreiben dazu f
ü
hrt das das ganze File defekt ist. ioBroker greift in diesen F
ä
llen auf ein Backup-File zur
ü
ck.JSONL arbeitet hier anders.
Ä
nderungen werden erst einmal nur an die Datei angehangen und - nur wenn n
ö
tig - wird dann das File "komprimiert" und so neu geschrieben. Dies erfolgt aber viel seltener als bei der File-DB.
F
ü
r JSONL hat es @AlCalzone mal folgenderma
ß
en zusammengefasst:

JSONL ist resistenter. Ein kaputtes Byte in der DB macht nicht alles kaputt und ein Absturz beim Schreibvorgang sorgt nur daf
ü
r, dass die ausstehenden
Ä
nderungen verloren gehen, nicht alles.

JSONL schont die SD-Karte durch weniger und kleinere Schreibvorg
ä
nge (nur wenn n
ö
tig).

JSONL braucht zumindest phasenweise etwas mehr Platz (die DB ist bis auf Kompaktierungsvorg
ä
nge append-only)

JSONL braucht etwas l
ä
nger, wenn viele Objekte in kurzer Zeit geschrieben werden sollen (wobei meine letzten Tests nur noch Unterschiede im Rahmen der Standardabweichung ergeben haben)Wir denken das das neue Datenbank-Handling mehr Vorteile hat - vor allem f
ü
r SD-Karten- und SSD-basierte Systeme.Was bedeutet es das die Datenbank jetzt jsonl ist?
Im Normalfall bedeutet hies f
ü
r den t
ä
glichen Betrieb nichts. Auch die Umstellung erfolg vollautomatisch im Rahmen des js-controller Updates.
Einiob statuswird nach der Installation anstelle "file" jetzt "jsonl" anzeigen. Das wars auch schon. Backups
ü
ber BackItUp oder iob backupund auch restores funktionieren weiterhin ohne
Ä
nderungen.WICHTIG: Durch die automatische Datenbankumstellung ist ein direkter Downgrade oder Backup Restore eines mit 4.0 erstellten Backups nur noch auf js-controller 3.3.x m
ö
glich! F
ü
r andere Downgrade Optionen bitte im n
ä
chsten Eintrag lesen. Ein Downgrade mit Redis als Datenbank ist problemlos weiterhin m
ö
glich!Die Datenfiles im iobroker-data Verzeichnis haben jetzt .jsonl am Ende und nicht mehr .json. Die letzten "file DB .json"-Files werden umbenannt und liegen noch im Verzeichnis mit der Endung ".migrated".
Kann man die Einstellungen der JSONL
ä
ndern?Ja, auch die JSONL Datenbank hat einige Einstellungen (wie das "writeFileInterval" der File-DB fr
ü
her, welches bei jsonl nicht genutzt wird).
Ü
blicherweise muss da niemand Hand anlegen, weil die Defaults von uns bereits optimiert wurden.Wer dennoch schauen will finden unter https://github.com/ioBroker/ioBroker.js-controller/blob/master/packages/controller/conf/iobroker-dist.json#L53-L71 (Objects) bzw https://github.com/ioBroker/ioBroker.js-controller/blob/master/packages/controller/conf/iobroker-dist.json#L99-L117 die jeweiligen Default-Werte. Anpassungen k
ö
nnen einfach in Eurer iobroker.json manuell gemacht werden.Wie kann ich doch auf js-controller 3.2 oder kleiner downgraden wenn "jsonl" der DB Typ ist?
js-controller Versionen kleiner als 3.3.x hatten die n
ö
tigen Dateien f
ü
r eine "jsonl" Datenbank nicht an Board. Daher ist ein direkter Downgrade nicht m
ö
glich weil dann die Daten nicht lesbar sind!Daher muss ZUERST (!!) unter js-controller 4.0 die Datenbank manuell zur
ü
ck auf "file" migriert werden. Dies erfolgt per iob setup customund dort bei der Abfrage des DB Typsfileangeben. Alle weiteren Fragen beantworten und dann die Migration abwarten. Danach zeigtiob statuswieder "file" an. Dann kann ein Backup f
ü
r den Restore in einer kleineren Version erstellt werden oder ein Downgrade via npm i iobroker.js-controller@version(Vorher ins ioBroker Verzeichnis wechseln!) auf die gew
ü
nschte Version erfolgen.FAQ zu Redis "Sets" Optimierungen
F
ü
r Redis-basierte Systeme bringt der js-controller 4.0 einige Optimierungen mit. Eine davon nutzt spezielle interne Datenstrukturen, die konsistent initialisiert werden m
ü
ssen. Aufgrund einiger Edge Cases wird diese Optimierung daher automatisch nur f
ü
r Single-Host Redis-Systeme genutzt. Wer auch im Multi-Host-Umfeld mit Redis f
ü
r Objekte von den Optimierungen profitieren m
ö
chte kann diese manuell aktivieren. VORAB m
ü
ssen aber alle Hosts auf js-controller 4.0 sein und soweit alles gut sein das es keinen partiellen Downgrade mehr gibt.Dann k
ö
nnen die Optimierungen
ü
ber iob object activateSetsaktiviert werden, nachdem ALLE Hosts beendet wurden. So wird sichergestellt das die Datenstrukturen konsistent initialisiert werden k
ö
nnen. Danach k
ö
nnen alle Hosts wieder gestartet werden. Eine Deaktivierung der Optimierungen ist per iob object deactivateSetsebenso m
ö
glich. -
Und bevor einer der Beta-Tester frag: Es ist immer noch die 4.0.15 geblieben. Wer die also hat braucht kein weiteres Update.
Aber: bei Fragen zu Versionen <4.0.15 bitte den Beta Thread nutzen!
@apollon77 Puh dann bin ich leider raus. Ich habe nur Admi 5.2.1 installiert. Um h
ö
her zu kommen braucht man js-controller 3.2..22 oder h
ö
her. Habe dort nur 3.2.21.Generell sollte man erst erst auf die 3.2.22 gehen dann Admi-Update und dann auf js-contoller 4.0.15?
-
Und bevor einer der Beta-Tester frag: Es ist immer noch die 4.0.15 geblieben. Wer die also hat braucht kein weiteres Update.
Aber: bei Fragen zu Versionen <4.0.15 bitte den Beta Thread nutzen!
@apollon77
Ich gehe davon aus , das ich im Info-Adapter die Anzeigev16.14.0 (Die Version v16.x von Node.js wird derzeit nicht vollst
ä
ndig unterst
ü
tzt. - Empfohlene Version v14.19.0)ignorieren kann?
Sonst l
ä
uft alles super.
-
@apollon77 Puh dann bin ich leider raus. Ich habe nur Admi 5.2.1 installiert. Um h
ö
her zu kommen braucht man js-controller 3.2..22 oder h
ö
her. Habe dort nur 3.2.21.Generell sollte man erst erst auf die 3.2.22 gehen dann Admi-Update und dann auf js-contoller 4.0.15?
@cash Naja es spricht nichts dagegen den controller zu aktualisieren und dann auf der Kommandozeile den Admin zu aktualisieren und erst dann alles zu starten

Der Weg von 3.2 auf 4.0 m
ü
sste recht problemlos gehen,
ü
ber 3.3 w
ä
re "sicherer" weil du ein backup machen kannst was dann im Restore direkt geht - aber wenn DU in der FAQ liesst steht da wie Du auch auf eine 3.2 zur
ü
ckkommen kannst .... -
@apollon77
Ich gehe davon aus , das ich im Info-Adapter die Anzeigev16.14.0 (Die Version v16.x von Node.js wird derzeit nicht vollst
ä
ndig unterst
ü
tzt. - Empfohlene Version v14.19.0)ignorieren kann?
Sonst l
ä
uft alles super.
-
@maik-0 Ja, die Meldung muss da mal weg. Legst Du bitte mal bei info ein GitHub Issue an?
@apollon77
Ist erledigt. -
FAQ
Informationen zu pot. angezeigten Meldungen und Logs
(info) "Sets unsupported"
In MutliHost-Umgebungen wo noch nicht alle Hosts aktualisiert sind arbeitet eine Optimierung in einem Kompatibilit
ä
tsmodus. In diesem wird ggf vom js-controller und von Adaptern beim Start einmalig die Meldung "Sets unsupported" im Loglevel "info" geloggt. Diese verschwindet wenn alle Hosts auf js-controller 4.0+ sind.(warn) Object XXX is invalid: obj.common.min/max has an invalid type!
Dies ist eine neue Pr
ü
fung, wie oben bereits erw
ä
hnt, welche pr
ü
ft das der Minimum bzw Maximum Wert eines Objekts auch eine Zahl ist. Wenn diese Meldung kommt dann diese bitte per Issue an den Adapter-Entwickler weitergeben, das dies im Adapter behoben wird."Ignoring Directory "benchmark.files" because officially not created as meta ob ject. Please remove directory!"
Wenn bei der Inatallation des js-controller diese Meldung kommt:
The following notifications happened during sync: - Ignoring Directory "benchmark.files" because officially not created as meta ob ject. Please remove directory!Bitte ein
iob upload allausf
ü
hren. Falls Eintr
ä
ge von Adaptern enthalten sein sollten die nicht mehr installiert sind, dann k
ö
nnen diese Dateien manuell gel
ö
scht werden.TypeError: Cannot read property 'warn' of undefined
Falls der iobroker nicht mehr startet und im /var/log/syslog die untenstehende Fehlermeldung enthalten ist dann ist die backup Konfigurtation fehlerhaft.
/opt/iobroker/node_modules/@iobroker/db-base/lib/inMemFileDB.js:187 this.log.warn( ^ TypeError: Cannot read property 'warn' of undefined at ObjectsInMemoryServer.initBackupDir (/opt/iobroker/node_modules/@iobroker/db-base/lib/inMemFileDB.js:187:22)Bitte in /opt/iobroker/iobroker-data/iobroker.json im Bereich backup beo objects und states schauen das der Wert "period" eine Zahl in Minuten ist. Standard ist 120. Falls hier ein Wert
ü
ber 10.000 drin steht so ist dieser warum auch immer falsch eingetragen und muss bitte korrigiert werden. Danach tut alles wieder.Warning: Accessing non-existent property '...' of module exports inside circular dependency
Wenn beim Ausf
ü
hren von CLI Befehlen oder im ioBroker Log Meldungen wie die nachstehenden angezeigt werden so liegt dies an einer alten version der Library "mogodb" im System. Diese Meldungen kommen nicht vom js-controller Upgrade sondern von der Nutzung von Node.js 14+ und dieser Library. Diese wurde vom node-red Adapter ggf. installiert.(node:2218) Warning: Accessing non-existent property 'count' of module exports inside circular dependency (Use `node --trace-warnings ...` to show where the warning was created) (node:2218) Warning: Accessing non-existent property 'findOne' of module exports inside circular dependency (node:2218) Warning: Accessing non-existent property 'remove' of module exports inside circular dependency (node:2218) Warning: Accessing non-existent property 'updateOne' of module exports inside circular dependencyWenn ein Update des node-red Adapters (bzw Uninstall falls nicht ben
ö
tigt) nicht hilft dann bitte mit npm list mongodb(im iobroker Verzeichnis/opt/iobroker) rausfinden wo es herkommt. Falls etwas von "extranous" steht dann einfach pernpm uninstall mongodb(im iobroker Verzeichnis/opt/iobroker) l
ö
schen.Eine Backitup Instanz wird automatisch erstellt
Dies passiert weil Backitup f
ü
r Neuinstallationen ein Standardadapter ist. Der kleine Nebeneffekt ist, das, wenn noch keine Backitup Instanz existiert ABER der Adapter-Code auf einem Host installiert ist, dann dort eine Instanz angelegt wird. Wer das nicht will kann diese manuell wieder entfernen und dann aber am besten auch den Adapter deinstallieren. Dann passiert dies nicht noch einmal.Infos zum Thema "Rebuilds bei Node.js Aktualisierungen"
Generell gilt das Node.js Updates wie unter https://forum.iobroker.net/topic/44566/how-to-node-js-f
ü
r-iobroker-richtig-updaten-2021-edition beschrieben funktionieren. Der js-controller 4.0 f
ü
hrt nur die automatisierten Rebuilds etwas anders aus als die 3.3.In der neuen Version versuchen wir zuerst generell alle Module neu zu erstellen. Das sollte alle Probleme auf einen Schlag l
ö
sen. Falls das (und ja da kann es Gr
ü
nde geben) nicht funktioniert ist der zweite Versuch das wirklich betroffene NPM-Paket zu identifizieren (also z.B. direkt "serialport" o.
ä
.) und dieses neu zu kompilieren. Das hat deutlich weniger Nebeneffekte wie die bisherigen Versuche.Aktuell sind zwei Module bekannt die leider eine manuelle Korrekt ben
ö
tigen (wir haben es bei den Modulen gemeldet, sodass sich das in Zukunft l
ö
st). Dazu dann die Meldungen im Log befolgen.FAQ zur DB Umstellung File -> JSONL
Ich nutze Redis. Betrifft mich das?
Wenn Du f
ü
r beide Datenbanken einen Redis einsetzt dann nicht. Es ist nur relevant wenn eine oder beide DBs "File" sind.Was ist denn so besser an der "JSONL"-Datenbank anstelle "File"?
Von der Funktionalit
ä
t ist alles identisch! Die beiden Datenbanken unterscheiden sich nur darin wie die Daten gespeichert werden.Die File-DB schreibt hier alles in einem gro
ß
en JSON-File regelm
ä
ß
ig - bei Objekten sind dies schnell mal 20MB. Dies kann durchaus viel I/O verursachen und ist vor allem bei SD-Karten-Basierten Systemen nicht optimal, weil es die Karte sehr belastet. Aber auch f
ü
r SSDs ist dies nicht optimal. Zus
ä
tzlich besteht das Problem das ein Absturz beim Schreiben dazu f
ü
hrt das das ganze File defekt ist. ioBroker greift in diesen F
ä
llen auf ein Backup-File zur
ü
ck.JSONL arbeitet hier anders.
Ä
nderungen werden erst einmal nur an die Datei angehangen und - nur wenn n
ö
tig - wird dann das File "komprimiert" und so neu geschrieben. Dies erfolgt aber viel seltener als bei der File-DB.
F
ü
r JSONL hat es @AlCalzone mal folgenderma
ß
en zusammengefasst:

JSONL ist resistenter. Ein kaputtes Byte in der DB macht nicht alles kaputt und ein Absturz beim Schreibvorgang sorgt nur daf
ü
r, dass die ausstehenden
Ä
nderungen verloren gehen, nicht alles.

JSONL schont die SD-Karte durch weniger und kleinere Schreibvorg
ä
nge (nur wenn n
ö
tig).

JSONL braucht zumindest phasenweise etwas mehr Platz (die DB ist bis auf Kompaktierungsvorg
ä
nge append-only)

JSONL braucht etwas l
ä
nger, wenn viele Objekte in kurzer Zeit geschrieben werden sollen (wobei meine letzten Tests nur noch Unterschiede im Rahmen der Standardabweichung ergeben haben)Wir denken das das neue Datenbank-Handling mehr Vorteile hat - vor allem f
ü
r SD-Karten- und SSD-basierte Systeme.Was bedeutet es das die Datenbank jetzt jsonl ist?
Im Normalfall bedeutet hies f
ü
r den t
ä
glichen Betrieb nichts. Auch die Umstellung erfolg vollautomatisch im Rahmen des js-controller Updates.
Einiob statuswird nach der Installation anstelle "file" jetzt "jsonl" anzeigen. Das wars auch schon. Backups
ü
ber BackItUp oder iob backupund auch restores funktionieren weiterhin ohne
Ä
nderungen.WICHTIG: Durch die automatische Datenbankumstellung ist ein direkter Downgrade oder Backup Restore eines mit 4.0 erstellten Backups nur noch auf js-controller 3.3.x m
ö
glich! F
ü
r andere Downgrade Optionen bitte im n
ä
chsten Eintrag lesen. Ein Downgrade mit Redis als Datenbank ist problemlos weiterhin m
ö
glich!Die Datenfiles im iobroker-data Verzeichnis haben jetzt .jsonl am Ende und nicht mehr .json. Die letzten "file DB .json"-Files werden umbenannt und liegen noch im Verzeichnis mit der Endung ".migrated".
Kann man die Einstellungen der JSONL
ä
ndern?Ja, auch die JSONL Datenbank hat einige Einstellungen (wie das "writeFileInterval" der File-DB fr
ü
her, welches bei jsonl nicht genutzt wird).
Ü
blicherweise muss da niemand Hand anlegen, weil die Defaults von uns bereits optimiert wurden.Wer dennoch schauen will finden unter https://github.com/ioBroker/ioBroker.js-controller/blob/master/packages/controller/conf/iobroker-dist.json#L53-L71 (Objects) bzw https://github.com/ioBroker/ioBroker.js-controller/blob/master/packages/controller/conf/iobroker-dist.json#L99-L117 die jeweiligen Default-Werte. Anpassungen k
ö
nnen einfach in Eurer iobroker.json manuell gemacht werden.Wie kann ich doch auf js-controller 3.2 oder kleiner downgraden wenn "jsonl" der DB Typ ist?
js-controller Versionen kleiner als 3.3.x hatten die n
ö
tigen Dateien f
ü
r eine "jsonl" Datenbank nicht an Board. Daher ist ein direkter Downgrade nicht m
ö
glich weil dann die Daten nicht lesbar sind!Daher muss ZUERST (!!) unter js-controller 4.0 die Datenbank manuell zur
ü
ck auf "file" migriert werden. Dies erfolgt per iob setup customund dort bei der Abfrage des DB Typsfileangeben. Alle weiteren Fragen beantworten und dann die Migration abwarten. Danach zeigtiob statuswieder "file" an. Dann kann ein Backup f
ü
r den Restore in einer kleineren Version erstellt werden oder ein Downgrade via npm i iobroker.js-controller@version(Vorher ins ioBroker Verzeichnis wechseln!) auf die gew
ü
nschte Version erfolgen.FAQ zu Redis "Sets" Optimierungen
F
ü
r Redis-basierte Systeme bringt der js-controller 4.0 einige Optimierungen mit. Eine davon nutzt spezielle interne Datenstrukturen, die konsistent initialisiert werden m
ü
ssen. Aufgrund einiger Edge Cases wird diese Optimierung daher automatisch nur f
ü
r Single-Host Redis-Systeme genutzt. Wer auch im Multi-Host-Umfeld mit Redis f
ü
r Objekte von den Optimierungen profitieren m
ö
chte kann diese manuell aktivieren. VORAB m
ü
ssen aber alle Hosts auf js-controller 4.0 sein und soweit alles gut sein das es keinen partiellen Downgrade mehr gibt.Dann k
ö
nnen die Optimierungen
ü
ber iob object activateSetsaktiviert werden, nachdem ALLE Hosts beendet wurden. So wird sichergestellt das die Datenstrukturen konsistent initialisiert werden k
ö
nnen. Danach k
ö
nnen alle Hosts wieder gestartet werden. Eine Deaktivierung der Optimierungen ist per iob object deactivateSetsebenso m
ö
glich.In Anbetracht der Tatsache, dass nodeJS12 am 30.04.22 sein End Of Life erreicht w
ü
rde ich noch deutlicher auf eine aktuellere Installation hinweisen.
Wenn man eh in gr
ö
ß
erem Umfang am System schrauben will/muss... Dann kann man nodeJS auch gleich in Angriff nehmen. -
In Anbetracht der Tatsache, dass nodeJS12 am 30.04.22 sein End Of Life erreicht w
ü
rde ich noch deutlicher auf eine aktuellere Installation hinweisen.
Wenn man eh in gr
ö
ß
erem Umfang am System schrauben will/muss... Dann kann man nodeJS auch gleich in Angriff nehmen.@thomas-braun Naja deswegen ist ja oben drin das die EMpfehlung Node.JS 14 ist ... da gabs auch nen eigenen Thread zu ... ich verlinke den mal noch
-
noch 2 Fragen bevor ich es mache: darf ich iobroker fix bei einer Docker Installation (buanet) machen? Im Fehlerfall soll man eine Datei editieren? Wie mache ich das unter Linux?
Ach ja und funktioniert danach noch der Zugriff
ü
ber die Cloud
ü
ber die Pro-Lizenz? -
noch 2 Fragen bevor ich es mache: darf ich iobroker fix bei einer Docker Installation (buanet) machen? Im Fehlerfall soll man eine Datei editieren? Wie mache ich das unter Linux?
Ach ja und funktioniert danach noch der Zugriff
ü
ber die Cloud
ü
ber die Pro-Lizenz?@cash sagte in js-controller 4.0.x jetzt f
ü
r alle User im STABLE!:noch 2 Fragen bevor ich es mache: darf ich iobroker fix bei einer Docker Installation (buanet) machen?
@andre ?

Im Fehlerfall soll man eine Datei editieren? Wie mache ich das unter Linux?
Ich nutze vi oder nano als Editor ... Weiss nicht was bei dir drauf ist. geht an der Kommandozeile.
Ach ja und funktioniert danach noch der Zugriff
ü
ber die Cloud
ü
ber die Pro-Lizenz?Der js-controller hat damit nichts zu tun. Also ja, sollte ohne
Ä
nderungen gehen -
@cash sagte in js-controller 4.0.x jetzt f
ü
r alle User im STABLE!:noch 2 Fragen bevor ich es mache: darf ich iobroker fix bei einer Docker Installation (buanet) machen?
@andre ?

Im Fehlerfall soll man eine Datei editieren? Wie mache ich das unter Linux?
Ich nutze vi oder nano als Editor ... Weiss nicht was bei dir drauf ist. geht an der Kommandozeile.
Ach ja und funktioniert danach noch der Zugriff
ü
ber die Cloud
ü
ber die Pro-Lizenz?Der js-controller hat damit nichts zu tun. Also ja, sollte ohne
Ä
nderungen gehenIch bin zwar nicht @andre, aber aus eigener Erfahrung kann ich sagen: mehrfach benutzt und als funktionierend best
ä
tigt. -
@cash sagte in js-controller 4.0.x jetzt f
ü
r alle User im STABLE!:noch 2 Fragen bevor ich es mache: darf ich iobroker fix bei einer Docker Installation (buanet) machen?
@andre ?

Im Fehlerfall soll man eine Datei editieren? Wie mache ich das unter Linux?
Ich nutze vi oder nano als Editor ... Weiss nicht was bei dir drauf ist. geht an der Kommandozeile.
Ach ja und funktioniert danach noch der Zugriff
ü
ber die Cloud
ü
ber die Pro-Lizenz?Der js-controller hat damit nichts zu tun. Also ja, sollte ohne
Ä
nderungen gehen@apollon77
Hi,
wie werde ich diese Meldungen los? Kommen nach dem update2022-02-25 22:31:24.720 - warn: deconz.0 (12037) Object Groups.9.xy is invalid: Default value has to be stringified but received type "object" 2022-02-25 22:31:24.721 - warn: deconz.0 (12037) This object will not be created in future versions. Please report this to the developer. 2022-02-25 22:31:28.989 - warn: deconz.0 (12037) Object Groups.9.xy is invalid: Default value has to be stringified but received type "object" 2022-02-25 22:31:28.990 - warn: deconz.0 (12037) This object will not be created in future versions. Please report this to the developer. -
@apollon77
Hi,
wie werde ich diese Meldungen los? Kommen nach dem update2022-02-25 22:31:24.720 - warn: deconz.0 (12037) Object Groups.9.xy is invalid: Default value has to be stringified but received type "object" 2022-02-25 22:31:24.721 - warn: deconz.0 (12037) This object will not be created in future versions. Please report this to the developer. 2022-02-25 22:31:28.989 - warn: deconz.0 (12037) Object Groups.9.xy is invalid: Default value has to be stringified but received type "object" 2022-02-25 22:31:28.990 - warn: deconz.0 (12037) This object will not be created in future versions. Please report this to the developer.@michael-schmitt Indem Du schaust ob es beim Adapter schon ein Issue dazu gibt und sonst eins anlegst - und sonst kannst Du das Errorlevel der Instanz (Admin - Expertenmodus - Instanzen) auf error setzen
-
Es scheint wohl auch systeminfo (Auch @frankjoke wie km200) inkompatibel zu sein. Habe ich im Forum oben hinzugef
ü
gt. Fix ist der gleiche wiee bei km200 beschrieben -
Hallo ioBroker-Community,
nach l
ä
ngerer Entwicklungszeit kommt heute der neue js-controller 4.0 (Releasename "Isabelle") f
ü
r alle User ins Stable Repository (sollte im laufe des Abends bei allen auftauchen). Dieser Artikel enth
ä
lt alle wichtigen Infos zu diesem Release und im zweiten Post eine kleine FAQ.
Ich bedanke mich bei allen flei
ß
igen Testern der Community w
ä
hrend der Beta Phase!Node.js Versions-Anforderungen
In diesem Release entf
ä
llt Node.js 10.x, welches seit April letztem Jahr nicht mehr gepflegt wird. Node.js 16.x ist dazugekommen. Die unterst
ü
tzten Node.js Versionen sind damit: 12.x, 14.x und 16.x. Die empfohlene Node.js Version f
ü
r ioBroker heben wir mit diesem Release auf 14.x an (siehe auch https://forum.iobroker.net/topic/49480/node-js-10-x-ist-tot-es-lebe-node-js-14). Node.js 16.x wird mit js-controller 4.0 nun auch mit npm 7 bzw. 8 unterst
ü
tzt.
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-edition . Infos ebenso hier in der FAQ hier im Thread.Informationen zur Version
Neben einigen Optimierungen und Verbesserungen stand der Haupt-Fokus dieser Version auf Performance-Verbesserungen. Ein paar neue Features sind aber ebenfalls hinzugekommen. 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.Mit dem js-controller 4.0 wird intern die Datenbank von "file" auf "jsonl" umgestellt. Dies geschieht bei der Installation automatisch ohne weitere Aktionen, wenn file genutzt wird. Weitere Details dazu sieht in der FAQ (Post #2)! Nach erfolgter Migration erscheint beim n
ä
chsten
Ö
ffnen (oder Reloads falls offen) des Admin5 auch eine Information dazu:
F
ü
r Redis Installationen haben wir ein Problem entdeckt, welches von der betriebssystem-Konfiguration von dem Host abh
ä
ngt wo der Redis-Server drauf l
ä
uft. Wer also Redis als Datenbank nutzt bitte unter https://forum.iobroker.net/topic/52976/wichtiger-hinweis-f
ü
r-redis-installationen nachsehen und sein System pr
ü
fen und potentiell beheben.Detailliertere Informationen zu allen
Ä
nderungen und Features findet Ihr weiter unten und im Changelog.In Summe sind in dieser Version wieder
ü
ber 120
Ä
nderungen in
ü
ber 450 commits eingeflossen. Daf
ü
r bedanke mich diesmal wieder 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 4.0 ist generell kompatibel mit allen bestehenden ioBroker-Systemen. Ein Update von der 2.0/2.1/2.2/3.x ist problemlos m
ö
glich. Wir empfehlen allerings vor dem Update auf die 4.0 idealerweise ein Update auf die 3.3.x durchzuf
ü
hren, da ein Downgrade nach einem erfolgten Update nur auf eine 3.3.x m
ö
glich ist (siehe FAQ)! Nur die Node.js Version muss weiterhin mindestens 12.x sein, wie oben bereits ausgef
ü
hrt.Aktuell ist nur node-red <2.4.2 inkompatibel, aber es gibt noch einige Versions-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. Eine alte 3.3.x-Version des js-controller kann im Notfall einfach wieder per npm install iobroker.js-controller@version("version" durch die gew
ü
nschte Versionsnummer ersetzen, vorher ins ioBroker Verzeichnis wechseln cd /opt/iobroker) installiert werden und sollte alles wieder herstellen.F
ü
r die User, welche die experimentelle JSONL-Datenbank bereits einsetzen,
ä
ndert sich nichts - ausser das dieser Datenbank-Typ nun die offizielle ist 
N
ö
tige Adapter-AktualisierungenAktuell sind drei Adapter bekannt, welche aktualisiert werden m
ü
ssen bzw. sollten:- Backitup sollte auf 2.3.3+ aktualisiert sein, damit vor allem Restores mit js-controller 4 sauber funktionieren
- Admin sollte auf 5.3.1+ aktualisiert sein, damit alle Settings f
ü
r den js-controller 4 korrekt editiert werden k
ö
nnen - Node-Red muss auf Verson 2.4.2 aktualisiert sein, da der Adapter sonst nicht funktioniert
- km200 (see https://github.com/frankjoke/ioBroker.km200/issues/69
Fix is described in https://forum.iobroker.net/post/760260 - systeminformation Am Ende der gleiche wie wie direkt oben dr
ü
ber bei km200
Am besten dennoch VOR dem js-controller Update alle verf
ü
gbaren Adapter-Updates pr
ü
fen und alle Updates installieren, die im Changelog auf Optimierungen oder Anpassungen f
ü
r den js-controller 4.0 hinweisen.Es werden aber, wie oben ausgef
ü
hrt, einige Adapter ggf. Warnungen ins Log schreiben - und ggf kommen ein paar neue dazu, welche aber prim
ä
r bei Objektanlagen interessant sind und weniger im Betrieb "nerven". Meldungen die vor dem Upgrade im Log waren sind jetzt auch noch da.
Bitte zuerst versuchen die gemeldeten Objekt-IDs via Admin zu l
ö
schen und den Adapter neu zu starten. Wenn die Meldungen danach nicht weg sein sollten ist aktuell die einzige Option das Loglevel der betroffenen Instanz auf "Warning" zu setzen - aber erst nachdem die Logs idealerweise in einem GitHub-Issue beim entsprechendem Adapter gemeldet wurden!Achtung: MASTER-Systeme Reihenfolgen beachten!
Bei einem Multi-Host-System, welches auf js-controller 2.2 oder 3.x l
ä
uft, ist es beim Update auf Version 4.0 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 4.0 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 4.0 aktualisiert wurde!Windows
Aus der Community kommt von @sigi234 eine Anleitung f
ü
r ein Windows Update https://forum.iobroker.net/topic/51574/windows-installation-updateF
ü
r alle "alten manuellen" Installationen giltiobroker update- ioBroker muss gestoppt sein.
- Vor dem Update bitte pr
ü
fen das keine Prozesse mehr laufen iobroker upgrade self- ioBroker starten
Linux
ACHTUNG: Wer von einer kleineren js-controller Version als 3.2 kommt, sollte direkt per npm installieren und NICHT per
iob uograde self!!iobroker update(Repository aktualisieren)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 iobroker fix(Alle Rechte im Dateisystem, Linux-Pakete u.
ä
. aktualisieren)iobroker upgrade self(Ausf
ü
hrung des Updates)iobroker start
Die Installation wird - wenn Sie von einem 2.x/3.x-System aus erfolgt - einige Warnungen/Fehler loggen. Wenn diese aussehen wie im folgenden Bild gezeigt (GET/SET-UNSUPPOTED bzw LUA script load error), ist dies erwartet und ok!
Update js-controller from @3.3.22 to @4.0.15 npm install iobroker.js-controller@4.0.15 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call) Server Objects 127.0.0.1:37942 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets"] Server Objects 127.0.0.1:37942 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.protocolVersion"] Server States 127.0.0.1:60678 Error from InMemDB: Error: GET-UNSUPPORTED for namespace meta.: Data=["meta.states.protocolVersion"] Server States 127.0.0.1:60680 Error from InMemDB: Error: PSUBSCRIBE-UNSUPPORTED for namespace meta.: Data=["meta.*"] Server Objects 127.0.0.1:37942 Error from InMemDB: Error: Unknown LUA script load Server Objects 127.0.0.1:37942 Error from InMemDB: Error: Unknown LUA script load Server Objects 127.0.0.1:37942 Error from InMemDB: Error: Unknown LUA script load Server Objects 127.0.0.1:37942 Error from InMemDB: Error: SET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets",{"type":"Buffer","data":[49]}] Server Objects 127.0.0.1:37942 Error from InMemDB: Error: multi NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: sadd NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: exec NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: multi NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: sadd NOT SUPPORTED Server Objects 127.0.0.1:37942 Error from InMemDB: Error: exec NOT SUPPORTEDWichtig: Falls es bei Updates von js-controller 3.2.x bei update oder upgrade einen Fehler gibt "No connection to database" dann bitte nochmals versuchen und wenn es wieder passiert folgende Schritte ausf
ü
hren:- Editiere /opt/iobroker/iobroker-data/iobroker.json
- Unter objects und states gibt es jeweils ein ' "connectTimeout": 2000,`
- Zahl
ä
ndern auf 5000 - Neu versuchen
- Der Wert kann so bleiben weil er eh beim js-controller 4 der neue Standardwert ist
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.Die Installation kann ggf. Warnungen ausspucken
ü
ber potentiell "deprecated" NPM Module oder Compiler-Warnungen oder (bei optionalen Paketen auch -Fehler) anzeigen (z.B, unix_dgram, serialport, pam_authentication und ggf andere). Hier gilt wie immer: Ignorieren 
Ebenso eine Aufforderung "npm audit fix" auszuf
ü
hren kann ignoriert werden!NACH der Installation
Nach der Installation sollte der ioBroker automatisch wieder starten. 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!
Wie bereits gesagt, viele
Ä
nderungen fanden hinter den Kulissen statt.BREAKING CHANGES
- Support for Node.js 10 is dropped! Supported are Node.js 12.x, 14.x and 16.x
- CLI command
iob update --updateablechanged toiob update --updatable - CLI command
iob update http://download.iobroker.net/sources-dist.jsonis not supported anymore - CLI command
iob rebuild adapternameis no longer supported because of the new way of automatic rebuilds and some unwanted side effects - CLI command
iob state get <id>will no longer handle binary state values (which was never really working before). We addediob state getBinary <id> <encoding>as new way. - Ensure that on a backup-restore the same adapters and adapter versions are restored as existing on backup time. Also check js-controller version and error on mismatch (is allowed to be forced accepted by --force parameter for restore)
- The "file" database will be automatically converted into JSONL and the database types that use "file" are adjusted to "jsonl" on installation (and backup restore). This means that a rollback of js-controller is only possible to 3.3 after 4.0 was installed! Rollback to former versions require a manual migration to "file" DB before the downgrade! (COMMUNICATION, TESTFOKUS)
Hier f
ü
r Interessierte als Spoiler noch alle weiteren
Ä
nderungen als Zusammenfassung:
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.Bitte checkt auch die "Known issues Liste" (zweiter Post) mit den Dingen die aktuell w
ä
hrend dem Beta-Test bekannt sind und bis zum Release noch angepasst werden.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
ß
mit der neuen Version des js-controller.Ingo
@apollon77 sagte in js-controller 4.0.x jetzt f
ü
r alle User im STABLE!:Node-Red muss auf Verson 2.4.2 aktualisiert sein, da der Adapter sonst nicht funktioniert
Ich werde auf diese Version nicht aktualisieren, da ich mir bereits mit @jwiesel die neueste github Version installiert hatte, die endlich ein paar issues und vor allen die aktuelle Version von Node Red der Version 2.x enth
ä
lt.Insofern finde ich diese Version 2.4.2 - die wahrscheinlich noch die NodeRed Version 1.x enth
ä
lt eher ungl
ü
cklich und auch nicht zeitlich abgestimmt. H
ä
tte man mit dem JS in Stable nicht noch warten k
ö
nnen, bis @jwiesel seine Version mit der neuesten NR Version kompatibel gemacht h
ä
tte, anstelle die alte NR Adapter Version vom August 2021 zu aktualisieren?Ich habe den admin heute aktualisiert - werde aber das System bzw. JS 4.x erst installieren, wenn eine neue NR Adapter version verf
ü
gbar ist, die eine aktuelle NR Version und die Kompatibilit
ä
t zum JS 4.x herstellt.Ich verstehe manchmal nicht, warum man manchmal so schnell die Adapter in stable
ü
berf
ü
hrt ohne diese Abh
ä
ngigkeiten besser zu koordinieren.Ich hoffe jedenfalls, dass man mit JS 3.3 solange arbeiten kann, bis die von @jwiesel NR adapter version offiziell mit JS 4.x arbeiten kann. Eine R
ü
ckbau auf die alte NR Version ist f
ü
r mich jedenfalls keine Alternative.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden