Hallo zusammen und Entschuldigung für die Stille, aber ich komme voran…
Ich wollte euch gestern Abend einen Zwischenstand geben, aber ich konnte nicht.
Ich werde euch heute Abend einen Debrief geben mit einem neuen Testbild, das die letzten Änderungen von Gladys (master) enthält, darunter die Szenen und ein Update des Dienstes.
Genau, ich habe auch noch alles das hier liegen: ![]()
Übrigens @Reno, planst du die Anzeige des Netzwerks? (etwas ähnlich wie bei Z-Wave)
Entschuldigung, ich kann Ihnen heute Abend kein Bild mit dem Service bereitstellen.
Ich habe den Abend damit verbracht, es zu erstellen, aber ich habe Testfehler und Linter-Fehler in Dateien, die seit mehreren Monaten nicht verändert wurden…?? Ich vermute, dass Änderungen am Linter und anderen Dingen im Master-Zweig von Gladys vorgenommen wurden, die ich über ein Rebase übernommen habe.
Können Git-Experten das bestätigen?
Dadurch wird die Lieferung etwas verschoben.
Aber ich gebe Ihnen einen kurzen Überblick über die Entwicklungen dieser Version und was noch zu tun ist.
Durchgeführte Entwicklungen:
- Ein Reiter Einstellungen, mit dem Sie festlegen können, an welchem USB-Port der Zigbee2mqtt-Dongle angeschlossen ist
- Ein Reiter Setup mit einem Aktivierungsknopf für den Service, mit dem Sie die externen Docker-Container starten und stoppen können, die für den Service erforderlich sind. Eine Tabelle zeigt den Status der Container an.
- Der Service verwendet seine eigene MQTT-Konfiguration, die unabhängig von dem Haupt-MQTT-Service von Gladys ist.
Heute kann der Service nur die Container starten und stoppen, was bedeutet, dass Sie sie zunächst manuell erstellen müssen, indem Sie dem Zigbee2Mqtt-Tutorial folgen. (Es muss nur eine kleine Änderung am Namen des MQTT-Containers vorgenommen werden, der zwingend ‹ mqtt4z2m › heißen muss.)
Der nächste Entwicklungsschritt betrifft die automatische Erstellung der Container aus Gladys heraus, um die Erstellungsschritte für den Benutzer zu verbergen.
Anschließend plane ich, einen Reiter „Pairing“ hinzuzufügen, um die Paarung der Geräte zu verwalten, die ich mit Zigbee als recht umständlich empfinde und die heute das Anzeigen der Protokolle des Zigbee2Mqtt-Containers erfordert. So könnten wir den Status der Paarung direkt unter Gladys anzeigen.
Ich denke, es ist möglich, die Netzwerkanzeige zu realisieren, wenn wir die bestehende Z-Wave-Anzeige leicht anpassen können. Allerdings sehe ich nicht ganz den Sinn einer solchen Ansicht.
Warum eine eigene MQTT-Konfiguration verwenden?
Ich denke, das ist kompliziert für den Benutzer.
Außerdem arbeite ich derzeit an einer Möglichkeit, einen Broker dynamisch auf dem Docker-Container zu installieren, auf dem Gladys installiert ist.
Ich habe mich wohl etwas unklar ausgedrückt, es war spät. ![]()
Der Service startet 2 Container: 1 MQTT-Broker und zigbee2mqtt.
Die 2 Container waren immer mit dem Service verbunden, mussten aber manuell verwaltet werden (siehe mein Tutorial).
Daher ist es jetzt transparent für den Benutzer und alles wird von Gladys aus verwaltet. Der Benutzer muss sich nicht mit der Konfiguration des Brokers befassen. Sie ist im Code definiert und spezifisch für Zigbee2mqtt.
Für MQTT haben wir bisher den MQTT-Broker im MQTT-Service von Gladys definiert. Ich hatte @pierre-gilles daher vorgeschlagen, eine Möglichkeit hinzuzufügen, um mehrere Broker im MQTT-Service hinzuzufügen. Er bevorzugte jedoch, den Broker spezifisch für Zigbee2mqtt und unabhängig zu gestalten.
Das habe ich umgesetzt.
Wenn du einen unabhängigen Broker über Docker dynamisch von Gladys aus verwalten möchtest, kannst du dann meinen Code übernehmen und verbessern (ich bin kein Node-Entwickler
).
Ich hoffe, ich war diesmal klarer.
@Reno also da sag ich Hut ab!! Super Arbeit, ich kann es kaum erwarten, alle meine Geräte zu nutzen, denn wie @julienL habe ich auch viel Xiaomi-Equipment, das mit Zigbee funktioniert ![]()
Nochmals vielen Dank für all die Zeit, die du investiert hast, um Menschen wie mir eine einfache und effektive Erfahrung zu ermöglichen!! ![]()
Ich habe die Geschichte mit dem unabhängigen MQTT auch nicht wirklich verstanden, da die Topics ohnehin unterschiedlich sind. Ich sehe nicht, warum (aus meiner Sicht) ich einen zusätzlichen Container dafür starten sollte.
Deshalb habe ich den Eindruck, dass ich, wenn ich mir die Screenshots ansehe, gezwungen bin, den Service die betreffenden Container verwalten zu lassen (vielleicht irre ich mich, ich habe es noch nicht getestet).
In einem komplexen Netzwerk ist es einfacher zu sehen, wer mit wem kommuniziert (Gerät / Router / Koordinator). Die Standardansicht ist nicht so gut, meiner Meinung nach gibt es zu viele Informationen. Der Bedarf besteht darin, die Routen, den Knotentyp und die Signalqualität zu haben.
Es ist im Graphviz-Format:
digraph G {
node[shape=record];
"0x00124b0018e1e975" [style="bold, filled", fillcolor="#e04e5d", fontcolor="#ffffff", label="{Koordinator|0x00124b0018e1e975 (0)|2020-05-01T19:17:26+02:00}"];
"0x00124b0018e1e975" -> "0x00124b001b7d88dc" [penwidth=0.5, weight=0, color="#994444", label="17"]
"0x00158d0002c14c65" [style="rounded, dashed, filled", fillcolor="#fff8ce", fontcolor="#000000", label="{Wohnzimmer|0x00158d0002c14c65 (40357)|Xiaomi Aqara Temperatur-, Feuchtigkeits- und Drucksensor (WSDCGQ11LM)|2020-05-01T19:15:12+02:00}"];
"0x00158d0002c14c65" -> "0x00124b0018e1e975" [penwidth=1, weight=0, color="#994444", label="170"]
"0x00158d0002c14c65" -> "0x00124b001b7d88dc" [penwidth=1, weight=0, color="#994444", label="96"]
"0x00158d0002c8ec72" [style="rounded, dashed, filled", fillcolor="#fff8ce", fontcolor="#000000", label="{Küche|0x00158d0002c8ec72 (63279)|Xiaomi Aqara Temperatur-, Feuchtigkeits- und Drucksensor (WSDCGQ11LM)|2020-05-01T19:03:17+02:00}"];
"0x00158d0002c8ec72" -> "0x00124b001b7d88dc" [penwidth=1, weight=0, color="#994444", label="103"]
"0x00158d00040aaf16" [style="rounded, dashed, filled", fillcolor="#fff8ce", fontcolor="#000000", label="{Eingangstür|0x00158d00040aaf16 (62116)|Xiaomi Aqara Tür- und Fensterkontaktsensor (MCCGQ11LM)|2020-05-01T18:50:19+02:00}"];
"0x00158d00040aaf16" -> "0x00124b0018e1e975" [penwidth=1, weight=0, color="#994444", label="170"]
"0x00158d00040aaf16" -> "0x00124b001b7d88dc" [penwidth=1, weight=0, color="#994444", label="56"]
"0x00124b001b7d88dc" [style="rounded, filled", fillcolor="#4ea3e0", fontcolor="#ffffff", label="{Zigbee-Router|0x00124b001b7d88dc (54718)|Benutzerdefinierte Geräte (DiY) [CC2530-Router](http://ptvo.info/cc2530-based-zigbee-coordinator-and-router-112/) (CC2530.ROUTER)|2020-05-01T19:16:36+02:00}"];
"0x00124b001b7d88dc" -> "0x00124b0018e1e975" [penwidth=2, weight=1, color="#009900", label="68 (Routen: 54718)"]
"0x00158d0002c8d9ab" [style="rounded, dashed, filled", fillcolor="#fff8ce", fontcolor="#000000", label="{Badezimmer|0x00158d0002c8d9ab (17528)|Xiaomi Aqara Temperatur-, Feuchtigkeits- und Drucksensor (WSDCGQ11LM)|2020-05-01T19:01:29+02:00}"];
"0x00158d0002c8d9ab" -> "0x00124b001b7d88dc" [penwidth=1, weight=0, color="#994444", label="57"]
"0x00158d0002c14900" [style="rounded, dashed, filled", fillcolor="#fff8ce", fontcolor="#000000", label="{Elternschlafzimmer|0x00158d0002c14900 (34881)|Xiaomi Aqara Temperatur-, Feuchtigkeits- und Drucksensor (WSDCGQ11LM)|2020-05-01T18:57:19+02:00}"];
"0x00158d0002c14900" -> "0x00124b001b7d88dc" [penwidth=1, weight=0, color="#994444", label="1"]
"0x00158d0002c8ccf0" [style="rounded, dashed, filled", fillcolor="#fff8ce", fontcolor="#000000", label="{Sashas Zimmer|0x00158d0002c8ccf0 (25360)|Xiaomi Aqara Temperatur-, Feuchtigkeits- und Drucksensor (WSDCGQ11LM)|2020-05-01T19:14:33+02:00}"];
"0x00158d0002c8ccf0" -> "0x00124b0018e1e975" [penwidth=1, weight=0, color="#994444", label="170"]
"0x00158d0002c8ccf0" -> "0x00124b001b7d88dc" [penwidth=1, weight=0, color="#994444", label="34"]
"0x00158d00042345ac" [style="rounded, dashed, filled", fillcolor="#fff8ce", fontcolor="#000000", label="{Fensterfront|0x00158d00042345ac (24351)|Xiaomi Aqara Tür- und Fensterkontaktsensor (MCCGQ11LM)|2020-05-01T19:02:18+02:00}"];
"0x00158d00042345ac" -> "0x00124b001b7d88dc" [penwidth=1, weight=0, color="#994444", label="86"]
}
In jedem Fall ist die Topologie-Karte nicht priorisiert ![]()
MQTT kann von verschiedenen Diensten verwendet werden, und der MQTT-Dienst in Gladys erlaubt nur die Konfiguration eines einzigen Brokers. Ich glaube, seine erste Verwendung war die Verbindung von Gladys zu einem Owntracks-Broker.
Ich hatte vorgeschlagen, einen Button zum Hinzufügen mehrerer Broker im MQTT-Dienst zu erstellen, aber @pierre-gilles bevorzugt eher unabhängige Instanzen, die sogar versteckt sein können, wie es jetzt im Zigbee2mqtt-Dienst der Fall ist.
Der Vorteil, den ich auch sehe, ist, dass wir mehrere Instanzen von Zigbee2mqtt betreiben könnten, indem wir den zigbee2mqtt-Container auf einer anderen Maschine bereitstellen und ihn auf den Broker des Dienstes verweisen lassen. Dadurch könnten wir mehrere Dongles relativ einfach verwalten.
Wir hatten eine Diskussion über diese Themen etwas weiter oben im Thread:
Tatsächlich, wenn wir so weit sind, wird das großartig sein! ![]()
Vor allem, weil ich noch viele andere Dienstideen habe: Meross-Steckdosen (WiFi nicht kompatibel mit Tasmota), Roborock-Staubsauger, SMS-Verwaltung für 4G-Router zum Senden von Alerts und Fernsteuerung, …
Für den eingebetteten Multi-Broker MQTT, einen dedizierten pro Service, bin ich nicht überzeugt. Dass man eine URL für Zigbee konfigurieren kann, eine andere für einen anderen Service, das kann ich nachvollziehen, aber von da an einen eingebetteten Broker pro Service zu erstellen, da habe ich Schwierigkeiten, das zu verstehen. Aus meiner Sicht ist das ein bisschen so, als hätte man eine Datenbank pro Service. Danach wird es Konflikte bei den Ports geben, wobei der Standardport für MQTT 1883 und für MQQTS 8883 ist… nun, das ist nur meine Meinung.
Ich wäre dabei ![]()
Das ist der aktuelle Trend mit der Containerisierung. Man trennt die Dienste, sodass man, wenn man sie nicht mehr braucht, alle zugehörigen Container löscht und keine Spuren mehr übrig bleiben.
Ich hatte eine Diskussion mit @pierre-gilles, der in diese Richtung gehen wollte, denn zusätzlich nimmt ein MQTT-Broker Mosquitto sehr wenig Platz ein.
Es wäre gut, die Wahl für Gladys schnell zu definieren, bevor wir mit der Entwicklung weitergehen.
Wir warten auf die Rückmeldung von @pierre-gilles.
Das Roborock wäre cool…
Aber wenn ich sehe, wie viel Zeit ich für die Entwicklung von Zigbee2mqtt brauche, dann ist das nicht so schnell. ![]()
Damals startete der MQTT-Dienst keinen eigenen Broker, aber soweit ich sehe, scheint @AlexTrovato den automatischen Start des MQTT-Brokers in Gladys zu implementieren.
Die Priorität Nr. 1 in Gladys 4 ist das Nutzererlebnis.
Ich schlug ursprünglich vor, zwei Broker zu verwenden, damit es keine „komischen Zustände“ wie folgende gibt:
- Ich verbinde einen lokalen MQTT-Broker mit der MQTT-Integration
- Ich konfigurieren Zigbee2mqtt
- Ich ändere etwas in der Konfiguration des MQTT-Brokers der MQTT-Integration für einen anderen Dienst
- Wurde der Zigbee2mqtt-Container mit den Informationen des neuen MQTT-Brokers neu gestartet? Wurde der Benutzer benachrichtigt?
Wenn du eine Integration hinbekommst, die ohne seltsame Bugs funktioniert und denselben Broker verwendet, dann perfekt, du kannst denselben Broker verwenden ![]()
Ich möchte nur mystische Bugs vermeiden, denn hier koppeln wir zwei Dienste, die beide entfernte Zustände haben, die synchronisiert werden müssen.
Natürlich, @AlexTrovato, kannst du mir sagen, dass der Tasmota-Dienst dasselbe tut. Für mich ist das anders, der Zigbee2mqtt-Dienst ist ein separater Container von Gladys, und wir müssen es schaffen, all diese schönen Dinge zu synchronisieren!
Mit der automatischen Konfiguration des MQTT-Brokers bin ich damit einverstanden, denselben Broker zu verwenden, wenn alle Fälle gut verwaltet werden.
Hallo zusammen,
Jetzt könnt ihr das neueste Gladys-Zigbee2Mqtt-Image testen!
Dieses ermöglicht es, Szenen zu testen, aber ihr könnt nicht Französisch als Sprache auswählen. Egal, die Texte, die dem Dienst zugeordnet sind, wurden noch nicht übersetzt.
Um das Image auf eurem RPi zu starten, habe ich das Tuto Zigbee2mqtt auf Github aktualisiert:
Kurz zusammengefasst,
- Ladet die Skripte (die auf .sh enden) auf eurem RPi herunter.
wget https://raw.githubusercontent.com/R6n0/Tuto_Zigbee2mqtt_avec_Gladys/master/*.sh
Ersetzt * durch die Namen der 4 Dateien, eine nach der anderen, da die Wildcard auf http nicht funktioniert.
- Macht sie ausführbar:
chmod +x *.sh
- Startet das Hauptskript, das die anderen aufruft:
./gladys-zigbee2mqtt_run.sh
Falls ihr bereits das alte Image verwendet habt, könntet ihr am Anfang einen Fehler erhalten, da Docker versucht, das Netzwerk für die Container zu erstellen und dieses bereits existiert.
Dieser Fehler ist kein Problem. Es ist nur eine Warnung und alles sollte trotzdem funktionieren
Ich war ziemlich überrascht, als ich auf meinem Docker Hub-Konto sah, dass das Image mehr als 50.000 Mal heruntergeladen wurde… Ich kann es kaum glauben. Sie müssen einen Fehler in ihrer Zählung haben, oder?
Oder aber, es ist der Erfolg von Gladys… ![]()
Viel Spaß beim Testen und ich warte gespannt auf euer Feedback…
Danke für dein Engagement @Reno! Tolle Arbeit ![]()
Ich kann es kaum erwarten, das in Gladys Beta zu sehen.
Was fehlt der Integration, damit sie in die Beta aufgenommen werden kann?
Das ist nicht wirklich die Präko für zigbee2mqtt, dafür gibt es die Router
Hallo,
Ich wollte das letzte Bild testen, aber ich habe ein Problem bei der Auswahl des USB-Ports des Dongles, es wird kein Port in der Liste angezeigt (auch nach mehreren Aktualisierungen nicht)!
Er wurde jedoch in den Logs der Ausführung des Skripts zigbee2mqtt_run.sh angezeigt.
Logs
$ ./zigbee2mqtt_run.sh
Suche nach der Schnittstelle des CC2531-Dongles
/dev/ttyACM0 - CC2531
Konfiguration von Zigbee2mqtt
Start des Zigbee2mqtt-Containers
73d2e9b6ebb2b4fb7ef534a7ffcb5dbb91262cfa3a7c02a243a0bb8c5a3ea081
zigbee2mqtt
Hast du eine Idee, woher das kommen könnte?
Übrigens habe ich einen kleinen Tippfehler im Tutorial bemerkt, die Beschreibung der manuellen Methode spiegelt die letzten Änderungen nicht wider. Insbesondere wird der Docker-Container mqtt mit dem Namen mqtt-broker statt mqtt4z2m gestartet, das kann einige Probleme verursachen ![]()
Für mich fehlt nur noch die Erstellung der Container über Gladys, falls sie nicht existieren.
Ich arbeite daran und es sollte nicht viel Arbeit sein.
Zusätzlich habe ich heute Morgen die PR von @AlexTrovato über MQTT lokal über einen Container entdeckt, in der er dasselbe macht wie ich.
Ich schaue mir das im Detail an, um alles kohärent zu gestalten.
Ich muss auch noch einige automatische Tests hinzufügen, die ich nicht gemacht habe (ich bin nicht daran gewöhnt…).
Danach können wir zusammenführen und PRs für jede Verbesserung öffnen. Ich kann es kaum erwarten…
Ja, das macht man, wenn man alles über Zigbee also drahtlos vernetzen möchte.
Mit Gladys sieht man den Vorteil, das lokale Netzwerk (verkabelt) zu nutzen, um die Daten zwischen den zigbee2mqtt-Diensten zu verteilen, das wird zuverlässiger sein. Im drahtlosen Zigbee-Mesh-Netzwerk, wenn ein Zigbee-Dongle ausfällt und als Router dient, verliert man einen ganzen Teil des Netzwerks, der über diesen Router zum Server gelangt. In unserem Fall sind nur die Geräte vom Dongle getrennt, der Rest funktioniert noch mit Gladys.
Und zusätzlich ermöglicht es, entfernte Zigbee-Netzwerke miteinander zu verbinden (z. B. Gartenhaus, Schwimmbadhaus).
Ja, ich kämpfe seit diesem Wochenende mit diesem Thema…
Für die Entwicklung lasse ich Gladys direkt auf dem Raspberry Pi laufen, ohne Docker.
Als ich die USB-Verwaltung hinzugefügt habe, habe ich das verwendet, was im Z-wave-Service bereits vorhanden war. Da ich aber auch einen Z-Wave-Dongle habe, habe ich festgestellt, dass die angezeigte Darstellung nicht leicht erkennen lässt, welcher Dongle Z2M und welcher Z-Wave ist.
In der Anzeige habe ich daher die Herstellerinformation hinzugefügt, die vom USB-Gerät unter Linux zurückgemeldet wird.
Wenn man unter Docker läuft, erhält der Container den ‹ Pfad › des Dongles (/dev/ttyACM0 z. B.), verliert aber alle anderen Informationen, was das von dir beschriebene Anzeigeproblem verursacht.
Um dies zu vermeiden, habe ich die Option -v /run/udev:/run/udev beim Starten des Gladys-Containers hinzugefügt.
Du musst also sicherstellen, dass du diese Option in Gladys_run.sh hast.
Kannst du mir auch sagen, welche Distribution du verwendest? Ich habe nur mit Raspbian Buster getestet.




