Séparer les équipements selon leur provenance au sein d'un même broker?

Bonjour,

Utilisant JMQTT depuis quelques temps et en mode « tout doit y passer », j’ai déjà migré le zigbee, le zwave et le rflink sur du MQTT.

Côté Zigbee, j’utilise pour l’instant le mosquito installé sur la même VM que Zigbee2MQTT.
Pour Zwave, j’utilise ZwaveJsUi qui balance ses évenements vers une VM dédiée a moquito.
Idem pour RFLink, avec une Mega + Wemos D1 Mini qui balance en MQTT sur ma VM dédiée « mosquito ».

J’ai du coup dans JMQTT deux brokers : un avec que du zigbee, et un avec un mélange de zwave et de rflink. Sachant qu’a terme je projettai de configurer ZwaveJSUI sur ma VM « Mosquito ».

Y-a-t-il moyen de créer un broker en filtrant la source ? j’ai vu le client-id, pas testé, mais je ne suis pas sur que le projet côté RFlink balance un client-id (rien vu dans les paramètres).
Autre moyen ? possibilité de créer un tag/catégorie au niveau de chaque équipement dans le plugin JMQTT qui créérait des sous-catégories ?

(et me dite pas qu’il faut forcément un mosquitto par source :slight_smile: ca me parait overkill, ou alors moyen sur un mosquito de créer plusieurs canaux/ports …?)

Thanks.

J’ai de mon côté un broker au sens jMQTT par type de matériel (tasmota, Shelly, frigate, …), qui pointent tous vers le même mosquito avec des user différents
Chaque équipement se connecte au serveur en mosquito avec le user correspondant.

Pour aller plus loin, mais je ne l’ai pas fait, tu peux mettre en place un système d’ACL côté mosquito pour limiter les accès à tel type de topic en fonction de user

Norbert

Yes vu, en effet la solution est clairement côté config mosquitto, je suis en train de mettre cela en place. Du coup même listener mais user différents suffisant ? j’étais parti sur des couples listener/user dédiés, mais pas nécessaire en effet. A voir si besoin d’utiliser l’option use_username_as_clientid [ true | false ] . je vais tester en empirique :wink:
Merci.

Bonsoir,
C’est quoi l’intérêt de plusieurs users sur le meme broker MQTT ? ( c’est pas une critique , c’est une question :slight_smile: )
Sur mon broker j’ai ça classé par « famille »
image

Je ne saurai te repondre, j’ai des users differents, mais je n’utilise pas d’ACL.

Norbert

Juste de ne pas mettre le meme login/pwd partout. Le jour ou je decide de changer le pwd MQTT des shellies, je peux le faire.
J’a un couple user/pwd shellies/azertyuiopp que je renseigne dans les shellies et dans dans le broker jMQTT qui gère les shelly
idem pour frigate, pour les tasmotas, …

Mais ce n’ets absolument pas indispensable

Norbert

d’accord merci
D’avoir tout en mqtt sur un broker proxmox , les périphériques répondent beaucoup plus vite , ça a vraiment changé chez moi, par rapport en local avec jeedom sur mon PI.

1 « J'aime »

c’est mosquito ça où autre chose ? j’ai essayé de cloisonner les messages sur mosquito mais ce ne sont pas des listeners différents qui peuvent aider.

De mon côté j’ai fait des users différents, pour les dongle ET pour les brokers jmqtt. Avec option d’utiliser le login en tant que client-id pour éviter toute déconnexion.
Je constatait en effet très rapidement des brokers qui faisaient la valse du connecté/pas connecté…

Néanmoins je ne suis pas satisfait, ca ne cloisonne pas les messages par canaux comme j’aurais souhaité faire, j’ai 3 brokers, avec des équipements associés aux bons brokers, mais dans la pratique, les 3 brokers peuvent récupérer n’importe quel message de n’importe quel gateway…

Et ca me parait fébrile, ce matin je pouvais tester un temps réél sur chaque broker, filtré sur son préfix respectif (zwave/#, zigbee2mqtt/#, rflink/#) mais ce soir le temps réel fait du on/off perpétuel même si les brokers semblent stables …

Bref il faut que je creuse encore, mais les éléments fonctionnent, c’est déjà ça :wink:

Edit: j’ai enlevé totallement cette histoire de user as cliend-id, et renseigné zéro client id, ca causait plus de problème qu’autre chose. A mon avis le temps réel créée une souscription en // de la souscription des objets ce qui fait que tout se mord la queue. Par défaut si on ne fourni aucun client-id, mosquitto en génère un aléatoire …

Ok pour avoir des users différents par client réel différents (shelly,z2m…)

Mais c’est quoi l’intérêt d’avoir x clients virtuels sur le même client (jeedom)?
Le user ici devrait être unique et être « jeedom ».

Le jour où ton jeedom est compromis, c’est tous les user/pswd qui le sont <= car c’est ca l’intérêt aussi.

Car x « client broker jmqtt » ca multiplie l’usage de ressources jeedom aussi.

Oui, mais le jour où ton Shelly est compromis, tu n’as qu’à changer le pwd des Shelly

Je n’ai pas constaté de charge supplémentaire. Ce qui est à mon avis surtout important, c’est de ne pas avoir de topics racine trop génériques dans les équipements (et encore même pas sûr vu les perfs de mosquitto)

De classer dans l’interface jmqtt les équipements par type. D’avoir des « blocs » d’équipements.

Oui, ça ne change pas grand chose d’avoir un seul user pour tous les brokers jMQTT ou d’avoir des users différents

Du coup solution finale en place chez moi :

  • 1 seul port d’écoute sur ma vm mosquitto
  • 1 user par client, sans client id forcé, pour être sûr que personne ne marche sur les pieds de qq’un d’autre …
  • 1 broker par consommation de gateway (rflink, zwave, zigbee, etc …)

Et ca passe très bien comme cela :slight_smile:

ben pas sûr. typiquement j’avais laissé un conteneur snap zwavejsui pas désactivé sur un raspberry pi en plus de ma vm zwavejsui lxc proxmox. (Impossible de faire tourner zwavejsui sur rasp 3B+, elle plante systématiquement, pas compris, pas insisté).
Les deux conteneurs se connectaient avec le même user.

J’avais des hit & miss sur les envois de commande zwave depuis jeedom, je comprenais pas. Dans les logs mosquitto j’ai vu que deux adresse ip se connectaient avec le même user ==> a chaque fois ca fermait la connexion de l’un et vice versa. C’est ce qui expliquait mes loupés.

Donc je persiste à croire que des users différents c’est plus propre et clean.
Après le même user depuis la même machine mais avec n brokers, ca pose peut être pas de problèmes, mais à vérifier dans les logs mosquitto… Tout dépends si ce sont des connections TCP dédiées pour chaque broker … et comment mosquitto gère ça.

Tu ne confonds pas user/password pour s’authentifier sur le broker et client-id qui doit être unique pour chaque client venant sur le même broker ?

Oui c’est mosquitto hebergé sur un docker, c’est la vue mqtt explorer sur pc que tu vois.
Aprés en configurant les brokers distants dans chaque plugin, j’ai mis un nom different

A voir je vais pas reproduire le cas mais il est possible que c’est parceque j’étais avec l’option de configuration « use login as cliend-id » dans mosquitto. Du coup en effet bim. :slight_smile:

1 « J'aime »

ahh ok appli mqtt explorer, ok merci pour l’info :wink:

Bon du coup si quelqu’un est intéressé par la question posée dans ce thread, la solution pour séparer les éléments de techno différentes (quand on approche la centaine on aime bien ranger :wink: ) c’est de créer plusieurs brokers sur jmqtt, tout simplement :slight_smile:

Attention que chaque broker sur le plugin-jmqtt (on devrait dire client-broker) ait chacun un client-id différent car ils seront tous sur le même broker.

1 « J'aime »

A l’arrivée c’est toujours la meme machine et broker (serveur) qui reçoit les requêtes pas sur que ça change grand chose