FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Hardlife am 19 März 2016, 19:19:26

Titel: Codebeispiel - Steuerung von LG-TV per FHEM
Beitrag von: Hardlife am 19 März 2016, 19:19:26
Meine Antwort auf die Anfrage von "raspklaus" https://forum.fhem.de/index.php/topic,28123.msg426959.html#msg426959 (https://forum.fhem.de/index.php/topic,28123.msg426959.html#msg426959) möchte ich gern in diesen Thread auslagern, um nicht den anderen Thread mit OffTopic zuzumüllen...

Gibt ja für LG-TVs ein paar verschiedene Ansätze:
https://web.archive.org/web/20110827082047/http://www.lgrs232.com/ (https://web.archive.org/web/20110827082047/http://www.lgrs232.com/)
http://www.meintechblog.de/2016/01/lg-fernseher-aus-fhem-steuern-und-aktuelle-stati-auslesen/ (http://www.meintechblog.de/2016/01/lg-fernseher-aus-fhem-steuern-und-aktuelle-stati-auslesen/)
http://www.spech.de/blog/article/universalfernbedienungrpi (http://www.spech.de/blog/article/universalfernbedienungrpi)
http://www.vdr-portal.de/board19-verschiedenes/board52-andere-hardware/p1163708-lg-tv-per-rs232-steuern/ (http://www.vdr-portal.de/board19-verschiedenes/board52-andere-hardware/p1163708-lg-tv-per-rs232-steuern/)
http://www.tatsch.it/controlling-lg-televisions-fhem/ (http://www.tatsch.it/controlling-lg-televisions-fhem/)
https://forum.fhem.de/index.php/topic,14695.0.html (https://forum.fhem.de/index.php/topic,14695.0.html)
https://forum.fhem.de/index.php/topic,31405.0.html (https://forum.fhem.de/index.php/topic,31405.0.html)
https://forum.fhem.de/index.php/topic,23712.0.html (https://forum.fhem.de/index.php/topic,23712.0.html)
http://harizanov.com/2013/12/control-lg-smart-tv-over-the-internet-using-a-raspberry-pi/ (http://harizanov.com/2013/12/control-lg-smart-tv-over-the-internet-using-a-raspberry-pi/)


OK, dann mal den Code für meine LG-TV Steuerung...


Softwareseite:

Module:
Da ich ein älteres Modell (LG32LH3000) besitze, ging ich den althergebrachten Weg über die in FHEM vorhandene Module "xxLG7000" und "LGTV"
(ich habe die Module um einige Befehle erweitert - siehe Anhang)
-> Vorsicht bei zu extremer Erweiterung des Moduls
       - Erstens wird es dadurch etwas langsamer
       - Zweitens interpretiert das Modul die Rückmeldungen/Bestätigungen dann falsch (Das Modul kann nichts dafür)
          Ein Bestätigungscode für den per Konsole abgesetzten Befehl "kg 01 32" ("Setze Kontrast auf 50%") lautet "g 01 OK32x"
          Diese Rückeldung entspricht aber 1:1 der Rückmeldung des Befehls "mg 01 32" ("Setze Backlight auf 50%") "g 01 OK32x"
          Fehler "by Design" seitens LG... :-)
          Resultat: Die Befehle werden vom TV natürlich korrekt umgesetzt, aber die Readings im FHEM-Device falsch geschrieben...

Commandref:
http://fhem.de/commandref.html#xxLG7000 (http://fhem.de/commandref.html#xxLG7000)
http://fhem.de/commandref.html#LGTV (http://fhem.de/commandref.html#LGTV)

Nützliches:
Anbei auch ein paar hilfreiche RS232-Code-Tabellen und HEX-Codes der Fernbedienung.
(In der Anleitung des eigenen LG-TVs findet man die jeweilig passenden)


Hardwareseite:

Lösung 1 - über Wlan auf die RS232-Schnittstelle zugreifen
  -> Diese Lösung habe ich nicht Zuende verfolgt und ich kann für die Funktion nicht garantieren
  Ansätze wären:
   - Eine Abwandlung hiervon: https://forum.fhem.de/index.php/topic,49643.0.html (https://forum.fhem.de/index.php/topic,49643.0.html)
   - Oder ein Kombination obiger ESP-Lösung mit dem LGTV-Modul
      (in etwa so: "define TV LGTV_RS232 192.168.4.1:23")
      Wäre dann eine Kombi aus Original-LGTV-Definition und einer Interface-Definition analog dem WLAN-CUL https://forum.fhem.de/index.php/topic,42998.0.html (https://forum.fhem.de/index.php/topic,42998.0.html)

Lösung 2 - über RS232-Kabel:
Vorteile:
  - Schnelle, direkte Befehlsübermittlung
  - RS232-Kabel können ohne weiteres bis zu einem Kilometer (oder länger?) sein
  - relativ "einfach" zu konfigurieren...
Nachteile:
  - Falls der Raspberry (oder was auch immer) nicht beim Fernseher steht, muß man eben natürlich ein Kabel verlegen
Voraussetzung:
  - Der LG-TV verfügt über eine RS232-Schnittstelle
    Falls nur USB vorhanden, wird zusätzlich dieser Adapter benötigt
    http://www.amazon.de/gp/product/B000J3OK7C?colid=2SHDV3CGNTQSS&coliid=IB9XF30SU8ALE&ref_=wl_it_dp_o_pd_nS_ttl (http://www.amazon.de/gp/product/B000J3OK7C?colid=2SHDV3CGNTQSS&coliid=IB9XF30SU8ALE&ref_=wl_it_dp_o_pd_nS_ttl)
    NUR der ATEN-Adapter funktioniert, da nur hierfür der Treiber in der TV-Firmware vorhanden ist.
    Die Verkabelung sähe dann so aus: RASPI -> untenstehender RS232-Adapter -> RS232-Kabel -> ATEN-RS232-Adapter -> LG-TV
Ich empfehle diesen Adapter auf der Raspi-Seite zu verwenden:
    http://www.amazon.de/gp/product/B0030IT780?psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00 (http://www.amazon.de/gp/product/B0030IT780?psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00)
    Vorteil: dieser Adapter funktioniert OutOfTheBox, da er die RS232-Pegel auch gleich auf 5V anhebt


FHEM-Code:

Code aus meiner 99_myUtils.pm:
(wird benötigt für den Kanalumschalter - siehe anhängige Grafik - Gruppe "LG-Fernseher-Senderwahl")
Die Funktion greift wieder auf das in der fhem.cfg angelegte LGTV-Device zurück und "kürzt die Befehlseingabe eigentlich nur ab"
Beispiel ARD (Programmplatz im TV = 10): setze ich in "LG-Fernseher-Senderwahl" den Sender auf ARD, betätigt mir untenstehende Funktion das Device in der cfg  mit "set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 0"
Ich habe die Sender in meinem TV nach untenstehender Liste gespeichert (ORF1=Programmplatz 1, RTL2=Programmplatz 19)
Entweder passt man also untenstehenden Code an oder man speichert die Programm im TV analog dem Code, sonst schaltet FHEM natürlich auf Programmplatz 19, dort ist dann aber Sender XY gespeichert...
##################################
### Sender umschalten LG-TV WZ ###
##################################

sub
myUtilsTVSender_Initialize($$)
{
  my ($hash) = @_;
}

########## TV-Sender setzen##############

sub
TVSENDERWAHL()
{
if (Value("TVSender_LG_TV_WZ") eq "ORF_1" ) {fhem ("set LG_TV_WZ button 1") };
if (Value("TVSender_LG_TV_WZ") eq "ORF_2" ) {fhem ("set LG_TV_WZ button 2") };
if (Value("TVSender_LG_TV_WZ") eq "ORF_3" ) {fhem ("set LG_TV_WZ button 3") };
if (Value("TVSender_LG_TV_WZ") eq "ATV" ) {fhem ("set LG_TV_WZ button 4") };
if (Value("TVSender_LG_TV_WZ") eq "ATV_2" ) {fhem ("set LG_TV_WZ button 5") };
if (Value("TVSender_LG_TV_WZ") eq "Puls_4" ) {fhem ("set LG_TV_WZ button 6") };
if (Value("TVSender_LG_TV_WZ") eq "SERVUS_TV" ) {fhem ("set LG_TV_WZ button 7") };
if (Value("TVSender_LG_TV_WZ") eq "SRF_1" ) {fhem ("set LG_TV_WZ button 8") };
if (Value("TVSender_LG_TV_WZ") eq "SRF_2" ) {fhem ("set LG_TV_WZ button 9") };
if (Value("TVSender_LG_TV_WZ") eq "ARD" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 0") };
if (Value("TVSender_LG_TV_WZ") eq "ZDF" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 1") };
if (Value("TVSender_LG_TV_WZ") eq "BR" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 2") };
if (Value("TVSender_LG_TV_WZ") eq "3sat" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 3") };
if (Value("TVSender_LG_TV_WZ") eq "Pro7" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 4") };
if (Value("TVSender_LG_TV_WZ") eq "Pro7Maxx" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 5") };
if (Value("TVSender_LG_TV_WZ") eq "VOX" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 6") };
if (Value("TVSender_LG_TV_WZ") eq "Sat1" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 7") };
if (Value("TVSender_LG_TV_WZ") eq "RTL" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 8") };
if (Value("TVSender_LG_TV_WZ") eq "RTL2" ) {fhem ("set LG_TV_WZ button 1; sleep 0.1; set LG_TV_WZ button 9") };
if (Value("TVSender_LG_TV_WZ") eq "RTL_Nitro" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 0") };
if (Value("TVSender_LG_TV_WZ") eq "SuperRTL" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 1") };
if (Value("TVSender_LG_TV_WZ") eq "Kabel_1" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 2") };
if (Value("TVSender_LG_TV_WZ") eq "WT_1" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 3") };
if (Value("TVSender_LG_TV_WZ") eq "LT_1" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 4") };
if (Value("TVSender_LG_TV_WZ") eq "SR_Fernsehen" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 5") };
if (Value("TVSender_LG_TV_WZ") eq "HR_Fernsehen" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 6") };
if (Value("TVSender_LG_TV_WZ") eq "Eins_Festival" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 7") };
if (Value("TVSender_LG_TV_WZ") eq "NDR" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 8") };
if (Value("TVSender_LG_TV_WZ") eq "MDR" ) {fhem ("set LG_TV_WZ button 2; sleep 0.1; set LG_TV_WZ button 9") };
if (Value("TVSender_LG_TV_WZ") eq "WDR" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 0") };
if (Value("TVSender_LG_TV_WZ") eq "SWR" ) {fhem ("set LG_TV_WZ buttonl 3; sleep 0.1; set LG_TV_WZ buttonl 1") };
if (Value("TVSender_LG_TV_WZ") eq "RBB" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 2") };
if (Value("TVSender_LG_TV_WZ") eq "ARD_Alpha" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 3") };
if (Value("TVSender_LG_TV_WZ") eq "Arte" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 4") };
if (Value("TVSender_LG_TV_WZ") eq "Phoenix" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 5") };
if (Value("TVSender_LG_TV_WZ") eq "ZDF_Info" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 6") };
if (Value("TVSender_LG_TV_WZ") eq "DMAX" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 7") };
if (Value("TVSender_LG_TV_WZ") eq "SIXX" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 8") };
if (Value("TVSender_LG_TV_WZ") eq "ZDF_Neo" ) {fhem ("set LG_TV_WZ button 3; sleep 0.1; set LG_TV_WZ button 9") };
if (Value("TVSender_LG_TV_WZ") eq "ZDF_Kultur" ) {fhem ("set LG_TV_WZ buttonl 4; sleep 0.1; set LG_TV_WZ buttonl 0") };
if (Value("TVSender_LG_TV_WZ") eq "Eins_Plus" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 1") };
if (Value("TVSender_LG_TV_WZ") eq "NTV" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 2") };
if (Value("TVSender_LG_TV_WZ") eq "N24" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 3") };
if (Value("TVSender_LG_TV_WZ") eq "DW_Europa" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 4") };
if (Value("TVSender_LG_TV_WZ") eq "Tagesschau_24" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 5") };
if (Value("TVSender_LG_TV_WZ") eq "Euronews" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 6") };
if (Value("TVSender_LG_TV_WZ") eq "CNN" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 7") };
if (Value("TVSender_LG_TV_WZ") eq "BBC" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 8") };
if (Value("TVSender_LG_TV_WZ") eq "GoTv" ) {fhem ("set LG_TV_WZ button 4; sleep 0.1; set LG_TV_WZ button 9") };
if (Value("TVSender_LG_TV_WZ") eq "Hitradio" ) {fhem ("set LG_TV_WZ button 5; sleep 0.1; set LG_TV_WZ button 0") };
if (Value("TVSender_LG_TV_WZ") eq "Trace_TV" ) {fhem ("set LG_TV_WZ button 5; sleep 0.1; set LG_TV_WZ button 1") };
if (Value("TVSender_LG_TV_WZ") eq "Kika" ) {fhem ("set LG_TV_WZ button 5; sleep 0.1; set LG_TV_WZ button 2") };
if (Value("TVSender_LG_TV_WZ") eq "Nickelodeon" ) {fhem ("set LG_TV_WZ button 5; sleep 0.1; set LG_TV_WZ button 3") };
if (Value("TVSender_LG_TV_WZ") eq "Disney_Channel" ) {fhem ("set LG_TV_WZ button 5; sleep 0.1; set LG_TV_WZ button 4") };

}
#### ENDE ### Senderumschaltung #############


Code aus meiner fhem.cfg:
###########################
#### LG-TV über RSR232 ####
###########################

### Device-Modul
define LG_TV_SteuerModul xxLG7000 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A600ASYA-if00-port0
attr LG_TV_SteuerModul SetID 1 # im LG-TV hinterlegen (siehe Menü)
attr LG_TV_SteuerModul alias LG-TV_Steuermodul
attr LG_TV_SteuerModul group Fernseher
#attr LG_TV_SteuerModul room TEST

### Fernseher-Modul
define LG_TV_WZ LGTV
attr LG_TV_WZ alias LG-TV_WZ_Fernseher
attr LG_TV_WZ group Fernseher
#attr LG_TV_WZ room TEST

### Einschalt-Indikator definieren
define LG_TV_WZ_OnOffIndicator dummy
attr LG_TV_WZ_OnOffIndicator alias OnOff-Indikator-LG_TV_WZ
attr LG_TV_WZ_OnOffIndicator event-on-change-reading state
attr LG_TV_WZ_OnOffIndicator group Indikatoren_OnOff
#attr LG_TV_WZ_OnOffIndicator room TEST

### 2 x Notify nach einschalten, um das USB-Menü automatisch wegzuschalten (bei eingesteckten USB-Stick wird nach einschalten automatisch das USB-Menü angezeigt - behindert die weitere Bedienung)
define LG_TV_WZ_USB_Menue_sofort_weg notify LG_TV_WZ_OnOffIndicator.* {if ($EVENT eq "on") {fhem("set LG_TV_WZ exit")}}
define LG_TV_WZ_USB_Menue_verzoegert_weg notify LG_TV_WZ_OnOffIndicator.* {if ($EVENT eq "on") {fhem("define LG_TV_WZ_USB_Menue_weg_nach_10_Sekunden at +00:00:10 set LG_TV_WZ exit")}}

### LG_TV_WZ_OnOffIndicator Wertzuweisung
define LG_TV_WZ_OnOffIndicator_to_On_or_Off notify LG_TV_WZ:power.* {if(ReadingsVal("LG_TV_WZ","power","") eq "on") {fhem("set LG_TV_WZ_OnOffIndicator on")} elsif (ReadingsVal("LG_TV_WZ","power","") eq "off") {fhem("set LG_TV_WZ_OnOffIndicator off")}}
attr LG_TV_WZ_OnOffIndicator_to_On_or_Off group notify_OnOff

### Readingsgroup zur Darstellung als Warnung
define rg_LG_TV_WZ_OnOffIndicator readingsGroup LG_TV_WZ_OnOffIndicator:<%it_television@#FFBF00>,<Status>,state
attr rg_LG_TV_WZ_OnOffIndicator alias Gerätestatus&nbspLG-Fernseher
attr rg_LG_TV_WZ_OnOffIndicator group Indikator&nbspGerätestatus
attr rg_LG_TV_WZ_OnOffIndicator room Warnungen
attr rg_LG_TV_WZ_OnOffIndicator valueIcon {'state.on' => 'general_an@red', 'state.off' => 'general_aus@green'}
attr rg_LG_TV_WZ_OnOffIndicator valueStyle style="text-align:right"

### Readingsgroup zur Darstellung als Fernseher-EinAus-Erkennung
define rg_LG_TV_WZ_OnOffIndicator2 readingsGroup LG_TV_WZ_OnOffIndicator:<%it_television@yellow>,<Fernseher&nbspist&nbspmomentan>,state
attr rg_LG_TV_WZ_OnOffIndicator2 alias Gerätestatus&nbspLG-Fernseher
attr rg_LG_TV_WZ_OnOffIndicator2 group LG-Fernseher-Status
attr rg_LG_TV_WZ_OnOffIndicator2 room TV-Programm
attr rg_LG_TV_WZ_OnOffIndicator2 sortby 1
attr rg_LG_TV_WZ_OnOffIndicator2 valueIcon {'state.on' => 'general_an@red', 'state.off' => 'general_aus@green'}
attr rg_LG_TV_WZ_OnOffIndicator2 valueStyle style="text-align:right"

### Direkte Kanalwahl per DropDown-Liste
## TV-Programm im Wohnzimmer auswaehlen ###
define TVSender_LG_TV_WZ dummy
attr TVSender_LG_TV_WZ alias Sender
#attr TVSender_LG_TV_WZ devStateIcon ARD:ARD ZDF:ZDF 3-Sat:3-Sat
attr TVSender_LG_TV_WZ group LG-Fernseher-Senderwahl
attr TVSender_LG_TV_WZ icon it_remote@yellow
attr TVSender_LG_TV_WZ room TV-Programm
attr TVSender_LG_TV_WZ setList state:ORF_1,ORF_2,ORF_3,ATV,ATV_2,Puls_4,SERVUS_TV,SRF_1,SRF_2,ARD,ZDF,BR,3sat,Pro7,Pro7Maxx,VOX,Sat1,RTL,RTL2,RTL_Nitro,SuperRTL,Kabel_1,WT_1,LT_1,SR_Fernsehen,HR_Fernsehen,Eins_Festival,NDR,MDR,WDR,SWR,RBB,ARD_Alpha,Arte,Phoenix,ZDF_Info,DMAX,SIXX,ZDF_Neo,ZDF_Kultur,Eins_Plus,NTV,N24,DW_Europa,Tagesschau_24,Euronews,CNN,BBC,GoTv,Hitradio,Trace_TV,Kika,Nickelodeon,Disney_Channel
attr TVSender_LG_TV_WZ sortby 2
attr TVSender_LG_TV_WZ webCmd state
## passendes Notify, das auf myUtils-Funktion zugreift
define n_TVSender_LG_TV_WZ notify TVSender_LG_TV_WZ:.* {TVSENDERWAHL}

### Fernbedienung hochkant
define rc_LG_TV_WZ_hoch remotecontrol
attr rc_LG_TV_WZ_hoch alias LG-TV
attr rc_LG_TV_WZ_hoch group Fernseher-Fernbedienung
attr rc_LG_TV_WZ_hoch rc_iconpath icons/remotecontrol
attr rc_LG_TV_WZ_hoch rc_iconprefix black_btn_
attr rc_LG_TV_WZ_hoch room Fernbedienung,TV-Programm
attr rc_LG_TV_WZ_hoch row00 power on:POWERON,exit:EXIT,power off:POWEROFF
attr rc_LG_TV_WZ_hoch row01 volume up:VOLUP,audio mute:MUTE,channel up:CHUP2
attr rc_LG_TV_WZ_hoch row02 volume down:VOLDOWN,audio normal:MUTEOFF,channel down:CHDOWN2
attr rc_LG_TV_WZ_hoch row03 format 4_3:4_3,format 14_9:14_9,format 16_9:16_9
attr rc_LG_TV_WZ_hoch row04 format Zoom_1:ASPECT_ZOOM1,format Zoom_2:ASPECT_ZOOM2,format Just_Scan:ASPECT_SCAN
attr rc_LG_TV_WZ_hoch row05 :blank,format auto:ASPECT_AUTO,:blank
attr rc_LG_TV_WZ_hoch row06 format Kino_Zoom_1:K_ZOOM1,format Kino_Zoom_2:K_ZOOM2,format Kino_Zoom_3:K_ZOOM3
attr rc_LG_TV_WZ_hoch row07 format Kino_Zoom_4:K_ZOOM4,format Kino_Zoom_5:K_ZOOM5,format Kino_Zoom_6:K_ZOOM6
attr rc_LG_TV_WZ_hoch row08 format Kino_Zoom_7:K_ZOOM7,format Kino_Zoom_8:K_ZOOM8,format Kino_Zoom_9:K_ZOOM9
attr rc_LG_TV_WZ_hoch row09 format Kino_Zoom_10:K_ZOOM10,format Kino_Zoom_11:K_ZOOM11,format Kino_Zoom_12:K_ZOOM12
attr rc_LG_TV_WZ_hoch row10 format Kino_Zoom_13:K_ZOOM13,format Kino_Zoom_14:K_ZOOM14,format Kino_Zoom_15:K_ZOOM15
attr rc_LG_TV_WZ_hoch row11 :blank,format Kino_Zoom_16:K_ZOOM16,:blank
attr rc_LG_TV_WZ_hoch row12 button 1:1,button 2:2,button 3:3
attr rc_LG_TV_WZ_hoch row13 button 4:4,button 5:5,button 6:6
attr rc_LG_TV_WZ_hoch row14 button 7:7,button 8:8,button 9:9
attr rc_LG_TV_WZ_hoch row15 :blank,button 0:0,:blank
## notify für LGTV-Modul
define N_LG_TV_WZ notify rc_LG_TV_WZ_hoch set LG_TV_WZ $EVENT

############## ENDE ### LG-TV #########################



Anbei auch ein paar Icons für die Fernbedienung
diese müssten unter "/opt/fhem/www/images/default/remotecontrol" gespeichert werden und per "set <FHEMWEB> rereadicons" FHEM bekannt gemacht werden


Ich hoffe, der Code spricht einigermaßen für sich...
Falls ich was vergessen habe oder Unklarheiten entstehen, bitte einfach kurz fragen...


LG,
Hardlife
Titel: Antw:Codebeispiel - Steuerung von LG-TV per FHEM
Beitrag von: Markus Bloch am 20 März 2016, 00:01:20
Die Variante über RS232 mit ATEN USB Adapter habe ich bereits implementiert: https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/75_LGTV_RS232.pm

Die Module "xxLG7000" und "LGTV" sind für die nativen RS232 Anschlüsse gedacht und decken sich nicht durchgehend mit den Befehlen die über die USB-Variante geschickt werden. Es gibt hier durchaus Unterschiede zwischen den selben Kommandos über beide Varianten.

Das Problem bei der RS232 Variante ist allerdings, dass der USB-Adapter beim Aussschalten des TV's ebenfalls aus ist und man so den TV nicht wieder eingeschaltet bekommt. Bei manchen Modellen funktioniert es, bei anderen wiederrum nicht.

Als weitere Möglichkeit gibt es noch: http://fhem.de/commandref.html#LGTV_IP12

Gruß
Markus
Titel: Antw:Codebeispiel - Steuerung von LG-TV per FHEM
Beitrag von: Hardlife am 20 März 2016, 00:27:00
Hi!

Danke für die weitere Methode. War mir bisher nicht bekannt.

Das mit dem "nicht wieder einschalten können" habe ich auch bereits ein paar Mal gelesen.
War mir auch irgendwie verständlich, wenn man auch am TV einen USB-Adapter verwendet und der TV dem USB-Anschluß dann den Saft nimmt bzw. diesen deaktiviert :-(

Ich habe ja wie gesagt noch ein älteres Modell mit direktem RS232-Eingang. Hier funktioniert das Einschalten zum Glück.

Seis drum, eigentlich wollte ich ja nur auf Nachfrage meinen Code für die Fernbedienung posten und das Ganze ist dann zu einem Mini-Tutorial ausgeartet...

LG,
Hardlife
Titel: Antw:Codebeispiel - Steuerung von LG-TV per FHEM
Beitrag von: Markus Bloch am 20 März 2016, 11:21:02
Zitat von: Hardlife am 20 März 2016, 00:27:00
Seis drum, eigentlich wollte ich ja nur auf Nachfrage meinen Code für die Fernbedienung posten und das Ganze ist dann zu einem Mini-Tutorial ausgeartet...

Alles Gut, unter "Codeschnipsel" sollen nur lauffähige Codebeispiele/Tutorials gepostet werden, von daher hast du schon alles richtig gemacht ;-)

Gruß
Markus
Titel: Antw:Codebeispiel - Steuerung von LG-TV per FHEM
Beitrag von: Hardlife am 20 März 2016, 15:14:01
:-)
Titel: Antw:Codebeispiel - Steuerung von LG-TV per FHEM
Beitrag von: kvo1 am 23 März 2016, 07:19:39
Hallo Hardlife,

Danke für die ausführlichen Infos, bin eher zufällig durch den andern Thread darauf gestoßen .