Script in den Autotart legen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten Morgen!

    Ich hab mich gestern mal dran gesetzt meine Garagentorsteuerung auf das neue Blynk 2.0 umzuziehen, nachdem das Alte jetzt seit Januar nicht mehr lief.

    Soweit hat auch alles gut geklappt - nur bekomme ich das Skript, welches den Blynk-Server startet, nicht mehr in den Autostart.

    Ich habe, wie schon das letzte Mal, nach dieser Anleitung gearbeitet: Link.

    Bin alles 2 Mal durchgegangen, aber es tut nicht. Der manuelle Aufruf funktioniert, aber wenn ich reboote, kommt das Pi aus Sicht Blynk nicht online. :(

    Habt ihr eine Idee, wie ich den Fehler finden kann?

    Vielen Dank!

    Michael

  • ... - nur bekomme ich das Skript, welches den Blynk-Server startet, nicht mehr in den Autostart.

    Abhängig vom OS bzw. der Version des OS auf deinem PI, gibt es verschiedene Möglichkeiten ein Script (sehr zeitnah) nach dem booten, zu starten.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Hallo,

    das im Tutorial genannten init.d ist total veraltet, nutzt man seit min 5-6 Jahren nicht mehr. Standard der Dinge zum Starten von Diensten beim systemdstart ist systemd bzw. systemd Service Units. Dazu gibt es reichlich Infos im Netz.

    Gruß, noisefloor

    Danke für den Hinweis.

    Dann habe ich es jetzt damit probiert: Link

    Wenn ich den Service von Hand starte, ist es grün.

    Nach dem Reboot sieht es wie folgt aus:

    Wie kann ich die notwendige Berechtigung vergeben?

  • Hallo,

    zeig' mal bitte deine Unit. Das `&` am Ende der `Exec=` Zeile ist auf jeden Fall überflüssig, weil systemd Units automatisch im Hintergrund laufen. Und die `After` Direktive in dem verlinkten Artikel ist auch so nur semi-sinnvoll bzw. beißt sich mit der `WantedBy` Direktive. Wenn die eigene Unit erst laufen soll, wenn eine Netzwerkverbindung steht, dann nimmt man das `network-online.target`. Bzw. wenn man will, dass die Unit möglichst spät gestartet wird, dann sucht man sich eine System Unit, die spät startet und startet die eigene Unit dann danach.

    Und eigene Units sollten eigentlich unter /etc/systemd/system liegen. Unter /lib/systemd/ liegen die Units, die das System mitbringt. Wobei das nicht zu dem Fehler führt, den du hast.

    Als Lektüre empfiehlt sich auch https://wiki.ubuntuusers.de/systemd und Unterartikel. Ist zwar ein Ubuntu-Wiki, der systemd Teil gilt aber auch weitestgehend für Raspbian OS.

    Gruß, noisefloor

  • Aha, der systemd startet als root, die (nicht ausführbare) Datei gehört aber pi.

    chmod 755 /home/pi/blynk-library-python/GaragenPi20.py

    https://wiki.ubuntuusers.de/chmod/

    Oder in der systemd unter [Service] den User=pi eintragen.

    Das hab ich getan - jetz tsieht der Fehler zumindets ein wenig anders aus:

    Hier nochmal der Inhalt meiner GaragenPiAutostart2023:

    Code
    [Unit]
    Description=GaragenPiAutostart2023
    After=multi-user.target
    
    [Service]
    User=pi
    ExecStart=/home/pi/blynk-library-python/GaragenPi20.py &
    
    [Install]
    WantedBy=multi-user.target
  • Das hab ich getan - jetz tsieht der Fehler zumindets ein wenig anders aus:

    Code
    Mar 05 17:06:01 garagenpi systemd[1]: GaragenPiAutostart2023.service: Main proce
    Mar 05 17:06:01 garagenpi systemd[1]: GaragenPiAutostart2023.service: Failed wit

    ...

    Poste die Ausgabe von:

    Code
    systemctl status GaragenPiAutostart2023 --full --no-pager

    Wie führst Du das python-Script manuell aus? Als root oder als user pi?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Was steht am Ende der beiden Zeilen?

    So sieht es vollständig aus:

    Code
    ar 05 17:06:01 garagenpi systemd[1]: GaragenPiAutostart2023.service: Main process exited, code=exited, status=203/EXEC
    Mar 05 17:06:01 garagenpi systemd[1]: GaragenPiAutostart2023.service: Failed with result 'exit-code'.
    Code
    systemctl status GaragenPiAutostart2023 --full --no-pager

    führt zu:

    Das ist etwas seltsam mit dem kopieren aber ich hoffe, diesemal hab ich alles.

    Normal starte ich das Script aus Thonny - also ich vermute das ist der User pi.

  • Normal starte ich das Script aus Thonny - also ich vermute das ist der User pi.

    Thonny kenne ich nicht bzw. habe ich nie benutzt.

    Code
    (sudo) systemctl stop GaragenPiAutostart2023

    Kopiere mal das Script "GaragenPi20.py" in das /usr/local/bin-Verzeichnis, ändere den Eintrag (bzgl. Pfad) in der service-unit und

    Code
    sudo systemctl daemon-reload

    versuch erneut zu starten (als user pi in der service-unit und wenn es nicht funktioniert, als root).

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Hallo,

    ersetzt mal die Zeile `ExecStart` durch

    ExecStart=/usr/bin/python3 /home/pi/blynk-library-python/GaragenPi20.py

    Und dann bitte die Ausgabe von sudo systemctl start GaragenPiAutostart2023.service

    Und natürlich wichtig: wenn du eine Unit manuell mit einem Editor editierst, immer sudo systemctl daemon-reload ausführen. Das entfällt, wenn man die Unit über `sudo systemctl edit GaragenPiAutostart2023.service` editiert.

    Gruß, noisefloor

  • N´abend!

    Ist das Skript überhaupt ausführbar (oder hast Du den Shebang gändert), nachdem Du den Service manuell getestet hast?

    Btw. Es wurde zwar schon geschrieben, aber lass das & am Zeilenende weg!

    Also das Script läuft sauber, wenn ich es manuell starte.

    Das & hab ich entfernt. Keine Änderung.

    HIer die Ausgabe nach dem Ändern der Zeile:

    Wenn ich `sudo systemctl edit GaragenPiAutostart2023.service`eingebe, komme ich irgendwie zu einem leeren Dokument:

    Thonny kenne ich nicht bzw. habe ich nie benutzt.

    Code
    (sudo) systemctl stop GaragenPiAutostart2023

    Kopiere mal das Script "GaragenPi20.py" in das /usr/local/bin-Verzeichnis, ändere den Eintrag (bzgl. Pfad) in der service-unit und

    Code
    sudo systemctl daemon-reload

    versuch erneut zu starten (als user pi in der service-unit und wenn es nicht funktioniert, als root).

    Also das kopieren geht schonmal nur mit `sudo su`, sonst läuft er auf permission denied.

    Dort läuft dann leider das Script schon nicht manuell, weil er dort irgendwie das blynk nicht findet.

    Code
    ModuleNotFoundError: No module named 'BlynkLib'

    Kann man diesen Umstand ändern?

    _________________________________________

    Vielen Dank für eure Tipps.

  • Genug geraten! Zeig uns bitte das Skript,

    die Ausgabe von ls -la /Pfad/zum/Skript (natürlich anpassen),

    die aktuelle Service Unit

    und das bitte jeweils in einem Codeblock!

    //Edit

    Die Ausgaben von

    Code
    id
    python -V

    bitte auch noch.

  • Hier das Script - den Token hab ich mal geixxt, wenn das ok ist:

    ls -la /home/pi/blynk-library-python/GaragenPi20.py:

    Code
    -rw-r--r-- 1 pi pi 2398 Mar  4 18:28 /home/pi/blynk-library-python/GaragenPi20.py

    Die Serviceunit:

    Code
    Unit]
    Description=GaragenPiAutostart2023
    After=multi-user.target
    
    [Service]
    User=pi
    ExecStart=/home/pi/blynk-library-python/GaragenPi20.py
    
    [Install]
    WantedBy=multi-user.target

    id:

    Code
    uid=1000(pi) gid=1000(pi) groups=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),105(input),109(netdev),117(lpadmin),997(gpio),998(i2c),999(spi)

    Python 2.7.16

  • Python 2.7.16

    BTW: Warum python 2.7? Welchen PI mit welcher OS-Version benutzt Du?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!