Gladys et docker mqtt+zigbee2mqtt existant

Bonjour a tous,

disposant d’un serveur mosquitto(docker) existant ainsi que d’un docker zigbee2mqtt, est il possible de connecter gladys a ces 2 dockers afin de profiter de capteurs zigbee ? ou bien le passage via les 2 docker interne de Gladys (mqtt et zigbee2mqtt) est obligatoire ?

image

j’aurais aimé conserver mes 2 docker :slight_smile:
merci a vous !

Z.

Je tente une réponse sans être un expert du tout, mais je pense que c’est possible à condition de configurer correctement les accès aux containers MQTT et z2m : nom d’utilisateur / mot de passe et adresse IP:port

Dans le doute avant de modifier un quelconque fichier de conf… on va attendre une confirmation ! :wink:

Le problème c’est que tu va avoir des conflits de ports si tu déploie ceux de gladys en plus des tiens s’ils sont situés sur la même machine,
ton docker mqtt = IP + port (1883 certainement) + nom utilisateur + password
ton docker zigbee2mqtt = IP + port (1884 certainement) + nom utilisateur + password

docker gladys mqtt = IP + port (1883) + nom utilisateur (gladys par défaut) + password définis dans Gladys
docker gladys zigbee2mqtt = IP + port (1884) + (gladys par défaut) + password dans le fichier « configuration.yaml » qui se trouves dans le répertoire « var/lib/gladysassistant/zigbee2mqtt/z2m » dans la section « mqtt: »
Donc il faut que tu changes de port sur tes containers, et je pense que vouloir utiliser d’autres dockers que ceux de Gladys c’est pas forcement une bonne idée ou il faut bidouiller ce fichier mais dans ton docker pour qu’ils communiquent avec Gladys correctement, gladys à besoin de zigbee2mqtt pour integrer les devices mais ses paramètres ne sont pas accessibles depuis Gladys contrairement à la partie MQTT

S’il ils sont sur une autre machine pas de soucis !

Tu fais tourner quoi actuellement qui nécessite ces dockers avant d’installer Gladys ?

j’utilisais ces 2 containers avec jeedom que j’utilisais précédemment.
J’aurais aimé les conserver car je les connais bien, je sais manipuler leurs fichiers de config, ils sont sauvegardés et fonctionnent correctement ensemble depuis longtemps. si c’est une mauvaise idée de les conserver, je vais devoir franchir le pas et utiliser uniquement ceux de gladys et les supprimer.

Si tu veux les conserver, as tu la possibilité de changer des ports sur ceux déjà existant ?
Comme ça il n’y aura pas de problème, non ?

comme dit tu met d’autres ports dans tes fichiers de config autres que 1883 et 1884 et pas de souci pour fonctionner avec tes containers et ceux de Gladys et au moins t’as une config stable pour Gladys ! :wink:

Bonjour :wave:

Pour MQTT, c’est possible (voir la documentation) en ne cochant pas l’option « Utiliser un broker dans un conteneur Docker. »

Pour ZigbeMQTT, ce n’est pas possible, c’était une demande de fonctionnalité de certains utilisateurs (tu peux faire une demande de fonctionnalité sur le forum).

En fait j’utilise déjà mon mosquitto avec gladys :
image

cela fonctionne très bien et je récupère déjà tous mes topics.
en revanche l’install de zigbe2mqtt me crée un 2ieme docker, il n’utilise pas mon serveur mosquitto existant.

J’ai l’impression que tu aurais plus de chances de créer une sauvegarde dans ton ZigBee2MQTT perso et la restaurer dans celui géré par Gladys…

Cest exactment ce que te repond @cicoub13
A lheure actuelle z2m ne le fait pas

Ok, je fais une croix sur mes dockers existants. j’utilise le serveur mqtt de gladys :
image

puis j’active zigbee2mqtt et je me retrouver avec 2 docker mqtt :
image

  • eclipse-mosquitto qui a ete iinstallé par l’integration MQTT
  • gladys-z2m-mqtt installé par zigbee2mqtt
  • mon mosquitto que j’ai donc arrété

ce fonctionnement est normal ou bien je me rate dans une configuration ?

Non c’est tout bon :ok_hand:
Ces deux intégrations ont chacune besoin d’un broker mqtt avec lequel discuter.

Ok merci pour toutes ces infos, j’ai mis un coup de propre en conservant mon broker mqtt mosquitto, j’ai plus qu’a m’occuper de ma config zigbee:
image

Merci a tous pour les infos rapide :wink:

2 « J'aime »

Hello @zedyxer,
De mon côté, j’utilise Gladys avec K8S, donc je n’ai pas accès au montage des docker automatique.

Pour le zigbee, j’utilise comme toi un container à côté qui est relié à Gladys. Pour arriver à faire communiquer les deux, je modifie les valeurs de connexion directement dans le docker.

Je passe les fichiers:

/src/server/services/zigbee2mqtt/lib/init.js
/src/server/services/zigbee2mqtt/lib/getConfiguration.js

Après, ce n’est pas la meilleure technique, mais je l’utilise depuis un long moment et je n’ai jamais eu de problème. Cependant, il faut vérifier de temps en temps les majs du code zigbee s’il n’y a pas de grosses modifications (1 fois pour l’instant)

Voici les fichiers en question:

init.js

Résumé
const logger = require('../../../utils/logger');
const { CONFIGURATION } = require('./constants');
const { generate } = require('../../../utils/password');
const { PlatformNotCompatible } = require('../../../utils/coreErrors');

/**
* @description Prepares service and starts connection with broker if needed.
* @example
* await z2m.init();
*/
async function init() {
    // Load stored configuration
    const configuration = await this.getConfiguration();

    this.mqttRunning = true

    await this.connect(configuration);

    await this.saveConfiguration(configuration);

    return null;
}

module.exports = {
    init,
};

getConfiguration.js

Résumé
const logger = require('../../../utils/logger');
const { CONFIGURATION } = require('./constants');

/**
* @description Get MQTT configuration.
* @returns {Promise} Current MQTT network configuration.
* @example
* getConfiguration();
*/
async function getConfiguration() {
    logger.debug('Zigbee2mqtt: loading stored configuration...');

    // Load z2m parameters
    const z2mDriverPath = await this.gladys.variable.getValue(CONFIGURATION.Z2M_DRIVER_PATH, this.serviceId);
    //const z2mMqttUsername = await this.gladys.variable.getValue(CONFIGURATION.Z2M_MQTT_USERNAME_KEY, this.serviceId);
    //const z2mMqttPassword = await this.gladys.variable.getValue(CONFIGURATION.Z2M_MQTT_PASSWORD_KEY, this.serviceId);
    const z2mMqttUsername = '<username>';
    const z2mMqttPassword = '<password>';

    // Load MQTT parameters
    // const mqttUrl = await this.gladys.variable.getValue(CONFIGURATION.MQTT_URL_KEY, this.serviceId);
    const mqttUrl = 'mqtt://<IP>:1883';
    const mqttUsername = '<username>';
    const mqttPassword = '<password>';
    // const mqttUsername = await this.gladys.variable.getValue(CONFIGURATION.GLADYS_MQTT_USERNAME_KEY, this.serviceId);
    // const mqttPassword = await this.gladys.variable.getValue(CONFIGURATION.GLADYS_MQTT_PASSWORD_KEY, this.serviceId);

    return {
        z2mDriverPath,
        z2mMqttUsername,
        z2mMqttPassword,
        mqttUrl,
        mqttUsername,
        mqttPassword,
    };
}

module.exports = {
    getConfiguration,
}

merci pour ce retour, j’ai modifié mon installation hier en supprimant mon docker mqtt et mon docker zigbee2mQTT

Je testerai tout de même ta solution pour mon info perso dès que j’ai le temps un peu de courage ^^

tch@o

Z.