NEWS
Adapter für mehrere RPI
-
Huhu zusammen.
Vorweg, danke für dieses Forum. Bisher im stillen gelesen bei Problemen, aber nun finde ich keine Antwort.
Habe auf einem RPI ioBroker mit dem Adapter RPI-Monitor (0.3.2) am laufen und die wichtigsten Werte des RPI in VIS dargestellt.
Da gestern nun meine 2 anderen RPI noch gekommen sind, möchte ich deren Werte auch per VIS angezeigt bekommen, doch leider kann man bei diesem Adapter keine weiteren Instanzen laufen lassen
` > $ ./iobroker add rpi2
ERROR: host.RaspberryPi1 error: this adapter does not allow multiple instances on one host
ERROR: process exited with code 21 `
Hat jemand eine Idee, wie ich es dennoch realisieren kann? Gibt es evtl noch einen anderen RPI Adapter, den ich vielleicht übersehen habe?
MfG,
Tobi
-
Hallo Tobi und Willkommen im Forum!
Der Adapter gibt immer nur die Werte zu der Hardware an, auf dem er läuft.
Mehrere Instanzen helfen daher nur beim Multihost modus
Gruß Rainer
-
Super, klappt einwandfrei. Vielen Dank!
-
Hallo zusammen,
ich betreibe ioBroker auf zwei Raspberry pi 3 B & /+(Master/Slave).
Auf dem Master läuft der Adapter "RPI-Monitor," nun möchte ich diese auch auf dem Slave installieren.
Leider wird die Installation nicht abgeschlossen,
folgendes steht seit 30 min in der Ausgabe.
Softwareseitig sind beide Systeme auf aktuellem Stand.
$ ./iobroker add rpi2 2
undefined server error
undefined Error: server error at Socket.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:445:19)
at XHR. <anonymous>(/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:268:10)
at XHR.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
at XHR.Transport.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/transport.js:145:8)
at callback (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js:144:10)
at Object.exports.decodePayload (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/lib/index.js:309:18)
at XHR.Polling.onData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js:148:10)
at Request. <anonymous>(/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js:126:10)
at Request.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
at Request.onData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js:296:8)</anonymous></anonymous>
-
Wenn ich den Admin auf der Slave updaten möchte, kommt folgende Meldung.
$ ./iobroker upgrade admin
undefined server error
undefined Error: server error at Socket.onPacket (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:445:19)
at XHR. <anonymous>(/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:268:10)
at XHR.Emitter.emit (/root/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
at XHR.Transport.onPacket (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transport.js:145:8)
at callback (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js:144:10)
at Object.exports.decodePayload (/root/node_modules/engine.io-parser/lib/index.js:309:18)
at XHR.Polling.onData (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js:148:10)
at Request. <anonymous>(/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js:126:10)
at Request.Emitter.emit (/root/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
at Request.onData (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js:296:8)</anonymous></anonymous>
-
So eine Meldung hatte ich, als ich „aus versehen" 'socket.io 2.1.1' inklusive 'engine-io 3.2.0' installiert hatte, ohne den 'socket.io-client' auf @latest upzudaten (passiert alles im '/opt/iobroker/node_modules'-Ordner).
War bei mir (echt, keine Kopie Deiner Meldung), wenn der Admin starten sollte:
undefined Error: server error at Socket.onPacket (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\socket.js:445:19) at XHR. <anonymous>(C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\socket.js:268:10) at XHR.Emitter.emit (C:\dev\iobroker\node_modules\socket.io-client\node_modules\component-emitter\index.js:133:20) at XHR.Transport.onPacket (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transport.js:145:8) at callback (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\polling.js:144:10) at Object.exports.decodePayload (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-parser\lib\index.js:309:18) at XHR.Polling.onData (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\polling.js:148:10) at Request. <anonymous>(C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\polling-xhr.js:126:10) at Request.Emitter.emit (C:\dev\iobroker\node_modules\socket.io-client\node_modules\component-emitter\index.js:133:20) at Request.onData (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\polling-xhr.js:296:8)</anonymous></anonymous>
100% gleich!
Vorschlag so als Anregung & Verdacht zur Ausführung im /opt/iobroker-Ordner zum Versionsprüfen:
>npm ls socket.io >npm ls engine.io >npm ls socket.io-client >npm ls engine.io-client
socket.io sollte v1.7.2 und engine.io v1.8.2 sein. Mit socket.io v2.1.1 ist ggf. noch nicht gut Kirschen essen, auch wenn der uWS in engine.io als default herausgenommen wurde.
Wenn Version zu hoch: (Vorsicht!) engine-io und socket.io im /opt/iobroker-Ordner mit npm ohne '-g' deinstallieren und mit stable wieder herstellen.
Zu technisch von mir? [emoji53]
-
Hallo,
danke für deine Antwort!
Ich werde es später testen. Mal sehen, wie weit ich komme.
Ich habe gestern auf dem Slave, ioBroker neu installiert und erstmals nicht als Slave eingerichtet.
Jetzt konnte problemlos RPI-Monitor installieren. Nachdem ich ihn mit dem Master verbunden hatte, kamen die o. g. Fehler.
Kann sich das jemand erklären?
-
So eine Meldung hatte ich, als ich „aus versehen" 'socket.io 2.1.1' inklusive 'engine-io 3.2.0' installiert hatte, ohne den 'socket.io-client' auf @latest upzudaten (passiert alles im '/opt/iobroker/node_modules'-Ordner).
War bei mir (echt, keine Kopie Deiner Meldung), wenn der Admin starten sollte:
undefined Error: server error at Socket.onPacket (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\socket.js:445:19) at XHR. <anonymous>(C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\socket.js:268:10) at XHR.Emitter.emit (C:\dev\iobroker\node_modules\socket.io-client\node_modules\component-emitter\index.js:133:20) at XHR.Transport.onPacket (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transport.js:145:8) at callback (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\polling.js:144:10) at Object.exports.decodePayload (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-parser\lib\index.js:309:18) at XHR.Polling.onData (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\polling.js:148:10) at Request. <anonymous>(C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\polling-xhr.js:126:10) at Request.Emitter.emit (C:\dev\iobroker\node_modules\socket.io-client\node_modules\component-emitter\index.js:133:20) at Request.onData (C:\dev\iobroker\node_modules\socket.io-client\node_modules\engine.io-client\lib\transports\polling-xhr.js:296:8)</anonymous></anonymous>
100% gleich!
Vorschlag so als Anregung & Verdacht zur Ausführung im /opt/iobroker-Ordner zum Versionsprüfen:
>npm ls socket.io >npm ls engine.io >npm ls socket.io-client >npm ls engine.io-client
socket.io sollte v1.7.2 und engine.io v1.8.2 sein. Mit socket.io v2.1.1 ist ggf. noch nicht gut Kirschen essen, auch wenn der uWS in engine.io als default herausgenommen wurde.
Wenn Version zu hoch: (Vorsicht!) engine-io und socket.io im /opt/iobroker-Ordner mit npm ohne '-g' deinstallieren und mit stable wieder herstellen.
Zu technisch von mir? [emoji53] `
So siehts bei mir aus.
root@raspberrypi-display1:~# npm ls socket.io iobroker.inst@1.1.2 /root ├─┬ iobroker.admin@3.4.7 │ └── socket.io@1.7.2 └─┬ iobroker.js-controller@1.2.3 └── socket.io@1.7.4
root@raspberrypi-display1:~# npm ls engine.io iobroker.inst@1.1.2 /root ├─┬ iobroker.admin@3.4.7 │ └─┬ socket.io@1.7.2 │ └── engine.io@1.8.2 └─┬ iobroker.js-controller@1.2.3 └─┬ socket.io@1.7.4 └── engine.io@1.8.5
root@raspberrypi-display1:~# npm ls socket.io-client iobroker.inst@1.1.2 /root ├─┬ iobroker.admin@3.4.7 │ └─┬ socket.io@1.7.2 │ └── socket.io-client@1.7.2 └─┬ iobroker.js-controller@1.2.3 ├─┬ socket.io@1.7.4 │ └── socket.io-client@1.7.4 deduped └── socket.io-client@1.7.4
root@raspberrypi-display1:~# npm ls engine.io-client iobroker.inst@1.1.2 /root ├─┬ iobroker.admin@3.4.7 │ └─┬ socket.io@1.7.2 │ └─┬ socket.io-client@1.7.2 │ └── engine.io-client@1.8.2 └─┬ iobroker.js-controller@1.2.3 └─┬ socket.io-client@1.7.4 └── engine.io-client@1.8.5
-
Hmm, schaut ganz gut aus. Ich habe mir gestern einen RPI mit ioBroker selbst installiert und habe die gleichen Versionen drauf wie Du, außer jeweils beim js-controller. Der hat bei mir zwar die gleiche Version 1.2.3, habe aber bei socket.io(-client) die 1.7.2 und bei engine.io(-client) die 1.8.2
Ob das aber etwas ausmacht, weiß ich leider nicht. Vieleicht bin ich hier auch auf der falschen Fährte und das Ganze weist einfach auf ein Kommunikationsproblem mit dem Master hin…
Trotzdem: Was sagten die Befehle von oben auf dem Master ausgeführt?
-
Beim Master sieht es wie folgt aus.
pi@sudoraspi-config:~ $ npm ls socket.io iobroker.inst@1.1.2 /home/pi ├─┬ iobroker.admin@2.0.9 │ └── socket.io@1.7.4 └─┬ iobroker.js-controller@1.2.3 └── socket.io@1.7.4 deduped
pi@sudoraspi-config:~ $ npm ls engine.io iobroker.inst@1.1.2 /home/pi └─┬ iobroker.admin@2.0.9 └─┬ socket.io@1.7.4 └── engine.io@1.8.5 ╭─────────────────────────────────────╮ │ │ │ Update available 5.8.0 → 6.2.0 │ │ Run npm i npm to update │ │ │ ╰─────────────────────────────────────╯
pi@sudoraspi-config:~ $ npm ls socket.io-client iobroker.inst@1.1.2 /home/pi ├─┬ iobroker.admin@2.0.9 │ └─┬ socket.io@1.7.4 │ └── socket.io-client@1.7.4 deduped └─┬ iobroker.js-controller@1.2.3 └── socket.io-client@1.7.4
pi@sudoraspi-config:~ $ npm ls engine.io-client iobroker.inst@1.1.2 /home/pi └─┬ iobroker.js-controller@1.2.3 └─┬ socket.io-client@1.7.4 └── engine.io-client@1.8.5
______________________________________________________________________________________________________-
Ist das normal?
(Slave)
` > root@raspberrypi-display1:~# cd /opt/iobroker
root@raspberrypi-display1:/opt/iobroker# iobroker list instances
undefined server error
undefined Error: server error
at Socket.onPacket (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:445:19)
at XHR. <anonymous>(/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:268:10)
at XHR.Emitter.emit (/root/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
at XHR.Transport.onPacket (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transport.js:145:8)
at callback (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js:144:10)
at Object.exports.decodePayload (/root/node_modules/engine.io-parser/lib/index.js:309:18)
at XHR.Polling.onData (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js:148:10)
at Request. <anonymous>(/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js:126:10)
at Request.Emitter.emit (/root/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
at Request.onData (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js:296:8)</anonymous></anonymous> `
-
Auch gut. Das npm-Update brauchst Du nicht zu machen. Die Version 5.8.0 ist in Ordnung.
Jetzt weiß ich nicht mehr weiter. Wenn du den RPI wieder zum Master machst, geht alles? Nach welcher Anleitung gehst Du beim Verbinden vor?
-
Und: Nutzt Du Redis?
-
Ich bin nach dieser Anleitung vorgegangen.
http://www.iobroker.net/docu/?page_id=3068&lang=de
Redis habe ich zum Testen aktiviert.
iobroker setup custom type of states DB [file, redis], default [file] : redis
Zuvor habe ich die ip unter geändert.
nano /etc/redis/redis.conf bind 0.0.0.0
Habe es danach aber wieder auf default gestellt.
Ob file oder redis, brachte keine Verbesserung.
Was mir aber aufgefallen ist, unter:
Host of objects DB(file), default[127.0.0.1]
wird keine andere IP Adresse (Master: 0.0.0.0, Slave: 192.168.178.35) übernommenen/gespeichert.
-
Sollte aber.
Woran machst du das fest?
Beim nächsten Aufruf steht da erst einmal der default Wert.
Da musst du in der iobrojer.conf (?) Nachsehen.
Gruß Rainer
-
Datei /opt/iobroker/iobroker-data/iobroker.json
Bei lokaler DB:
{ "system": { "memoryLimitMB": 0, "hostname": "" }, "multihostService": { "enabled": false, "secure": true }, "network": { "IPv4": true, "IPv6": true, "bindAddress": null, "useSystemNpm": true }, "objects": { "type": "file", "typeComment": "Possible values: 'file' - [port 9001], redis - [port 6379], couch - [port 5984].", "host": "127.0.0.1", "port": 9001, "user": "", "pass": "", "noFileCache": false, "connectTimeout": 2000 }, "states": { "type": "file", "typeComment": "Possible values: 'file' - [port 9000], 'redis' - [port 6379].", "host": "127.0.0.1", "port": 9000, "maxQueue": 1000, "options": { "auth_pass": null, "retry_max_delay": 15000 } }, [...]
-
Das ist auch alles merkwürdig.
Die IP wurde richtig übernommen.
Anbei der Code vom Master
"system": { "memoryLimitMB": 0, "hostname": "" }, "multihostService": { "enabled": true, "secure": true, "password": "muster" }, "network": { "IPv4": true, "IPv6": true, "bindAddress": null, "useSystemNpm": true }, "objects": { "type": "file", "typeComment": "Possible values: 'file' - [port 9001], redis - [port 6379],$ "memoryLimitMB": 0, "hostname": "" }, "multihostService": { "enabled": true, "secure": true, "password": "muster" }, "network": { "IPv4": true, "IPv6": true, "bindAddress": null, "useSystemNpm": true }, "objects": { "type": "file", "typeComment": "Possible values: 'file' - [port 9001], redis - [port 6379],$ "host": "0.0.0.0", "port": 9001, "pass": "", "noFileCache": false, "connectTimeout": 2000 }, "states": { "type": "file", "typeComment": "Possible values: 'file' - [port 9000], 'redis' - [port 6379$ "host": "0.0.0.0", "port": 9000, "maxQueue": 1000, "options": { "auth_pass": null, "retry_max_delay": 15000 } }, "log": { "level": "info", "maxDays": 7, "noStdout": true, "file1": { "type": "file", "enabled": true, "filename": "log/iobroker", "fileext": ".log", "maxsize": null, "maxFiles": null }, "syslog1": { "enabled": false, "host": "localhost", "host_comment": "The host running syslogd, defaults to localhost.", "port_comment": "The port on the host that syslog is running on, defaul$ "protocol": "udp4", "protocol_comment": "The network protocol to log over (e.g. tcp4, udp4,$ "path_comment": "The path to the syslog dgram socket (i.e. /dev/log or $ "facility_comment": "Syslog facility to use (Default: local0).", "localhost": "iobroker", $ng from (Default: localhost).", "sysLogType_comment": "The type of the syslog protocol to use (Default:$ "app_name_comment": "The name of the application (Default: process.titl$ "eol_comment": "The end of line character to be added to the end of the$ } } }, "dataDirComment": "Always relative to iobroker.js-controller/", "dataDir": "../../iobroker-data/" }
Vom Slave
"system": { "memoryLimitMB": 0, "hostname": "" }, "multihostService": { "enabled": false, "secure": true }, "network": { "IPv4": true, "IPv6": true, "bindAddress": null, "useSystemNpm": true }, "objects": { "type": "file", "typeComment": "Possible values: 'file' - [port 9001], redis - [port 6379],$ "port": 9001, "user": "", "pass": "", "noFileCache": false, "connectTimeout": 2000 }, "states": { "type": "file", "typeComment": "Possible values: 'file' - [port 9000], 'redis' - [port 6379$ "host": "192.168.178.35", "port": 9000, "maxQueue": 1000, "options": { "auth_pass": null, "retry_max_delay": 15000 } }, "log": { "level": "info", "maxDays": 7, "noStdout": true, "transport": { "file1": { "type": "file", "enabled": true, "filename": "log/iobroker", "fileext": ".log", "maxsize": null, "maxFiles": null "syslog1": { "type": "syslog", "enabled": false, "host": "localhost", "host_comment": "The host running syslogd, defaults to localhost.", "port_comment": "The port on the host that syslog is running on, defaul$ "protocol": "udp4", "protocol_comment": "The network protocol to log over (e.g. tcp4, udp4,$ "path_comment": "The path to the syslog dgram socket (i.e. /dev/log or $ "facility_comment": "Syslog facility to use (Default: local0).", "localhost": "iobroker", "localhost_comment": "Host to indicate that log messages are coming fro$ "sysLogType_comment": "The type of the syslog protocol to use (Default:$ "app_name_comment": "The name of the application (Default: process.titl$ "eol_comment": "The end of line character to be added to the end of the$ } } }, "dataDirComment": "Always relative to iobroker.js-controller/", "dataDir": "../../iobroker-data/" }
-
Gib mal beim slave unter iobroker setup custom
Auch bei Objects die IP des masters ein
Gruß Rainer
-
Ich habe die IP Adresse neu eingegeben.
Nun wird sie unter /opt/iobroker/iobroker-data/iobroker.json auch angezeigt.
Ich bin mir aber sicher, dass ich diese IP bereits eingegeben hatte. :?
Habe versucht, einen Adapter auf dem Slave hinzuzufügen.
Bekomme immer wieder die gleiche Meldung.
$ ./iobroker add hilink undefined server error undefined Error: server error at Socket.onPacket (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:445:19) at XHR. <anonymous>(/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js:268:10) at XHR.Emitter.emit (/root/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) at XHR.Transport.onPacket (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transport.js:145:8) at callback (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js:144:10) at Object.exports.decodePayload (/root/node_modules/engine.io-parser/lib/index.js:309:18) at XHR.Polling.onData (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js:148:10) at Request. <anonymous>(/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js:126:10) at Request.Emitter.emit (/root/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) at Request.onData (/root/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js:296:8)</anonymous></anonymous>
Anschließend habe ich die Verbindung zum Master getrennt und mich direkt auf den ioBroker angemeldet.
Hier kann die Adapter ohne Probleme installieren.
Nachtrag: Habe bei PI gerade komplett neu aufgesetzt.
Nun funktioniert alles!
Es ist aber trotzdem merkwürdig, dass es vorher nicht funktionierte! :?
-
Glückwunsch. Prima das es jetzt funktioniert. Darf ich noch fragen, welche npm-Version du jetzt nutzt und ob der Autostart auf dem PI sofort geklappt hat?
-
Danke!
Aktuell ist NPM 5.8.0 drauf.
Wobei ich auch bei dieser Neuinstallation das Problem hatte, dass NPM nicht vorhanden war bzw. mit installiert worden ist.
Ich habe mich an die folgende Anleitung gehalten. http://www.iobroker.net/docu/?page_id=5106&lang=de
Somit musste ich über
> sudo apt-get install npm
npm installieren, anschließend habe ich habe ich die Version 5.8.0 über> sudo npm install -g npm@5
eingespielt.Der Autostart hat auch nicht geklappt, da die Datei iobroker.sh. fehlte.
:lol: :mrgreen: