NEWS
js-controller 3.2 jetzt im STABLE!
-
@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! -
Joa ich werd da morgen nochmal mich drann versuchen und wenn's nicht tut wie gesagt frisch aufsetzen weil ich dann im Endeffekt zeitlich aufs Selbe rauslaufe als wenn ich da jetzt ewig rumdokter bis ich mich in das Thema eingefuchst hab.
Heute Nacht reiß ich da eh nix mehr
-
Doch bin ich, mit Diplom und allem was dazu gehört. Aber ein Hub-System das nicht am Internet hängt und nur in der lokalen Umgebung läuft und quasi nur für Updates ins Netz gehangen wird, muss ich nur dann updaten, wenn es eben notwendig ist. Es gibt zwei Extremsorten Informatiker: Die einen fahren jedes Update sofort ein, sobald es rauskommt, die anderen fahren auch nach 40 Jahren noch auf ner AS400 ihre Buchhaltung und programmieren mit Cobol und Fortran.
Ich bin irgendwo dazwischen aber tendenziell fahr ich nach dem Motto "Läuft es? Dann lass die Finger davon!"
Außer natürlich Zeug hängt im Netzwerk, dann schau ich logischerweise, dass ich auf dem jeweils aktuellen Stable-Release bin. Aber mein iobroker ist nur ein kleiner Hub im SmartHome ohne Kontakt zur Außenwelt das ist für mich nicht in der selben Liga wie sensible Server über die gesichertes Zeug rödelt
-
So, ausgeruht und ausgeschlafen hab ich mich wieder drann gemacht und hab jetzt mal mit Hilfe der Seite https://www.raspberrypi.org/documentation/raspbian/updating.md ein sauberes upgrade auf "buster" hinbekommen meiner RaspberryPI. Dann hab ich Node.js mal auf Version 12 hochgezogen, dann die Adapter aktualisiert und momentan sieht alles soweit gut aus. Jetzt dann noch ein Image-Backup, dann zieh auf Node.js 14 hoch und wenn dann auch alles passt zieh ich abschließend den js-controller noch hoch
-
Off-Topic
@ricksanchez Puh... hättest du es nicht hinbekommen, wären Zweifel aufgekommen, ob du denn der echte Rick Sanchez bist.