da ich bereits einen bestehenden Mosquitto-Server (Docker) und einen Docker mit zigbee2mqtt habe, ist es möglich, Gladys mit diesen beiden Docker-Containern zu verbinden, um Zigbee-Sensoren nutzen zu können? Oder ist der Umweg über die beiden internen Docker-Container von Gladys (MQTT und zigbee2mqtt) zwingend erforderlich?
Ich versuche eine Antwort, ohne überhaupt ein Experte zu sein, aber ich denke, es ist möglich, vorausgesetzt, die Zugriffe auf die MQTT- und z2m-Container sind korrekt konfiguriert: Benutzername/Kennwort und IP-Adresse:Port
Im Zweifel, bevor man eine Konfigurationsdatei ändert… wir warten auf eine Bestätigung!
Das Problem ist, dass du Portkonflikte bekommst, wenn du die von Gladys zusätzlich zu deinen eigenen auf derselben Maschine bereitstellst,
ton docker mqtt = IP + Port (wahrscheinlich 1883) + Benutzername + Passwort
ton docker zigbee2mqtt = IP + Port (wahrscheinlich 1884) + Benutzername + Passwort
docker gladys mqtt = IP + Port (1883) + Benutzername (standardmäßig gladys) + Passwort, das in Gladys definiert ist
docker gladys zigbee2mqtt = IP + Port (1884) + (standardmäßig gladys) + Passwort in der Datei « configuration.yaml », die sich im Verzeichnis « var/lib/gladysassistant/zigbee2mqtt/z2m » im Abschnitt « mqtt: » befindet
Daher musst du die Ports in deinen Containern ändern, und ich denke, dass es keine gute Idee ist, andere Docker-Container als die von Gladys zu verwenden, oder du musst diese Datei in deinem Docker-Container anpassen, damit sie korrekt mit Gladys kommunizieren, Gladys benötigt zigbee2mqtt, um Geräte zu integrieren, aber diese Parameter sind nicht über Gladys zugänglich, im Gegensatz zum MQTT-Teil
Wenn sie auf einer anderen Maschine sind, kein Problem!
Was lässt du aktuell laufen, das diese Docker-Container erfordert, bevor du Gladys installierst?
Ich habe diese 2 Container mit Jeedom verwendet, die ich zuvor genutzt habe.
Ich hätte sie gerne behalten, weil ich sie gut kenne, ihre Konfigurationsdateien bearbeiten kann, sie sind gesichert und funktionieren seit langem korrekt zusammen. Wenn es eine schlechte Idee ist, sie zu behalten, werde ich den Schritt wagen und nur die von Gladys verwenden und die anderen löschen.
wie du sagst, kannst du andere Ports als 1883 und 1884 in deinen Konfigurationsdateien verwenden und es gibt keine Probleme beim Arbeiten mit deinen Containern und denen von Gladys, und du hast zumindest eine stabile Konfiguration für Gladys!
Das funktioniert sehr gut und ich erhalte bereits alle meine Topics.
Allerdings installiert Zigbee2MQTT einen zweiten Docker, er nutzt nicht meinen bestehenden Mosquitto-Server.
Ich habe das Gefühl, dass du größere Chancen hast, ein Backup deines persönlichen ZigBee2MQTT zu erstellen und es in dem von Gladys verwalteten wiederherzustellen…
Ok, danke für all diese Infos, ich habe ein bisschen aufgeräumt und meinen MQTT-Broker Mosquitto behalten. Jetzt muss ich mich nur noch um meine Zigbee-Konfiguration kümmern:
Hallo @zedyxer,
Von meiner Seite aus verwende ich Gladys mit K8S, daher habe ich keinen Zugriff auf das automatische Mounten von Docker.
Für Zigbee verwende ich wie du einen Container daneben, der mit Gladys verbunden ist. Um die Kommunikation zwischen den beiden zu ermöglichen, ändere ich die Verbindungsdaten direkt im Docker.
Danach ist es nicht die beste Technik, aber ich verwende sie schon seit langer Zeit und hatte nie ein Problem. Allerdings muss man von Zeit zu Zeit die Updates des Zigbee-Codes überprüfen, ob es keine großen Änderungen gibt (bisher einmal)
Hier sind die betreffenden Dateien:
init.js
Zusammenfassung
const logger = require('../../../utils/logger');
const { CONFIGURATION } = require('./constants');
const { generate } = require('../../../utils/password');
const { PlatformNotCompatible } = require('../../../utils/coreErrors');
/**
* @description Bereitet den Dienst vor und startet die Verbindung mit dem Broker, falls erforderlich.
* @example
* await z2m.init();
*/
async function init() {
// Lade gespeicherte Konfiguration
const configuration = await this.getConfiguration();
this.mqttRunning = true
await this.connect(configuration);
await this.saveConfiguration(configuration);
return null;
}
module.exports = {
init,
};