NEWS
js-controller 3.2 jetzt im STABLE!
-
Hallo,
habe das update gemacht und es kommen jetzt diese Meldungen.
Die verstehe ich zwar, nur kommen die von verschiedenen Adaptern und diese habe ich ja nicht selber angelegt. -
Kann es sein das Du in https://forum.iobroker.net/topic/44624/js-controller-3-3-jetzt-im-latest eher richtig bist als hier??
-
@apollon77 said in js-controller 3.2 jetzt im STABLE!:
Kann es sein das Du in https://forum.iobroker.net/topic/44624/js-controller-3-3-jetzt-im-latest eher richtig bist als hier??
oh ja :-)... Hatte nur in der INFO den Link kopiert und nicht direkt drauf geachtet.
DANKE -
@apollon77 sagte in js-controller 3.2 jetzt im STABLE!:
Developer relevant DEPRECATIONS/WARNINGS
(foxriver76) we warn if object not exists when setting a state via adapter.setState. Adjust your code that a state value is NOT set before the object is successfully created. If this deep check is NOT wanted for performance reasons the adapter needs to be initialized with strictObjectChecks = false!! (see DOCS LINK TODO)
@foxriver76 Habe versucht strictObjectChecks = false zu setzen, um folgende Warnings zu verhindern:
this.log.warn(`Object ${id} is invalid: ${e.message}`); this.log.warn('This object will not be created in future versions. Please report this to the developer.');
hat aber nichts gebracht.
function startAdapter(options) { options = options || {strictObjectChecks: false}; //KH Object.assign(options, { name: "gardena", install: adapter_install, unload: adapter_unload, objectChange: adapter_objectChange, stateChange: adapter_stateChange, ready: adapter_ready, message: adapter_message }); adapter = new utils.Adapter(options); return adapter; }
... oder habe ich da einen Anfängerfehler gemacht?
Anbei noch eine Frage: Dieses (see DOCS LINK TODO), wo finde ich das?
-
@klausiob Welchen Adapter entwickelst du denn? Und warum möchtest du das Flag setzen?
Ach so und
Id is invalid
hat nix mit den strictObjectChecks zu tun. Ist ein separater Check und sollte auf jeden Fall gefixt werden. -
@foxriver76 Ich versuche den alten Gardena-Adapter, der seit js-controller 3.2 nicht mehr richtig funktioniert erstmal für mich wieder zum Laufen zu bringen. Wollte mich nach 3 Jahren Javascript-Abstinenz mal wieder einarbeiten und etwas experimentieren. Bei dem Adapter gehen noch alle Statusabfragen, aber man kann keine Kommandos mehr absetzen. Qualitycode = [0x20].
Sorry, oder war es diese Fehlemeldung.2021-05-13 18:42:15.191 - warn: gardena.0 (9623) State "gardena.0.datapoints.xxx" has no existing object, this might lead to an error in future versions
Kannst Du mir trotzdem sagen, wo ich den Link finde (DOCS LINK TODO) aus dem 1. Beitrag?
-
@klausiob Also das mit dem invaliden Objekt, sollte ja eine Fehlermeldung ausgeben die relativ aussagekräftig ist. z. B
obj.type has to exist
dann fehlt dem Objekt bei Erstellung einfach das entsprechende Attribut. Dann schaust du kurz in die Doku, was du brauchst, meistens vermutlichstate
. Ist jetzt nur ein Beispiel, weiß ja nicht was für ein Fehler tatsächlich kommt. -
@klausiob sagte in js-controller 3.2 jetzt im STABLE!:
2021-05-13 18:42:15.191 - warn: gardena.0 (9623) State "gardena.0.datapoints.xxx" has no existing object, this might lead to an error in future versions
Kannst Du mir trotzdem sagen, wo ich den Link finde (DOCS LINK TODO) aus dem 1. Beitrag?
Ja das würde nicht geloggt werden mit
strictObjectChecks: false
. Ist allerdings sehr ungern gesehen, da dies an dieser Stelle so gefixt werden sollte, dass da ein Objekt zum State existiert. Sonst sieht ja auch kein User den State.Wenn du allerdings sagst
options = options || xy
dann wird
xy
nicht angezogen, wenn der Controller bereitsoptions
übergibt. Da ein Objekt immer truthy wäre und somit nicht der OR Part ausgeführt wird. Viel mehr müsstest du in denObject.assign
Teil alles übergeben, was immer ergänzt werden soll.Das sage ich dir jetzt aber eher um dir etwas logisch zu helfen und nicht damit du die
strictObjectChecks
ausschaltest.Häufig kommt der Fehler, da die States bereits gesetzt werden bevor die Objekte kreiert wurden, da Javascript asynchron ausgeführt wird. Sprich du solltest bevor States im Adapter gesetzt werden sicherstellen, dass die Objekte erstellt wurden. Hierfür empfehlen sich die Methoden welche ein Promise zurück liefern und somit via
async/await
genutzt werden können, wie z. B.extendObjectAsync
-
@foxriver76 sagte in js-controller 3.2 jetzt im STABLE!:
Da ein Objekt immer truthy wäre und somit nicht der OR Part ausgeführt wird. Viel mehr müsstest du in den Object.assign Teil alles übergeben, was immer ergänzt werden soll.
Ok, natürlich. Danke Dir. Man glaubt garnicht, was man in 3 Jahren vergisst. Nein ich will den Check nicht dauerhaft ausschalten, will nur gucken aus welcher Ecke welche Fehler/Warnings kommen. Hat ja bis js-controller 2 noch alles funktioniert. Habe erst vor Kurzem auf 3.2 upgedatet. Ich habe mir erstmal eine Entwicklungsumgebung mit node und Visual Studio Code aufgebaut. Kann noch nicht debuggen. (Habe früher mit eclipse gearbeitet).
2021-05-25 09:05:29.368 - warn: gardena.0 (14460) Object gardena.0.datapoints is invalid: obj.type has an invalid value () but has to be one of state, channel, device, enum, host, adapter, instance, meta, config, script, user, group, chart, folder 2021-05-25 09:05:29.369 - warn: gardena.0 (14460) This object will not be created in future versions. Please report this to the developer. 2021-05-25 09:05:29.373 - warn: gardena.0 (14460) Object gardena.0.locations is invalid: obj.type has an invalid value () but has to be one of state, channel, device, enum, host, adapter, instance, meta, config, script, user, group, chart, folder 2021-05-25 09:05:29.373 - warn: gardena.0 (14460) This object will not be created in future versions. Please report this to the developer. 2021-05-25 09:05:29.376 - warn: gardena.0 (14460) Object gardena.0.info.connection is invalid: obj.common.read has an invalid type! Expected "boolean", received "string" 2021-05-25 09:05:29.377 - warn: gardena.0 (14460) This object will not be created in future versions. Please report this to the developer. 2021-05-25 09:05:29.380 - warn: gardena.0 (14460) Object gardena.0.trigger_poll is invalid: obj.common.read has an invalid type! Expected "boolean", received "string" 2021-05-25 09:05:29.381 - warn: gardena.0 (14460) This object will not be created in future versions. Please report this to the developer.
Hier mal noch ein aktueller Ausschnitt von weiteren Warnings. Z.B.
"_id": "gardena.0.trigger_poll", "type": "state", "common": { "name": "poll", "desc": "Setting to true triggers a poll.", "type": "boolean", "def": "false", "read": "true", "write": "true", "role": "button" },
Hier ist das "" bei false und true das Problem.
-
@klausiob Ja,
common.read
undcommon.write
müssen einboolean
sein und nicht als String angegeben, ebenfalls an dem Beispiel direkt, dercommon.def
Wert muss auch einboolean
sein, da jacommon.type
hierboolean
ist.Wenn du weitere Fragen hast, bitte eigenen Thread eröfnen, da das hier nicht so ganz rein passt.
-
Hallo zusammen,
Komme nicht mehr weiter und das als Informatiker und langjähriger Linux-User das will schon was heißen...Habe von einer 3.1.6 Version auf den 3.2.16 controller updaten wollen und mich genau an die Anleitung gehalten - was früher gut mit "iobroker upgrade self" funktioniert hat, erzeugt nun das hier:
Update js-controller from @3.1.6 to @3.2.16 NPM version: 6.14.12 npm install iobroker.js-controller@3.2.16 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call) ERR! sharp Use with glibc 2.24 requires manual installation of libvips >= 8.9.1 info sharp Attempting to build from source via node-gyp but this may fail due to the above error info sharp Please see https://sharp.pixelplumbing.com/install for required dependencies ../src/common.cc:23:22: fatal error: vips/vips8: Datei oder Verzeichnis nicht gefunden #include <vips/vips8> ^ compilation terminated. make: *** [Release/obj.target/sharp/src/common.o] Fehler 1 gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23) gyp ERR! stack at ChildProcess.emit (events.js:314:20) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12) gyp ERR! System Linux 4.19.66-v7+ gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /opt/iobroker/node_modules/sharp gyp ERR! node -v v12.22.1 gyp ERR! node-gyp -v v5.1.0 gyp ERR! not ok Starting node restart.js
danach habe ich es auch mit "iobroker fix" es nicht geschafft, den iobroker wieder zu starten. Der Befehl "iobroker start" wird zwar ausgeführt aber wenn ich die Startseite aufrufen will kommt "502 Bad Gateway".
Danach hab ich wie in der Anleitung steht das hier probiert:
sudo -H -u iobroker npm install iobroker.js-controller
Das hat dann folgendes ausgeworfen:
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 > iobroker.js-controller@3.3.14 preinstall /opt/iobroker/node_modules/iobroker.js-controller > node lib/preinstallCheck.js NPM version: 6.14.12 > sharp@0.25.2 install /opt/iobroker/node_modules/sharp > (node install/libvips && node install/dll-copy && prebuild-install --runtime=napi) || (node-gyp rebuild && node install/dll-copy) ERR! sharp Use with glibc 2.24 requires manual installation of libvips >= 8.9.1 info sharp Attempting to build from source via node-gyp but this may fail due to the above error info sharp Please see https://sharp.pixelplumbing.com/install for required dependencies make: Verzeichnis „/opt/iobroker/node_modules/sharp/build“ wird betreten TOUCH Release/obj.target/libvips-cpp.stamp CC(target) Release/obj.target/nothing/node_modules/node-addon-api/src/nothing.o AR(target) Release/obj.target/node_modules/node-addon-api/src/nothing.a COPY Release/nothing.a CXX(target) Release/obj.target/sharp/src/common.o ../src/common.cc:23:22: fatal error: vips/vips8: Datei oder Verzeichnis nicht gefunden #include <vips/vips8> ^ compilation terminated. sharp.target.mk:138: die Regel für Ziel „Release/obj.target/sharp/src/common.o“ scheiterte make: *** [Release/obj.target/sharp/src/common.o] Fehler 1 make: Verzeichnis „/opt/iobroker/node_modules/sharp/build“ wird verlassen gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23) gyp ERR! stack at ChildProcess.emit (events.js:314:20) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12) gyp ERR! System Linux 4.19.66-v7+ gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /opt/iobroker/node_modules/sharp gyp ERR! node -v v12.22.1 gyp ERR! node-gyp -v v5.1.0 gyp ERR! not ok > iobroker.js-controller@3.3.14 install /opt/iobroker/node_modules/iobroker.js-controller > node iobroker.js setup first object _design/custom created object _design/system updated The following notifications happened during sync: - Ignoring Directory "cloud.admin" because officially not created as meta object. Please remove directory! > esbuild@0.11.23 postinstall /opt/iobroker/node_modules/esbuild > node install.js npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.2 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: osx-temperature-sensor@^1.0.5 (node_modules/iobroker.info/node_modules/osx-temperature-sensor): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for osx-temperature-sensor@1.0.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"}) npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/bser/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/debug/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/fb-watchman/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/follow-redirects/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/form-data/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/fragment-cache/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/json5/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/mimic-fn/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/minimatch/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/minimist/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/mixin-deep/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/mkdirp/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/ms/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/natural-compare/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/nice-try/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/node-int64/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/node-modules-regexp/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/normalize-path/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/npm-run-path/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/nwsapi/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/oauth-sign/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/mixin-deep/node_modules/is-extendable/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/npm-run-path/node_modules/path-key/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/execa/node_modules/cross-spawn/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/expand-brackets/node_modules/debug/package.json' npm WARN enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/node_modules/normalize-package-data/node_modules/semver/package.json' npm WARN bl@0.7.0 requires a peer of stream-browserify@* but none is installed. You must install peer dependencies yourself. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sharp@0.25.2 (node_modules/sharp): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sharp@0.25.2 install: `(node install/libvips && node install/dll-copy && prebuild-install --runtime=napi) || (node-gyp rebuild && node install/dll-copy)` npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1 + iobroker.js-controller@3.3.14 added 28 packages from 40 contributors and updated 6 packages in 228.67s 28 packages are looking for funding run `npm fund` for details
auch danach hab ich wieder ein "iobroker fix" gemacht - und trotzdem nach wie vor "502 Bad Gateway".
Und nicht mal ein Restore hat mein System zurück ins Leben gebracht - hätte ich kein komplettes Image meiner SD-Karte für meine RaspberryPI gehabt als Fallback, wäre mein ganzes System jetzt irreversibel geschrottet. Jetzt weiß ich nicht ob es überhaupt einen Weg für mich gibt upzudaten oder ob ich jetzt halt auf der Version die ich hab festgefroren bin.
Vlt bin ich auch der Einzige bisher mit dem Problem, wollte das auf jeden Fall mal teilen mit euch zur Info.
-
@ricksanchez Ok, also ein "502 bad Gateway "kommt von irgendeinem anderen System. Wenn der Controller bzw Admin nicht startet dann käme da an sich keine Verbindung aber kein Bad Gateway.
Am Ende sehen - ausser die Compile Fehler bei der sharp library (tippe auf alte iot oder mihome-vacuum Version)- beide Installationen ok aus. Da da ein paar Warnings sind kann sein.
Die Frage ist daher also was sagt denn das ioBroker Log wenn Du ioBroker danach startest?
-
@apollon77
das log sieht soweit gut aus nach nem stop und neustart aber wenn ich z.B. versuche direkt per https drauf zu kommen krieg ich im BrowserERR_SSL_VERSION_OR_CIPHER_MISMATCH
bei Chrome und auch Firefox lässt mich nicht durch, also muss irgendwas an den Zertifikatseinstellungen sich verdrillt haben. Kann man https über die Konsole deaktivieren und den iobroker dann quasi ohne https wieder "normal" starten oder gibt's ne andre Möglichkeit das zu fixen?
-
@ricksanchez Ja du kannst ssl im Admin deaktiviren. kannat aber auch "iob cert view" versuchen bzw "iob cert create", dann werden neue Zertifikate erzeugt
-
sharp Use with glibc 2.24 requires manual installation of libvips >= 8.9.1 gyp ERR! System Linux 4.19.66-v7+
Deutet auf eine 'steinalte' Distribution hin. Noch Jessie oder Stretch im Einsatz? Das würde ich zunächst mal auf ein stable-Release heben.
-
War bisher nur im Ubuntu-Umfeld aktiv, ein Upgrade meiner Distri (müsste in der Tat noch Jessie oder Strech sein, der iobroker läuft bei mir seit 2018 auf ner RaspberryPI 2 B ) wüsste ich jetzt nicht aus dem Stehgreif wie bewerkstelligen.
Ich fürchte ich werd den langen steinigen Weg gehen müssen und alles komplett neu "from Scratch" aufsetzen und konfigurieren müssen.
Trotzdem Danke für das schnelle Feedback selbst zu so später/früher Stunde
-
@ricksanchez sagte in js-controller 3.2 jetzt im STABLE!:
wüsste ich jetzt nicht aus dem Stehgreif wie bewerkstelligen.
Mit einem handelsüblichen Dist-Upgrade?
Als langjähriger Informatiker und Linux-User sollte das doch wohl kein Problem darstellen.Wobei ich mich dann schon Frage, warum man nicht beizeiten aufhört das tote Pferd zu reiten.
-
@thomas-braun
na ein "apt-get dist-upgrade" hatte ich gestern schon mal versucht und das hatte den selben Effekt. Mit einem dist-upgrade zieht man doch auch nicht auf ne neue Distri hoch, bei Ubuntu wechsle ich damit ja auch nicht von ner 18.04 auf ne 20.04, dafür gibt's bei Ubuntu den Befehl "do-release-upgrade"Und ne, nur weil man Informatiker und Linux-User ist muss man sich nicht in den Untiefen von Debian perfekt auskennen, wenn man im Job hauptsächlich Python-Programmierung und im Linux-Umfeld hauptsächlich Ubuntu-Kisten betreut die zwar auf Debian aufbauen aber eben doch vieles ne ecke anders machen
Und warum totes Pferd? Bis vor kurzem lief mein Smart Home mit iobroker ja top. Never touch a running system. Ich hab ja auch ab und an upgrades eingespielt, das letzte Mal im Februar, da ging noch alles
-
@ricksanchez
Aber man könnte mal flugs recherchieren wie es geht.sources.list anpassen, dist-upgrade oder full-upgrade fahren. Ist bei Ubuntu auch nicht anders.
Auch wenn es da ein vorgekochtes Skript gibt. -
@ricksanchez sagte in js-controller 3.2 jetzt im STABLE!:
Und warum totes Pferd?
Weil Jessie und Stretch beide EOL sind.
Never touch a running system.
Ich hoffe du bist nicht wirklich Informatiker.
Patch your stuff!