Autostart Skript mit Skip-Funktion

  • Es geht dem TE um Erkennung ob eine Tastatur angeschlossen ist oder nicht. Dafür reicht es /sys/class/input/input* abzufragen.

    Menschen die keine Ironie verstehen finde ich super!

    Edited once, last by llutz ().

  • Sorry, die Bedingung war verkehrt.


    Zum Testen habe ich dem Script noch einen else-Zweig gegeben:



    Bash
    #!/bin/bash
    echo "Starte Kodi..."
    if grep -i keyboard /sys/class/input/*/name
    then
      echo Tastatur gefunden
    else
      /usr/bin/kodi
    fi
  • Es geht dem TE um Erkennung ob eine Tastatur angeschlossen ist oder nicht. Dafür reicht es /sys/class/input/input* abzufragen.

    Quote

    Bis hierhin komme ich noch alleine, allerdings würde ich gerne nicht einfach nur automatisch starten, sondern die Konsole für etwa 10s einblenden lassen.

    Dann könnte man die Leertaste o.ä. auf der Tastatur drücken, um den Autostart zu unterbinden und Raspbian statt Kodi nutzen.

    Die Aufgabe war anders.

    Deine Lösung impliziert die Abfrage der Tastatur.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Aber der TE hat sich doch umentschieden, bzw. die bessere automatische Lösung bevorzugt. Also ohne 10s warten, Taste drücken usw..


    Und nebenbei, das echo "Starte Kodi..." im Skript sollte direkt vor dem Start von Kodi stehen und nicht oben, wo es keinen Sinn ergibt (wenn Kodi nicht startet, steht da auch "Starte Kodi...".

    Edited once, last by daxb ().

  • Wie dem auch sei.

    Jetzt hat er zwei Möglichkeiten.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Startet Kodi denn, wenn du /usr/bin/kodi in der Konsole eintippst und mit Enter bestätigst ?

    ja, damit startet kodi!

    Zudem könntest du uns den Inhalt deiner .desktop-Datei zeigen, damit wir nicht dauernd im Nebel rumstochern müssen.

    Code
    [Desktop Entry]
    Name=Kodi
    Comment=KodiStarten
    Icon=/home/pi/Downloads/kodi.png
    Exec=/usr/bin/kodi
    Type=Application
    Encoding=UTF-8
    Terminal=false
    Categories=None;


    BTW: Ist diese Zeile:

    Code
    if grep -i keyboard /sys/class/input/*/name

    in deinem Script, richtig bzw. brauchbar?

    Ob sie brauchbar ist, kann ich nicht wirklich beurteilen :conf:


    Bash
    #!/bin/bash
    echo "Starte Kodi..."
    if grep -i keyboard /sys/class/input/*/name
    then
      echo Tastatur gefunden
    else
      /usr/bin/kodi
    fi

    das Skript hab ich jetzt so übernommen und rufe es in rc.local so auf:

    Code
    bash /usr/local/bin/autoKodi.sh

    Jetzt startet Raspbian im Desktop Modus, und nach einigen Sekunden wird der Bildschirm schwarz und erst wenn man mit der Maus über die Icons fährt, baut sich das bild nach und nach auf....


    mit dem befehl

    Code
    bash -x /usr/local/bin/autoKodi.sh

    startet nun Kodi, allerdings auch bei angeschlossener Tastatur.

    • Official Post

    das Skript hab ich jetzt so übernommen und rufe es in rc.local so auf

    Das bringt imho nichts, da die grafische Umgebung noch nicht geladen ist.


    Vorschlag: Erstelle eine *.desktop-Datei in das Verzeichnis /home/pi/.config/autostart.

    In die Zeile, die mit Exec= beginnt, trägst Du bash /Pfad/zu/autoKodi.sh zum Skript ein, das übrigens m.M.n. besser in /home/pi liegen und pi gehören sollte.


    Btw. Ich hoffe Du hast SSH aktiviert, sodass Du im Notfall einfach eventuelle Fehler von einem anderen Rechner aus beheben kannst.

  • Vorschlag: Erstelle eine *.desktop-Datei in das Verzeichnis /home/pi/.config/autostart.

    In die Zeile, die mit Exec= beginnt, trägst Du bash /Pfad/zu/autoKodi.sh zum Skript ein.

    Soweit so gut, wenn der Pi startet, wird jetzt Kodi gestartet, allerdings auch, wenn die Tastatur angeschlossen ist.

    Kann es daran liegen, dass es eine Bluetooth-Tastatur mit Dongle ist, und diese erst zu spät erkannt wird?

    Ich kann auf jeden Fall vor dem Start von Kodi schon die Maus (die in die Tastatur integriert ist) bewegen...


    das übrigens m.M.n. besser in /home/pi liegen und pi gehören sollte.

    Btw. Ich hoffe Du hast SSH aktiviert, sodass Du im Notfall einfach eventuelle Fehler von einem anderen Rechner aus beheben kannst.

    Warum sollte das Skript da liegen? Und wie kann ich es "pi" zugehörig machen?

    SSH habe ich vorsichtshalber mal aktiviert...

    • Official Post

    Warum sollte das Skript da liegen?

    Weil das Skript seinen Dienst nur für den User pi erledigt und nicht für andere User gedacht ist. Ok, das ist evtl. eine "Altlast" in meinem Kopf, da ich oft vergesse, dass der RPi zwar ein Computer ist, aber durch die vielen Möglichkeiten eher als "Gerät" dient.


    Egal. wenn das Skript funktioniert, dann kann das auch dort bleiben.


    Und wie kann ich es "pi" zugehörig machen?

    Was ist die Ausgabe von:

    Code
    ls -al /Pfad/zu/autoKodi.sh

    ?


    Wenn der Besitzer und Gruppe schon pi sind, dann brauchst Du ja nichts zu ändern und falls nicht, dann kannst Du mit

    Code
    sudo chown pi:pi /Pfad/zu/autoKodi.sh

    auf den Besitzer und Gruppe pi ändern.

  • Was ist die Ausgabe von:

    Code
    ls -al /Pfad/zu/autoKodi.sh
    Code
    -rw-r--r-- 1 pi pi 130 Aug 27 18:23 /home/pi/autoKodi.sh


    Also Rechte-mäßig scheint alles ok zu sein...


    Allerdings erkennt das Skript die Tastatur nicht, dazu noch Vorschläge?

  • Ich hab's eben getestet, das Script funktioniert bei mir.


    Raspi3, Buster, Logitech USB Keyboard, Script ueber SSH gestartet


    hyle:

    Code
    pi@raspberrypi:~ $ grep -i keyboard /sys/class/input/*/name
    /sys/class/input/input1/name:Logitech USB Keyboard
    /sys/class/input/input2/name:Logitech USB Keyboard Consumer Control
    /sys/class/input/input3/name:Logitech USB Keyboard System Control
  • Was ist die Ausgabe von

    Code
    grep -i keyboard /sys/class/input/*/name

    ?

    Die Zeile hat bei mir keine Ausgabe. Lasse ich allerdings "/name" weg, wird angezeigt, dass in "input" enthaltene Ordner "Verzeichnisse" sind.


    Ich habe es aber mal mit folgendem versucht:

    Code
    grep -i Logitech /sys/class/input/*/name

    dann war die Ausgabe: Logtech K400 Plus

    Edited once, last by Aroon ().

  • Danke Tell! Vielleicht liegt es wirklich daran:


    Moment mal... Aroon Zeige mal bitte Dein aktuelles Skript! Hast Du die Änderungen aus #22 übernommen?

    Bash
    #!/bin/bash
    echo "Starte Kodi..."
    if grep -i Logitech /sys/class/input/input7/name
    then
    echo Tastatur gefunden
    else
    /usr/bin/kodi
    fi
  • Und nun ein Neustart, bzw. vom Desktop abmelden und wieder anmelden reicht. Wird Kodi jetzt gestartet?

    Ja, allerdings auch bei angeschlossener Tastatur...


    Was genau fragt grep denn ab? Bzw. wie reagiert die if-Abfrage auf den Befehl?

    mit grep bekomme ich den Inhalt der Datei name aus dem Verzeichnis angezeigt, wenn ein Teil davon jetzt mit keyboard übereinstimmt ergibt sich ein True?


    Bash
    #!/bin/bash
    echo "Starte Kodi..."
    if grep -i Logitech /sys/class/input/input7/name
    then
    echo "Tastatur gefunden"
    else
    #/usr/bin/kodi
    echo "Kodi würde starten"
    fi

    mit keyboard statt Logitech startet Kodi unter allen Umständen, mit Logitech startet Kodi nie...

    wird die Datei name denn jedes mal gelöscht, wenn ich den Bluetooth-Dongle entferne?

    Edited once, last by Aroon ().

    • Official Post

    wird die Datei name denn jedes mal gelöscht, wenn ich den Bluetooth-Dongle entferne?

    Ja, zumindest ist das bei meiner Wirelestastatur der Fall.


    Erst mit und dann ohne Tastatur:

    Code
    pi@stredepi:~ $ bash /home/pi/Desktop/neu.sh
    /sys/class/input/input3/name:RAPOO Rapoo 2.4G Wireless Touchpad Keyboard
    /sys/class/input/input4/name:RAPOO Rapoo 2.4G Wireless Touchpad Keyboard
    /sys/class/input/input5/name:RAPOO Rapoo 2.4G Wireless Touchpad Keyboard
    Tastatur gefunden
    pi@stredepi:~ $ bash /home/pi/Desktop/neu.sh
    grep: /sys/class/input/*/name: Datei oder Verzeichnis nicht gefunden
    Starte Kodi...


    Btw. der Pfad war /sys/class/input/*/name und nicht /sys/class/input/input7/name. ;)

  • das folgende Skript funktoniert:

    Bash
    #!/bin/bash
    echo "Starte Kodi..."
    if grep -i Logitech /sys/class/input/*/name
    then
    echo "Tastatur gefunden"
    else
    /usr/bin/kodi
    fi

    Vielen Dank für eure Hilfe!


    P.S.: daran hat's dann wohl am Ende gelegen ;)

    Btw. der Pfad war /sys/class/input/*/name und nicht /sys/class/input/input7/name. ;)