Phoniebox - LEDs / Buttons funktionieren nach Bootvorgang nicht zuverlässig

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

    mein Phoniebox-Projekt ist quasi abgeschlossen und ich habe nur noch ein wenig Feintuning zu tun. Dabei habe ich mich recht stark an der genialen Feuerwehr von Geliras orientiert (Dank an Geliras an dieser Stelle!).

    Meine Feuerwehr hat natürlich zwei Blaulicht-LEDs und zwei gelbe Fernlicht-LEDs sowie einen Button, der eine Sirene aktiviert. Ich habe das gpio-buttons.py-Skript entsprechend erweitert. Grundsätzlich funktioniert alles, wie es soll. Allerdings stelle ich ein nicht-deterministisches und für mich schwierig zu debuggendes Verhalten fest: Häufig wird beim Bootvorgang beispielsweise nur eine der beiden Blaulicht-LEDs aktiviert - das Skript setzt beide auf an. Manchmal beobachte ich dann nach einen Sekunden, dass die andere LED dann auch ausgeht und unmittelbar darauf beide LEDs angehen - ich vermute, dass der gpio-Service dann vom OS neu gestartet wurde, aus welchem Grund auch immer. Von da an funktioniert alles prima.

    Auffällig ist auch, dass davon (bislang zumindest) nur die Buttons und LEDs betroffen sind, die nicht Phonebox-Standard sind - die Standardbuttons wie Track vor, zurück usw. funktionierten bislang stets.

    Falls das nicht passiert, hilft immer (!), per SSH den gpio-Prozess abzuschießen. Er wird daraufhin vom OS neu gestartet und dann funktioniert alles.

    Natürlich kann ich mir zur Symptombekämpfung ein kleines Skript bauen, das die PID des gpio-Prozesses herausfindet und abschießt und das dann nach dem Bootvorgang ausführen lassen. Aber das ist ein ziemlich unschöner Workaround und mich interessiert die Ursache für dieses Problem. Hat jemand ein ähnliches Verhalten beobachtet oder vermutet eine Ursache?

    Vielen Dank

    Thomas

  • Phoniebox - LEDs / Buttons funktionieren nach Bootvorgang nicht zuverlässig? Schau mal ob du hier fündig wirst!

    • Offizieller Beitrag

    Hallo twolf,

    das Problem hast Du gut beschrieben, aber leider keine Fakten gezeigt. ;) Ich habe zwar die Vermutung, dass es sich um UART handelt, aber evtl. irre ich mich damit auch.

    Um welche GPIOs handelt es sich denn genau und wie sieht Dein angepasster Code aus?

  • so, also es geht konkret um PIN 16 / GPIO 23. Bei genauem Hinsehen ist es nicht so, dass die LED nicht leuchtet, aber sehr, sehr schwach. Und gerade ist der Raspberry im Standby, und die LED schimmert dennoch schwach - das macht mich etwas stutzig.

    Ein paar weitere Details:

    Verwendeter Raspberry: Zero WH

    Habe einen Drehknopf für die Lautstärkeregelung verbaut und gemäß https://github.com/MiczFlor/RPi-J…otaryKnobVolume den entsprechenden Service aktiviert.

    Quellcode kann ich leider immer noch nicht liefern, da mein Sohnemann gar nicht daran denkt, ohne Gute-Nacht-Geschichte aus der Phoniebox einzuschlafen. Nun ist das Ding dank Sleep-Timer aus, aber deshalb kann ich nicht per SSH drauf - und physisch aus dem Kinderzimmer holen traue ich mich erst später :)

    Hat noch jemand Ideen für das Debugging? Meine sind:

    • In ein File loggen, wann jeweils im gpio-Skript die entsprechende LED auf hell gesetzt wird
    • Skript laufen lassen, das regelmäßig den Status dieses PINs abfragt und das Ergebnis wegloggt
    • Die LED an einem anderen PIN ausprobieren
    • Auf einem anderen Raspberry testen

    Letzere Ideen sind durch den abgeschlossenen Einbau etwas schwerer zu realisieren.

    Einmal editiert, zuletzt von twolf (14. Januar 2020 um 22:13)

  • So, ich vermute sehr, sehr stark einen Zusammenhang mit dem Dienst, der sich um den Drehknopf zur Lautstärkenanpassung kümmert. Ich habe diesen Dienst nun einmal rausgeschmissen und schon funktionieren die Buttons, wie sie sollen. Zumindest bei Testgröße n = 2 Reboots.

    Der Dienst für den Drehknopf verwendet eine andere GPIO-Library. Aber mehr ist mir auf den ersten Blick nicht aufgefallen.

  • Hab es gefunden. Es gibt einfach einen PIN-Konflikt zwischen Rotary Switch / Drehknopf-Skript und dem GPIO-Buttons-Skript.

    Das Skript für den Drehknopf kann sowohl für Track-, als auch für Lautstärkesteuerung verwendet werden. Hierfür werden im Standard folgende PINs verwendet:

    • Lautstärke
      • GPIO 5,6
    • Tracks
      • GPIO 22,23

    Da ich nur einen Drehregler für die Lautstärke verwende aber keinen für die Tracks, hatte ich die PIN-Belegung für die Tracksteuerung nicht am Schirm. Ich verwende aber GPIO 23 für die LED des Blaulichts.

    Hier noch der jeweilige Code

    Einmal gefunden, ist es natürlich leicht zu beheben. Danke für den Beistand, hyle.

Jetzt mitmachen!

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