[1] Archiv / MLD 4.x / Raspberry PI / Anleitung: Raspberry + Samsung-TV + CEC
 

Offline LarsX

  • Adv. Member
  • ***
  • Posts: 128
    • View Profile
Anleitung: Raspberry + Samsung-TV + CEC
« on: April 04, 2015, 00:34:16 »
So, ich hatte ein wenig Muße, mich noch einmal mit der Kombination "Raspberry + Samsung-TV + cecremote" zu beschäftigen. Vermutlich funktioniert es mit Fernsehern anderer Hersteller ähnlich oder genauso. Zwar bevorzuge ich persönlich eher die Kombi "Raspberry + Flirc", dennoch scheint ja der eine oder andere hier auf CEC zu setzen.

Man installiere sich also zunächst das Paket cecremote.

Eine Standard-CEC-Keymap ist schon aktiv, bei der bei meinem Samsung-Fernseher folgende Tastendrücke per CEC, d.h. über die Fernbedienung zum Samsung-TV und von dort über das HDMI-Kabel zum Raspberry erfolgreich weitergeleitet werden:

Code: [Select]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, PRE-CH, P+, P-, Hoch, Runter, Links, Rechts, Enter, Return, Exit,
A(rot), B(grün), C(gelb), D(blau), Rückspulen, Vorspulen, Pause, Play, Stop, Aufnahme

Das ist schon recht viel! :) Dennoch fehlt die Taste zum Aufruf des VDR-Menüs und die Taste für den Guide.

Daher möchte man die CEC-Keymap ein kleinwenig verändern oder erweitern. Dazu logge man sich per SSH auf der VDR-Kiste ein und bearbeite mit dem Editor nano die Konfigurationsdatei "/etc/vdr/plugins/cecremote/cecremote.xml".

Im <global>-Abschnitt der xml-Datei füge man hinzu.

Code: [Select]
<keymaps cec="myTV" />

Damit aktiviert man eine zusätzliche, außerhalb des <global>-Knotens noch anzugebende eigene CEC-Keymap "myTV". Am besten ergänzt man sie in der xml-Datei gleich unterhalb des <global>-Abschnitts und notiert dort:

Code: [Select]
        <ceckeymap id="myTV">
                <key code="PREVIOUS_CHANNEL">
                        <value>Menu</value>
                </key>
                <key code="ELECTRONIC_PROGRAM_GUIDE">
                        <value>Menu</value>
                        <value>Up</value>
                        <value>Ok</value>
                </key>
        </ceckeymap>

So sieht meine kleine Erweiterung aus. Sie bewirkt, dass ich mit der PRE-CH-Taste meiner Samsung-Fernbedienung ins VDR-Hauptmenü gelange. Die ursprüngliche in der Standard-CEC-Keymap für diese Taste festgelegte Funktionalität, nämlich zwischen zwei Kanälen hin- und herzuschalten, "opfere" ich sozusagen. Darüber hinaus erreiche ich, dass beim Drücken der Guide-Taste "Menu, Up, Ok" ausgeführt wird. In meinem ganz speziellen Fall starte ich damit das Plugin TvGuide, welches sich im Hauptmenü meines VDR ganz unten befindet.

Auf diese Weise habe ich die CEC-Keymap um den Aufruf des VDR-Hauptmenüs und um den Aufruf des Guides erweitert, sodass ich via CEC ganz gut meinen VDR fernbedienen kann. Ich hoffe, jemand findet das nützlich und kann etwas damit anfangen. ;)

Ich selbst setze weiter auf den Flirc-USB-Stick zum Empfang von IR-Signalen, (a) weil ich damit noch ein wenig flexibler bin und z.B. auch die Info-Taste meiner Fernbedienung nutzen kann und (b) damit ich mir das Ding nicht umsonst gekauft habe.  :D

P.S.: Wer schon einen Flirc-Empfangsstick hat, muss den natürlich abziehen, sonst wird jeder Tastendruck der Fernbedienung doppelt ausgeführt, einmal über Flirc und einmal über CEC.
« Last Edit: April 04, 2015, 21:22:34 by LarsX »

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20409
    • View Profile
    • ClausMuus.de
Raspberry + Samsung-TV + cecremote
« Reply #1 on: April 04, 2015, 10:56:17 »
Super! Nun hab ich endlich verstanden wie das mit der keymap funktioniert :)

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline LarsX

  • Adv. Member
  • ***
  • Posts: 128
    • View Profile
Anleitung: Raspberry + Samsung-TV + CEC
« Reply #2 on: April 04, 2015, 13:49:52 »
Ich habe auch ein Weilchen gebraucht, das nachzuvollziehen. Allerdings bin ich weit davon entfernt, alle eventuell vorhandenen Möglichkeiten zur Konfiguration erfasst zu haben. Folgendes ist mir nicht klar (will mich aber auch nicht zu tief reinknien):

1. Gibt es kontextbezogene Keymaps?

Beispiel: Nun habe ich mir PRE-CH als Taste fürs VDR-Hauptmenü eingerichtet, so weit, so gut, klappt prima. Kann ich mir aber auch die OK-Taste fürs VDR-Hauptmenü einrichten? Jein! Das habe ich ausprobiert, und es hat freilich auch geklappt: OK drücken brachte mich dann ins VDR-Menü. Aber wenn ich danach im VDR-Menü mit den Pfeil-Tasten der Fernbedienung durch die Menüpunkte navigiere und OK drücke, um einen Menüpunkt auszuwählen - dann wird eben nicht, wie gewünscht, der markierte Menüpunkt ausgewählt, sondern wieder fungiert die OK-Taste als Menütaste und das Menü schließt sich.  ??? Irgendwie logisch, ne. Daher stellt sich die Frage: Kann ich in der XML-Datei z.B. OK-Taste der Fernbedienung in verschiedenen Kontexten verschieden einrichten?

Noch ein Beispiel: Ich würde gerne die blaue Taste als Info-Taste nehmen, um den Inhalt zur aktuell im TV laufenden Sendung angezeigt zu bekommen. Ich gehe aber davon aus, dass die Erstellung der Zuweisung F1_BLUE->Info die blaue Taste grundsätzlich zur Info-Taste macht, auch in Kontexten, wo dies nicht gewünscht ist.

2. Welche CEC-Key-Codes (key code="??") sind in der XML-Datei erlaubt?

Ist es eine begrenzte vom Entwickler vorgegebene Liste? So kommt, wenn ich die Taste "CH LIST" auf meiner Samsung-FB drücke, der Code "Channel List (Samsung)" durchs HDMI-Kabel zum Raspi. Das habe ich über das Kommando "cec-client" recherchiert. Mir ist es nicht gelungen, den Key in der XML-Konfigurationsdatei aufzugreifen und in irgendeiner Weise zuzuweisen.

Theoretisch kann man eine Liste gültiger CEC-Key-Codes mit dem Kommando LSTK per telnet über Port 6419 oder per svdrpsend.sh erfragen. Allerdings bekommt man in beiden Fällen einen Fehler 500 und den Hinweis, der Befehl sei nicht bekannt. Schuss in den Ofen.
Workaround: Im Sourcecode in die Datei "ceckeymaps.cc" schauen, dort finden sich einige Codes.


Nachtrag: Ich muss mich korrigieren: In der neusten Version von cecremote funktioniert die Variante mit "svdrpsend.sh". Die telnet-Variante liefert nach wie vor den Fehler 500. Folgende mögliche CEC-Keys werden bei mir nach Absetzen des Kommandos "svdrpsend.sh plug cecremote LSTK" gelistet:

Spoiler (show / hide)

3. Wie lauten die möglichen VDR-Keys ("values"),

z.B. "Ok" oder "Down", in die die CEC-Key-Codes in der XML-Datei übersetzt werden? Gibt es eine Liste?

Nachtrag: Ich fand hier eine Liste mit VDR-Codes: http://www.vdr-wiki.de/wiki/index.php/Remote.conf.
Ob sie vollständig ist und ob man sie alle in der XML-Konfigurationsdatei verwenden kann - keine Ahnung. Sie lauten wie folgt:

Spoiler (show / hide)

Die benutzerfefinierten Codes User1 bis User9 kann man in der Datei /etc/vdr/keymacros.conf definieren.

Fazit: Ich habe aktuell nicht die Zeit, mich in alle Tiefen zu fuchsen, wollte jedoch, um den Thread inhaltlich zu vervollständigen -und sei es nur mit noch offenen Fragen- einige Unklarheiten ergänzen. Vielleicht meldet sich früher oder später jemand, der weitere Antworten hat. ;) Dennoch funktionieren natürlich die ersten Gehversuche, die im ersten Post beschrieben sind, recht gut. :)
« Last Edit: April 04, 2015, 21:21:40 by LarsX »

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20409
    • View Profile
    • ClausMuus.de
Anleitung: Raspberry + Samsung-TV + CEC
« Reply #3 on: April 05, 2015, 10:49:10 »
Hi,

Du kannst den Tasten in der /etc/vdr/keymacros.conf eine neue Bedeutung zuweisen. Dort werden z.B. den Farbtasten Funktionen zugewiesen, die nur ohne geöffnetem OSD wirken. Ob das dort auch mit der OK->Menü Zuordnung möglich ist, hab ich noch nicht ausprobiert.

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline LarsX

  • Adv. Member
  • ***
  • Posts: 128
    • View Profile
Anleitung: Raspberry + Samsung-TV + CEC
« Reply #4 on: April 05, 2015, 16:52:09 »
Das funktioniert tatsächlich, danke für den Hinweis. Ergänze ich in der /etc/vdr/keymacros.conf die Zeile

Code: [Select]
Ok      Menu

... dann ruft das Drücken der Ok/Enter-Taste an der Fernbedienung beim Fernsehen das Hauptmenü auf. Innerhalb des Menüs hingegen agiert die Ok-Taste als gewöhnliche Ok-Taste. Perfekt.

Offline she

  • MLD-Tester
  • Profi Member
  • ******
  • Posts: 321
    • View Profile
Anleitung: Raspberry + Samsung-TV + CEC
« Reply #5 on: October 11, 2015, 19:38:25 »
Hallo LarsX, hallo Forum,

sehr guter Artikel, der aber leider noch Fragen für mich aufwirft, aber auch die ein oder andere Antwort kann ich liefern:

1.
Quote
Die ursprüngliche in der Standard-CEC-Keymap für diese Taste festgelegte Funktionalität, nämlich zwischen zwei Kanälen hin- und herzuschalten, "opfere" ich sozusagen.
Diese Funktion ist bei mir standardmässig auch auf der "0" hinterlegt, also ist das Opfer überschaubar.

2.
Quote
Ist es eine begrenzte vom Entwickler vorgegebene Liste? So kommt, wenn ich die Taste "CH LIST" auf meiner Samsung-FB drücke, der Code "Channel List (Samsung)" durchs HDMI-Kabel zum Raspi. Das habe ich über das Kommando "cec-client" recherchiert. Mir ist es nicht gelungen, den Key in der XML-Konfigurationsdatei aufzugreifen und in irgendeiner Weise zuzuweisen.
Du hast selber duch ein Kommando mitgeteilt, wie man die übertragenen Codes findet:
Quote
svdrpsend.sh plug cecremote LSTK
Hier habe ich für die Taste
Quote
"Channel List (Samsung)"


den Eintrag

Quote
AN_CHANNELS_LIST
gefunden. Den Eintrag in die

Quote
/etc/vdr/plugins/cecremote/cecremote.xml

mit Deinem oben beschriebenen Muster funktioniert reibungslos.

Nun zu meinen Fragen:
1.
Wenn ich das TVGuide auf die Taste "Guide" lege, öffnen sich das PI TV-Guide wunschgemäß. Drücke ich die Taste bei geöffnetem TV-Guide nochmals, schließt das PI wie ich es erwartet habe, aber das Programm springt ein hoch. Wie könnte ich das unterbinden?

2.
Ich habe zwei Samsung TV. Bei einem funktionieren die Play, Pause, Stop und Rec Tasten einwandfrei. Beim Zweiten gar nicht. Wenn ich beispielsweise die Play-Taste drücke, wird automatisch die zuletzt abgespielte Aufnahme weiter abgespielt.
Wie würde3 ich beim ZWeiten TV diese Funktion einbinden? Über
Quote
cec-client
sehe ich, dass die Kommandos über das Kabel ankommen.

Danke
Stephan
MLD 5.5 RPI3, Samsung 8000er mit CEC
MLD 5.5 RPI3, Samsung 6000er mit CEC
MLD 5.5 - virtuell unter proxmox - 2GB vRAM, 2vCPU - 4TB HDD
DD OctopusNet

[1] Archiv / MLD 4.x / Raspberry PI / Anleitung: Raspberry + Samsung-TV + CEC
 



Users Online Users Online

0 Members and 1 Guest are viewing this topic.