Gelöst: Raspberry Pi nach Shutdown einschalten wenn TV eingeschaltet wird

  • Das Skript mit gpiozero macht nichts anderes als Deins mit RPi.GPIO wenn Du hold_time=2 raus nimmst und

    shutdown_btn.when_pressed, bzw. sutdown_btn.when_released verwendest. ;)

    (Edit: https://gpiozero.readthedocs.i…ble/api_input.html#button)


    Der Shutdowneintrag in der config.txt funktioniert imho schon seit Strech nicht mehr. Sollte mich wundern, wenn das wieder eingeführt wurde.

  • Ah! Mit button.when_pressed bzw. button.wait_for_release geht das natürlich. Soweit hatte ich mich vorhin nicht durchgeklickt.

    Dann würde die Platine von Neueinsteiger den Button die ganze Zeit "drücken" und bei Abfallen der Trigger-Spannung "loslassen". Probiere ich nachher nochmal aus. Danke!

  • Leider lagst du nicht 100% richtig.

    Hab das gerade mal auf meinem RPi mit OSMC ausprobiert.


    Die gpiozero library setzt auf RPi.GPIO auf und benötigt das Modul und damit auch die geänderten Rechte (unter OSMC) für /dev/gpiomem.


    Deinem Ratschlag folgend müsste ich also alles machen, was ich auch gemacht habe und anschließen noch gpiozero installieren, um ein oder zwei Zeilen Code zu sparen. Funktionieren tut es aber.

  • Ah ok, bei OSMC wird es der Fasll sein, dass Du RPi.GPIO (oder ein anderes Modul) + gpiozero extra noch installieren müsstest. Bei einem aktuellen Raspbian ist das ootb enthalten.

    Zu den Rechten bei OSMC kann ich im Moment nicht viel sagen, weil gerade keins aufgesetzt, aber eigentlich sollte den User in die Gruppe GPIO (soweit vorhanden) hinzufügen schon ausreichen um das Skript nicht mit root-Rechten ausführen zu müssen.

  • Ursprünglich war /dev/gpiomem mit 600 und root:root berechtigt.

    Leider hat es nichtmal ausgereicht die Gruppe „osmc“ mit 660 auf das device zu berechtigen. Damit war es lediglich möglich die Pins zu lesen - add_event_detect oder wait_for_edge gingen weiterhin nur mit sudo.


    Allein die udev-Regel aus meinem gestrigen Post sorgt für die richtigen Berechtigungen.

    Da wird aber weit mehr gemacht als nur das.


    Allerdings kein Grund weiter zu suchen.

    Ich kann damit gut leben und es funktioniert ja.

  • Moin,


    vorweg: Ich bin Softwareentwickler und hab eher weniger Plan von der Elektronik. Was nicht heißt, dass ich mir das Zusammenlöten einfacher Schaltungen nicht zutraue. So zum Beispiel die Schaltung aus dem zweiten Post des Threads.


    Komplett verhauen habe ich mich hier hoffentlich nicht, da sich der Raspi im heruntergefahrenen Zustand durch eine 5V Zufuhr von einem separaten Netzteil einschaltet. Hänge ich allerdings den USB-"Schalter" an den TV (Raspi ist währenddessen immer mit seinem MicroUSB am Strom), schaltet sich der Raspi erst ein, sobald ich das USB Kabel des "Schalters" abziehe!


    Der TV gibt konstante ~0.143V im ausgeschalteten Zustand an die USB Buchse ab. Beim Einschalten sind es etwas über 5V.


    Wenn zur Lösung Bilder/Videos benötigt werden, kann ich gerne liefern.


    Vielleicht findet sich hier noch jemand, trotz des mittlerweile recht alten Thread.


    lG

    Eike

  • Nur zum Verständnis:
    Du steckst den USB-Stecker in den TV. Der RasPi ist herunter gefahren. Wenn Du dann den TV einschaltest, reagiert der RasPi nicht, obwohl die Spannung am USB-Ausgang des TV von rund 0V auf rund 5V ansteigt.

    Dann stimmt etwas an der Hardware nicht.

    Welchen RasPi hast Du und wie und wo sind die Kabel angeschlossen?

  • Moin, danke für die schnelle Antwort. Genau wie du beschrieben hast + ziehe ich den USB raus, startet der Raspi. Also irgendwas stimmt ja doch, da zumindest ein Reset stattfindet.


    Es ist nen Raspberry 3 B+.


    Was meinst du mit "wo sind die Kabel angeschlossen"? Er ist die ganze Zeit mit dem Netzteil über MicroUSB verbunden. HDMI logischerweise am TV. USB auch am TV. Die Kabel von dem selbstgelöteten Board gehen in den RUN-Pin und den direkt daneben befindlichen.


    Über CEC schaltet sich der Raspi zusammen mit dem TV aus, aber beim Einschalten des TVs, kommt der Raspi nicht hoch.

  • Das wäre natürlich DER Tipp! Das probiere ich nachher direkt und gebe Rückmeldung.

    Der Pin daneben ist halt unbeschriftet. Wer lesen/sich informieren kann ist klar im Vorteil.

    Das ist das Problem eines Softwareentwicklers: Der überfliegt die Doku und probiert einfach aus. Zum Glück war es hier nicht überlebensentscheidend für den Raspi. Hätte sich sonst zu einem 1er hinter der Regenbogenbrücke gesellen können:whistling:


    Was ich mich halt frage: Warum geht der Pi an, wenn ich das USB Kabel ziehe?



    Update: Hier das Feedback. Es hat funktioniert. Die Verbindung, die vorher an der sogenannten PEN-Verbindung war, wurde nun mit einem Ground-GPIO-PIN verbunden (man hätte theoretisch auch eines der beiden Gehäuse der USB-Port nehmen können).

    Quote

    Im Pi 3B+ wurde der GND Pin aus diesem Header entfernt, und ein neuer Pin "PEN" hinzugefügt. PEN steht dabei für Power ENable. Beim Verbinden des PEN Pins an GND wird dem Board der Strom komplett entzogen - es geht damit in den niedrigsten Stromverbrauchszustand in den es gehen kann. Sicherlich sinnvoll für batteriebetriebene Lösungen, die das Board dann aus dem Tiefschlaf mit einem kleinen Mikrocontroller aufwecken können.

    Quelle: https://buyzero.de/blogs/news/raspberry-pi-3b-alle-fakten

    Edited once, last by Fiver ().

  • Bin jetzt auch bald soweit meinen Rasp4 über den USB Port des TV zu steuern. Bin etwas verwirrt mit den verschieden Versionen der Schaltung hier.

    Im Moment wird softwaremäßig ein Pin überwacht, der Standart auf 5 V liegt. Brücke ich ihn an ground mit einem Taster, läuft ein script und fährt in sauber runter.

    wenn ich den Taster nochmals drücke, startet der Raspi wieder sauber.


    Glaube keiner der vorgestellten Schaltpläne funktioniert nach dieser Spezifikation.


    Brauche eigentlich wenn ich das richtig verstehe nur eine Schaltung die folgendes macht:


    sobald eine Pegeländerung am eingang, muß ein impuls zwischen Pin 6 und Pin5 kommen. Was brauche ich dafür ?

    Danke für Eure Hilfe !

  • Es gibt zwei Versionen der Schaltung. Fährt der RasPi per HDMI CEC bei Abschalten des TV herunter brauchst Du nur noch eine Lösung, um ihn wieder einzuschalten. Das ist diese Version:


    RE: Gelöst: Raspberry Pi nach Shutdown einschalten wenn TV eingeschaltet wird


    Der USB-Stecker kommt in den TV. Das Kabel hat zwei Anschlüsse. Masse und "Reset". Masse wird auf Masse angeschlossen (GND). Reset wird auf Reset (RUN) angeschlossen. Ab dem RasPi 3 liegen die nicht mehr nebeneinander. Da muss die Masse dann von der GPIO-Leiste genommen werden. Bekommt der Stick keine Spannung, weil der TV aus ist, passiert nichts. In dem Moment, in dem der TV eingeschaltet wird und die Spannung von rund 0V auf rund 5V steigt, wird ein ca. 10-15 ms langer Masseimpuls auf RUN ausgegeben. Das führt zu einem Reset des RasPi und er bootet.


    Fährt der RasPi nicht automatisch per HDMI CEC herunter, benötigt er die Info, dass der TV abgeschaltet wurde. Dazu wird diese Version benötigt:


    RE: Gelöst: Raspberry Pi nach Shutdown einschalten wenn TV eingeschaltet wird


    Liegen an dem Stick 5V vom USB-Port an, wird der per Script überwachte GPIO auf LOW gezogen. Fallt die Spannung des USB-Ports weg, wird der GPIO über einen 3V3-Pullup auf HIGH gezogen. Dies wird per Script erkannt und der RasPi kann herunter fahren.


    Das Script zum Überwachen des GPIO findet man hier:

    RE: Gelöst: Raspberry Pi nach Shutdown einschalten wenn TV eingeschaltet wird