Zigbee2MQTT - Autostart funkioniert nicht.

Begonnen von Brad Majors, 05 März 2025, 12:41:02

Vorheriges Thema - Nächstes Thema

Brad Majors

Nachdem ich jetzt nach ein paar Hürden Zigbee2MQTT zum laufen bekam das nächste (kleine) Problem.

Ich bekomme es nicht in meinem PI 3 zum Autostart hinzugefügt.

Komisch ist auch das im manuellen start geht es nur mit sudo, sonst kommt auch eine Fehlermeldung.

sudo pnpm start
Das ist mein Start code.

Liegt das Problem irgendwo bei den Schreibrechten?


[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
Environment=NODE_ENV=production
Type=notify
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
# Or use StandardOutput=null if you don't want Zigbee2MQTT messages filling syslog, for more options see sys>
StandardError=inherit
WatchdogSec=10s
Restart=always
RestartSec=10s
User=pi

[Install]
WantedBy=multi-user.target


Das die Fehlermeldung:

pi@raspberrypicloud:~ $ sudo systemctl start zigbee2mqtt
Job for zigbee2mqtt.service failed because the control process exited with error code.
See "systemctl status zigbee2mqtt.service" and "journalctl -xeu zigbee2mqtt.service" for details.



Das ist die systemctl status zigbee2mqtt.service info:

pi@raspberrypicloud:~ $ systemctl status zigbee2mqtt.service
● zigbee2mqtt.service - zigbee2mqtt
     Loaded: loaded (/etc/systemd/system/zigbee2mqtt.service; enabled; preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Wed 2025-03-05 12:36:55 CET; 2s ago
    Process: 2593 ExecStart=/usr/bin/npm start (code=exited, status=1/FAILURE)
   Main PID: 2593 (code=exited, status=1/FAILURE)
        CPU: 8.809s

Mar 05 12:36:55 raspberrypicloud systemd[1]: zigbee2mqtt.service: Failed with result 'exit-code'.
Mar 05 12:36:55 raspberrypicloud systemd[1]: Failed to start zigbee2mqtt.service - zigbee2mqtt.
Mar 05 12:36:55 raspberrypicloud systemd[1]: zigbee2mqtt.service: Consumed 8.809s CPU time.


Und das ist die journalctl -xeu zigbee2mqtt.service info:

pi@raspberrypicloud:~ $ journalctl -xeu zigbee2mqtt.service
Mar 05 12:38:11 raspberrypicloud systemd[1]: Starting zigbee2mqtt.service - zigbee2mqtt...
░░ Subject: A start job for unit zigbee2mqtt.service has begun execution
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit zigbee2mqtt.service has begun execution.
░░
░░ The job identifier is 3612.
Mar 05 12:38:12 raspberrypicloud npm[2701]: > zigbee2mqtt@2.1.3 start
Mar 05 12:38:12 raspberrypicloud npm[2701]: > node index.js
Mar 05 12:38:13 raspberrypicloud npm[2713]: Starting Zigbee2MQTT without watchdog.
Mar 05 12:38:17 raspberrypicloud npm[2713]: Error: EACCES: permission denied, mkdir '/opt/zigbee2mqtt/data/l>
Mar 05 12:38:17 raspberrypicloud npm[2713]:     at Object.mkdirSync (node:fs:1372:26)
Mar 05 12:38:17 raspberrypicloud npm[2713]:     at Logger.init (/opt/zigbee2mqtt/lib/util/logger.ts:75:16)
Mar 05 12:38:17 raspberrypicloud npm[2713]:     at new Controller (/opt/zigbee2mqtt/lib/controller.ts:79:16)
Mar 05 12:38:17 raspberrypicloud npm[2713]:     at start (/opt/zigbee2mqtt/index.js:159:18)
Mar 05 12:38:17 raspberrypicloud systemd[1]: zigbee2mqtt.service: Main process exited, code=exited, status=1>
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ An ExecStart= process belonging to unit zigbee2mqtt.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 1.
Mar 05 12:38:17 raspberrypicloud systemd[1]: zigbee2mqtt.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ The unit zigbee2mqtt.service has entered the 'failed' state with result 'exit-code'.
Mar 05 12:38:17 raspberrypicloud systemd[1]: Failed to start zigbee2mqtt.service - zigbee2mqtt.
░░ Subject: A start job for unit zigbee2mqtt.service has failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit zigbee2mqtt.service has finished with a failure.
░░
░░ The job identifier is 3612 and the job result is failed.
Mar 05 12:38:17 raspberrypicloud systemd[1]: zigbee2mqtt.service: Consumed 8.772s CPU time.
░░ Subject: Resources consumed by unit runtime
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ The unit zigbee2mqtt.service completed and consumed the indicated resources.




Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

passibe

Was sagt die Logdatei von z2m selbst? Weiß grade nicht, wo die bei einer bare metal Installation standardmäßig gespeichert wird, weil ich es unter Docker betreibe. Da ist aber im gleichen Ordner wie die configuration.yaml ein Unterordner "log", der die ganzen Logdateien enthält.

Dass das sonst nur per sudo geht dürfte einigermaßen normal sein, weil wahrscheinlich dein regulärer Benutzer nicht die Berechtigung hat, z.B. auf den Zigbee-Stick zuzugreifen (oder so irgendwas).

MadMax-FHEM

Ob es sinnvoll ist, dass es nur als root geht?

Evtl. hilft es user=root statt user=pi in die Service-Datei einzutragen?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

#3
Mein Bauchgefühl sagt mir, dass die Zeile mit ExecStart= nicht passen könnte.

Probier mal mit /usr/bin/node anstatt npm

Siehe auch hier: https://www.zigbee2mqtt.io/guide/installation/01_linux.html#optional-running-as-a-daemon-with-systemctl
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Brad Majors

Riesen Dank euch allen.


@passibe > die Logdatei habe ich noch nicht gefunden, denke aber fast nicht das es an z2m liegt. Manueller start geht ja problemlos.

@MadMax-FHEM > hatte ich heute morgen und jetzt auch noch mal getestet, leider nein

@ betateilchen > das waren die Original settings, ging auch nicht, habe irgendwo in einem Forum gefunden das wohl npm start die Lösung sein soll.

Egal was ich mache beim starten von:

sudo nano /etc/systemd/system/zigbee2mqtt.service

pi@raspberrypicloud:~ $ sudo systemctl start zigbee2mqt
Failed to start zigbee2mqt.service: Unit zigbee2mqt.service not found.

kommt dieses, habe schon 20 verschiedene Kombis der .service getestet :).


Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

MadMax-FHEM

Zitat von: Brad Majors am 05 März 2025, 14:28:51Failed to start zigbee2mqt.service: Unit zigbee2mqt.service not found.
Ist der Service enabled/aktiviert?

Wobei es hier doch schon anders war:
Zitat von: Brad Majors am 05 März 2025, 12:41:02pi@raspberrypicloud:~ $ sudo systemctl start zigbee2mqtt
Ah: mqt vs. mqtt

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Zitat von: Brad Majors am 05 März 2025, 14:28:51@ betateilchen > das waren die Original settings, ging auch nicht, habe irgendwo in einem Forum gefunden das wohl npm start die Lösung sein soll.

Es ist halt schwierig, wenn man überhaupt keine Ahnung davon hat, was man eigentlich tut.

npm ist ein Paketmanager (genau wie pnpm). Der Paketmanager kann keine "index.js" ausführen.

Das ist ungefähr so, als würdest Du versuchen, Dein FHEM mit

apt fhem.pl fhem.cfg
zu starten, was logischerweise - und aus dem gleichen Grund - auch nicht funktionieren würde.

Davon abgesehen:

Wenn auf der Webseite des Projekts "zigbee2mqtt" das service-File so angegeben ist, dass dort node aufgerufen wird, würde ich das immer eher glauben als irgendwelchen Tipps in 3rd-party-Foren.

Dass du Dich beim Eintippen der Befehle schon vertan und ein t zu wenig eingegeben hast, hatte ja Joachim schon geschrieben.

Nach einem Logfile brauchst Du nicht zu suchen, dass das nicht vorhanden ist, steht ja schon in Deinem ersten Beitrag:

Zitat
Mar 05 12:38:17 raspberrypicloud npm[2713]: Error: EACCES: permission denied, mkdir '/opt/zigbee2mqtt/data/l>
Mar 05 12:38:17 raspberrypicloud npm[2713]:    at Object.mkdirSync (node:fs:1372:26)
Mar 05 12:38:17 raspberrypicloud npm[2713]:    at Logger.init (/opt/zigbee2mqtt/lib/util/logger.ts:75:16)


Was ich Dir vorschlagen würde:

Fang nochmal von vorne an und halte Dich strikt an die Anleitung auf zigbee2mqtt.io.


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

passibe

Zitat von: betateilchen am 05 März 2025, 20:53:08Nach einem Logfile brauchst Du nicht zu suchen, dass das nicht vorhanden ist, steht ja schon in Deinem ersten Beitrag:
Huch. Das habe ich glatt überlesen. Sorry :D

LuGu

#8
@Brad Majors

Ich denke, in deinem Startcode sollte so aussehen, wenn du  mit User=pi arbeitest.
ExecStart=/usr/bin/sudo pnpm start
Da du ja auch sonst mit
sudo pnpm start startest.

Gruß LuGu
FHEM mit RPi3 (Visu über FTUI)
HMCCU mit piVCCU3 / MQTT2 mit zigbee2mqtt