NEWS
js-controller 4.0 jetzt im BETA/LATEST!
-
Hallo ioBroker-Community,
nach längerer Entwicklungszeit kommt heute der neue js-controller 4.0 (Releasename "Isabelle") ins Beta/Latest 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.
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. 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 , welche NOCH NICHT für js-controller 4.0 aktualisiert wurde. Infos 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:
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 Stable-Release dann genau so reibungslos verläuft wie bei den letzten Versionen.
In Summe sind in diese Version wieder über 100 Änderungen in über 300 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. Wer überlegt die Node.js Version anzuheben bitte weiter unten im Abschnitt "Was ist zu testen" lesen
Es gibt aktuell keine bekannten inkompatiblem Adapter, aber einige Empfehlungen weiter unten.
Installation
VOR der Installation
Wie der Thread-Name sagt ist diese version nur für die User verfügbar, die das Beta/Latest Repository nutzen! Bei Stable Systemen wird das Update noch nicht angeboten.
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. Eine alte 3.3.x-Version des js-controller kann im Notfall einfach wieder pernpm install iobroker.js-controller@version
("version" durch die gewünschte Versionsnummer ersetzen, vorher ins ioBroker Verzeichnis wechselncd /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-Aktualisierungen
Aktuell sind zwei Adapter bekannt, welche Inkompatibel sind:
- Backitup sollte auf 2.3.3+ aktualisiert sein, damit vor allem Restores mit js-controller 4 sauber funktionieren
- Node-Red muss in Verson 2.4.2 Installiert 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
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 3.3 oder höher 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-update
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 iobroker fix
- Wie üblich wird das Update dann per
iobroker upgrade self
ausgeführt. - ioBroker starten (
iobroker start
)
Die Installation wird - wenn Sie von einem 2.x/3.x-System aus erfolgt einige Warnungen/Fehler loggen. Wenn diese aussgehen 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.4 npm install iobroker.js-controller@4.0.4 --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 SUPPORTED
Wichtig: 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 ein ' "connectTimeout": 2000,`
- Zahl ändern in 5000
- 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 viacurl -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.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 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 die Features
- Prüfen das mit JSONL alles tut (Im Backup Dir werden die letzten "File DB Backups" liegen bleiben, kann man manuell löschen)
- Bitte generell Augenmerk darauf legen das alle CLI Kommandos noch tun die man so nutzt. Da wurde einiges unter der Haube überarbeitet
- Gern mal ein Nodejs update testen um zu schauen das das neue Rebuild tut wie es soll
- 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.
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ß beim Testen und vielen Dank für Eure Unterstützung!
Ingo
-
FAQ
Known Issues
Aktuell sind folgende Themen bekannt, welche noch parallel bearbeitet werden:
- Admin hat bei den "Host settings" noch keine Wahlmöglichkeit für "JSONL". Daher bitte den DB Typ aktuell nicht über Admin ändern! -> Fixed since Admin 5.3.0
- Die "Migration zu JSONL"-Meldung im Admin kommt auch bei Neuinstallationen. Dies wird spätestens mit dem Stable-Release nicht mehr vorkommen.
- Der "Rebuild"-Button in der Adapter-Kachel im Admin5 liefert einen Fehler bei der Ausführung. Der Button in Admin wird entfernt. -> Fixed since Admin 5.3.0
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 all
ausführen. Falls Einträge von Adaptern enthalten sein sollten die nicht mehr installiert sind, dann können diese Dateien manuell gelöscht werden.Warning: Accessing non-existent property '...' of module exports inside circular dependency
Wenn beim Ausführen von CLI Befehlen 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 dependency
Wenn ein Update des node-red Adapters (bzw Uninstall falls nicht benötigt) nicht hilft dann bitte mit
npm list mongodb
(im iobroker Dir/opt/iobroker
) rausfinden wo es herkommt. Falls etwas von "extranous" steht dann einfal pernpm uninstall mongodb
(im iobroker Dir/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 wird dort eine Instanz angelegt. Wer das nicht will kann diese manuell wider 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.
Bitte hier Feedback geben wie es geht.
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 status
wird nach der Installation anstelle "file" jetzt "jsonl" anzeigen. Das wars auch schon. Backups über BackItUp oderiob backup
und 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). Ü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 custom
und dort bei der Abfrage des DB Typsfile
angeben. Alle weiteren Fragen beantworten und dann die Migration abwarten. Danach zeigtiob status
wieder "file" an. Dann kann ein Backup für den Restore in einer kleineren Version erstellt werden oder ein Downgrade vianpm 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 activateSets
aktiviert 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 periob object deactivateSets
ebenso möglich. -
endlich..
-
@apollon77
Fehlermeldung beim Update:Update js-controller from @3.3.22 to @4.0.3 NPM version: 6.14.15 npm install iobroker.js-controller@4.0.3 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call) In file included from ../../nan/nan.h:58, from ../src/unix_dgram.cc:5: /home/iobroker/.cache/node-gyp/14.18.2/include/node/node.h:787:7: warning: cast between incompatible function types from ‘void ()(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void ()(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type] 787 | (node::addon_register_func) (regfunc), \ | ^~~~~~~~~~~~~ /home/iobroker/.cache/node-gyp/14.18.2/include/node/node.h:821:3: note: in expansion of macro ‘NODE_MODULE_X’ 821 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage) | ^~~~~ ../src/unix_dgram.cc:404:1: note: in expansion of macro ‘NODE_MODULE’ 404 | NODE_MODULE(unix_dgram, Initialize) | ^~~~~ Server Objects 127.0.0.1:36192 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets"] Server States 127.0.0.1:60572 Error from InMemDB: Error: GET-UNSUPPORTED for namespace meta.: Data=["meta.states.protocolVersion"] Server Objects 127.0.0.1:36192 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.protocolVersion"] Server States 127.0.0.1:60574 Error from InMemDB: Error: PSUBSCRIBE-UNSUPPORTED for namespace meta.: Data=["meta.*"] Server Objects 127.0.0.1:36192 Error from InMemDB: Error: Unknown LUA script load npm ERR! code ELIFECYCLE npm ERR! errno 22 npm ERR! iobroker.js-controller@4.0.3 install: `node iobroker.js setup first` npm ERR! Exit status 22 npm ERR! npm ERR! Failed at the iobroker.js-controller@4.0.3 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2022-02-05T21_26_27_051Z-debug.log host.ioBroker Cannot install iobroker.js-controller@4.0.3: 22 }
Fehlermeldung beim Fix:
kusi@ioBroker:~$ iobroker fix library: loaded Library version=2021-12-27 ioBroker is not installed in /opt/iobroker! Cannot fix anything... kusi@ioBroker:~$ iobroker start kusi@ioBroker:~$ iobroker status internal/modules/cjs/loader.js:905 throw err; ^ Error: Cannot find module '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15) at Function.Module._load (internal/modules/cjs/loader.js:746:27) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) at internal/main/run_main_module.js:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
Fehlermeldung beim Status:
kusi@ioBroker:~$ iobroker status internal/modules/cjs/loader.js:905 throw err; ^ Error: Cannot find module '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15) at Function.Module._load (internal/modules/cjs/loader.js:746:27) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) at internal/main/run_main_module.js:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
-
@kusi Ok, schauen wir. Für dich zum fixen:
Mach einen direkten
npm i iobroker.js-controller@4.0.3
befehl bitte ... damit sollte es wieder gehen -
@apollon77 sagte in js-controller 4.0 jetzt im BETA/LATEST!:
npm i iobroker.js-controller@4.0.3
kusi@ioBroker:~$ npm i iobroker.js-controller@4.0.3 > iobroker.js-controller@4.0.3 preinstall /home/kusi/node_modules/iobroker.js-controller > node lib/preinstallCheck.js NPM version: 6.14.15 > iobroker.js-controller@4.0.3 install /home/kusi/node_modules/iobroker.js-controller > node iobroker.js setup first Successfully migrated 14 objects to Redis Sets object system.licenses created object _design/system updated { "defaultPrivate": "-----BEGIN RSA PRIVATE KEY-----***-----END RSA PRIVATE KEY-----\r\n", "defaultPublic": "-----BEGIN CERTIFICATE-----***-----END CERTIFICATE-----\r\n" } Update certificate defaultPrivate The object "system.certificates" was updated successfully. Update certificate defaultPublic The object "system.certificates" was updated successfully. Renamed repository "default to "stable" Renamed repository "latest to "beta" States DB type migrated from "file" to "jsonl" Objects DB type migrated from "file" to "jsonl" Could not read notifications.json: /home/kusi/iobroker-data/notifications.json: ENOENT: no such file or directory, open '/home/kusi/iobroker-data/notifications.json' ioBroker configuration updated npm WARN saveError ENOENT: no such file or directory, open '/home/kusi/package.json' npm WARN enoent ENOENT: no such file or directory, open '/home/kusi/package.json' npm WARN kusi No description npm WARN kusi No repository field. npm WARN kusi No README data npm WARN kusi No license field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (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"}) + iobroker.js-controller@4.0.3 added 73 packages from 29 contributors, updated 2 packages and audited 708 packages in 22.432s 24 packages are looking for funding run `npm fund` for details found 55 vulnerabilities (15 low, 7 moderate, 33 high) run `npm audit fix` to fix them, or `npm audit` for details
"RSA Private Key" und "Certificate" habe ich entfernt. Denke dass dies okay ist?
Meldung auf den Status:
kusi@ioBroker:~$ iobroker status internal/modules/cjs/loader.js:905 throw err; ^ Error: Cannot find module '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15) at Function.Module._load (internal/modules/cjs/loader.js:746:27) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12) at internal/main/run_main_module.js:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
-
@kusi Ok, in welchem verzeichnis haste das denn ausgeführt? Sollte /opt/iobroker sein
-
Als Beta-Tester sollte man nicht in
kusi@ioBroker:~$
stehen, wenn man seine Installation repariert. -
@apollon77 sagte in js-controller 4.0 jetzt im BETA/LATEST!:
Sollte /opt/iobroker sein
Daran lag es tatsächlich. Dass dies eine Rolle spielt, habe ich ehrlich gesagt nicht gewusst...
-
@kusi Tut es. Und das sollte eigentlich Beta-Tester-Grundwissen sein.
Jetzt hast du das im Home (mit ~ abgekürzt) des Users kusi installiert -
@thomas-braun sagte in js-controller 4.0 jetzt im BETA/LATEST!:
Beta-Tester-Grundwissen
Vielen Dank für deine und @apollon77 ´s Hilfe.
Ich muss zugestehen dass ich das Beta-Tester-Grundwissen (noch) nicht habe.
Warum ich die Beta-Version installiert habe, dafür gibt es keinen intelligenten Grund, eher aus Blödsinn. Neugier.Jetzt hast du das im Home (mit ~ abgekürzt) des Users kusi installiert
Soll ich etwas löschen?
Ein Backup der kompletten VM, sowie ioBroker habe ich natürlich gemacht. -
@kusi DU solltest in deinem Home jetzt ein node_modules haben und ggf paar Extra Files ... kannste löschen
-
@apollon77 sagte in js-controller 4.0 jetzt im BETA/LATEST!:
deinem Home jetzt ein node_modules haben
Ja, habe ich, wobei ich ein Teil schon vorher hatte, da ich node_modules für die Neeo-Remote installieren musste.Soll ich den kompletten Inhalt von /home/kusi löschen und nötigenfalls meine node_module neu installieren?
-
@kusi Wie du magst. SOnst hast da halt mehr drin. Aber ja besser aufäumen
-
@apollon77 auch hier etwas holpriges Upgrade auf einem brandneuen System (Docker mit latest-v6 image).
- Grundsetup in der GUI
iob fix
zum Sicherstellen dass die folgenden Fehler nicht von evtl. vorh. Fehlern kommeniob update && iob upgrade self
bringt gleichen Fehler wie hier- nach erfolgreichem
npm i iobroker.js-controller@4.0.3
gibts beim Neustart einen permission Fehler, Admin startet nicht - nach
iob fix
läuft es nun fehlerfrei
Gratulation zum Release!
-
Danke arbeite bereits am relevanten Fix. Das Problem ist genau das eine was wir vorher nicht testen konnten 4.0.4 kommt heute Abend noch.
-
@apollon77 Was konnte denn im Vorfeld nicht getestet werden?
-
@feuersturm "iob upgrade self" ... Das tickt minimal anders wie ein direkter npm Install
-
@apollon77 sagte in js-controller 4.0 jetzt im BETA/LATEST!:
Aber ja besser aufäumen
erledigt, vielen Dank...
Sollte /opt/iobroker sein
Müssen die Befehle
iobroker update iobroker upgrade self
immer im obigen Verzeichnis ausgeführt werden?
-
Master/Slave System, redis/redis, node 14.19.0
Ich habe testweiße nur den Master auf 4.0.3 hochgezogen, der Rest läuft auf 3.3.22.
Alle Adapter sind grün.
Erhalte nur lediglich folgendes im log:
zigbee.0 2022-02-06 00:09:40.269 warn (135012) A 60a423fffe7ddd1d 0x60a423fffe7ddd1d cloud.0 2022-02-06 00:09:36.145 error (135399) Cannot activate admin.2 for cloud, because authentication is enabled. Please create extra instance for cloud host.ioBroker-Rock 2022-02-06 00:09:05.905 error instance system.adapter.daswetter.0 terminated with code 15 (UNKNOWN_ERROR) cloud.0 2022-02-06 00:09:05.794 error (135399) Cannot activate admin.2 for cloud, because authentication is enabled. Please create extra instance for cloud sainlogic.0 2022-02-06 00:09:02.426 warn (135440) slow connection to objects DB. Still waiting ... daswetter.0 2022-02-06 00:09:00.082 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_4.symbol_value2: DB closed] daswetter.0 2022-02-06 00:09:00.080 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_4.symbol_desc2: DB closed] daswetter.0 2022-02-06 00:09:00.079 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_4.day_value: DB closed] daswetter.0 2022-02-06 00:09:00.078 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_4.day_name: DB closed] daswetter.0 2022-02-06 00:09:00.077 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_4: DB closed] daswetter.0 2022-02-06 00:09:00.076 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.windchill_value: DB closed] daswetter.0 2022-02-06 00:09:00.074 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.snowline_value: DB closed] daswetter.0 2022-02-06 00:09:00.073 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.clouds_value: DB closed] daswetter.0 2022-02-06 00:09:00.072 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.pressure_value: DB closed] daswetter.0 2022-02-06 00:09:00.068 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.humidity_value: DB closed] daswetter.0 2022-02-06 00:09:00.066 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.rain_value: DB closed] daswetter.0 2022-02-06 00:09:00.064 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.windgusts_value: DB closed] daswetter.0 2022-02-06 00:09:00.062 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.windIconURL: DB closed] daswetter.0 2022-02-06 00:09:00.061 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.wind_value: DB closed] daswetter.0 2022-02-06 00:09:00.059 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.wind_dir: DB closed] daswetter.0 2022-02-06 00:09:00.058 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.wind_symbol: DB closed] daswetter.0 2022-02-06 00:09:00.056 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.wind_symbolB: DB closed] daswetter.0 2022-02-06 00:09:00.052 error (135237) exception in await insertIntoList [Error: Could not check object existence of daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.iconURL: DB closed] daswetter.0 2022-02-06 00:09:00.038 error (135237) exception in await insertIntoList [Error: DB closed] daswetter.0 2022-02-06 00:09:00.037 warn (135237) Could not perform strict object check of state daswetter.0.NextDaysDetailed.Location_1.Day_3.Hour_8.symbol_value: Connection is closed. daswetter.0 2022-02-06 00:08:59.926 error (135237) exception in await insertIntoList [Error: DB closed] discovergy.0 2022-02-06 00:08:59.820 error (135380) State type : printedFullSerialNumber unknown, send this information to the developer ==> printedFullSerialNumber : "1ESYxxxxx" dwd.0 2022-02-06 00:08:59.548 warn (135429) slow connection to objects DB. Still waiting ... daswetter.0 2022-02-06 00:08:59.375 warn (135237) Terminated (UNKNOWN_ERROR): Without reason daswetter.0 2022-02-06 00:08:59.369 error (135237) force terminate device-reminder.0 2022-02-06 00:08:54.654 warn (135418) slow connection to objects DB. Still waiting ... cloud.0 2022-02-06 00:08:47.181 warn (135399) slow connection to objects DB. Still waiting ... discovergy.0 2022-02-06 00:08:41.292 warn (135380) slow connection to objects DB. Still waiting ... shuttercontrol.0 2022-02-06 00:08:37.694 warn (135323) This object will not be created in future versions. Please report this to the developer. shuttercontrol.0 2022-02-06 00:08:37.693 warn (135323) Object shuttercontrol.0.info.Azimut is invalid: Default value has to be type "number" but received type "string" shuttercontrol.0 2022-02-06 00:08:37.596 warn (135323) This object will not be created in future versions. Please report this to the developer. shuttercontrol.0 2022-02-06 00:08:37.595 warn (135323) Object shuttercontrol.0.info.Elevation is invalid: Default value has to be type "number" but received type "string"
cloud.0 2022-02-06 00:09:36.145 error (135399) Cannot activate admin.2 for cloud, because authentication is enabled. Please create extra instance for cloud host.ioBroker-Rock 2022-02-06 00:09:05.905 error instance system.adapter.daswetter.0 terminated with code 15 (UNKNOWN_ERROR) cloud.0 2022-02-06 00:09:05.794 error (135399) Cannot activate admin.2 for cloud, because authentication is enabled. Please create extra instance for cloud discovergy.0 2022-02-06 00:08:59.820 error (135380) State type : printedFullSerialNumber unknown, send this information to the developer ==> printedFullSerialNumber : "1ESYxxxxxxx" daswetter.0 2022-02-06 00:08:59.375 warn (135237) Terminated (UNKNOWN_ERROR): Without reason daswetter.0 2022-02-06 00:08:59.369 error (135237) force terminate shuttercontrol.0 2022-02-06 00:08:37.694 warn (135323) This object will not be created in future versions. Please report this to the developer. shuttercontrol.0 2022-02-06 00:08:37.693 warn (135323) Object shuttercontrol.0.info.Azimut is invalid: Default value has to be type "number" but received type "string" shuttercontrol.0 2022-02-06 00:08:37.596 warn (135323) This object will not be created in future versions. Please report this to the developer. shuttercontrol.0 2022-02-06 00:08:37.595 warn (135323) Object shuttercontrol.0.info.Elevation is invalid: Default value has to be type "number" but received type "string" yamaha.0 2022-02-06 00:07:17.065 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:17.065 warn (135059) Object yamaha.0.powerAllZones is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.996 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.996 warn (135059) Object yamaha.0.zone4 is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.945 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.944 warn (135059) Object yamaha.0.zone3 is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.908 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.907 warn (135059) Object yamaha.0.zone2 is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.879 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.879 warn (135059) Object yamaha.0.zone1 is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.492 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.491 warn (135059) Object yamaha.0.pureDirect is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.436 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.436 warn (135059) Object yamaha.0.hdmiOut2 is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.341 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.341 warn (135059) Object yamaha.0.hdmiOut1 is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.261 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.260 warn (135059) Object yamaha.0.Commands.partyModeVolumeDown is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.168 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.167 warn (135059) Object yamaha.0.Commands.partyModeVolumeUp is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:16.100 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:16.099 warn (135059) Object yamaha.0.partyMode is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.988 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.987 warn (135059) Object yamaha.0.adaptiveDRC is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.871 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.870 warn (135059) Object yamaha.0.extraBass is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.753 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.753 warn (135059) Object yamaha.0.YPAOVolume is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.685 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.685 warn (135059) Object yamaha.0.Commands.skip is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.621 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.618 warn (135059) Object yamaha.0.Commands.rewind is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.587 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.587 warn (135059) Object yamaha.0.Commands.skip is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.543 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.541 warn (135059) Object yamaha.0.Commands.pause is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.495 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.492 warn (135059) Object yamaha.0.Commands.stop is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.448 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.447 warn (135059) Object yamaha.0.refresh is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.398 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.397 warn (135059) Object yamaha.0.power is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.356 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.356 warn (135059) Object yamaha.0.mute is invalid: obj.common.min has an invalid type! Expected "number", received "boolean" yamaha.0 2022-02-06 00:07:15.129 warn (135059) This object will not be created in future versions. Please report this to the developer. yamaha.0 2022-02-06 00:07:15.128 warn (135059) Object yamaha.0.Commands.toggleMute is invalid: Default value has to be type "boolean" but received type "number" zigbee.0 2022-02-06 00:07:05.605 warn (135012) DeviceAvailability:Failed to ping 0xa4c138b854f91e6c TS130F synology.0 2022-02-06 00:07:02.580 warn (135023) This object will not be created in future versions. Please report this to the developer. synology.0 2022-02-06 00:07:02.579 warn (135023) Object synology.0.SurveillanceStation.getSnapshotCamera is invalid: Default value has to be type "string" but received type "number"