Bash für CEC Adapter

  • Hab mir ein Script gebastelt.

    Es schaut ob der TV an oder aus ist und schaltet dann das Ambilight ein.

    Wenn ich es über bash... ausführe funktioniert es. Nur er schreibt nicht in die Output Datei warum auch immer.

    Wollte dann das ganze per Autostart starten lassen. Hab dann unter

    /etc/systemd/System die Datei startcec_adapter.service angelegt.

    Nur es funktioniert dann nicht. Er muss die bash aber aufrufen da der CEC nicht erreichbar ist und verwendet wird.

    Warum schreibt er nicht in die Output Datei und warum läuft es über Autostart nicht?

    Code
    [Unit]
    Description=Check CEC Status to Turn ON/OFF
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/sudo /bin/bash /usr/local/sbin/startcec.sh
    
    [Install]
    WantedBy=multi-user.target

    Hier der Code der Bash

  • Das ist irgendwie alles Käse! :stumm:

    - Mach das Skript ausführbar und wenn es mit der bash getartet werden soll, dann schreib das auch in den Shebang!

    - Ausgaben sind auch sinnvoller, wenn man diese Umleitet, bestenfalls auch den stderr Kanal z.B.:

    Bash
    echo $STATE > $OUTPUT 2>&1

    - CEC braucht auch ein Display um ausgeführt werden zu können. Das kann man notfalls mit z.B. DISPLAY=:0 dem Skriptaufruf voranstellen.

    - Eine Systemd Service Unit wird, wenn kein User angegeben ist, eh als root gestartet und somit ist das sudo in der Unit obsolet.

    Eine *.desktop-Datei wäre hier bestimmt angebrachter.

  • Hi hyle,

    Danke für deine Antwort.

    Ja seh grade /Sh statt /bash.

    Warum meinst du eine Desktop-Datei wäre angebrachter?

    Hab an dem PI keine Maus Tastatur dran.

  • Beitrag von Docsnow (15. April 2023 um 08:05)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Du kannst ja mal nachsehen was sudo systemctl status startcec_adapter.service und journalctl -u startcec_adapter.service ausspucken. ;)

    Warum meinst du eine Desktop-Datei wäre angebrachter?

    Weil zu diesem Zeitpunkt für Dein Skript der User eingelogt und die Desktop-Umgebung und damit das DISPLAY vorhanden ist.

    Ob das so mit Deinem OS oder in Deinem Projekt sinnvoll ist, kann ich allerdings aber nicht sagen.

  • Wenn ich es über bash... ausführe funktioniert es. ....

    Wollte dann das ganze per Autostart starten lassen. Hab dann unter


    /etc/systemd/System die Datei startcec_adapter.service angelegt.


    Nur es funktioniert dann nicht.

    Weil für die in dem Skript aufgeführten Programme die passende Umgebung nicht gesetzt wurde.

    Setz in dem Skript über PATH= die Pfade, in denen die Programme stehen, welche du in dem Skript auf aufrufst.

    Wo ist zum Beispiel das Programm "hyperhdr-remote" zu finden?

    Ohne den absoluten Pfad oder einer Definition, in welchen Pfaden gesucht werden soll, wird das nichts.

    Computer ..... grrrrrr

Jetzt mitmachen!

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