Kodi 18: CEC-Steuerung, einige Fragen für die Fachleute

  • Ich habe auf Ubuntu 16.04, Kodi 18 laufen. An den Rechner ist ein USB-CEC-Adapter angeschlossen, der auch funktioniert. Zur Steuerung benutze ich eine "Air Mouse"-Fernbedienung (Funk, USB-HID), mit der ich sehr zufrieden bin.

    Bei meinem gewünschten Setup müsste ich anscheinend einige CEC-Befehle von Kodi direkt regeln lassen und andere manuell per cec-client regeln. Leider scheint beides gleichzeitig nicht zu gehen, da Kodi den Port des CEC-Adapters blockiert, wenn er in Kodi "aktiviert" ist.

    Ich möchte folgendes Realisieren:
    1. Automatisches Aufwachen des Fernsehers, wenn der HTCP manuell und nicht wegen eines Aufnahmetimers gestartet wurde.
    2. Steuerung der Lautstärke durch die HID-Fernbedienung (inkl. Mute).
    3. Nachträgliches An- und Abschalten von Verstärker und/oder TV.
    4. Abschalten des Fernsehers und des Verstärkers beim Standby/Herunterfahren.

    Den ersten Punkt kann ich entweder per cec-client oder durch Kodi regeln. Ob Kodi den Fernseher einschaltet, wenn der Rechner nur automatisch wegen eines Aufwachtimers gestartet ist, muss ich noch testen. (Per Skript mit cec-client kann ich das unterscheiden.)

    Der zweite Punkt funktioniert wenn der CEC-Adapter in Kodi aktiviert ist. Über den cec-lient kann man zwar auch die Lautstärke regeln, ich denke aber nicht, dass das aus Kodi heraus so gut funktioniert (habe es aber noch nicht getestet.

    Der dritte Punkt ist mir bisher nur per cec-lient gelungen. Dann aber auch aus Kodi heraus, so lange der CEC-Adapter nicht in Kodi aktiviert ist.
    Ich habe zur DialogButton.xml ein paar Punkte zum An- oder Abschalten des Verstärkers und des TVs hinzugefügt, die ein Python-Skript aufrufen, das wiederum den cec-client mit den richtigen Parametern aufruft.
    Das funktioniert aber, wie gesagt, leider nur, wenn der CEC-Adapter in Kodi nicht aktiviert ist.
    Ich habe versucht die Built-In Funktionen CECStandby und CECActivateSourcezu verwenden. Fernseher und Verstärker gleichzeitig kann ich damit aber an und ausschalten. Das ist aber nur der seltenste Fall.
    Wenn ich die Funktionen mit den jeweiligen IDs verwende (zB CECStandby(36038) um den Verstärker abzuschalten) funktioniert das aber anscheinend nicht oder ich habe die falschen IDs. (Habe ich in einem Forenbeitrag zu Kodi 15 gefunden. Haben sich wahrscheinlich inzwischen geändert.)

    Der vierte Punkt ist nun wieder einfach, sowohl per Kodi als auch per cec-client umsetzbar. Selbst bei aktiviertem CEC-Adapter in Kodi, kann ich per Skript erst Kodi ausschalten, dann per cec-client den Verstäker und Fernseher ausschalten und dann den Rechner herunterfahren.


    Also: Ich kann alle vier Punkte, die ich gerne hätte umsetzen. leider bisher nicht alle vier gleichzeitig. :/

    Weiß jemand Rat?

  • Scheint eine schwere (oder für alle, ausser mir, uninteressante) Frage zu sein.

    Ich versuche nochmal zu präzisieren, wonach ich suche:

    Ist es möglich die Kodi-Built-ins "CEC-Standby" und "CEC-Activate-Source" zu nutzen um gezielt einzelne Geräte an oder aus zu schalten? (Da man in den Einstellungen des CEC-Adapters in Kodi zwischen TV und AMP auswählen kann, scheint es zumindest nicht unmöglich zu sein. Die Frage ist nur, ob die Built-In-Kommandos dies vorsehen.)

  • Mein Setup entspricht eigentlich genau dem von r_wraith: Ich habe ebenfalls einen Pulse-Eight USB Adapter, an dem ich über HDMI eine Soundbase und TV angeschlossen habe.

    Prinzipell funktioniert alles wie gewünscht. TV und Soundbase gehen an, wenn ich den PC/Kodi per Fernbedienung (Streacom IRRC Remote & Receiver) aus dem Standby wecke und gehen auch wieder brav uas, wenn ich das System schlafen schicke. Lautstärke und Mute kann ich ebenfalls per Fernbedienung steuern.

    Ärgerlich finde ich nur, dass sich TV & Soundbase leider auch einschalten, wenn der PC/Kodi zu einem Timer Event für eine Aufnahme aufwacht. In dem Fall muss ich zur TV-Fernbedienung greifen, um (nur) TV/Soundbase wieder auszuschalten.

    MIch würde interessieren, wie Du das per Skript aktuell von einem manuellen Resume unterscheiden kannst. Evtl. könnte man über ein Addon skript erreichen, dass man TV & Soundbar im Falle eines Timer events per CECStandby automatisch wieder schlafen schickt. Finde ich aber immer noch unschön. Besser wäre, wenn man das Aufwachen von TV & Soundbase beim Timer Event ganz verhindern könnte. Dazu fehlt mir aber auch noch die "Erleuchtung", wie man das realisieren kann.

  • MIch würde interessieren, wie Du das per Skript aktuell von einem manuellen Resume unterscheiden kannst.


    Dem Mann kann geholfen werden. :)
    Ich benutze VDR (headless-Server) als TV-Backend. Für diesen gibt es ein DBUS-Interface als Plugin, über das man abfragen kann, ob der Start "manual" war, oder nicht.

    Dann braucht man dann nur noch ein Skript:

    Bash: /usr/bin/cec_startup.sh
    #! /usr/bin/env bash
    
    
    /usr/bin/vdr-dbus-send /Shutdown shutdown.ManualStart | grep true
    if [ $? = 1 ]; then
        echo 'on 0' | /usr/bin/cec-client -s > /dev/null
    fi
    
    
    exit 0

    ("0" ist die CEC-ID meines Fernsehers.)

    oder

    Ich nutze die Python-Variante. Dazu habe ich unter Ubuntu einen Systemd-Service erstellt, der nach VDR, aber vor Kodi startet und dann das Python-Skript aufruft.


    Da ich den Shutdown des Rechners auch über VDR regele, habe ich im Kodi-Shutdown-Menü (DIalogButton.xml) der Skin, die ich benutze, einen Button eingefügt, dessen ersten "onclick"-Action per "RunScript" ein Python-Skript aufruft, dass wiederum dem VDR den Befehl zum Shutdown gibt (per "/usr/bin/svdrpsend hitk power") und somit dem VDR überlässt, die neue Aufwachzeit zu setzen und den Rechner herunterzufahren oder den Shutdown abzubrechen, falls gerade eine Aufnahme läuft oder in nächster Zukunft geplant ist.
    Dem VDR habe ich in seinen Shutdown-Hooks zwei Zeilen für den cec-client mitgegeben, die meinen Fernseher und Verstärker abschalten (Wie oben , aber "standby 0/5" statt "on 0").
    Damit Kodi sich beendet und das Interface freigibt, bevor der VDR den cec-client anspricht, bekommt der Button in der DialogButton.xml noch eine zweite "onclick"-Aktion, nämlich "Quit()".

    Der verbleibende "Problemfall" bei diesem Setup ist noch, dass wenn ich den Button in Kodi betätige, der Shutdown aber wegen einer Aufnahme vom VDR abgebrochen wird und ich den Fernseher wieder einschalte, während die Aufnahme noch läuft, ich von einem Linux-Kommando-Prompt begrüßt werde und mich erste einloggen und Kodi wieder starten muss.
    Das ist aber sicher extrem selten der Fall und ich überlege mir etwas, wenn es mich stört.

  • Mehr als im Wiki:
    https://kodi.wiki/view/CEC
    geht nicht.
    CEC ist auch eine undurchsichtige Baustelle. Das ist sehr von der verwendeten Hardware abhängig.
    Also muss schon jemand die gleiche HW und evtl das gleiche Problem/Interesse haben um wirklich helfen zu können.

    Das ist schade, da es mir ja, wie im zweiten Post präzisiert, vor allen Dingen um die Frage geht, ob Kodi in der Lage ist, mit den Built-In-Kommandos das gleiche zu erreichen, wie mit den Einstellungen des CEC-Adapters, nämlich eine Unterscheidung von Fernseher und Verstärker für CEC-Standby und CEC-Activate-Source. Ich werde mal weiter recherchieren.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!