GPIO-Buttons Dienst startet nicht

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

    ich habe mir nach der Anleitung von MiczFlor eine Phoniebox gebaut. Leider habe ich Probleme den gpio-buttons Dienst ans laufen zu bekommen.

    sudo systemctl status phoniebox-gpio-buttons erzeugt bei mir folgende Ausgabe:

    Ich habe das System bereits 2x neu aufgesetzt. Die Datei hat auch eigentlich die benötigten Zugriffsrechte. GPIO Zero für Python3 und vorsorglich Python2 habe ich installiert.

    Zwischenzeitlich habe ich es auch geschafft durch "disable" dann "enable" den Dienst zu starten, allerdings funktionierten dann der Dienst für den Startup Sound und RFid Reader nicht und ich bekam gar keinen Sound mehr aus der Box.

    Ich habe mich an die empfohlene Pinbelegung gehalten: https://github.com/MiczFlor/RPi-J…flexible-pinout

    mein Setup umfasst den Hifiberry MiniAmp und OnOffShim, welche auch erfolgreich ihren Dienst verrichten.

    Habe auch andere GPIOs probiert. Zb die von Splitti und diversen Tutorials verwendeten.

    Momentan habe ich folgende Buttons in der gpio-buttons.py vergeben:

    Code
    volU = Button(25,pull_up=True,hold_time=0.3,hold_repeat=True)
    volD = Button(13,pull_up=True,hold_time=0.3,hold_repeat=True)
    next = Button(22,pull_up=True,hold_time=2.0,hold_repeat=False)
    prev = Button(27,pull_up=True,hold_time=2.0,hold_repeat=False)
    halt = Button(12,pull_up=True)

    Hoffe jemand kann mir helfen, oder zumindest das Problem eingrenzen. Sitze da jetzt den 4. Tag dran und weiß leider nicht mehr weiter. Vielen Dank im voraus.

    Einmal editiert, zuletzt von kasi622 (11. Juni 2020 um 17:44)

  • Hallo,

    was passiert, wenn du die Datei /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons.py direkt ausführst? Wenn eine Fehlermeldung erscheint, bitte _komplett_ posten.

    Was gibt die Ausgabe von `journalctl -u phoniebox-gpio-buttons.service`, nachdem der Start der Unit misglückt ist?

    Gruß, noisefloor

    • Offizieller Beitrag

    Ich fasse es nicht! Jetzt geht der Maintainer von gpiozero auf RPi.GPIO in den Skripten?! :motz:Schlimm genug, das der vorher von Python an ein *.sh-Skript übergeben hat und nun das auch noch.:dau1:


    kasi622 Sorry, das hat mit Dir NICHTS zu tun, aber weil ich das gerade las... :shy:

    Hier waren die gleichen Fehler (RE: Phoniebox mit WM8960 Hi-Fi HAT, OnOff SHIM, RC522, Rotary und Buttons) und da schien es an der Datei gpio-buttons.py gelegen zu haben.

  • Ich hatte auch so ein Problem. Ich konnte machen was ich wollte es lief nicht und in der GUI wurde es auch immer als deaktiviert angezeigt. Versuche mal keine buttons mit # aus zu klammern, auch wenn du sie nicht brauchst. Also lass alles aktiv. Trage dort deine freie GPIO Pins ein und starte neu.

    Ich habe noch nicht heraus gefunden warum der GPIO Service sich bei mir ganz deaktiviert wenn man einen der Wert ausklammert aber zur Zeit kann ich damit leben. Hoffe es hilft bei dir.

    • Offizieller Beitrag

    also ich hatte noch kein Problem mit gpiozero auf meinem Raspi Zero W

    Ich auch nicht, die wird es ziemlich Sicher auch nicht geben und gleich garnicht wegen ein paar Buttons oder LEDs.

  • Erstmal vielen Dank für die Antworten.

    Hallo,

    was passiert, wenn du die Datei /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons.py direkt ausführst? Wenn eine Fehlermeldung erscheint, bitte _komplett_ posten.

    Was gibt die Ausgabe von `journalctl -u phoniebox-gpio-buttons.service`, nachdem der Start der Unit misglückt ist?

    Gruß, noisefloor

    sudo systemctl start phoniebox-gpio-buttons erzeugte keine Fehlermeldung.

    Der Befehl journalctl -u phoniebox-gpio-buttons.service war ein Geniestreich. Damit konnte ich meine(n) Fehler analysieren. Vielen Dank dafür.

    In sämtlichen Tutorials ist folgendende Struktur gegeben:

    Code
    volU = Button(16,pull_up=True,hold_time=0.3,hold_repeat=True)
    volD = Button(13,pull_up=True,hold_time=0.3,hold_repeat=True)
    next = Button(26,pull_up=True,hold_time=2.0,hold_repeat=False)
    prev = Button(27,pull_up=True,hold_time=2.0,hold_repeat=False)
    halt = Button(12,pull_up=True)

    aber damit bekomme ich nur Syntaxfehler. Die Zeilen müssen wie vordefiniert einfach nur mit den genutzen GPIOs abgeglichen werden und fertig.

    Also wie folgt:

    Code
    btn_shut = 3
    btn_vol0 = 13
    btn_volU = 5
    btn_volD = 6
    btn_next = 22
    btn_prev = 27
    btn_halt = 25
    led_power = 12

    Jetzt muss ich nur noch schauen, wie ich die in () Klammern gesetzten Werte eintrage.

    Ebenfalls möchte ich mich für die Tipps von ooo_kvn_ooo und hyle bedanken. Wenn ich btn_shut zB auskommentiert habe, lief der Dienst nicht.

    Es darf also keine Zeile auskommentiert oder weggelassen werden! Hyle hatte somit auch recht, dass es an der gpio-buttons.py lag. :)

    Zudem ist mir aufgefallen, dass die Anleitungen mit meinem Setup (RaspPi 3b+HifiBerryMiniAmp+OnOffShim) GPIOs nutzen, welche laut meiner Recherche nicht zur freien Verfügung stehen.

    Code
    HiFiBerry MiniAmp
    
    GPIOs 18-21 (pins 12, 35, 38 and 40) are used for the sound interface. GPIO16 can be used to mute the power stage. GPIO26 shuts down the power stage. You can’t use these GPIOs for any other purpose.

    Aber das nur nebenbei. Wahrscheinlich gab es vor kurzem ein update und es wurde einiges geändert !?

    Bin jedenfalls froh und dankbar endlich meine Knöpfe drücken zu können.

    Beste Grüße

    • Offizieller Beitrag

    In sämtlichen Tutorials ist folgendende Struktur gegeben

    Das liegt daran, weil dieses Konstrukt auf das schönere und aktuelle Modul gpiozero basiert und nicht auf das nun (*) verwendete ältere, umständliche RPi.GPIO.

    Das Problem ist, dass der Maintainer, dessen Namen ich mir nicht merken kann (Mics...?), kaum Ahnung von Python hat und sich auf die Hinweise der Benutzer seiner Software verlässt. Dabei sind auch Anfänger und diese verlassen sich wiederum auf (oft veraltete) Tutorials aus dem Netzt, probieren damit herum und geben das bei Erfolg als Verbesserungsvorschlag weiter. Ein Issue wie es richtiger wäre wird/wurde danach (aus eigener Ehrfahrung) konsequent ignoriert. :shy:

    Manchmal würde ich hier am liebsten den Usern mit Phonieboxproblemen schreiben, sie sollen sich an den Autor des Tutorials wenden, aber es ist ja nicht eure Schuld, dass das Tutorial Fehler enthält.


    *) Das ist übrigens schon über ein Jahr so, habe ich allerdings erst gestern mitbekommen.

  • Mach mal lauter oder leiser und beobachte die CPU-Auslastung.

    Rein theoretisch müsste die kurzzeitig auf ~100 % springen: https://github.com/MiczFlor/RPi-J…s.py.sample#L38

    Das Beste daran ist der Kommentar: Else: Wait
    Er hätte wenigstens mit positiver und negativer Flanke arbeiten können, was eigentlich nicht notwendig wäre, wenn er bei gpiozero geblieben wäre.

  • Das liegt daran, weil dieses Konstrukt auf das schönere und aktuelle Modul gpiozero basiert und nicht auf das nun (*) verwendete ältere, umständliche RPi.GPIO.

    Wie kann ich denn gpiozero einbinden bitte? Wird das über "from gpiozero import xxxx" in der gpio-buttons.py geregelt?

    Weil eigentlich habe ich ja gpiozero installiert und das script (gpio-buttons.py) aus den samplefiles ins verwendete Verzeichnis kopiert. Warum nutze ich denn dann trotzdem RPi.GPIO? Irgendwas verstehe ich da leider nicht.

    • Offizieller Beitrag

    Weil ich das vorhin an anderer Stelle schon mal schrieb zitiere ich mich mal selbst:

    Auch wenn es mir schwerfällt das zu schreiben, aber an Deiner Stelle würde ich bei dem bleiben, was in dem Projekt verwendet wird. Sonst suchst Du Dir nen Wolf, falls mal ein Update gemacht wird oder Du irgendwas erweitern willst.

    ;)


    das script (gpio-buttons.py) aus den samplefiles ins verwendete Verzeichnis kopiert. Warum nutze ich denn dann trotzdem RPi.GPIO? Irgendwas verstehe ich da leider nicht.

    Der Maintainer verwendete anfangs gpiozero anhand eines Beispielskripts hier aus dem Forum, aber kam dann später auf die (blöde) Idee einen Schritt zurück zu machen und gpiozero duch RPi.GPIO zu ersetzen. :shy: In vielen Tutorials wird aber noch gpiozero benutzt und deshalb die ganze Verwirrung.

  • Der Maintainer verwendete anfangs gpiozero anhand eines Beispielskripts hier aus dem Forum, aber kam dann später auf die (blöde) Idee einen Schritt zurück zu machen und gpiozero duch RPi.GPIO zu ersetzen. :shy: In vielen Tutorials wird aber noch gpiozero benutzt und deshalb die ganze Verwirrung.

    Vielen Dank für die Aufklärung. Ist wohl keine "hyle" Welt in der wir leben..

    • Offizieller Beitrag

    Ist wohl keine "hyle" Welt in der wir leben..

    :lol:

    Um meine persönlichen Befindlichkeiten geht es nicht! :cool: Wir leben nicht mehr im Neolithikum und man könnte durchaus etwas mit der Zeit gehen, zumal gpiozero auch nicht erst seit gestern aktuell ist und das Leben der Musikboxbauer im Vergleich zu RPi.GPIO erheblich erleichtern könnte.

  • Hallo liebe Leute,

    ich bin leider auch noch sehr neu in dieser Materie und bei mir tritt leider genau das selbe Problem auf.

    GPIO-Buttons nicht in der Web-APP aktivierbar und somit auch kein Zugriff auf meine Buttons.

    Ich finde leider nur immer Scripte mit verbautem Display und somit einer anderen zu bearbeitenden Datei.

    Meine Datei wäre ja die /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons.py

    Wenn ich diese direkt ausführe, dann bekomme ich folgende Fehlermeldung:

    Traceback (most recent call last):

    File "/home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons.py", line 148, in <module>

    GPIO.setup(btn_shut, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    NameError: name 'btn_shut' is not defined

    Wenn ich dann in die Datei in Zeile 148 gehe, dann weiß ich nicht wirklich was ich dort definieren soll.

    Dort ist nur folgender Eintrag (ich poste gleich mal den ganzen Block):

    # Set up GPIO pins and the power led

    GPIO.setup(btn_shut, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    GPIO.setup(btn_vol0, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    GPIO.setup(btn_volU, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    GPIO.setup(btn_volD, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    GPIO.setup(btn_next, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    GPIO.setup(btn_prev, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    GPIO.setup(btn_halt, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    # GPIO.setup(btn_rfidoff, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    GPIO.setup(led_power, GPIO.OUT)

    Meine Einträge in der Datei selber bezüglich Überschneidungen mit HifiBerry und On/Off-Shim habe ich auch passend geändert.

    # Define the used pins of the raspberry board

    #btn_shut = 3

    #btn_vol0 = 13

    btn_volU = 16

    btn_volD = 13

    btn_next = 26

    btn_prev = 27

    btn_halt = 12

    led_power = 25


    Eventuell hat jemand für mich ein paar hilfreiche Tipps. Wäre da echt dankbar, weil ich echt langsam verzweifle.

    System wurde ja auch ich glaub mittlerweile schon 8-mal neu aufgesetzt.

    Danke schon mal im Vorraus

    Jochen

  • Hallo Jackinho,

    Das is mir ja schon klar, der eigentliche Fehler laut Log ist ja auch in einer ganz anderen Zeile nämlich

    GPIO.setup(btn_shut, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    Darum gehts ja. Das andere soll ja auch ignoriert werden.

    Muss ich dann die unteren Zeilen auch ignorieren?

  • Bin jetzt schon etwas weiter. Habe die Zeilen wirklich auskommentiert und jetzt geht es schon weiter. Er hängt jetzt grad nur noch am letzten Befehl " pause() "

    Aber hier mal mein ganzes Skript:

    • Offizieller Beitrag

    Er hängt jetzt grad nur noch am letzten Befehl " pause() "

    Das soll auch so sein, sonst würde das Skript einfach durchlaufen und sich beenden. //Edit: Oder meinst Du das anders?

    Btw. funktionieren die Button?

  • Der Service startet jetzt zumindest, aber jetzt hab ich keinen Ton mehr :conf::conf::conf:

    Hifiberry Miniamp wird auch richtig erkannt, aber weder über die Web-App noch über Testsound gibts irgendwas aus den Boxen.

    Hmmm:/

    Knöpfe reagieren aber auch nicht in der Web-App

    Startsound kommt leider auch keiner mehr.

    Einmal editiert, zuletzt von Dillan79 (22. Juni 2020 um 21:06) aus folgendem Grund: Ergänzung

Jetzt mitmachen!

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