Zigbee2MQTT, les informations ne remontent qu'avec npm start et pas avec zigbee2mqtt.service

Bonjour, je sollicite votre aide car après 15 jours de recherche je ,'arrive pas à résoudre mon problème.
J’ai suivi à la lettre le tuto d’installation de zigbee2mqtt et ça fonctionne quand je lance la commande npm start, j’ai détecté mes capteurs et sondes et tout fonctionne sous Jeedom. Par contre quand je lance le service et que je ferme ma console avec « npm start », je n’ai plus de remontées d’informations, pourtant le statut du service est active (running)… j’ai vérifié les droits d’utilisateur, les versions de node.js, réinstallé jeedom sur un nouveau support et rien n’y fait.
Si quelqu’un aurait une piste ou une démarche pour diagnostiquer mon problème, je suis preneur. Merci.

Hello @Coyotito_Jeedom,

Comme le reste des sujets, sans infos techniques et/ou sans les logs/traces … on est plus proche de la divination que de la proposition de solution. Je parle même pas ‹ du › tuto… au milieu des miliers qui trainent sur internet…
Donc par exemple as-tu quelques précisions sur :

  • le lien de ton tuto
  • le contenu de ton fichier de service
  • les logs de lancement dudit service …

Merci de ton intervention si rapide et accepte d’excuser mon ignorance quand aux règles de demande d’aide.

  • J’ai suivi ce tuto : Zigbee2MQTT
  • Mon fichier de service contient :
    [Unit]
    Description=zigbee2mqtt
    After=network.target

[Service]
ExecStart=/usr/bin/sudo npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=elkapo

[Install]
WantedBy=multi-user.target

  • Le statut du service:
    elkapo@ASUS:~$ sudo systemctl start zigbee2mqtt
    elkapo@ASUS:~$ systemctl status zigbee2mqtt.service
    ● zigbee2mqtt.service - zigbee2mqtt
    Loaded: loaded (/etc/systemd/system/zigbee2mqtt.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Sat 2020-11-21 10:57:42 CET; 547ms ago
    Process: 19923 ExecStart=/usr/bin/sudo npm start (code=exited, status=1/FAILURE)
    Main PID: 19923 (code=exited, status=1/FAILURE)

Re,

Pas de souci, tu comprends bien que sans infos, c’est juste pas possible… Le gagnant c’est toi à la fin.

Donc à priori, ça semble pas mal, mais il doit y avoir un souci de chemin :
Quand tu lances le npm manuellement, tu es dans /opt/zigbee2mqtt et en tant que root ? (pour faire comme dans le service)
J’imagine que toute ta config est dans /opt/zigbee2mqtt/config/ ?

oui c’est bien ça, par contre je viens de m’apercevoir que dans une de mes nombreuse tentative de résolution, j’ai laissé dans mon service la commande « sudo npm start » et je crois que ça n’a pas fonctionné, je l’enlève et reposte le statut du service.

Oui ça c’est important.

Penses aussi que :

  • le service et la commande manuelle ne fonctionnent pas bien en même temps
  • que le service doit être actif systemctl enable zigbee2mqtt

J’ai enlevé le sudo devant « npm start », voici mon statut du service :
elkapo@ASUS:~$ sudo systemctl start zigbee2mqtt
elkapo@ASUS:~$ systemctl status zigbee2mqtt.service
● zigbee2mqtt.service - zigbee2mqtt
Loaded: loaded (/etc/systemd/system/zigbee2mqtt.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-11-21 11:18:31 CET; 55s ago
Main PID: 4501 (npm)
Tasks: 23 (limit: 4473)
Memory: 48.7M
CGroup: /system.slice/zigbee2mqtt.service
├─4501 npm
├─4524 sh -c node index.js
└─4525 node index.js
elkapo@ASUS:~$

Il a l’air de fonctionner, par contre je n’ai pas de remontées d’informations.

C’est plus le service en cause là, mais l’appli directement
Faut mettre des logs et voir de quoi ça parle (accès à la clé etc)…

ajoute ce bloc dans le fchier yaml de config

advanced:
  log_level: debug
  log_directory: /var/log
  log_file: log.txt
  log_rotation: false

C’est fait, j’ai ajouté le bloc, stoppé et relancé le service, par contre je ne sais pas récupérer le log.

Tout devrait y être

C’est le moment ou tu peux commencer à te moquer :wink: , je ne trouve pas le log, même avec winscp dans le répertoire var/log, je n’ai pas de fichier log.txt…

alors le format du yml n’est peut-être pas bon.

Postes-le pour avoir une idée

homeassistant: false
permit_join: true
mqtt:
base_topic: zigbee2mqtt
server: ‹ mqtt://localhost ›
serial:
port: /dev/ttyACM0

advanced:
log_level: debug
log_directory: /var/log
log_file: log.txt
log_rotation: false

devices:
‹ 0x00158d000288e09f ›:
friendly_name: ‹ 0x00158d000288e09f ›
‹ 0x00158d0002c47e23 ›:
friendly_name: ‹ 0x00158d0002c47e23 ›
‹ 0x00158d00033b3ba9 ›:
friendly_name: ‹ 0x00158d00033b3ba9 ›
‹ 0x00158d00036b477a ›:
friendly_name: ‹ 0x00158d00036b477a ›
‹ 0x00158d00033b4c04 ›:
friendly_name: ‹ 0x00158d00033b4c04 ›
‹ 0x00158d00033b3aa5 ›:
friendly_name: ‹ 0x00158d00033b3aa5 ›
‹ 0x00158d00039fbf7c ›:
friendly_name: ‹ 0x00158d00039fbf7c ›
‹ 0x00158d0002bf8ca6 ›:
friendly_name: ‹ 0x00158d0002bf8ca6 ›
‹ 0x00158d00033b3048 ›:
friendly_name: ‹ 0x00158d00033b3048 ›
‹ 0x00158d00033b4bf2 ›:
friendly_name: ‹ 0x00158d00033b4bf2 ›
‹ 0x00158d000288dd17 ›:
friendly_name: ‹ 0x00158d000288dd17 ›

avec les balises de mise en forme ça donne quoi ?

image

L’indentation étant importante…

homeassistant: false
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost'
serial:
  port: /dev/ttyACM0

advanced:
  log_level: debug
  log_directory: /var/log
  log_file: log.txt
  log_rotation: false

devices:
  '0x00158d000288e09f':
    friendly_name: '0x00158d000288e09f'
  '0x00158d0002c47e23':
    friendly_name: '0x00158d0002c47e23'
  '0x00158d00033b3ba9':
    friendly_name: '0x00158d00033b3ba9'
  '0x00158d00036b477a':
    friendly_name: '0x00158d00036b477a'
  '0x00158d00033b4c04':
    friendly_name: '0x00158d00033b4c04'
  '0x00158d00033b3aa5':
    friendly_name: '0x00158d00033b3aa5'
  '0x00158d00039fbf7c':
    friendly_name: '0x00158d00039fbf7c'
  '0x00158d0002bf8ca6':
    friendly_name: '0x00158d0002bf8ca6'
  '0x00158d00033b3048':
    friendly_name: '0x00158d00033b3048'
  '0x00158d00033b4bf2':
    friendly_name: '0x00158d00033b4bf2'
  '0x00158d000288dd17':
    friendly_name: '0x00158d000288dd17'
1 « J'aime »

Il a l’air parfait…
Si tu passes par le lancement manuel (attention à stopper le service) ça produit le fichier log ?

Malheureusement non, on parle bien du répertoire /var/log/ qui se trouve à la racine?

Oui.

Dans ce cas, conserve uniquement

advanced:
  log_level: debug

De mémoire, je crois que les logs par défaut sont dans /opt/zigbee2mqtt/data/log/xxxxxxx => un truc avec la date

Bien vu:

info 2020-11-21 11:18:33: Logging to console and directory: ‹ /opt/zigbee2mqtt/data/log/2020-11-21.11-18-33 › filename: log.txt
error 2020-11-21 11:25:15: Failed to call ‹ OnEvent › ‹ stop › (TypeError: Cannot read property ‹ getDevices › of undefined
at Zigbee.getClients (/opt/zigbee2mqtt/lib/zigbee.js:136:30)
at OnEvent.stop (/opt/zigbee2mqtt/lib/extension/onEvent.js:23:42)
at Controller.callExtensionMethod (/opt/zigbee2mqtt/lib/controller.js:378:44))
error 2020-11-21 11:25:15: Not connected to MQTT server!
error 2020-11-21 11:25:15: Cannot send message: topic: ‹ zigbee2mqtt/bridge/state ›, payload: 'offline
info 2020-11-21 11:25:15: Disconnecting from MQTT server

Donc ça marche mais il n’arrive pas à poster dans mosquitto