Könntest du ein bisschen mehr Logs anzeigen, Gladys, insbesondere den Teil, in dem du deinen Dongle auswählst?
Dort sollte der Name des ausgewählten Geräts erscheinen, glaube ich.
Logs
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested
> gladys-server@ start:prod /src/server
> cross-env NODE_ENV=production node index.js
Initialising OpenZWave 1.6.1051 binary addon for Node.JS.
OpenZWave Security API is ENABLED
ZWave device db : /usr/local/etc/openzwave
User settings path : /src/server/services/zwave/node_modules/openzwave-shared/build/Release/../../
Option Overrides : --Logging false --ConsoleOutput false --SaveConfiguration true
2021-01-15T14:34:10+0100 <info> init.js:38 (Zigbee2mqttManager.init) Zigbee2mqtt USB dongle not attached
2021-01-15T14:34:10+0100 <info> index.js:15 (Object.start) Starting Bluetooth service
2021-01-15T14:34:11+0100 <info> index.js:16 (Object.start) Starting zwave service
2021-01-15T14:34:11+0100 <info> service.start.js:40 (Service.start) Service zwave is not configured, so it was not started.
2021-01-15T14:34:11+0100 <info> index.js:19 (Object.start) Starting telegram service
2021-01-15T14:34:11+0100 <info> service.start.js:40 (Service.start) Service telegram is not configured, so it was not started.
2021-01-15T14:34:11+0100 <info> index.js:13 (Object.start) Starting usb service
2021-01-15T14:34:11+0100 <info> service.start.js:40 (Service.start) Service mqtt is not configured, so it was not started.
2021-01-15T14:34:11+0100 <info> index.js:20 (Object.start) Starting Open Weather service
2021-01-15T14:34:11+0100 <info> service.start.js:40 (Service.start) Service openweather is not configured, so it was not started.
2021-01-15T14:34:11+0100 <info> index.js:63 (Server.<anonymous>) Server listening on port 80
2021-01-15T14:34:53+0100 <info> init.js:49 () Zigbee2mqtt USB dongle attached to /dev/ttyUSB0
2021-01-15T14:34:54+0100 <info> init.js:49 () Zigbee2mqtt USB dongle attached to /dev/ttyUSB0
2021-01-15T14:34:54+0100 <info> installMqttContainer.js:32 (Zigbee2mqttManager.installMqttContainer) MQTT broker is being installed as Docker container...
2021-01-15T14:34:54+0100 <info> installMqttContainer.js:33 (Zigbee2mqttManager.installMqttContainer) Pulling eclipse-mosquitto:latest image...
2021-01-15T14:34:56+0100 <info> installMqttContainer.js:37 (Zigbee2mqttManager.installMqttContainer) Preparing broker environment...
2021-01-15T14:34:56+0100 <info> installMqttContainer.js:41 (Zigbee2mqttManager.installMqttContainer) Creating container...
2021-01-15T14:34:56+0100 <info> installMqttContainer.js:55 (Zigbee2mqttManager.installMqttContainer) Zigbee2MQTT MQTT broker is starting...
2021-01-15T14:35:01+0100 <info> installMqttContainer.js:61 (Zigbee2mqttManager.installMqttContainer) Creating user/pass...
2021-01-15T14:35:02+0100 <info> installMqttContainer.js:73 (Zigbee2mqttManager.installMqttContainer) Zigbee2MQTT MQTT broker is starting...
2021-01-15T14:35:07+0100 <info> installMqttContainer.js:77 (Zigbee2mqttManager.installMqttContainer) MQTT broker container successfully started
2021-01-15T14:35:07+0100 <info> installZ2mContainer.js:25 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt is being installed as Docker container...
2021-01-15T14:35:07+0100 <info> installZ2mContainer.js:26 (Zigbee2mqttManager.installZ2mContainer) Pulling koenkk/zigbee2mqtt:latest image...
2021-01-15T14:35:09+0100 <info> installZ2mContainer.js:29 (Zigbee2mqttManager.installZ2mContainer) Preparing Zigbee2mqtt environment...
2021-01-15T14:35:09+0100 <info> installZ2mContainer.js:35 (Zigbee2mqttManager.installZ2mContainer) Creating container...
2021-01-15T14:35:09+0100 <info> installZ2mContainer.js:43 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt successfully installed as Docker container
2021-01-15T14:35:09+0100 <info> installZ2mContainer.js:55 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt is starting...
2021-01-15T14:35:09+0100 <error> installZ2mContainer.js:74 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt container failed to start: Error: (HTTP code 500) server error - Cannot restart container bb25be6b4a4e0a5bd10398f720afa57e8fe08c017c1d34e50c8c594a4d82f45b: error gathering device information while adding custom device "/dev/ttyACM0": no such file or directory
at /src/server/node_modules/docker-modem/lib/modem.js:257:17
at getCause (/src/server/node_modules/docker-modem/lib/modem.js:287:7)
at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:256:5)
at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:232:14)
at IncomingMessage.emit (events.js:326:22)
at endReadableNT (_stream_readable.js:1241:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
reason: 'server error',
statusCode: 500,
json: {
message: 'Cannot restart container bb25be6b4a4e0a5bd10398f720afa57e8fe08c017c1d34e50c8c594a4d82f45b: error gathering device information while adding custom device "/dev/ttyACM0": no such file or directory'
}
}
2021-01-15T14:35:09+0100 <error> index.js:14 (process.<anonymous>) unhandledRejection catched: Promise {
<rejected> Error: (HTTP code 500) server error - Cannot restart container bb25be6b4a4e0a5bd10398f720afa57e8fe08c017c1d34e50c8c594a4d82f45b: error gathering device information while adding custom device "/dev/ttyACM0": no such file or directory
at /src/server/node_modules/docker-modem/lib/modem.js:257:17
at getCause (/src/server/node_modules/docker-modem/lib/modem.js:287:7)
at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:256:5)
at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:232:14)
at IncomingMessage.emit (events.js:326:22)
at endReadableNT (_stream_readable.js:1241:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
reason: 'server error',
statusCode: 500,
json: {
message: 'Cannot restart container bb25be6b4a4e0a5bd10398f720afa57e8fe08c017c1d34e50c8c594a4d82f45b: error gathering device information while adding custom device "/dev/ttyACM0": no such file or directory'
}
}
}
2021-01-15T14:35:09+0100 <error> index.js:15 (process.<anonymous>) Error: (HTTP code 500) server error - Cannot restart container bb25be6b4a4e0a5bd10398f720afa57e8fe08c017c1d34e50c8c594a4d82f45b: error gathering device information while adding custom device "/dev/ttyACM0": no such file or directory
at /src/server/node_modules/docker-modem/lib/modem.js:257:17
at getCause (/src/server/node_modules/docker-modem/lib/modem.js:287:7)
at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:256:5)
at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:232:14)
at IncomingMessage.emit (events.js:326:22)
at endReadableNT (_stream_readable.js:1241:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
reason: 'server error',
statusCode: 500,
json: {
message: 'Cannot restart container bb25be6b4a4e0a5bd10398f720afa57e8fe08c017c1d34e50c8c594a4d82f45b: error gathering device information while adding custom device "/dev/ttyACM0": no such file or directory'
}
}
Ich denke, dein Problem liegt in der Berechtigungsverwaltung unter Linux.
Gladys erkennt deinen Gerätenamen (siehe Logs), kann aber die Datei services/zigbee2mqtt/docker/zigbee2mqtt-container.json nicht aktualisieren.
Man sieht, dass PathOnHost in docker inspect bei /dev/ttyACM0 bleibt.
Kannst du bitte folgendes ausführen:
docker exec -ti zigbee2mqtt ls -als ./services/zigbee2mqtt/docker/zigbee2mqtt-container.json
Nein, unmöglich, da der Container nicht läuft (nicht startet).
docker exec -ti zigbee2mqtt ls -als ./services/zigbee2mqtt/docker/zigbee2mqtt-container.json
Error response from daemon: Container bb25be6b4a4e0a5bd10398f720afa57e8fe08c017c1d34e50c8c594a4d82f45b is not running
Entschuldigung, der Befehl muss im Container „gladys“ ausgeführt werden
docker exec -ti gladysDEBUG ls -als ./services/zigbee2mqtt/docker/zigbee2mqtt-container.json
4 -rw-r--r-- 1 root root 646 Jan 15 14:35 ./services/zigbee2mqtt/docker/zigbee2mqtt-container.json
pi@gladys:~ $ docker exec -ti gladysDEBUG cat ./services/zigbee2mqtt/docker/zigbee2mqtt-container.json
{
"name": "zigbee2mqtt",
"Image": "koenkk/zigbee2mqtt:latest",
"ExposedPorts": {},
"HostConfig": {
"Binds": ["/var/lib/gladysassistant/zigbee2mqtt/z2m:/app/data"],
"PortBindings": {},
"RestartPolicy": {
"Name": "always"
},
"NetworkMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"BlkioWeightDevice": [],
"Devices": [
{
"PathOnHost": "/dev/ttyACM0",
"PathInContainer": "/dev/ttyACM0",
"CgroupPermissions": "rwm"
}
]
},
"NetworkDisabled": false,
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false
}
Ich denke, dass ein Teil meines PRs korrekt ist: der Teil, in dem ich die Variable ändere, bevor die Container gestartet werden.
Andernfalls wird die Ausführung des sed, das die Konfigurationsdatei ändert, nicht berücksichtigt, da das import am Anfang den Inhalt der Datei vor der Änderung abruft.
// Update config, for futur starts
await exec(`sed -i 's%"PathOnHost":.*%"PathOnHost": "${driverPath}",%' ./services/zigbee2mqtt/docker/zigbee2mqtt-container.json`);
await exec(`sed -i 's%"PathInContainer":.*%"PathInContainer": "${driverPath}",%' ./services/zigbee2mqtt/docker/zigbee2mqtt-container.json`);
// Update containerDescriptor var to reflect the previous changes
containerDescriptor.HostConfig.Devices[0].PathOnHost = driverPath;
containerDescriptor.HostConfig.Devices[0].PathInContainer = driverPath;
https://github.com/R6n0/Gladys/pull/2/commits/83b97124acd4a4b10475f9913f1d13f4413f3f7e
Ok. Möglicherweise. Aber erstaunlich, dass es nie ein Problem gab, mit mehreren Dongles.
Ich werde es zu Hause noch einmal testen.
Allerdings ist die DB zwingend erforderlich (du hast weiter oben gesagt „ohne testen“) und daher auch -v /var/lib/gladysassistant:/var/lib/gladysassistant, da das Gerät darin gespeichert wird und anschließend in Gladys abgerufen wird, um die Konfigurationsdatei zu aktualisieren.
Ich habe es noch einmal getestet, dasselbe Problem und derselbe Fehler.
Vergiss nicht, auf deiner Seite, um den Test erneut durchzuführen, die Datei der Konfiguration zu löschen oder Standardwerte einzugeben, die von dem Code vor dem Start geändert werden sollen.
So habe ich es mit der Datei ./services/zigbee2mqtt/docker/zigbee2mqtt-container.json gemacht und festgestellt, dass sie vor ihrer Änderung verwendet wurde.
Es sollte bei dir funktionieren, da du diese Datei bereits in der Vergangenheit geändert hast, die auf dem Betriebssystem und nicht nur im Container vorhanden ist.
Diese Datei wird nicht mit dem Betriebssystem geteilt. Sie muss sich ausschließlich im Container befinden.
Fortsetzung folgt…
Konntest du das Problem, auf das ich gestoßen bin, reproduzieren?
Hallo,
ich bin neu in der Gladys-Community, ich bin von Domoticz zu Gladys gewechselt, mit meiner Zigbee-Hardware (Xiaomi, Ikea und Blitzwoif).
Ich habe einen CC2531-Sniffer auf einem Raspberry Pi 3.
Zuerst vielen Dank für die Integration von Zigbee2mqtt in Gladys. Ansonsten habe ich es geschafft, meine Xiaomi-Temperatur- und Türsensoren zu integrieren, aber ich habe noch nicht herausgefunden, wie ich das mit meiner Ikea-Lampe (LED1736G9) und der Steckdose E1603 machen soll, aber ich habe den Schalter E1743 integriert, aber nichts für die Steckdose BW-SHP13.
Ich bin kein Programmierer und befinde mich in der Entdeckungsphase.
Ich suche auch nach einer Möglichkeit, Daten (Temperatur, Luftfeuchtigkeit…) zu erfassen, um eine Kurve zu zeichnen.
Hallo ![]()
Ich habe heute an dem von @Reno initiierten Zigbee2MQTT-Teil gearbeitet ![]()
Erledigt:
- Reno’s Branch kopieren, von master aktualisieren und Commits zusammenfassen
- Problem mit Geräten, die nicht
/dev/ttyACM0sind, beheben (danke @Reno und @lmilcent) - Unterstützung für Geräte ohne LED korrigieren
- neues Image zum Testen erstellen
- Präfix für Container hinzufügen (
gladys-z2m-) - Anzeige für mobile Geräte und Tablets anpassen
To-Do:
- Möglichkeit hinzufügen, einen bereits installierten MQTT-Container zu verwenden
- Fall „Ich habe meine Container erstellt, aber ich möchte das Gerät ändern“ verwalten
- Tests abschließen und Abdeckung überprüfen
- neue Fehler beheben
Der Code ist hier verfügbar: Zigbee2mqtt service by cicoub13 · Pull Request #1 · cicoub13/Gladys · GitHub
Das Image hier: Image Layer Details - cicoub13/sha256-15bb1a6d68399cc5a448af96c0fde1d2f28963d6fb5a7c15869eb5a7863d73d3:dev-zigbee2mqtt
Zum Testen starten Sie einen neuen Docker-Container auf Ihrem Raspberry Pi mit einem Port und einer Basis, die sich unterscheiden:
docker run -d \
--log-opt max-size=10m \
--restart=always \
--privileged \
--network=host \
--name gladys-dev-zigbee2mqtt \
-e NODE_ENV=production \
-e SERVER_PORT=1080 \
-e TZ=Europe/Paris \
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-zigbee2mqtt.db \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/gladysassistant:/var/lib/gladysassistant \
-v /dev:/dev \
-v /run/udev:/run/udev:ro \
cicoub13/gladys:dev-zigbee2mqtt
PS: Ich werde einen Pull Request auf dem offiziellen Gladys-Repository erstellen, sobald wir Fortschritte bei der Zusammenarbeit an einem Branch gemacht haben ODER wenn ich die vorherigen Punkte abgeschlossen habe.
Ich bin für Tests und Feedback offen.
Hallo,
Toll, danke! Der Service wird von vielen erwartet, mich eingeschlossen.
Ich teste das Bild heute Abend ![]()
Ich würde tatsächlich gladys verwenden, aber auch den Namen des Dienstes. Man kann sich vorstellen, später zwei identische Docker für zwei verschiedene Dienste zu haben. Was denkst du?
Ich kann bei diesem Teil helfen, falls nötig ![]()
Wow, das kommt super voran!
![]()
Äh, warte nicht auf diese Projekte. Wenn du den PR mit Hilfe von jemand anderem fertigstellen möchtest, kannst du jemand anderem Zugriff auf deinen Fork geben ![]()
@cicoub13 hast du den GitHub-Flow verwendet, um das Bild von deinem Fork zu bauen?
Bearbeitung: Erster Versuch (Ich habe den Docker-Befehl aus deinem Post bearbeitet, es wird udev benötigt, sonst ist die Liste der Dongles leer)
2021-01-31T10:52:23+0100 <info> installMqttContainer.js:32 (Zigbee2mqttManager.installMqttContainer) MQTT-Broker wird als Docker-Container installiert...
2021-01-31T10:52:23+0100 <info> installMqttContainer.js:33 (Zigbee2mqttManager.installMqttContainer) eclipse-mosquitto:latest-Image wird heruntergeladen...
2021-01-31T10:52:24+0100 <info> installMqttContainer.js:37 (Zigbee2mqttManager.installMqttContainer) Vorbereitung der Broker-Umgebung...
2021-01-31T10:52:24+0100 <info> installMqttContainer.js:41 (Zigbee2mqttManager.installMqttContainer) Container wird erstellt...
2021-01-31T10:52:25+0100 <info> installMqttContainer.js:55 (Zigbee2mqttManager.installMqttContainer) Zigbee2MQTT MQTT-Broker startet...
2021-01-31T10:52:30+0100 <info> installMqttContainer.js:61 (Zigbee2mqttManager.installMqttContainer) Benutzer/Kennwort wird erstellt...
2021-01-31T10:52:31+0100 <info> installMqttContainer.js:73 (Zigbee2mqttManager.installMqttContainer) Zigbee2MQTT MQTT-Broker startet...
2021-01-31T10:52:36+0100 <info> installMqttContainer.js:77 (Zigbee2mqttManager.installMqttContainer) MQTT-Broker-Container erfolgreich gestartet
2021-01-31T10:52:36+0100 <info> installZ2mContainer.js:54 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt startet...
2021-01-31T10:52:36+0100 <info> installZ2mContainer.js:66 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt erfolgreich gestartet
2021-01-31T10:52:37+0100 <info> connect.js:23 (MqttClient.<anonymous>) Verbindung zum MQTT-Container mqtt://localhost:1884 hergestellt
2021-01-31T10:52:37+0100 <info> subscribe.js:12 (Zigbee2mqttManager.subscribe) Abonnieren des MQTT-Themas zigbee2mqtt/#
Ich habe bereits einen Container, der zigbee2mqtt heißt.
Ja hier: https://github.com/cicoub13/Gladys/actions/runs/523621070
Indem die Docker-Geheimnisse ausgefüllt und der Build der Gladys-Entwickler-Images auf meinem Branch manuell gestartet wird ![]()
Etwas, das auch in die To-Do-Liste aufgenommen werden sollte, ist die Möglichkeit, einen MQTT-Server anzugeben, falls man nicht möchte, dass Gladys diesen Teil verwaltet.
