[HOW-TO] HDMI CEC Breakoutkabel <- Hyperion mit TV ein/aus schalten

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi, ich wollte hier mal meine neuste Bastelei teilen,

    Ich habe mir eben ein HDMI-CEC Breakout/Splitter Kabel gebaut.

    Das Kabel besteht aus 2 HDMI-Kabeln. Am leichtesten gehts wenn man 2 mal das gleiche kabel hat, da sollten die Aderfarben stimmen

    Beim ersten wird einseitig der Stecker abgschnitten, der Mantel ca. 3cm entfernt und alle Adern außer CEC(Pin 13), SDA, SCL(I2C Pins 15 und 16) und GND(Pin 17) (Mit dem Multimeter ausmessen) weggeschnitten.

    Am zweiten kabel wird an einer beliebigen Stelle(wie es bei eurem aufbau am besten passt) der Mantel auf ca. 4cm entfernt ohne dabei aber das Schirmungsgeflecht zu beschädigen.

    Dann werden an diesem Kabel die Pins für Adern für CEC und GND ausgepiepst.

    Jetzt hat man 2 möglichkeiten:

    1. CEC des ersten Kabels einfach mit dem des zweiten verbinden so das der PI die gesamte CEC kommunikation abhören kann
    oder
    2. CEC des zweiten Kabels auftrennen und mit dem ersten Kabel verbinden und so die CEC kommunikation nur vom TV zum PI laufen lassen.

    GND wird in beiden fällen einfach verbunden.

    Jetzt kann man die Adern für SDA, SCL und noch eine brücke von GND auf einen Pinheader legen und mit ein bisschen software gebastel hat man einen 5V I2C port am Pi.


    Jetzt fragen sich sicher einige warum das ganze?

    Ich will meinen PI per TV-Fernbedienung steuern, das ganze per CEC weil ich darüber auch abfragen kann ob der TV läuft. Der TV sendet jedoch die CEC signale nur an die aktive HDMI Quelle.

    Hardware läuft, jetzt gehts an die Software.

    It just works? Make it better, break it. Rebuild it, better!

    Einmal editiert, zuletzt von timkn (17. März 2015 um 17:17)

  • [HOW-TO] HDMI CEC Breakoutkabel <- Hyperion mit TV ein/aus schalten? Schau mal ob du hier fündig wirst!

  • Sooo,

    Software läuft auch, ist noch nicht perfekt, aber fürs einfache starten/stoppen von Hyperion schon reichend.

    Ich hab es mir relativ einfach gemacht, ein Script das den "Powerstatus" vom TV abfragt und dementsprechend Hyperion startet oder stoppt.

    Dieses Script wird per cronjob alle 10 Sekunden ausgeführt.

    Inhalt der Crontab

    Code
    * * * * * /home/pi/ambi.sh
    * * * * * sleep 10; /home/pi/ambi.sh
    * * * * * sleep 20; /home/pi/ambi.sh
    * * * * * sleep 30; /home/pi/ambi.sh
    * * * * * sleep 40; /home/pi/ambi.sh
    * * * * * sleep 50; /home/pi/ambi.sh

    Unsauber, einfach, aber funktioniert.

    It just works? Make it better, break it. Rebuild it, better!

  • Ist das dann damit auch möglich, dass wenn der Pi über das HDMI Kabel über ne längere Zeit (also 10 Sek oder so) kein SIgnal mehr bekommt, dass er sich dann runter fährt?
    Das wär ja dann die komfortabelste Art für mich.
    Einfach TV ausschalten, nach 10 Sek fährt der Pi automatisch runter und ich kann ihn durch nen Schalter vorm Netzteil vom Strom nehmen und alles ist aus. ;)

  • Ja, wäre auch möglich, nur musst du ihn dann manuell wieder hochfahren...

    statt den Hyperion-Daemon zu stoppen muss man dann eben "sudo shutdown -h now" ausführen

    It just works? Make it better, break it. Rebuild it, better!


  • Jetzt kann man die Adern für SDA, SCL und noch eine brücke von GND auf einen Pinheader legen und mit ein bisschen software gebastel hat man einen 5V I2C port am Pi.

    Hallo, und vielen Dank für die Vorstellung dieser Möglichkeit, und deinem Beitrag in meinen Thread.
    Ich würde dieses gerne nachbauen. Der Teil mit den 2 Kabeln ist mir soweit klar. Aber wie genau der Pi anzusteuern ist, das heißt welche Adern wohin müssen, ist mir nicht klar.

    Könntest du das nochmal genauer erläutern?

    Und beim Software-Part:

    Ich erstelle eine Datei namens "ambi.sh" im Verzeichnis /home/pi/ ,mit deinem Code, richtig?

    Danach die Crontab ergänzen, und das wars schon?


  • Der Teil mit den 2 Kabeln ist mir soweit klar. Aber wie genau der Pi anzusteuern ist, das heißt welche Adern wohin müssen, ist mir nicht klar.

    Könntest du das nochmal genauer erläutern?

    Die 2 Kabel werden 1:1 belegt. Das heißt, die CEC-Leitung(pin 13) vom "Verbindungs-Kabel" wird mit der CEC-Leitung des "Abzweig-Kabels"(das Kabel zum Pi). Dazu wird noch Die Masse für CEC verbunden(Pin 17).

    Der Part mit SDA und SCL ist Optional, für die funktion des Kabels nicht nötig, wenn man eine 5V-I2C Schnittstelle benötigt aber ideal.


    Und beim Software-Part:

    Ich erstelle eine Datei namens "ambi.sh" im Verzeichnis /home/pi/ ,mit deinem Code, richtig?

    Danach die Crontab ergänzen, und das wars schon?

    Japp, genau. Habs ein wenig knapp geschrieben...

    It just works? Make it better, break it. Rebuild it, better!

  • Ich habe mich die tage mal mit der Python CEC Library beschäftigt, das Ergebnis ist eine schnellere Reaktion beim Ein/Aus-Schalten des Fernsehers und die Möglichkeit per auf Tastendrücke der TV-Fernbedienung zu reagieren.

    Ich schalte z.B. meine Funksteckdosen damit :) und Steuere über das Steuerkreuz meinen FireTV per adb.

    Hier mal meine test.py, mit diesem kleinen Script kann man sich die remote codes ausgeben lassen.

    Python
    import cec
    from time import sleep
    adapters = cec.list_adapters()
    print adapters
    def test(event, key, val):
    	if(val == 0):
    		print("KEY: ", key)
    cec.init()
    cec.add_callback(test, cec.EVENT_ALL & ~cec.EVENT_LOG)
    sleep(100000)

    Weitere infos gibts hier: https://github.com/trainman419/python-cec

    It just works? Make it better, break it. Rebuild it, better!

  • So, ich habe das Kabel jetzt mal nachgebaut und unter Hilfe von timkn auch zum laufen gebracht. Für ähnliche Anfänger wie ich es bin dazu noch einige Hinweise.

    Es müssen libcec, cec-client und Python-cec installiert sein.

    Für Python-cec könnt ihr so vorgehen wie hier beschrieben.

    Für libcec und cec-client gibts hier eine Anleitung
    Für aktuellere Images bitte runterscrollen und den Ausführungen von "vimtut0r" folgen.

    Die Crontab bearbeiten mit "crontab -e" und folgendes einfügen:

    Code
    * * * * * /home/pi/ambi.sh
    * * * * * sleep 10; /home/pi/ambi.sh
    * * * * * sleep 20; /home/pi/ambi.sh
    * * * * * sleep 30; /home/pi/ambi.sh
    * * * * * sleep 40; /home/pi/ambi.sh
    * * * * * sleep 50; /home/pi/ambi.sh

    Mit STRG+o abspeichern und mit STRG+x schließen.


    Des weiteren sollte der Eintrag "hdmi_force_hotplug" in der Bootconfig (/boot/config.txt)
    auf 1 stehen und aktiviert sein, also ohne Raute davor.

    Die Datei "ambi.sh" mit u.g. Code im Verzeichnis /home/pi erstellen und ausführbar machen mit

    "sudo chmod +x /home/pi/ambi.sh"

    Dann war bei mir noch das Problem das die LED´s beim Ausschalten des TV nur ein wenig dunkler wurden, aber nicht aus gingen.
    Also fügte ich mit "sleep" noch eine Wartezeit ein, damit die LED´s ´genug Zeit´ haben aus zu gehen bevor Hyperion stoppt.

    Einmal editiert, zuletzt von einmalnoch (21. Juli 2016 um 11:45)

Jetzt mitmachen!

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