NEWS
UNSOLVED [gelöst]Modbus - nach Node Update USB-Stick nicht gefunden
-
@apollon77
jedes Mal, wenn ich node,js hochziehe (auf den aktuellsten Stand) findet modbus seinen USB Stick nicht mehr.@mguenther sagte in [gelöst]Modbus - nach Node Update USB-Stick nicht gefunden:
@apollon77
bei mir kommt:
das ist die Fehlermeldung. Abhilfe ist npm i --production im richtigen Ordner.
Die Aktualisierung von node.js lief eine Zeitlang (ich hatte den conbee Stick nicht an dem PI. Dann habe ich aus anderen Gründen wieder versucht, den conbee Stick an dem PI mit iobroker zu integrieren und damit begannen dann wieder meine Probleme von oben.
-
@mguenther Was ist denn "der richtige ordner" deiner meinung nach?
idealerweise sollte es /opt/iobroker/@serialport/bindings sein
-
ja, so wie du es mir schon einmal erklärt hast:
@apollon77 sagte in [gelöst]Modbus - nach Node Update USB-Stick nicht gefunden:
@mguenther Die Meldung sieht schon mal vollständiger aus. Und ja da ist das rebuild für serialport nicht sauber passiert
Am besten jetzt mal in einer Shell in /opt/iobroker/node_modules/serialport wecheln und dort "npm i --production" ausführen. Wenn das nicht tut alles unter /opt/iobroker/node_modules/@seriaport löschen und das obige nochmal ausführen
das hilft ja auch immer, ich wollte ja nur wissen, ob man das wieder "reparieren" kann. So dass dann beim nächsten nodes.js update alles wieder durchläuft und auch die Serialports wieder normal eingebunden werden.
-
@mguenther ich kapier die Frage noch nicht ganz. Einmal nodejs major update kann diesen Ablauf nötig machen. Wir sind dran das der js-Controller das bei Bedarf selbst tut. Oder was meinst du?
-
@apollon77
ich hab wenig Ahnung von Linux. Meine Frage ging ja in die Richtung, ob man das irgendwie "reparieren" kann, so dass ich nicht immer manuell die Serialports nach einem Update neu einbinden muss. -
@mguenther nach einem nodejs Master Update … nein - Weil es nötig ist. Der js-Controller sollte das in Zukunft noch besser automatisch machen.
-
@apollon77 sagte in [gelöst]Modbus - nach Node Update USB-Stick nicht gefunden:
@mguenther nachweinen nodejs Master Update … nein Weilers nötig ist. Der js-Controller sollte das in Zukunft noch besser automatisch machen.
öhm - ich kapiere den Satz nicht..
nachweinen? und Weilers? -
@mguenther fixed
-
ok, verstanden.
-
@apollon77
ich habe den Admin Adapter upgedatet und wieder sagt mir der Modbus Adapter:modbus.0 2021-12-22 02:18:44.614 error Cannot create modbus master! modbus.0 2021-12-22 02:18:44.613 error Cannot open port "/dev/ttyUSB1" [9600]: Error: Module did not self-register: '/opt/iobroker/node_modules/@serialport/bindings/build/Release/bindings.node'. modbus.0 2021-12-22 02:18:44.174 warn Serial is not available
nach npm i --production läuft dann auch der Modbus wieder...
-
@mguenther ALso ich würde mal folgendes machen: sichere das mosbud zeug, uninstall den modbus Adapter (komplett - nicht nur instanzen). dann würde ich manuell /opt/iobroker/node_modules/@serialport löschen (überlege ob du andere adapter mit serialport hast), und dann modbus neu installieren
-
@apollon77 sagte in [gelöst]Modbus - nach Node Update USB-Stick nicht gefunden:
@mguenther ALso ich würde mal folgendes machen: sichere das mosbud zeug, uninstall den modbus Adapter (komplett - nicht nur instanzen). dann würde ich manuell /opt/iobroker/node_modules/@serialport löschen (überlege ob du andere adapter mit serialport hast), und dann modbus neu installieren
ja, mache ich nach Weihnachten dann mal. Mit "Adapter komplett löschen" meinst du unter dem Reiter Adapter. Wie bekomme ich den denn dann wieder? Muss ich den dann über ssh und die Befehlszeile installieren?
Ansonsten wüsste ich nicht, ob ich noch andere Adapter mit serialport habe. Ich hatte den conbee und den Adapter deconz - den habe ich aber gerade erfolgreich mit zigbee und einem LAN-zigbee Stick ersetzt...
-
@mguenther sagte in [gelöst]Modbus - nach Node Update USB-Stick nicht gefunden:
Wie bekomme ich den denn dann wieder? Muss ich den dann über ssh und die Befehlszeile installieren?
Ne, danach einfach wieder installieren :-)) Aber musst halt alles sichern - vor allem die konfigs weil halt damit alles wegfliegt.
Alternativ stoppen und an der kommandozeile im iobroker dir ein
npm uninstall iobroker.modbus
gefolgt vonnpm install iobroker.modbus
undiob upload modbus
dann geht das ohne Konfig verlust -
@apollon77
ich bräuchte nochmal deine Hilfe - 2 Fragen habe ich untenwas genau meinst du mit
/opt/iobroker/node_modules/@serialportich gehe ansonsten immer in das Verzeichnis (hatte ich mal oben irgendwann bekommen, das @ hab ich bei dir immer "überlesen"):
/opt/iobroker/node_modules/serialportund führe da dann npm i --production aus.
Wenn ich das ausführe bekomme ichpi@raspberrypi:/opt/iobroker/node_modules/serialport $ npm i --production > @serialport/bindings@9.2.5 install /opt/iobroker/node_modules/serialport/node_modules/@serialport/bindings > prebuild-install --tag-prefix @serialport/bindings@ || node-gyp rebuild prebuild-install WARN install No prebuilt binaries found (target=14.18.2 runtime=node arch=arm libc= platform=linux) make: Verzeichnis „/opt/iobroker/node_modules/serialport/node_modules/@serialport/bindings/build“ wird betreten CXX(target) Release/obj.target/bindings/src/serialport.o ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:78:51: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 78 | uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_AfterOpen); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:135:53: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 135 | uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EIO_AfterUpdate); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:175:52: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 175 | uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO_AfterClose); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:215:52: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 215 | uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO_AfterFlush); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:271:50: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 271 | uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_AfterSet); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Get(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:316:50: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 316 | uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_AfterGet); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE GetBaudRate(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:366:58: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 366 | uv_queue_work(uv_default_loop(), req, EIO_GetBaudRate, (uv_after_work_cb)EIO_AfterGetBaudRate); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:412:52: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 412 | uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO_AfterDrain); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: At global scope: ../src/serialport.cpp:433:28: warning: unnecessary parentheses in declaration of ‘ToParityEnum’ [-Wparentheses] 433 | SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local<v8::String>& v8str)) { | ^ ../src/serialport.cpp:452:30: warning: unnecessary parentheses in declaration of ‘ToStopBitEnum’ [-Wparentheses] 452 | SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) { | ^ In file included from ../../../nan/nan.h:58, from ../src/./serialport.h:13, from ../src/serialport.cpp:1: /home/iobroker/.cache/node-gyp/14.18.2/include/node/node.h:787:7: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘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/serialport.cpp:486:1: note: in expansion of macro ‘NODE_MODULE’ 486 | NODE_MODULE(serialport, init); | ^~~~~~~~~~~ CXX(target) Release/obj.target/bindings/src/serialport_unix.o ../src/serialport_unix.cpp: In function ‘int setup(int, OpenBaton*)’: ../src/serialport_unix.cpp:179:82: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1005 [-Wformat-truncation=] 179 | snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path); | ^~ ../src/serialport_unix.cpp:179:13: note: ‘snprintf’ output 20 or more bytes (assuming 1043) into a destination of size 1024 179 | snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport_unix.cpp: In function ‘void EIO_Open(uv_work_t*)’: ../src/serialport_unix.cpp:89:84: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1003 [-Wformat-truncation=] 89 | snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path); | ^~ ../src/serialport_unix.cpp:89:13: note: ‘snprintf’ output 22 or more bytes (assuming 1045) into a destination of size 1024 89 | snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CXX(target) Release/obj.target/bindings/src/poller.o CXX(target) Release/obj.target/bindings/src/serialport_linux.o SOLINK_MODULE(target) Release/obj.target/bindings.node COPY Release/bindings.node make: Verzeichnis „/opt/iobroker/node_modules/serialport/node_modules/@serialport/bindings/build“ wird verlassen added 71 packages from 42 contributors and audited 76 packages in 13.686s 16 packages are looking for funding run `npm fund` for details found 0 vulnerabilities ╭───────────────────────────────────────────────────────────────╮ │ │ │ New major version of npm available! 6.14.15 → 8.3.0 │ │ Changelog: https://github.com/npm/cli/releases/tag/v8.3.0 │ │ Run npm install -g npm to update! │ │ │ ╰───────────────────────────────────────────────────────────────╯ pi@raspberrypi:/opt/iobroker/node_modules/serialport $
Frage 1 - war das denn der falsche Ansatz und muss ich das im Ordner @serialport ausführen?
Frage 2 - ich habe eine SSD am Laufen - wenn ich den Inhalt in @Serialport lösche, klappt das dann noch mit dem Erkennen der SSD? Ich hab leider keinen Plan von Linux und Serialport und bin etwas verwirrt...
danke
Marcus -
@mguenther Am besten das npm i da ausführen "wo es knallt" ... und das ist
/opt/iobroker/node_modules/@serialport/bindings/
Das hat auch nichts mit deiner SSD oder anderem Systemkram zu tun