Autostart für lupus-hue server einrichten

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

    ich möchte den Server beim Hochfahren des Raspi gern autostarten, bekomme es mangels Kenntnis aber nicht hin. Kann mir jemand helfen?
    Bei Eingabe per Hand ins Terminal ist Folgendes erforderlich (und funktioniert):

    cd /home/pi/Python/httpd/
    /usr/bin/python3 /home/pi/Python/httpd/lupus-hue.py


    Ich hab für den Autostart diese Zeilen bisher in die rc.local eingetragen, aber anscheinend falsch...

    LG

    Einmal editiert, zuletzt von is2late (22. November 2017 um 18:46) aus folgendem Grund: Frage klarer machen

  • Hi,

    nein, das Script selbst zu erstellen würde meine Fähigkeiten um Dimensionen übersteigen.
    Keine Ahnung, ob absolute Pfade verwendet werden. Aber wie gesagt, es funktioniert, so lange ich obige Zeilen direkt ins Terminal eingebe. Kann doch aus dem Autostart heraus nicht anders sein, oder? Ich hab irgendwie das Gefühl, dass das "cd" im Autostart nicht gut ankommt. Dieser Weg ist aber erforderlich, um die Config einzulesen.

    • Offizieller Beitrag

    Halio is2late,

    was macht die Datei upus-hue.py? Braucht diese Netzwerk oder einen Server? Meine Frage deshalb, weil im Dateipfad ein httpd auftaucht. Falls ja, dann wäre es der bessere Weg eine systemd-Unit zu erstellen oder ein sleep einzubauen, bis das Netzwerk oder und Server zur Verfügung steht.

  • Moin!

    hyle : sind lupus-huenicht Funk-Lampen? ;-))

    Ansonsten, wenn Netz gebraucht wird.

    sudo raspi-config aufrufen. Dann nachfolgende Punkte aufrufen: Bootoptionen, waiting for network, Finish

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo zusammen,

    vielen Dank erst einmal!

    Ja, Hue sind Funk-Lampen, die über eine Zentrale gesteuert werden, die über Netzwerk steuerbar ist. Lupus-Hue ist ein Server. Bei "Eingabe per Hand" ins Terminal ist das "cd" für die Config erforderlich.
    Ich glaube daher nicht, dass das einfache Weglassen der "cd"-Zeile in der Autostart zum Erfolg führt.

    Ansonsten, wenn Netz gebraucht wird.

    sudo raspi-config aufrufen. Dann nachfolgende Punkte aufrufen: Bootoptionen, waiting for network, Finish

    Bernd: Kannst Du das für mich als Anfänger etwas ausführen?

  • Ich glaube daher nicht, dass das einfache Weglassen der "cd"-Zeile in der Autostart zum Erfolg führt.

    Du glaubst oder hast du es probiert?

    cd = change directory

    Aber bei Angabe von Absolutpfaden muss man nicht erst in das passende Verzeichniss wechseln, außer im Skript werden relative Pfade verwendet.

    Zeig mal wie du deine rc.local gschrieben hast

  • Moin is2late,

    Bernd: Kannst Du das für mich als Anfänger etwas ausführen?

    Gerne. ich weiss nicht ob du per SSH oder direkt mit Tastatur und Monitor mit dem RPi kommunizierst. Und auch nicht ob Raspbian lite oder Raspbian Pixel

    Auf jeden Fall musst du in einem Terminal/Konsole folgenden Befehl eingeben.

    sudo raspi-config.

    Du siehst dann ein Menue. Dort den Punkt

    3 Boot Options Configure options for start-up auswählen.

    Es folgt ein weiteres Menue.

    B2 Wait for Network at Boot Choose whether to wait for network connection during boot

    In dem Auswahlfenster markierst du Ja und bestätigst das. Das "OK" ebenfalls.

    Nun bist du wieder im ersten Menue. Dort , bitte, mit der Tab-Taste auf "Finish" gehen und bestätigen.

    Wahrscheinlich sollst du dann ein Reboot machen. Wenn nein mach trotzdem einen.

    In dem Menue bewegt man sich mit den Cursortasten und der Tab-Taste. Bestätigt wird mit Return/Enter

    Ich hoffe das das ausführlich genug ist.

    Gruss Bernd

    Mist, was vergessen.

    Diese Aktion bewirkt, das während des Bootvorgangs auf das Netzwerk gewartet wird.

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Aber wie gesagt, es funktioniert, so lange ich obige Zeilen direkt ins Terminal eingebe. Kann doch aus dem Autostart heraus nicht anders sein, oder? Ich hab irgendwie das Gefühl, dass das "cd" im Autostart nicht gut ankommt. Dieser Weg ist aber erforderlich, um die Config einzulesen.

    ein Unterschied zwischen Autostart in /etc/rc.local und Start im Terminal als user 'pi':

    • in /etc/rc.local aufgerufene Skripte werden mit owner 'root' ausgeführt
    • im Terminal ausgeführte Skripte werden mit dem owner ausgeführt unter dem man eingelogt ist.

    Viele Skripte suchen Config-Dateien unter $HOME/*. Jeder User hat ein anderes $HOME-Verzeichnis.

    user $HOME
    root /root
    pi /home/pi

    Schönen Gruß kle

    EDIT:

    auch in /etc/rc.local kann man Skripte als owner 'pi' ausführen:

    sudo -u pi -s /usr/bin/python3 /home/pi/Python/httpd/lupus-hue.py

    Einmal editiert, zuletzt von kle (23. November 2017 um 10:43)

    • Offizieller Beitrag

    Halio is2late,

    ich gehe davon aus, das Deine Anleitung von hier stammt: https://github.com/stadtplandienst/lupus-hue

    Ändere auch in der Datei lupus-hue.py die Zeile 108 in file = '/home/pi/Python/httpd/lupus-hue.conf', also füge den absoluten Pfad vor lupus-hue.conf hinzu.


    kle: sudo in der rc.local? ;)

  • kle: sudo in der rc.local?

    Hallo hyle,

    sudo nicht um root-Rechte zu erlangen,

    sondern um als user <so und so> das kommando <kommando> auszuführen.

    sudo -u <so und so> -s <kommando>

    damit kann man sogar kommandos als user mpd ausführen (Info: als mpd kann man nicht einloggen).

    Ich weiß, daß ich in /etc/rc.local 'root'-Rechte habe.

    Schönen Gruß, kle

    EDIT:

    in /etc/rc.local, also als root geht auch:

    su - pi /usr/bin/python3 /home/pi/Python/httpd/lupus-hue.py

    Einmal editiert, zuletzt von kle (23. November 2017 um 12:04)

  • Hallo,

    herzlichen Dank für Rat und Eure Geduld!
    Ich arbeite mal auf:

    Hofei: Die rc.local sieht so aus (den Kommentar "This script is..." habe ich hier weggelassen.)
    #!/bin/sh -e

    #

    # rc.local

    sudo -u pi -s /usr/bin/python3 /home/pi/Python/httpd/lupus-hue.py

    exit 0
    -------------------------------------------

    Bernd666: Die Anleitung war super, vielen Dank. Habe ich so gemacht.
    Die Verbindung läuft über den VNC Viewer und genutzt wird Raspi Pixel.
    Jetzt wird also auf das Netzwerk gewartet? Beim Booten habe ich keinen Unterschied feststellen können.
    ------------------------------------------------------------------------------

    hyle: Stimmt, das Script stammt von stadtplandienst.

    file = '/home/pi/Python/httpd/lupus-hue.conf' habe ich übernommen.

    ----------------------------------------------------------------------------------------------


    Im Ergebnis funktioniert es leider noch nicht.

    Gehe ich recht in der Annahme, dass die obigen Lösungshinweise nicht dazu führen, dass beim Hochfahren des Raspi automatisch das Terminalprogramm geöffnet wird und dort der Server "sichtbar" läuft? Die Vorgänge spielen sich vielmehr im Hintergrund ab?
    Falls ja, wie kann ich testen, dass der Server läuft?

    LG

    • Offizieller Beitrag

    Gehe ich recht in der Annahme, dass die obigen Lösungshinweise nicht dazu führen, dass beim Hochfahren des Raspi automatisch das Terminalprogramm geöffnet wird und dort der Server "sichtbar" läuft? Die Vorgänge spielen sich vielmehr im Hintergrund ab?

    Ja, das stimmt. Bootest Du in den Desktop? Falls ja ist der Weg über rc.local nicht der Richtige. Dann nutzt man eine .desktop-Datei wie z.B. hier: Pythonscript in Terminal automatisch starten

  • ps -ef | grep "lupus-hue.py" | grep -v grep

    dann sollte der Aufruf sichtbar sein, wenn der Prozess noch läuft.

    EDIT: wenn der Aufruf zu lang ist, ps -ef zeigt nur eine gewisse Anzahl Zeichen an,

    ps -ef | grep python3 | grep -v grep zeigt alle python3 prozesse an.

    Einmal editiert, zuletzt von kle (23. November 2017 um 18:56)

  • hyle: Habs probiert mit der Desktop-Datei. Mit "ausführbar machen" meinst Du "Dateieigenschaften/Berechtigungen/Ausführen: Jeder", oder ?
    Die Datei in der Autostart habe ich w.u. mit TerminalAutostartTest.desktop benannt.

    [Desktop Entry]

    Type=Application

    Name=TerminalAutostartTest

    Comment=Terminal Autostart Test

    Exec=lxterminal -e /usr/bin/python3 /home/pi/Python/httpd/lupus-hue.py

    Terminal=true

    Klappt aber leider nicht. Scheint so, als auf dem Desktop nach dem Hochfahren für einen Sekundenbruchteil ein Terminalfenster erscheint - also die gleiche Situation wie bei WhiteChristmas in Deinem Link. Was mache ich nur falsch?

    Lg

    4 Mal editiert, zuletzt von is2late (25. November 2017 um 12:19)

  • kle pgrep aus dem (Debian-)Paket procps ist eine deutlich bessere Methode, auch wenn ps und grep in Reihe es natürlich auch tun.

    is2late in dem Falle würde ich an deiner Stelle ein kleines Shellskript wie dieses hier schreiben:

    Code
    #!/usr/bin/env bash
    /usr/bin/python3 /home/pi/Python/httpd/lupus-hue.py
    read -p "Enter zum beenden" foo 

    ... und dieses anstelle der Zeile mit Exec oben benutzen:

    Code
    Exec=lxterminal -e /bin/bash /pfad/zum/shellskript

    (den Pfad natürlich anpassen!)

    Dadurch wartet das gestartete Terminal nach dem Ausführen des Pythonskripts auf eine Tastatureingabe und du kannst sehen ob (und zu welchem) Fehler es gekommen ist.

    Wenn du noch alles ganz detailliert sehen willst, fügst du noch set -x unter der ersten Zeile im Shellskript ein.

    Wenn ihr schnell hilfreiche Antworten wollt, lest bitte diesen Artikel (Fehlerberichte - wie Sie Softwarefehler melden sollten) und beherzigt die darin enthaltenen Ratschläge. Herzlichen Dank!

    • Offizieller Beitrag

    Hm :denker:, sollte eigentlich funktionieren...

    - Ausführbar machen mit z.B. cd /home/pi/.config/autostart und dann chmod +x TerminalAutostartTest.desktop

    - Hast Du die Datei (an einem Windows-PC) erstellt und auf den RPi übertragen oder hast Du diese direkt auf dem RPi z.B mit Nano erstellt?

    - Du könntest auch noch einen Shebang in der Datei lupus-hue.py eintragen. Dazu sollte die erste Zeile so aussehen #!/usr/bin/env python3 und machst auch die Datei lupus-hue.py ausführbar.

    - Hast Du meinen Beitrag #12 bezüglich Zeile 108 beachtet?

    Assarbad: Das wäre auch eine Möglichkeit. Evtl, würde auch schon ein ; sleep 120 am Ende der Exec-Zeile reichen um an Infos zu kommen.

  • hyle: Danke!
    Hab die TerminalAutostartTest.desktop jetzt gemäß Deiner Vorlage ausführbar gemacht.
    Erstellt wurde sie mit Nano
    Beitrag #12 habe ich beachtet

    Jetzt stürzt er ab... Mag aber andere Ursachen haben. Werde ihn ggf neu aufsetzen.

    Wo findet sich bitte die Exec-Zeile? Ist das die jeweils letzte?

Jetzt mitmachen!

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