zautrix / hm-iobroker

ioBroker packaged as a CCU-Addon for RaspberryMatic and the HomeMatic CCU3.
MIT License
26 stars 9 forks source link

JS-Controller RaspberryMatic + IOBroker auf einem PI #9

Open dominikoyen opened 4 years ago

dominikoyen commented 4 years ago

Hallo zusammen,

ich verzweifle gerade ein wenig. Bisher läuft mein System tadellos zusammen. Leider muss der JS-Controller vom IoBroker geupdated werden, da sonst nicht mehr alle Adapter funktionieren. Ich habe zur Zeit die Version 1.4.2 installiert und ich würde gerne auf die neuste Version 2.1.1 updaten. Leider ist das "automatische" Update nicht möglich.

Er schreibt mir, dass ich das Update "manuell" durchführen muss:

Aufgrund der Vielzahl an Hardware und Plattformen, auf denen ioBroker läuft, muss der js-controller manuell aktualisiert werden. Dazu auf der Konsole des Hosts folgende Kommandos ausführen: cd /usr/local/addons/hm-iobroker sudo iobroker stop sudo iobroker update sudo iobroker upgrade self sudo iobroker start

Ich vermute, dass diese Anleitung nur gilt, wenn IOBroker auf einem separaten PI läuft. Ich kann mich zwar per SSH auf dem PI anmelden, jedoch nimmt er keiner der o.g. Befehle an (Ich denke hier läuft keine "Original" PI Software). Eine komplette Erneuerung von IoBroker hat leider auch nicht den gewünschten Erfolg gebracht.

Habt ihr eine Idee, wie ich das Update installiert bekomme, damit ich wieder alle Adapterupdates installieren kann?

Danke und schöne Festtage.

Viele Grüße

Dominik

libertyx82 commented 4 years ago

Die Anleitung gilt für alle Installationen allerdings gibt es beim Update auf die V2 einiges zu beachten z.B. die Reihenfolge wenn mehrere Hosts vorhanden sind.

Schon mal das Installations fixer Script laufen lassen? Je nachdem wann du deinen iobroker installiert hast muss das zuerst ausgeführt werden.

dominikoyen commented 4 years ago

Ich habe es probiert, allerdings bekomme ich über SSH nur Fehlermeldungen wenn ich den Aufruf starte:

-sh bash not found

Läuft dieses Script denn auf meinem raspberrymatic, wenn IOBroker "nur" als Addon installiert wird? Grüße

libertyx82 commented 4 years ago

Kurz nein

Auf der RaspMatic läuft ein Buildroot da gibt es z.B. kein sudo

dominikoyen commented 4 years ago

Und für das Update ist das die Voraussetzung?

Kann ich sonst irgendwie das Update durchführen ?

libertyx82 commented 4 years ago

siehe https://github.com/zautrix/hm-iobroker/releases

The usage is like a common ioBroker installation, with one difference:
The update of the js-controller is as follows:

Log on as root (via ssh) into console and run the following commands:
(ignore any "gyp ERR! ..." messages during upgrade)
(ignore "npm update check failed" message)

cd /usr/local/addons/hm-iobroker
./iobroker stop
export npm_config_cache=/usr/local/addons/hm-iobroker/npm_io/.npm
export npm_config_userconfig=/usr/local/addons/hm-iobroker/npm_io/.npmrc
./iobroker update
./iobroker upgrade self
./iobroker start

Known issues(will not be fixed, because the issues are caused by limitations of rapsberrymatic):
dominikoyen commented 4 years ago

Perfekt, hat funktioniert vielen Dank !

ThomasRi333 commented 4 years ago

Wenn du jetzt für einen Laien noch einen Tipp hast, wie man NPM / Node auf die Version 10 downgraden kann, wäre mein Tag perfekt. Das Addon läuft sehr stabil, der Pi4 mit 4GB Ram ist bei 42-43 Grad; die Auslastung ist minimal.

Ein großes Danke an dich dafür.

Gharke commented 1 year ago

Hallo, habe gestern die aktuelle Raspberrymatic 3.67.10.20230114 mit node 16.18.1, js-controller 1.4.2 und npm 8.19.2 installiert. (Über Raspberry Pi Imager). Dann einige Addon, auch iobroker) Beim io9broker klappt das Update des js-controllers (und damit verschiedene Adapter) nicht. Anleitung wie oben, beim Schritt: ./iobroker upgrade self Kommen einige Fehlermeldungen...

Update js-controller from @1.4.2 to @4.0.24 NPM version: 8.19.2 npm install iobroker.js-controller@4.0.24 --unsafe-perm --production --save --prefix "/usr/local/addons/hm-iobroker" (System call) npm WARN config production Use --omit=dev instead. npm WARN deprecated dgram@1.0.1: npm is holding this package for security reasons. As it's a core Node module, we will not transfer it over to other users. You may safely remove the package from your dependencies. npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JSON 3 npm WARN deprecated passport.socketio@3.7.0: Please check the workaround in https://github.com/jfromaniello/passport.socketio/issues/148 npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm ERR! code 1 npm ERR! path /usr/local/addons/hm-iobroker/node_modules/iobroker.js-controller npm ERR! command failed npm ERR! command sh -c -- node iobroker.js setup first npm ERR! /usr/local/addons/hm-iobroker/node_modules/@iobroker/js-controller-common/lib/common/tools.js:44 npm ERR! const FORBIDDENCHARS = /[^.-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu; npm ERR! ^ npm ERR! npm ERR! SyntaxError: Invalid regular expression: /[^._-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/: Invalid property name in character class npm ERR! at Object. (/usr/local/addons/hm-iobroker/node_modules/@iobroker/js-controller-common/lib/common/tools.js:44:25) npm ERR! at Module._compile (node:internal/modules/cjs/loader:1155:14) npm ERR! at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10) npm ERR! at Module.load (node:internal/modules/cjs/loader:1033:32) npm ERR! at Function.Module._load (node:internal/modules/cjs/loader:868:12) npm ERR! at Module.require (node:internal/modules/cjs/loader:1057:19) npm ERR! at require (node:internal/modules/cjs/helpers:103:18) npm ERR! at Object. (/usr/local/addons/hm-iobroker/node_modules/@iobroker/js-controller-common/index.js:2:12) npm ERR! at Module._compile (node:internal/modules/cjs/loader:1155:14) npm ERR! at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)

Kann jemand helfen, fehlen Zwischenschritte? Danke

Apollon77 commented 1 year ago

Das bedeutet das die Node.JS VErsion die auf dem Host ist nicht mit Unicode support für Regex gebaut wurde. Das benmtigt ioBroker aber. Bitte Issue bei Raspberrymatic anlegen das dort eine "korrekte" Nodejs verison genutzt wird.

jens-maus commented 1 year ago

Das bedeutet das die Node.JS VErsion die auf dem Host ist nicht mit Unicode support für Regex gebaut wurde. Das benmtigt ioBroker aber. Bitte Issue bei Raspberrymatic anlegen das dort eine "korrekte" Nodejs verison genutzt wird.

Da du da mehr Erfahrungswerte hast als ich bzgl. node.js. Was genau fehlt denn da bitte beim kompilieren von nodejs damit die regex unicode-fähig werden? Im Buildroot (welches RaspberryMatic ja nutzt) gibt es da keine zusätzliche Option die man wählen kann um die regex unicode-fähig hinzubekommen. Weil buildroot baut ja die node.js version komplett selbst (aktuell 16.18.1) mit seinen eigenen standard compile parametern. Vllt. hast du ja einen testcase für mich damit ich versuchen kann das zu reproduzieren wenn ich verschiedene compilations von node.js testen will.

Gharke commented 1 year ago

Hallo, vielleicht hilft das: https://nodejs.org/dist/v16.18.1/docs/api/intl.html

Apollon77 commented 1 year ago

@jens-maus Ich erinner emich nur das wir das schonmal bei nem freebesd user hatten der auch nodejs selbst gebaut hat und noch irgendweo ... aber ich finde auch gerade die posts nicht mehr, sorry.

jens-maus commented 1 year ago

Ok, mit der nächsten RaspberryMatic Version sollte das mitgebrachte nodejs v16 nun auch unicode können und der hier benannte Fehler nicht mehr auftreten...

Gharke commented 1 year ago

Herzlichen Dank, super Service…

jens-maus commented 1 year ago

Herzlichen Dank, super Service…

Kurzer Hinweis: Man replied nicht auf GitHub emails denn sonst landet alles was du da zurückmailst direkt bei GitHub, inkl. deiner Adresse, Realname und Mobilfunknummer.... deshalb bei GitHub die emails nur als notifications sehen und dann auf die webseite wechseln und da kommentieren... (hab deine pers. Daten nun weggelöscht).

netmic10 commented 1 year ago

Ok, mit der nächsten RaspberryMatic Version sollte das mitgebrachte nodejs v16 nun auch unicode können und der hier benannte Fehler nicht mehr auftreten...

Vielen Dank, @jens-maus und @Gharke!! Werde auch testen, sobald du das veröffentlichst. War bisher umständlich, immer die ioBroker add-on Versionen zu finden, die mit js-controller 3.x. und Admin 4.x laufen. Das ist ja dann bald Geschichte und die ioBroker Instanz kann auf den neusten Stand gezogen werden. Super!

Insgesamt gefällt mir die Lösung mit dem ioBroker Raspberrmatic Add On nämlich sehr - das ganze läuft sehr zuverlässig.

Schönen Abend!

Bikestuff commented 1 year ago

Hallo zusammen, ich bekomme auch eine Fehlermeldung, bin aber nicht sicher, ob ich das gleiche Problem vorkiegen habe. Alle Schritte wie ober ausgeführt, dann aber:

root@Homematic-Raspi_PI4:/usr/local/addons/hm-iobroker# ./iobroker upgrade self Update js-controller from @3.1.6 to @4.0.24 NPM version: 8.19.2 npm install iobroker.js-controller@4.0.24 --loglevel error --unsafe-perm --prefix "/usr/local/addons/hm-iobroker" (System call) npm ERR! code EROFS npm ERR! syscall mkdir npm ERR! path /root/.npm npm ERR! errno -30 npm ERR! rofs EROFS: read-only file system, mkdir '/root/.npm' npm ERR! rofs Often virtualized file systems, or other file systems npm ERR! rofs that don't support symlinks, give this error.

npm ERR! Log files were not written due to an error writing to the directory: /root/.npm/_logs npm ERR! You can rerun the command with --loglevel=verbose to see the logs in your terminal host.Homematic-Raspi_PI4 Cannot install iobroker.js-controller@4.0.24: 226 root@Homematic-Raspi_PI4:/usr/local/addons/hm-iobroker#

Iobroker

Bikestuff commented 1 year ago

Vielleicht könnt ihr mich auf die richtige Spur bringen...

Gharke commented 1 year ago

Die raspberrymatic-node.js ist mit der letzten Version vom 25.02.23 mit Unicode kompiliert/eingebunden worden, damit sollte das dann klappen. Versuche heute Abend das Update und melde mich dann.

netmic10 commented 1 year ago

@Bikestuff: Es sieht so aus, dass du vergessen hast, vor dem "upgrade"-Befehl die System-Variablen mit den richtigen Dateisystem-Pfaden zu setzen. Also die Befehle beginnend mit export... Das muss man hier speziell für das hm-iobroker Addon auf Raspberrymatic bei jeder Terminal-Anmeldung immer wieder machen, bevor man was "upgraden" möchte. Liegt an der besonderen System-Konfiguration.

siehe Eintrag von @libertyx82 :

siehe https://github.com/zautrix/hm-iobroker/releases

The usage is like a common ioBroker installation, with one difference:
The update of the js-controller is as follows:

Log on as root (via ssh) into console and run the following commands:
(ignore any "gyp ERR! ..." messages during upgrade)
(ignore "npm update check failed" message)

cd /usr/local/addons/hm-iobroker
./iobroker stop
export npm_config_cache=/usr/local/addons/hm-iobroker/npm_io/.npm
export npm_config_userconfig=/usr/local/addons/hm-iobroker/npm_io/.npmrc
./iobroker update
./iobroker upgrade self
./iobroker start

Known issues(will not be fixed, because the issues are caused by limitations of rapsberrymatic):
netmic10 commented 1 year ago

Habe das Update des js-controller für hm-iobroker nun mit dem Raspberrymatic-Release von Februar erfolgreich durchgeführt. Einzige Stolperstelle (und deshalb hier der Hinweis): es klappte auf meinem RPI2 erst nach Ausführung dieses Hinweises. Vermutlich ist der RPI2 etwas zu lahm für den ursprünglichen Timeout-Wert....

Vorher habe ich - wie im selben ioBroker-Forum-Thread beschrieben - alle hm-iobroker Adapter manuell per ssh-Konsole auf den neuesten Stand aktualisiert (muss man bei Abhängigkeiten zu bestimmter js-controller-Version mit Versionsangabe <Adapter-Name>@<x.x.x> erzwingen). Dann in zwei Versions-Schritten (reine Vorsichtsmaßnahme....) js-controller aktualisiert. Den letzten Schritt einfach mit ./iobroker upgrade self

Nun sind alle meine hm-iobroker Adapter auf dem neuesten Stand! Und nach der ersten Betriebsnacht kann ich mitteilen, dass bisher nichts hängengeblieben ist. 😉

Besten Dank an alle Entwickler! 👍🏼

Bikestuff commented 1 year ago

image

Das scheint ja die aktuellste Version von Raspimatic zu sein.

So, jetzt noch einmal der Reihe nach:

Ich habe alle diese Schritte ausgeführt, (aber den output hier nicht gepastet):

cd /usr/local/addons/hm-iobroker ./iobroker stop export npm_config_cache=/usr/local/addons/hm-iobroker/npm_io/.npm export npm_config_userconfig=/usr/local/addons/hm-iobroker/npm_io/.npmrc ./iobroker update ./iobroker upgrade self ./iobroker start

Sieht zwar schon anders aus, das update klappt aber immer noch nicht:

root@Homematic-Raspi_PI4:/usr/local/addons/hm-iobroker# ./iobroker upgrade self Update js-controller from @3.1.6 to @4.0.24 NPM version: 8.19.2 npm install iobroker.js-controller@4.0.24 --loglevel error --unsafe-perm --prefix "/usr/local/addons/hm-iobroker" (System call) Objects 127.0.0.1:42488 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets"] States 127.0.0.1:34660 Error from InMemDB: Error: GET-UNSUPPORTED for namespace meta.: Data=["meta.states.protocolVersion"] Objects 127.0.0.1:42488 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.protocolVersion"] Objects 127.0.0.1:42488 Error from InMemDB: Error: scan NOT SUPPORTED States 127.0.0.1:34666 Error from InMemDB: Error: PSUBSCRIBE-UNSUPPORTED for namespace meta.: Data=["meta."] npm ERR! code 1 npm ERR! path /usr/local/addons/hm-iobroker/node_modules/iobroker.js-controller npm ERR! command failed npm ERR! command sh -c -- node iobroker.js setup first npm ERR! Cannot write file. Not critical: ENOENT: no such file or directory, open '/usr/local/addons/hm-iobroker/node_modules/iobroker.js-controller/lib/setup/../../../../iob' npm ERR! /usr/local/addons/hm-iobroker/node_modules/standard-as-callback/built/index.js:6 npm ERR! throw e; npm ERR! ^ npm ERR! npm ERR! ReplyError: Error scan NOT SUPPORTED npm ERR! at parseError (/usr/local/addons/hm-iobroker/node_modules/redis-parser/lib/parser.js:179:12) npm ERR! at parseType (/usr/local/addons/hm-iobroker/node_modules/redis-parser/lib/parser.js:302:14) npm ERR! Emitted 'error' event on ScanStream instance at: npm ERR! at /usr/local/addons/hm-iobroker/node_modules/ioredis/built/ScanStream.js:38:22 npm ERR! at tryCatcher (/usr/local/addons/hm-iobroker/node_modules/standard-as-callback/built/utils.js:12:23) npm ERR! at /usr/local/addons/hm-iobroker/node_modules/standard-as-callback/built/index.js:33:51 npm ERR! at processTicksAndRejections (node:internal/process/task_queues:96:5) { npm ERR! command: { npm ERR! name: 'scan', npm ERR! args: [ '0', 'MATCH', 'cfg.o.system.host.', 'COUNT', '250' ] npm ERR! } npm ERR! }

npm ERR! A complete log of this run can be found in: npm ERR! /usr/local/addons/hm-iobroker/npm_io/.npm/_logs/2023-02-27T14_31_16_530Z-debug-0.log Starting node restart.js root@Homematic-Raspi_PI4:/usr/local/addons/hm-iobroker# ./iobroker start

Gharke commented 1 year ago

Habe das Timeout erhöht... obwohl ein RPI4 mit USB-SSD das eigentlich hinbekommen sollten. Leider kein Erfolg. (bis auf 10000=10 Sek.)

Habe dann manuell vor dem iobroker-update mit "npm install iobroker.js-controller" den js-controller von Version 1.4.2 auf 4.0.24 erfolgreich upgedatet.

Dann noch den Adapter "admin" von Version 3.x auf 6.x upgedatet, beim Öffnen von iobroker wurde ich gefragt, ob eine neuer "info"-Adapter angelegt werden soll (Instanz 0), erledigt und danach war alles da und i.O.