Ein-/Ausschalten des Raspberry und der LED-Strips

  • Hallo zusammen,

    ich bin neu hier und habe das Forum bereits nach Lösungen durchsucht. ;)

    Ich habe mir ein Ambilight mit einem Raspberry Pi Zero, WS2801-Strips [Anzeige], multifunktionalem Netzteil (für die LEDs) [Anzeige], Eckverbindern [Anzeige] (da ich nicht löten mag) einem USB-HDMI-Grabber [Anzeige] und einem HDMI-Splitter [Anzeige] hinter einem HDMI-Verteiler [Anzeige] mitteils Hyperion aufgebaut. Das funktioniert auch soweit ganz gut. :bravo2:

    Was nicht funktioniert ist, dass das Ambilight ausgeht, sobald ich den Fernseher ausschalte. Je nachdem was der Zuspieler hinter dem HDMI-Verteiler noch zuspielt sieht dies sehr lustig aus.

    Mein Samsung GU55TU8079 hat einen USB-Anschluss für externe Festplatten.

    Ich habe zwei Ideen und würde gerne eure Meinung hören, auch für weitere Lösungsvorschläge (ohne löten) bin ich dankbar :)

    1. Ich versorge den Raspberry über den USB-Anschluss des Fernsehers. Hier würde der Raspberry jedoch nicht sauber herunterfahren. Habt ihr hierfür fertige Ideen/Lösungen?

    2. Ich verbinde den USB-Anschluss "irgendwie" mit den GPIOs des Raspberries (5V vs. 3.3V) und fahre den Raspberry sobald keine Spannung mehr anliegt sauber herunter und starte auch wieder. Gibt es hierfür "fertige" Bauteile? Ich bin nicht so der Löter...

    Optional würde ich auch noch das Universalnetzteil beim Hoch-/Runterfahren per Funksteckdose schalten.

    Was würdet ihr machen?

    Liebe Grüße

    Caesium

  • Zum Beispiel per Systemd Service Unit. Die könnte in etwa so aussehen:

  • Wenn der Fernseher im gleichen Netzwerk auch online ist, könntest du ein Script schreiben, welches jede Minute einmal z.B. per Ping prüft, ob der Fernseher noch da ist. Wenn nicht, wird der Zero vom Script runtergefahren.

    Das geht nicht, wenn der Fernseher nach dem Ausschalten im Standby ist und dennoch zurückpingt. Das müsstest du vorher prüfen.

    Ich habe ein ähnliches Szenario im Wohnzimmer. Sobald der Fernseher nicht mehr im Netzwerk ist (also über die FB ausgeschaltet wurde), wird der Mediaplayer (Libreelec/Kodi) automatisch runtergefahren.

    Viele Grüße,

    Peter

  • Zum Beispiel per Systemd Service Unit. Die könnte in etwa so aussehen:

    Aber dafür müsste der Raspi ja mitbekommen, dass er heruntergefahren werden soll. Mein Problem ist ja, wie genau er das mitbekommt. :conf:

    Peter0311 Das ist eine Idee, aber irgendwie nicht so ein schöner Workaround ;)

    hyle CEC kommt am Raspi durch den HDMI Switch und den HDMI-Verteiler nicht an. Außerdem hängt am Verteiler auch ein NUC, welcher ggf. sogar noch laufen soll... :denker:

  • CEC kommt am Raspi durch den HDMI Switch und den HDMI-Verteiler nicht an.

    Das ist natürlich doof.

    Du kannst den RPi auch mit einer Telefon-APP (z.B. unter Android gibt es SSH-Button) runterfahren

    oder es mit LIRC versuchen

    oder einen Taster an die GPIO des RPi anschließen

    oder ein USB-Kabel aufschneiden / vorgefertigtes Kabel [Anzeige] verwenden. Der Stecker in den TV und offenen Kabelenden an einen Optokoppler und davon zu den GPIO des RPi.

    Das setzt allerdings ggf. etwas Programmieren voraus, soweit es das verwendete OS zulässt.

  • An den Taster habe ich auch schon gedacht, vielleicht mache ich das auch als Übergangslösung, da ich sowieso alles dafür hier habe.

    Das mit dem USB-Kabel gefällt mir gut. Wozu ist der Ootokoppler da und wie müsste ich das verschalten? Ich dachte man müsse "nur" die 5V des USB-Anschlusses auf 3,3V bringen und könnte dann die GPIOs als Signal (analg zum Schalter) nutzen. :conf:

  • Um es grob zu umschreiben. Der Optokoppler spielt in zwei Stromkreisen. Einmal die 5V des USB, die eine LED an- und ausschalten. Der andere Kreis sind die 3V3 des RPi, also GPIO zu einem LDR im Optokoppler zu GND im RPi.

    Hier ein Link: https://www.elektronik-kompendium.de/sites/bau/0411091.htm

  • So wie ich das verstehe könnte ich diese. Optokoppler [Anzeige] nehmen, das von dir genannte USB-Kabel an den Input anschließen (woher weiß ich, welches der beiden Kabel enden + (rot?) und welches - ist) und GND an PIN 6 und VOUT an GPIO 3 (PIN 5) anschließen.

    Wenn ich dann in der /boot/config.txt (Raspberry OS Bullseye)

    Code
    dtoverlay=gpio-shutdown,gpio_pin=3, active_low=1,gpio_pull=up

    Eintrage sollte der USB-Port des Fernsehers als Schalter fungieren oder?

  • Hast du einen Optokoppler, den du empfehlen kannst?

    Da könntest du einen 4n25 oder einen 817c verwenden. Ich habe da eine ähnliche Anwendung mit einem 817c laufen – nur dass auf der einen Seite 12V anliegen und an der anderen ein Arduino. Aber das Prinzip ist ja das selbe. Um die LED des OK zu entlasten solltest du auf der Eingangsseite einen Vorwiderstand (200Ω beim 817c bzw. 100Ω beim 4n25 – unter der Annahme dass da 5V anliegen) zwischen schalten.

  • Ich habe jetzt vorläufig einen Button zum Hoch-/Herunterfahren eingebaut und wollte das Skript testen. Mein Problem ist nun, dass mein Skript das Netzwerk braucht um den Hue Plug zu schalten.

    Python
    #!/usr/bin/python3
    from phue import Bridge
    import logging
    
    logging.basicConfig()
    bridge = Bridge(ip='192.168.1.90',username='ABC')
    
    #Change the light state
    bridge.set_light(21, 'on', False)

    Irgendwie bekomme ich es nicht hin, die Systemd Service Unit korrekt einzurichten. Entweder das Skript wird auch beim Start ausgeführt oder gar nicht. Was mache ich falsch? Aktuell sieht mein Skript wiefolgt aus

  • Before=network-online.target

    behindert vermutlich das rechtzeitige Starten des Skripts.

    Versuchs mal damit:

  • Stmmt, Ich bin doof! :D Das soll ja beim runterfahren gestartet werden, Sorry!

    Versuchs mal damit:

  • Leider nein, jetzt habe ich das Problem, dass das Netzwerk nicht (mehr) zur Verfügung steht.

Jetzt mitmachen!

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