Raspbian Buster + LIRC + Python

  • Hallo zusammen,


    ich verzweifle seit Tagen an der Einrichtung von Lirc auf meinem Raspberry Pi 3 mit Raspbian Buster (clean Install).

    Als Infrarotsensor nutze ich einen TSOP4838. Ich hoffe mir kann jemand helfen. :)


    Bisher habe ich folgende Schritte (erfolgreich) erledigen können.

    Code
    sudo apt-get install lirc

    Die Installation wirft allerdings den Fehler "Failed to start Flexible IR remote input/output application support"

    Abhilfe schafft das Umbenennen folgender Datei.

    Code
    sudo mv /etc/lirc/lirc_options.conf.dist /etc/lirc/lirc_options.conf

    Wird nun der Installationsbefehl erneut ausgeführt, tritt keine Fehlermeldung auf.


    Anschließend wurde die Konfigurationsdatei angepasst

    Code
    sudo nano /etc/lirc/lirc_options.conf

    driver = default, device = /dev/lirc0


    und der Suffix .dist der folgenden Datei entfernt.

    Code
    sudo mv /etc/lirc/lircd.conf.dist /etc/lirc/lircd.conf


    Anpassung der Konfigurationsdatei:

    Code
    sudo nano /boot/config.txt

    dtoverlay=gpio-ir,gpio_pin=18


    Start, Stop und Status prüfen. Anschließender Reboot.

    Code
    sudo systemctl stop lircd.service
    sudo systemctl start lircd.service
    sudo systemctl status lircd.service
    sudo reboot


    Prüfen der vorherigen Schritte in der Konsole. Drücke ich nun die Tasten auf der Fernbedienung sehe ich die entsprechende Reaktion in der Konsole.

    Code
    mode2 -d /dev/lirc0


    Da die Erstellung einer Konfigurationsdatei über den Befehl

    Code
    irrecord -d /dev/lirc0 ~/remote.conf

    immer fehlschlägt, habe ich die entsprechende Datei für die AppleRemote A1294 von lirc.sourceforge heruntergeladen und in den entsprechenden Ordner verschoben.

    Code
    /etc/lirc/lircd.conf.d/

    Zuvor habe ich dort die Konfigurationsdatei umbenannt, sodass es keine Probleme gibt.

    Code
    sudo mv /etc/lirc/lircd.conf.d/devinput.lircd.conf /etc/lirc/lircd.conf.d/devinput.lircd.conf.dist


    Über den Befehl .. kann ich die Konfigurationsdatei korrekt abfragen.

    Code
    irsend LIST Apple_A1294 ""


    Ab diesem Punkt treten die Probleme auf. :rolleyes: Über irw sollte ich die korrekte Funktion der Fernbedienung in Verbindung mit der Konfigurationsdatei testen können. Allerdings erhalte ich hier keinerlei Reaktion.

    Code
    sudo irw


    Anschließend habe ich probiert die Funktionaliät in Python zu prüfen. Hier stellt die Lirc Library die Funktion RawConnection zum einlesen zur Verfügung. Leider erhalte ich bereits bei dem import von Lirc folgende Fehler.

    Quote

    AttributeError: module 'lirc' has no attribute 'RawConnection'


    Ich hoffe sehr, dass mir jemand bei der Problematik weiterhelfen kann. Ich bin über jeden Tipp dankbar.

    Falls weitere Informationen benötigt werden, schreibt es einfach in die Kommentare und ich werde diese schnellstmöglich nachreichen.


    Vielen Dank und viele Grüße :)

    Laurenz

  • Ich glaub dieser ir-Reseiver kann nur empfangen! nicht senden

    Meiner ist aus einer alten Stereoanlage.



    Was ich gemacht hab ohne Senden!!!!!! ohne irsend


    apt install lirc

    # jetzt kommt fehler da dateien fehlen

    # damit es installiert werden kann

    # folgendes ändern

    cd /etc/lirc/

    mv irexec.lircrc.dist irexec.lircrc

    #irexec.lircrc wird unten angepasst

    #irexec.lircrc neu??? nicht mehr ~/.lircrc egal :)

    mv lirc_options.conf.dist lirc_options.conf


    nano /etc/lirc/lirc_options.conf

    Code
    #driver          = devinput
    #device          = auto
    driver        = default
    device        = /dev/lirc0

    nano /lib/systemd/system/lircd.service

    Code
    #damit /lib/systemd/system/lircd.socket funktioniert
    #ExecStart=/usr/sbin/lircd --nodaemon
    ExecStart=/usr/sbin/lircd --nodaemon -o /run/lirc/lircd
    # da in /lib/systemd/system/lircd.socket ------> "ListenStream=/run/lirc/lircd" steht

    #jetzt nochmal installieren (versuchen) müsste jetzt gehen

    apt install lirc


    #Key_maps download:

    cd /tmp

    wget "http://lirc.sourceforge.net/remotes/hauppauge/DSR-0112" -O hauppauge_DSR-0112.lircd.conf

    wget "http://lirc.sourceforge.net/remotes/pinnacle_systems/PCTV_800i" -O pinnacle_pctv_800i.lircd.conf

    cp hauppauge_DSR-0112.lircd.conf pinnacle_pctv_800i.lircd.conf /etc/lirc/lircd.conf.d/


    # weil oben lircd.service verändert wurde

    systemctl daemon-reload

    systemctl start lircd

    systemctl status lircd

    #press 'q'


    #hier wird das Verzeichnis /etc/lirc/lircd.conf.d/ eingebunden

    cd /etc/lirc

    mv lircd.conf.dist lircd.conf

    # und somit kopierten Key_maps neustarten

    systemctl restart lircd

    systemctl status lircd

    #press 'q'

    # ist gut=grün "alive"

    # weiter hier


    #diser block wird nicht benötigt hat man eine Key_map gefunden und schon

    #nach /etc/lirc/lircd.conf.d/ kopiert

    #Key_maps manuell erstellen

    ## irw müsste funktionieren weil lircd.service gändert wurde (irrecord auch???)

    #irw

    #systemctl stop lircd

    #systemctl stop lircd.socket

    #systemctl status lircd

    #press 'q'

    #systemctl status lircd.socket

    #press 'q'

    # beide sollten aus "dead" sein

    #cd /etc/lirc/lircd.conf.d/

    #irrecord -f -d /dev/lirc0

    #systemctl restart lircd

    # ein Schrott :) :) :) :)


    #Jetzt noch die Tasten mit Funktionien belegen:

    # Ich beschreibe was ich gemacht hab :) :) :)

    # neuen irexec.service einrichten !!!!!

    # damit der service auch vlc usw. starten kann

    # keine Ahnung ob die Sicherheit von RASPBIAN gefährdet wird

    # Mein Ziel hier: es muss funktionieren :) (der Tag hat nur 24 Stunden)

    # zuerst den installierten service stopen und deaktivieren:

    systemctl stop irexec.service

    systemctl disable irexec.service

    mv /lib/systemd/system/irexec.service /lib/systemd/system/irexec.service___off

    #https://wiki.debianforum.de/Au…er-unit_anlegen/erstellen

    # hier ganz unten: "User-Units systemweit für alle Benutzer anlegen und aktivieren" lesen

    nano /etc/systemd/user/irexec.service

    Code
    [Unit]
    Description=Handle events from IR remotes decoded by lircd(8)
    
    [Service]
    Environment="DISPLAY=:0"
    Environment="XAUTHORITY=/home/pi/.Xauthority"
    ExecStart=/usr/bin/irexec /etc/lirc/irexec.lircrc
    
    [Install]
    WantedBy=default.target

    # interessant XAUTHORITY.....home/pi....


    cd /etc/systemd/user/default.target.wants

    ln -s /etc/systemd/user/irexec.service

    # komischerweise funktioniert das nicht!! in RASPIAN: systemctl --user enable irexec.service


    # hier gibt es eine schöne Anleitung:

    # https://ubuntuforums.org/showthread.php?t=1847149

    sudo apt-get install xautomation

    nano /usr/local/bin/volume-script.sh

    chmod +x /usr/local/bin/volume-script.sh


    nano /etc/lirc/irexec.lircrc


    #debug: neues Terminal öffnen und:

    journalctl -xef

    # da tauchen die echo's von /etc/lirc/irexec.lircrc auf

    ps: das volume-script.sh script darf nicht in einem Home-Verzeichniss sein!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Nach einiger zeit geht es nicht mehr wegen selinux.

    Wie dieser Mechanismus in linux und systemd funktionier kann ich nicht sagen.

    Irgendwann geht es eben nicht mehr ist das Script im Home Folder /home/pi/


    button=KEY_MUTE

    button=KEY_VOLUMEDOWN

    usw.

    sollte mit Bezeichnung übereinstimmen die in

    /etc/lirc/lircd.conf.d/pinnacle_pctv_800i.lircd.conf

    /etc/lirc/lircd.conf.d/hauppauge_DSR-0112.lircd.conf

    übereinstimmen




    reboot


    Bei mir gehen beide Fernbedinenung die KEY_xxxxxx wurden in beiden angepasst.

    vlc startet

    und Lautstärke funktioniert


    inputlirc kann disabled werden oder deinstalliert, wenn es Probleme gibt!!!


    Von Python hab ich keine Ahnung und auch sonst nicht viel hahahahahahaha

    (eigentlich hab ich ja noch kali und da hat alles funktiniert sogar irrecord, warum nicht mit Raspbian keine Ahnung)

    naja

    Viel Spass :)

    ((( wenn es totaler Schwachsinn ist kann ich den Beitrag löschen, wenn deine Frage verhuntzt ist)))