meintechblog.de
26Jan/1631

LG-Fernseher aus FHEM steuern und aktuelle Stati auslesen

Schon seit Längerem plane ich die Einbindung meines Fernsehers in FHEM, um den doch schon etwas in die Jahre gekommenen LG Flatscreen doch noch in mein Smart Home integrieren zu können. Gefunden habe ich jetzt die passende Lösung per RS232-Schnittstelle, welche eigentlich nur für Service-Mitarbeiter gedacht ist. Das Gute ist, dass man dafür verschiedene Dokumentationen im Netz findet, welche die einzelnen Befehle auflisten. Sogar im Handbuch zum Fernseher findet man ein eigenes Kapitel darüber und ein fertiges FHEM-Modul gibt es ebenfalls, welches sogar den aktuellen Status des TV auslesen kann. Perfekte Voraussetzungen also, um in diesem kleinen Tutorial zu zeigen, wie ein LG TV mit passender Schnittstelle aus FHEM heraus angesteuert werden kann.

Natürlich hat der Raspberry, auf dem FHEM in meinem Fall installiert ist, selbst keine RS232-Schnittstelle. Gut, könnte man bestimmt auch irgendwie über GPIO/UART realisieren, aber das ist viel zu kompliziert gedacht. Man nimmt einfach ein USB zu RS232 Null-Modem-Kabel.

Das Gute daran: Es funktioniert mit jedem Gerät mit USB-Port und UNIX - sollte es zumindest. Kostet zwar ein paar Euro mehr, läuft aber dafür zuverlässig. Ich habe dafür das StarTech USB Nullmodem RS232 Adapter Kabel (Affiliate-Link) verwendet.

Affiliate-Link

Und es geht wirklich alles - die wichtigsten Schaltfunktionen im "Automatisierungsalltag" sind aber sicherlich folgende:

  • An- und Ausschalten
  • Eingangsquelle wählen
  • Mute / Lautstärke ändern

Natürlich wäre es genauso interessant, die Infos andersherum abzufragen:

  • Ist der Fernseher eingeschaltet?
  • Welcher Eingang ist gewählt?

Das ist aber nur ein Bruchteil der verfügbaren Funktionen! Theoretisch denkbar ist über die Service-Schnittstelle alles, was man auch mit der Fernbedienung über die Menüs einstellen kann. Sei es Helligkeit, Kontrast oder auch die Bildschärfe.

Vorbereitung

Das neue Kabel in die Service-Schnittstelle "RS232C IN" des Fernsehers stecken und an einen beliebigen USB-Port am Raspberry.

LGTvSerialPort

Ich nutze übrigens noch das RPI-Modell der ersten Generation, mit dem derzeit aktuellen RPI2 (Affiliate-Link) funktioniert es aber genauso.

Um zu schauen, ob das Gerät erkannt wurde, können wir den Terminalbefehl

nutzen. Dieser listet alle angeschlossenen USB-Geräte auf. Der letzte Eintrag lautet bei mir wie folgt:

"Bus 001 Device 004: ID 03eb:204b Atmel Corp. LUFA USB to Serial Adapter Project"

Der Befehl

sollte ebenfalls das USB-Gerät ausgeben:

"usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0"

Also alles okay soweit.

Erster Test per C-Programm

Um den Fernseher zu steuern, habe ich ein Projekt von GoogleCode auf GitHub geklont. Das Original ist von Rafael Vuijk. Der Quelltext ist zwar schon 5 Jahre alt, aber das Programm läuft bei mir einwandfrei! (Anmerkung: Wer den LG ausschließlich in FHEM integrieren möchte, kann diesen Schritt überspringen und direkt zum nächsten Kapitel springen.)

Also die Quellen auf den Raspberry laden und komplilieren. Das funktioniert wie folgt:

Und schon kann es losgehen! Zum Test einmal den folgenden Befehl ausführen (während der Fernseher an ist):

Jetzt sollte der Fernseher die Lautstärke auf 10 geändert haben. Der Befehl wird nahezu verzögerungsfrei übertragen. Das klappt ja schonmal wunderbar.

LGTv

Genau dieses Programm könnte man jetzt natürlich auch über FHEM oder ähnliches ansteuern. Geht aber auch wesentlich einfacher!

Fernseher in FHEM integrieren

Glücklicherweise sind wir nicht die ersten, die gerne den Fernseher in unsere Hausautomatisierung integrieren möchten. Markus Bloch aus der Community hat bereits ein entsprechendes Modul geschrieben, welches jede Menge Funktionalitäten für uns abbildet. Dieses müssen wir nun herunterladen und hinzufügen.

Dazu wechseln wir als erstes in das entsprechende Verzeichnis für die FHEM-Module, laden die Datei und passen die Dateiberechtigungen an:

Als nächstes tragen wir im FHEM-Webinterface in die FHEM-Kommandozeile

ein und bestätigen diesen Vorgang durch einen Klick auf "Save config" (links oben).

Danach sollte FHEM einmal neugestartet werden. Bitte beachtet auch, dass FHEM auf dem neuesten Stand sein sollte.

Ab sofort sollten im Device "WZ.LG" alle Reading des Fernsehers automatisch auftauchen.

LG TV Readings in FHEM

Keine RS232 Schnittstelle vorhanden?

Falls der LG-Fernseher keine RS232-Schnittstelle besitzt, ist auch eine Lösung mit einem USB-Adapter denkbar. Dazu wird der folgende Adapter Aten UC232A USB-Serial Converter (Affiliate-Link) an den USB-Port mit der Aufschrift "USB-Apps" angeschlossen.

Affiliate-Link

Wichtig ist, dass genau der angegebene Adapter von ATEN genutzt wird! Anderenfalls wird das Gerät nicht vom Fernseher erkannt, da nur exakt dieser seitens LG freigeschaltet ist. Zusätzlich wird dann noch das bereits oben genutzte StarTech USB Nullmodem RS232 Adapter Kabel (Affiliate-Link) benötigt, sodass beide Kabel in Reihe geschaltet werden.

An meinem MacBook hat das oben genannte C-Programm übrigens auch auf Anhieb funktioniert - dort heißt das Gerät aber etwas anders: /dev/tty.usbserial-AH02A0T7

Zusätzliche Software habe ich für eines der verwendeten Kabel installiert. Es liegt zwar überall eine CD mit Treibern dabei, aber bei mir lief unter Linux / Mac OS X jedoch alles out of the box.

Beispielszenarien

Grundsätzlich lässt sich das LG-Modul natürlich in zwei Richtungen verwenden. Zum einen, um Statusänderungen des TV zu nutzen, um in FHEM angebundene Devices zu schalten und andererseits, um Statusänderungen anderer Geräte als Trigger für den TV einzusetzen.

Wenn der Eingang des TV bpsw. auf "digitalTV" wechselt, soll die Bodenlampe im Wohnzimmer auf 20% gedimmt werden. Dazu ist ein einfacher Einzeiler in der fhem.cfg notwendig:

Für das zweite Beispiel wird ein VU+ Sat-Receiver genutzt, welcher den Eingang des TV auf "hdmi1" setzt, sobald er eingeschaltet wird:

Die Befehle lassen sich natürlich noch weiter ausbauen bzw. durch if-Abfragen erweitern, für den Anfang soll es damit aber genug sein.

Aus meinem täglichen Leben

Lange habe ich nach einer Möglichkeit gesucht, meinen jetzt doch schon etwas in die Jahren gekommenen LG TV etwas "smarter" machen zu können, um ihn in mein Smart-Home-Konzept einbinden zu können. Mit FHEM und dem passenden Modul habe ich jetzt endlich die perfekte Möglichkeit dazu gefunden. Zwar ist die Aufrüstung durch die Nutzung des StarTech USB Nullmodem RS232 Adapter Kabels (Affiliate-Link) nicht kostenlos möglich, die gewonnene Flexibilität ist jedoch enorm.

Danke auch an die fleissige FHEM-Community, die mir die Umsetzung durch das fertige FHEM-Modul für LG um ein gutes Stück einfacher gemacht hat. Ab sofort wird der nun smarte TV sicherlich des Öfteren mit FHEM angesteuert werden.

FHEM-Einsteiger? Unser E-Book hilft dir weiter. NEU: Teil 2 ist verfügbar!

Verpasse keine Inhalte mehr! Trag dich in unseren Newsletter ein und folge meintechblog auf Facebook oder Twitter.

Share Button
Matthias

Matthias

ist ein Allround-Talent in Sachen Blogging, Webentwicklung, Design und Fotografie. Auf meintechblog.de schreibt er über Technik, die ihn in seinem Alltag beschäftigt. Mehr Infos
Matthias
Kommentare (31)
  1. Hey Matthias,
    willkommen an Bord!

    Freut mich total, dass dein erster Blogpost online ist. Mögen noch viele weitere folgen!

    Grüße
    Jörg

  2. Sehr cool. Heißt aber, dass der Fernseher per USB direkt mit RPi verbunden sein muß? Wenn das nicht möglich ist, ohne dass man einen 2. RPi in Betrieb nimmt (mein 1. RPi steht in einem anderen Stockwerk), gäbe es Alternativen?

    VG Stephan

    • Hi Stephan,

      das macht es zwar schwieriger, aber nicht unbedingt unmöglich. Nach dieser Erklärung muss der RPi direkt mit dem Fernseher verbunden sein, richtig. Natürlich könnte man nun noch eine Lösung dazwischen bauen, welche die Steuerbefehle über HTTP im Netzwerk hin und her schiebt.

      Dafür würde ich dann auf der TV-Seite das oben genannte C-Programm nutzen und es mit einem kleinen PHP-Script ansteuern. In FHEM kann man dann natürlich nicht mehr das LG-RS232-Modul benutzen und müsste sich eine andere Lösung überlegen, welche entsprechende HTTP-Requests absetzt.

      Wäre aber alles denkbar.

    • Hi Stephan,

      wie wäre es mit einem zweiten RPi und FHEM2FHEM?

    • Vielleicht ist ein 2. RPi dann am einfachsten - behalte ich mal im Hinterkopf, sobald ich in Sachen Smart Home auch das Wohnzimmer erreiche ;-)
      Ich muss allerdings erst mal sehen, was mein alter Samsung Fernseher (BJ 2009) in Verbindung mit dem Harmony Hub so alles leisten kann.

      Danke auf jeden Fall für den Input!

      VG Stephan

  3. Hi Matthias,

    ein super erster Blogpost! Welcome @ meintechblog: Auf dass Du noch viele weitere, tolle Artikel wie diesen hier verfasst!

    Werde jetzt mal meine TV-Geräte auf serielle Schnittstellen untersuchen :)

    Viele Grüße
    Christoph

    • Danke, Ich freue mich auch schon schon sehr auf die nächsten Beiträge! Habe schon einige Ideen zusammen mit Jörg auf die Beine gestellt. ;)

  4. Apropros Fernseher:
    Mich würde mal interessieren, wie man das Bild einer Webcam, welche im Eingangsbereich hängt, auf den TV bekommt, wenn jemand an der Türsprechanlage auf den Klingelknopf drückt.

    • Wäre sicher machbar. Wobei Vollbild natürlich das Fernsehprogramm/den Film unterbrechen würde. Picture in Picture wäre noch cooler! All das ist über die Serielle Schnittstelle möglich (wobei nicht jedes Modell PIP unterstützt).

      Jetzt könnte man per HDMI dauerhaft das Bild der Kamera ausgeben, und sobald jemand klingelt den Picture in Picture Modus einschalten.

    • Das würde ich auch interessant finden. Wir haben nämlich keinen Türspion, und ich würde schon gerne wissen, wer da klingelt, insbesondere weil wir hier viel fahrendes Volk haben (... wir möchten mit Ihnen über Gott und das jüngste Gericht reden ...). Mach doch daraus auch mal einen Blogpost: WebCam, Türklingel und Fhem-Integration mit Live-Bild auf irgendein Display (sehr cool wäre da ein Browser-Popup-Window).

  5. Hallo, klasse Sache, Hut ab.

    Leider habe ich keinen LG sondern einen Samsung ohne RS232 Schnittstelle.
    Diesen möchte ich auch irgendwann mal über meinen Raspberry ansteuern.

    Gruß,
    Jörg

  6. Hallo Matthias,

    ich habe auch noch ein älteres Model bei mir an der Wand hängen. Allerdings von Samsung. Ist das damit auch möglich. Der Serviceanschluss heißt bei Samsung EX-Link.

    • Hi Waldemar,

      da ich keinen Samsung-Fernseher habe, habe ich mich mit den entsprechenden Schnittstellen noch nicht beschäftigt :( Aber ich gehe davon aus, dass es darüber ähnliche Möglichkeiten gibt, wie über die LG-Schnittstelle.

    • Ein fertiges Modul gibt es vermutlich (hab mich nicht näher eingelesen). Schau am besten direkt mal ins FHEM-Forum.

      Grüße
      Jörg

  7. Also für ältere Fernsehmodell eignet sich eventuell der Weg über den Logitech Harmony Hub. Ich habe den Samstag Abend auf die schnelle mal in mein FHEM setup aufgenommen und siehe da, sofort konnte ich meinen Pioneer Receiver (der kein Telnet anbietet und daher für FHEM tabu war), mein AppleTV Gen 4 und meinen alten Sony Fernseher ansteuern. Das schöne war dabei das der Hub alle Einstellungen der Harmony Fernbedienung sofort übernommen hat, sprich der Kofigurationsaufwand bewegte sich wirklich nur Rahmen der "define"-Zeile, alles andere war dann schon da. Sogar ein absoluter Anfänger wie ich kriegt das sofort hin. Statt jedes Gerät einzeln anzubinden ist der Harmony Hub eine elegante Lösung für ein "WLAN IR Gateway" für FHEM.

    • Das ist natürlich auch eine Lösung! Danke für den Tipp - ist sicher für viele hier sehr hilfreich. :)

      Das schöne an den Harmony-Geräten ist ja, dass man neue Codes relativ leicht neu anlernen kann und somit praktisch alles steuerbar macht, ohne sich je Gerät durch ewig lange Dokumentationen quälen zu müssen.

  8. Hi

    coole Idee, jetzt hab ich gleich wieder etwas, was ich am Wochenende ausprobieren kann *ggg*

  9. Hi Matthias,

    die Einrichtung hat super funktioniert. Nur werden die richtig Eingänge geschalten. Die Zuordnung stimmt leider nicht. z.B. bei
    set TV input hdmi1
    kommt in den Readings input: hdmi2
    TV schaltet auf RGB

    Also komplett durcheinander. Kein set passt zu dem Reading und dem Schalten des TV's

    Wie kann ich die Lautstärke einstellen?

    Bei git clone git@github.com:klein0r/lg-tv-command.git
    kommt nur der Fehler:
    Cloning into 'lg-tv-command'...
    Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
    Permission denied (publickey).
    fatal: The remote end hung up unexpectedly

    Gruß
    TWART016

    • Hi Twart,

      das is komisch - bei mir passen die Eingänge perfekt zu dem, was auch geschaltet wird. Eventuell musst Du mal ein Softwareupdate aufspielen? Mein Fernseher ist aktuell auf dem neusten Stand. Hoffentlich wird dadurch das seltsame Verhalten behoben...

      Die Lautstärke zu verändern ist mit dem FHEM so ohne weiteres leider nicht möglich. Ich plane aber, das Modul zu erweitern, sodass man Lautstärke und Mute ebenfalls setzen kann. Über das C-Programm funktioniert das nämlich einwandfrei.

      Sieht so aus, als ob github die Berechtigungen etwas enger geschnürt hat. Bevor Du nun einen Account einrichtest und einen Publickey hinterlegst, würde ich einfach das Zip herunterladen: https://github.com/klein0r/lg-tv-command/archive/master.zip

      Damit sollte es problemlos funktionieren.

      Viel Erfolg!

    • Hi Matthias,

      fhem ist auf dem aktuellsten Stand, aber wie kann ich den LG TV 32LG5700 updaten? Internet hat er nicht, USB Stick wird nicht erkannt?

      Das Modul enthällt nur 6 Eingänge: component, digitalTV, hdmi1, hdmi2, video1, video2. Der TV hat z.B. schon 3 HDMI Eingänge.

      Wo soll ich einen Account einrichten?
      Ich habe auf dem Raspberry Pi mit FHEM das Pakete heruntergeladen:
      wget https://github.com/klein0r/lg-tv-command/archive/master.zip

      Gruß
      TWART016

  10. Vielen Dank für diesen Blogpost.
    So konnte ich unseren unsmarten LCD (LG 46LD550) doch mit FHEM verbinden.

    Habe noch ein paar Anpassungen in der 75_LGTV_RS232.pm Datei gemacht um weitere Funktionen steuern zu können. Musste in meinem Fall Eingangsquellen anders adressieren. Ich nutze allerdings nur die HDMI-Eingänge, da ich keinen Fernsehanschluss habe.
    Power On/Off funktionieren bei mir wunderbar.
    Über screen_mute kann man die Bildausgabe ausschalten, volume_step entspricht den Lauter/Leiser Tasten auf der Fernbedienung, und mit volume kann man direkt die Lautstärke wählen. Hätte man wahrscheinlich auch geschickter regeln können, doch dafür fehlt mir das Hintergrundwissen.

    my %LGTV_RS232_set = (
    "input" => {
    "digitalTV" => "kb 01 00",
    "video1" => "kb 01 02",
    "video2" => "kb 01 03",
    "component" => "kb 01 04",
    "hdmi1" => "xb 01 90",
    "hdmi2" => "xb 01 91",
    "hdmi3" => "xb 01 92",
    },
    "power" => {
    "on" => "ka 01 01",
    "off" => "ka 01 00",
    },
    "volume_mute" => {
    "on" => "ke 01 00",
    "off" => "ke 01 01",
    },
    "screen_mute" => {
    "on" => "kd 01 01",
    "off" => "kd 01 00",
    },
    "energy_saving" => {
    "max" => "jq 01 03",
    "auto" => "jq 01 04",
    "off" => "jq 01 00",
    },
    "volume_step" => {
    "up" => "mc 01 02",
    "down" => "mc 01 03",
    },
    "volume" => {
    "00" => "kf 01 00",
    "01" => "kf 01 01",
    "02" => "kf 01 02",
    "03" => "kf 01 03",
    "04" => "kf 01 04",
    "05" => "kf 01 05",
    "06" => "kf 01 06",
    "07" => "kf 01 07",
    "08" => "kf 01 08",
    "09" => "kf 01 09",
    "10" => "kf 01 0a",
    "11" => "kf 01 0b",
    "12" => "kf 01 0c",
    "13" => "kf 01 0d",
    "14" => "kf 01 0e",
    "15" => "kf 01 0f",
    "16" => "kf 01 10",
    "17" => "kf 01 11",
    "18" => "kf 01 12",
    "19" => "kf 01 13",
    "20" => "kf 01 14",
    "21" => "kf 01 15",
    "22" => "kf 01 16",
    "23" => "kf 01 17",
    "24" => "kf 01 18",
    "25" => "kf 01 19",
    "26" => "kf 01 1a",
    "27" => "kf 01 1b",
    "28" => "kf 01 1c",
    "29" => "kf 01 1d",
    "30" => "kf 01 1e",
    }
    );

    #####################################
    sub
    LGTV_RS232_Initialize($)

  11. @TWART016

    Guck dir mal folgende Datei an. Darin findest du alle unterstützten Befehle, die man an den Fernseher schicken kann. Dem entsprechend kannst du dann die 75_LGTV_RS232.pm anpassen.

    http://lgrs232.com/files/LG_RS232c_TVLINK-TUNERCommandSet_v2.8_08-19-2011.xls

    Ob und wie man den Fernseher updaten kann, vermag ich dir nicht zu sagen. Doch ich wage zu behaupten, dass ein Blick in die Bedienungsanleitung dir da evtl weiterhelfen kann.

    LG Philipp

    • Hi Philipp,

      besten Dank. mit der 75_LGTV konnte ich nun einige Werte schalten, auch in der xls waren noch einige nützliche commands.

      Gibt es die Möglichkeit auch einen Kanal / Programm zu wählen. Also wie auf der Fernbedienung z.B. die Taste 2 für ZDF. Für die Lautstärke gibt es die Funktion.

      Die Bedienungsanleitung hat mich für ein Update leider auch nicht weiter gebracht.

      Gruß
      TWART016

  12. Mir stellt sich dann noch die Frage, ob und wenn wie man nun den Fernseher per Siri steuern kann. Hab WZ.TV in den Raum Homekit aufgenommen, wie die anderen Geräte auch. Hab die Homebridge und FHEM neugestartet, doch das Gerät taucht nicht in den Apps Home oder Eve auf.
    Weiß jemand Rat?

  13. Habe ein ähnliches Problem wie der Kollege oben. Mein Raspberry mit fhem steht im Arbeitszimmer, also einen Raum weiter. Cat6 Verkabelung zum Fernseher bzw. Wlan vorhanden. (Denke viele haben so eine Situation)

    Wie kann man hier die Verbindung realisieren um dein Projekt doch noch um zu setzen.
    Danke für eure Ideen!

    Beste Grüße
    Alex

  14. Ich habe mir spaßeshalber mal die Komponenten gekauft und es ausprobiert - mit einem LG 55LA6418 (aus dem Jahr 2013). Dort gibt es keine RS232-Schnittstelle mehr, also hab ich auch den USB-Adapter verwendet. Der TV hat jedoch auch kein USB-Port, der mit "USB-App" benannt ist. Daher habe ich einfach den 1. der 3 USB-Anschlüsse genommen (ist wohl spez. für Festplatten gedacht).

    Der Setup funktioniert. Jedoch mit einigen Einschränkungen:
    - Power On funktioniert nicht (das kann vermutlich mit einem CEC-Client gelöst werden, da am TV eh ein Raspberry Pi hängt).
    - Ich musste mein FHEM Modul, so wie auch schon Philipp oben beschrieb, erweitern um entsprechende Set-Anweisungen erweitern, damit ich ihn überhaupt steuern kann.

    Zuletzt habe ich aber auch noch zwei Anmerkungen / Tipps:
    - Man muss nicht, wie in der Anleitung beschrieben, das Github bemühen, da eigentlich bei einer Installation von FHEM auch das contrib-Verzeichnis mit kopiert wird. Daher genügt es die Datei von /contrib/ nach /FHEM/ zu kopieren.
    - Es gibt für 2011 und 2013+ LG TV's noch zwei andere FHEM-Module (sind aber nicht in der Installation enthalten), um diese via (W)LAN zu steuern: http://www.tatsch.it/controlling-lg-televisions-fhem/
    Auch dort funktioniert bei mir jedoch kein Power On.

    @Alex: Entweder kaufst Du dir ein weiteren Pi und verbindest ihn mit den nötigen Kabeln an deinem TV. Auf diesem Pi installierst Du dann ebenfalls FHEM und nutzt das Modul FHEM2FHEM.
    Oder Du bemühst dich um meine weiter oben verlinkten Module. Diese setzen nur eine Netzwerkverbindung zwischen FHEM-Computer und dem TV voraus (was vermutlich gegeben ist).

  15. Moin.

    Da ich hinter meinem älteren LG-TV mit RS-232 einen Raspberry mit Netzwerkanschluß habe, werde ich versuchen die TTL-Tx-Rx Pins des RPi zu nutzen. Da der RPi auch die 5V Versorgungsspannung bereitstellt, werde ich es mit diesem Modul (http://www.pollin.de/shop/dt/MzY5OTgxOTk-/Bauelemente_Bauteile/Bausaetze_Module/Bausaetze/Bausatz_RS232_TTL_Wandler.html) versuchen und den USB Kram weglassen. Der RPi 1 hat eh nur zwei davon. Ist bekannt, ob seitens des LG-TV Steuersignale (RTS/CTS usw.) benötigt werden?
    Werde mich wohl nun mit fhem2fhem beschäftigen müssen. :)

  16. Hallo, erst mal Danke für die Tolle Anleitung. Ich habe jedoch folgendes Problem: bei mir wird leider der Off status über die Fernbedienung nicht übertragen. Ich bekomme die Meldung: CommandAccepted: no

    Hast du hier einen Lösungsansatz?

  17. Hi,
    ich habe eine Cubox auf der der FHEM drauf läuft und einen OPENELEC RPI2 am TV. WIe kann ich via netzwerk auf das am RPI2 angeschlossene TTYUSB0 zugreifen?

    Grüße,
    Mark NIcolas


Dein Kommentar

Trackbacks sind deaktiviert.