Problème d'authentification jeezigbee

Hello,

Ayant migré avec succès vers zwavejs, je m’étais dit pourquoi ne pas passer zigbee en mqtt également :slightly_smiling_face: et ben ça ne veut pas démarrer :thinking: MQTT manager est pourtant utilisé avec d’autres plugins sans avoir eu de souci.

Je pense que le problème est au niveau du plugin jeezigbee qui va mettre un password ~ dans le fichier de configuration de z2m.

L’erreur est la suivante :

Refusing to start because configuration is not valid, found the following errors:
- mqtt/password must be string

Alors niveau installation :

  • Installé sur un système x64 intel classique
  • j’ai 2 clés zigbee, une zigate et une popp (type EZSP atlas). J’ai désactivé la clé popp du plugin zigbee et je l’ai associée dans le plugin jeezigbee.

Configuration MQTT :

  • j’avais installé il y a un temps jMQTT, qui à installé mosquito en local port 1883.
  • Mosquito est configuré pour écouté sur son port 1883 sans mot de passe uniquement en localhost (allow_anonymous true). J’ai configuré le port 8883 pour le https avec authentification user/password
  • En MQTTS c’est OK, mes ESP32 tasmota fonctionnent depuis un moment en https sans soucis
  • MQTT manager a été installé il y a 2 semaines pour se connecter à ce mosquito local, aucun souci
    image
  • modbus2mqtt fonctionne depuis 2 semaines sans problème depuis l’installation de mon solaredge en passant par mqtt manager
  • zwavejs a fonctionné directement aujourd’hui durant ma migration depuis openzwave

Ma configuration jeezigbee :

La configuration z2m générée par le plugin met ce ~ pour le password, ca ne doit pas être normal… Une idée :question:

Fichier /var/www/html/plugins/z2m/data/configuration.yaml

---
permit_join: false
mqtt:
  server: mqtt://127.0.0.1:1883
  base_topic: zigbee
  include_device_information: true
  user: ""
  password: ~
serial:
  port: /dev/ttyUSB1
  adapter: ezsp
frontend:
  port: 8080
  host: 0.0.0.0
  auth_token: an0rqZ3QRFu4bHRV0Tt2AsMRvky8Zv0E
advanced:
  last_seen: ISO_8601
  log_level: error
external_converters:
- /var/www/html/plugins/z2m/core/class/../config/converters/Danfoss/icon.js

La configuration de mosquito, qui est bien correcte vu que le reste des plugins fonctionnent dessus /etc/mosquitto/mosquitto.conf :

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

Et le fichier /etc/mosquitto/conf.d/jMQTT.conf

per_listener_settings true

# jMQTT Mosquitto configuration file
listener 1883 127.0.0.1
allow_anonymous true

# jMQTTS
listener 8883 0.0.0.0
protocol mqtt
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/mosquitto.crt
keyfile /etc/mosquitto/certs/mosquitto.key
allow_anonymous true
require_certificate false
password_file /etc/mosquitto/local.passwd

Sur le sujet j’ai vu un sujet répondu à côté, @mikeul a jeté l’éponge sur son sujet et le seul workarround trouvé est d’aller mettre à la main dans le code :confused: je ne l’ai pas testé.

Salut,
Je n’ai pas refait de test car je suis passé sous zigbeelinker, mais as tu testé la proposition en mettant « : » dans l’authentification du plugin mqtt2 comme proposé ici Mqtt local sans authentification user mot de passe - #7 par Knaki02

ca ne risque pas d’avoir un impact pour les autres plugins utilisant mqtt manager ?

Bonne question… :sweat_smile:

Bonjour
Effectivement le plugin n’est pas prévu pour fonctionner en mode sans sécurité et il n’est pas prévu de l’adapter pour car c’est vraiment trop dangereux. Par contre il y a une arnaque (bug même) qui permet de le faire marcher d’après certain poste sur le forum en mettant juste : dans l’authentification au niveau de mqtt manager

Merci Loic et mikeul, dans mon cas cela a résolut le problème :slightly_smiling_face:
Mais pourquoi ce plugin jeezigbee exige un user/passwd pour mqtt manager, mais pas zwavejs aussi développé par jeedom SAS ou modbus2mqtt, cela n’a pas de sens ?

Sur la sécurité, pour une authentification fiable il faut le TLS.
Je ne vois pas trop le gain d’une authentification avec le démon en localhost. Et en authentification 1883 c’est en clair, pas d’intêret :confused:

image
J’ai redémarré jeedom pour être certain qu’au démarrage, cela ne gène pas les autres plugins et RAS :slightly_smiling_face:

J’ai ajouté quelques périphériques en lancant une inclusion depuis l’interface jeedom, ils sont bien présents via l’interface z2m ou un client mqtt mais pas dans jeedom :thinking: j’ai vu loupé qqch, ce sera pour demain


Bonjour,

Ce serait sécurisé si mosquitto était accessible uniquement en mqtts avec authentification user/password uniquement. Mais est-ce vraiment nécessaire en local et réseau local ?
Jeedom est accessible en http par défaut.

Le choix du mode sécurisé ou non pourrait être proposé à l’initiative de l’utilisateur.

akenad :slight_smile:

Bonjour
Je comprends pas trop pour vous le faite que n’importe qui puisse se connecter sur le brocker (tout feux sur le réseau le brocker n’écoute pas que sur 127.0.0.1) c’est pas moins sécurisée qu’une authentification par nom d’utilisateur et mot de passe. Soit je comprends rien en informatique soit vous avez pas compris quelque chose…

Alors oui le mieux serait par certificat c’était d’ailleurs le cas au début (le démon Mqtt manager utilise d’ailleurs les certificats) mais beaucoup d’utilisateurs ont râlé et j’ai donc trouvé un compromis avec juste nom d’utilisateur et mot de passe.

Ensuite pourquoi les autres plugins c’est pas pareil ? Car c’est simplement pas les même personnes qui ont fait les développements.

Dans le cas de la configuration plus haut, non pas n’importe qui peut se connecter sur le broker, il écoute en localhost:1883 sans authentification. Depuis le réseau seul 8883 est en écoute pour le TLS avec mot de passe.

Je comprend ton point de vue que c’est pas la même personne qui a développé, mais là jeedom SAS devrait harmoniser les développements internes (bon une guideline pour les dev externe utilisant MQTT manager serait top aussi).

Je trouve que le mot de passe généré aléatoirement pour l’interface z2m c’est déjà un bon niveau de sécurité!

Mais il y a vraiment 2 poids 2 mesures avec zwaveJS : Tu peux depuis le réseau te connecter avec admin/zwave et je vois pas où je peux changer ça :fearful:

Bref pour en revenir au bonne pratique j’ai modifié ma configuration mosquitto pour utiliser un fichier d’authentification pour le localhost:1883, pour faire proprement les choses :wink:
Et dans le cas où une modification future enlèvement l’actuce du : :sweat_smile:

Mais cela ne résoud pas le problème de NON remontée des modules dans jeedom alors qu’ils sont bien présent dans l’interface z2m :thinking:

J’ai testé de stopper et désactiver le plugin zigbee et redémarré jeezigbee dans le doute mais ça ne change rien. Je précise que le plugin n’est plus connecté à la clé popp mais uniquement la zigate.

Je vais tester une réinstallation du plugin dans le doute

EDIT : la réinstallation ne donne rien. Et en log INFO j’ai bien des données dans Z2md, un extrait :

Zigbee2MQTT:info  2023-09-11 14:10:19: Zigbee2MQTT started!
Zigbee2MQTT:info  2023-09-11 14:10:46: MQTT publish: topic 'zigbee/0xcc86ecfffefa8eac', payload '{"current":0,"device":{"applicationVersion":65,"dateCode":"","friendlyName":"0xcc86ecfffefa8eac","hardwareVersion":1,"ieeeAddr":"0xcc86ecfffefa8eac","manufacturerID":4098,"manufacturerName":"_TZ3000_rdtixbnu","model":"TS0121_plug","networkAddress":18403,"powerSource":"Mains (single phase)","stackVersion":0,"type":"Router","zclVersion":3},"energy":35.66,"indicator_mode":"off/on","last_seen":"2023-09-11T12:10:46.878Z","linkquality":128,"power":0,"power_outage_memory":"off","state":"OFF","voltage":240}'
Zigbee2MQTT:info  2023-09-11 14:11:05: MQTT publish: topic 'zigbee/0x54ef44100070c141', payload '{"consumer_connected":true,"consumption":0.21,"current":0.43,"device":{"applicationVersion":41,"dateCode":"12-06-2021","friendlyName":"0x54ef44100070c141","hardwareVersion":1,"ieeeAddr":"0x54ef44100070c141","manufacturerID":4447,"manufacturerName":"LUMI","model":"SP-EUC01","networkAddress":56293,"powerSource":"Mains (single phase)","stackVersion":2,"type":"Router","zclVersion":3},"device_temperature":30,"energy":0.21,"last_seen":"2023-09-11T12:11:05.418Z","linkquality":128,"power":102.88,"power_outage_count":0,"state":"ON","update":{"installed_version":41,"latest_version":32,"state":"idle"},"update_available":false,"voltage":225}'
Zigbee2MQTT:info  2023-09-11 14:11:19: MQTT publish: topic 'zigbee/0xcc86ecfffefa8eac', payload '{"current":0,"device":{"applicationVersion":65,"dateCode":"","friendlyName":"0xcc86ecfffefa8eac","hardwareVersion":1,"ieeeAddr":"0xcc86ecfffefa8eac","manufacturerID":4098,"manufacturerName":"_TZ3000_rdtixbnu","model":"TS0121_plug","networkAddress":18403,"powerSource":"Mains (single phase)","stackVersion":0,"type":"Router","zclVersion":3},"energy":35.66,"indicator_mode":"off/on","last_seen":"2023-09-11T12:11:19.344Z","linkquality":128,"power":0,"power_outage_memory":"off","state":"OFF","voltage":237}'

Du coup pourquoi je n’ai pas de modules dans jeedom :question:

Bonjour,
Ya trop de sujet mélangé la :

  • oui ce n’est pas la même règle pour tous les plugins, non ya aucune guideline chez jeedom en fonction du dev qui fait ca sera ses guideline. Pour le moment c’est comme ca mais une évolution la dessus est prévu
  • je ne connais pas zwavejs donc je peux pas dire pour le mot de passe
  • pour l’écoute tu le dit toi meme tu as bidouillé pour avoir localhost:1883 ce n’est pas la conf par defaut, je ne prend jamais en compte les bidouilles utilisateurs, je n’assure du support que sur la configuration par defaut
  • pour ton soucis de remonté avec toutes les bidouilles que tu as faite je ne serais pas dire, je viens de tester sur une nouvelle box en configuration par defaut et aucun soucis ca marche out of the box.

En effet je devrais fermer ce sujet et en ouvrir un pour la non remontée, le problème étant différent, merci de me le signaler.

Excuse moi mais ce n’est pas de la bidouille, c’est dans les bonnes pratiques de mosquitto. Dans la documentation ils expliquent comment evoir 2 ports d’écoute et ils conseillent même de fermer l’écoute du port 1883 pour ne laisser que le 8883 en TLS. Rien de sorcier d’ailleurs, une seule ligne de modifiée :

mqtt:
  server: mqtt://0.0.0.0:1883
mqtt:
  server: mqtt://127.0.0.1:1883

Oui peut etre mais ce n’est pas la configuration dont jeedom a besoin d’ou tes soucis. Que tu bidouilles pas de soucis mais après par contre moi je peux pas assurer le support sur ce genre de modification, le plugin peut etre compatible comme non compatible avec tes changements. Je ne les ai pas testé donc aucune idée de si le code marchera ou non.

Si tu as un fichier de configuration mosquitto fonctionnel, peux-tu me le donner pour moi tester ? Merci

Ben celui par défaut que jeedom génère a l’installation du plugin mqtt manager

Ca n’aide pas mieux, j’ai créé un autre sujet pour bien distinguer le problème et je ferme celui-ci.

Merci à mikeul et toi d’avoir passé du temps sur celui-ci.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.