LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Haussteuerung mittels mediola

Moderator: Co-Administratoren

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von 33zdenko » 29.02.2016, 12:34

Vor langer Zeit habe ich Mediola Support angeschrieben und gefragt wie es aussieht mit den modellen ab 2012, mittels IP zu steuern.
Die Antwort war, die kommende software wird das können....leider ist Neo schon in alter gekommen und kann das immer noch nicht, und mediola sagte es wurde ein
LGTV plugin kommen, auch schon lange her, mit dieser aussage. In einem thread habe ich beschrieben wie man es mit einem webserver und php steuern kann.
Einige haben es heruntergeladen, aber es gibt kein feedback :) Nun ist auch egal, mir hat die ganze LGTV sache keine ruhe gelassen und gestern habe ich den modul
im neo namens xnm.aio.lg.js, welches sich im programmverzeichniss unter node_modules befindet:

Da ich kein 2011 modell habe sondern 2012, habe ich mir den code angesehen und einen fehler festgestellt, code ist schon so gemacht das auch 2012 modell gehen sollte
nur fehlt eine funktion die den code umschalten sollte falls es sich um 2012 modell handelt.

Wenn man die deviceinfo für lgtv betrachtet wird für ein tv als tcptype=lgtv eingetragen, für einen BRplayer sollte tcptype=lgav sein.
Obwohl im js code ein lgtv2012 abschnitt ist und ich den auch eingetragen habe als tcptype, wird damit ein BRplayer erkannt und die eigentlich implementierte funktion
zum pairing und befehle senden (die url wird nicht gewechselt zur: controlUrl="/roap/api/command -für kommandos senden, bzw. zur authentifizierung url: /roap/api/auth)
funktioniert nicht.

Um es kurz zu machen für die, die es sowieso nicht verstehen werden, es ist mit einer kleinen anpassung diese js datei, möglich den pairing key im neo anzuzeigen, den eintragen im geräte manager
und danach befehle aus der deviceinfo zu senden.

in der ersten zeile der originale js datei befindet sich dieser code:

Code: Alles auswählen

this.controlUrl="/hdcp/api/dtv_wifirc";this.authUrl="/hdcp/api/auth"
dieser ist zuständig für die alten fernseher und eigentlich hat er nach berichten der user damals für modelle bis 2011 funktioniert

wer einen 2012 modell hat sollte jetzt die originale js datei sichern, also in einen ordner, falls was schief geht um das original zu haben
und dann mit einem editor, am windows notepad+ am mac z.b. mit textwrangler öffnen und oberes so tauschen

Code: Alles auswählen

this.controlUrl="/roap/api/command";this.authUrl="/roap/api/auth"
aufpassen dass alles andere gleich bleibt, also wirklich nur das was in anführungszeichen steht tauschen.
Falls neo läuft beenden und die datei speichern.
Jetzt dieses in deviceinfo editor eintragen/einfügen

Code: Alles auswählen

<device id="lg_tv" name="LG TV" tpl="320x460:228:3381@3|1024x748:239:3385@3" icon="xtv" upnptype="generic" tcptype="lgtv">
    <key id="channelUp" code="27"/>
    <key id="channelDown" code="28"/>
    <key id="volumeUp" code="24"/>
    <key id="volumeDown" code="25"/>
    <key id="mute" code="26"/>
    <key id="play" code="33"/>
    <key id="pause" code="34"/>
    <key id="stop" code="35"/>
    <key id="rewind" code="37"/>
    <key id="fastForward" code="36"/>
    <key id="record" code="40"/>
    <key id="up" code="12"/>
    <key id="down" code="13"/>
    <key id="left" code="14"/>
    <key id="right" code="15"/>
    <key id="home_menu" code="21"/>
    <key id="ok/enter" code="20"/>
    <key id="exit" code="412"/>
    <key id="PG_info" code="45"/>
    <key id="back" code="23"/>
    <key id="ExtInput" code="47"/>
    <key id="liveTV" code="43"/>
    <key id="QuickMenu" code="405"/>
    <key id="channelList" code="50"/>
    <key id="1" code="3"/>
    <key id="2" code="4"/>
    <key id="3" code="5"/>
    <key id="4" code="6"/>
    <key id="5" code="7"/>
    <key id="6" code="8"/>
    <key id="7" code="9"/>
    <key id="8" code="10"/>
    <key id="9" code="11"/>
    <key id="0" code="2"/>
    <key id="-" code="76"/>
    <key id="red" code="31"/>
    <key id="green" code="30"/>
    <key id="yellow" code="32"/>
    <key id="blue" code="29"/>
    <key id="TTxt" code="51"/>
    <key id="SIMPLINK" code="411"/>
    <key id="APPS" code="417"/>    
    <key id="AV_MODE" code="29"/>    
    <key id="EPG" code="44"/>    
    <key id="POWER" code="1"/>
    <key id="EXT_INPUT" code="29"/>    
    <key id="3D" code="400"/>    
  </device>
ich habe die codes aus dem thread hier im forum für php steuerung des lgtv eingetragen, allerdings nicht alle, da sind einpaar mehr erhalten, wer sie braucht kann sie selber eintragen
hier die befehle:

Code: Alles auswählen

TV_CMD_POWER, 1
TV_CMD_NUMBER_0, 2
TV_CMD_NUMBER_1, 3
TV_CMD_NUMBER_2, 4
TV_CMD_NUMBER_3, 5
TV_CMD_NUMBER_4, 6
TV_CMD_NUMBER_5, 7
TV_CMD_NUMBER_6, 8
TV_CMD_NUMBER_7, 9
TV_CMD_NUMBER_8, 10
TV_CMD_NUMBER_9, 11
TV_CMD_UP, 12
TV_CMD_DOWN, 13
TV_CMD_LEFT, 14
TV_CMD_RIGHT, 15
TV_CMD_OK, 20
TV_CMD_HOME_MENU, 21
TV_CMD_BACK, 23
TV_CMD_VOLUME_UP, 24
TV_CMD_VOLUME_DOWN, 25
TV_CMD_MUTE_TOGGLE, 26
TV_CMD_CHANNEL_UP, 27
TV_CMD_CHANNEL_DOWN, 28
TV_CMD_BLUE, 29
TV_CMD_GREEN, 30
TV_CMD_RED, 31
TV_CMD_YELLOW, 32
TV_CMD_PLAY, 33
TV_CMD_PAUSE, 34
TV_CMD_STOP, 35
TV_CMD_FAST_FORWARD, 36
TV_CMD_REWIND, 37
TV_CMD_SKIP_FORWARD, 38
TV_CMD_SKIP_BACKWARD, 39
TV_CMD_RECORD, 40
TV_CMD_RECORDING_LIST, 41
TV_CMD_REPEAT, 42
TV_CMD_LIVE_TV, 43
TV_CMD_EPG, 44
TV_CMD_PROGRAM_INFORMATION, 45
TV_CMD_ASPECT_RATIO, 46
TV_CMD_EXTERNAL_INPUT, 47
TV_CMD_PIP_SECONDARY_VIDEO, 48
TV_CMD_SHOW_SUBTITLE, 49
TV_CMD_PROGRAM_LIST, 50
TV_CMD_TELE_TEXT, 51
TV_CMD_MARK, 52
TV_CMD_3D_VIDEO, 400
TV_CMD_3D_LR, 401
TV_CMD_DASH, 402
TV_CMD_PREVIOUS_CHANNEL, 403
TV_CMD_FAVORITE_CHANNEL, 404
TV_CMD_QUICK_MENU, 405
TV_CMD_TEXT_OPTION, 406
TV_CMD_AUDIO_DESCRIPTION, 407
TV_CMD_ENERGY_SAVING, 409
TV_CMD_AV_MODE, 410
TV_CMD_SIMPLINK, 411
TV_CMD_EXIT, 412
TV_CMD_RESERVATION_PROGRAM_LIST, 413
TV_CMD_PIP_CHANNEL_UP, 414
TV_CMD_PIP_CHANNEL_DOWN, 415
TV_CMD_SWITCH_VIDEO, 416
TV_CMD_APPS, 417
Jetzt in neo neues gerät anlegen, namen eingeben, gateway kein, typ LG TV, ip adresse eingeben, speichern, jetzt den button authkey anfragen, am tv schauen ob der key da ist, eintragen und speichern. Jetzt sollte die steuerung funktionieren. Falls der key nicht am tv erscheint oder ein fehler im neo gezeigt wird, wieder die originale datei js einspielen und von vorn beginnen.
Aufpassen das genau das ersätzt wird wie ich es beschrieben habe.
Wenn alles geht diese js datei auch sichern, wenn neuere versionen von neo kommen wird sie überschrieben, später wieder einfach dort einfügen!

!!!!Diesen teil unten benutzen, falls euer tv ab 2012 ist oder aktueller ist und nicht mit der anpassung wie oben beschrieben geht!!!!!!
!Nicht getestet von mir!

Hier http://www.kixass.net/2015/10/lg-tv-schakelen/
habe ich noch ein php script gefunden welches andere urls zur auth und comman senden benutzt, allerdings benutzt dieses script auch ganz andere xml daten:
ich gehe davon aus dass es neuere oder aktuelle lgtvs steuert
Nach diesem php code musste man die zeile von oben so ändern:

Code: Alles auswählen

this.controlUrl="/roap/api/command";this.authUrl="/roap/api/auth"
in

Code: Alles auswählen

this.controlUrl="/udap/api/command";this.authUrl="/udap/api/pairing"
ändern, wie gesagt da es aber anders den xml teil sendet muss man diesen teil auch ändern
auch in oberen zeile des js datei befindet sich einmal das:

Code: Alles auswählen

AUTHKEY_REQ='<?xml version="1.0" encoding="utf-8"?><auth><type>AuthKeyReq</type></auth>'
und ist für 2012 gemeint und auch 2011 nach dem mediola code
in dem neuerem php script sieht es aber so aus

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?<envelope><api type="pairing"><name>showKey</name></api></envelope>
wenn wir das jetzt ändern dann muss dieser teil so sein:

Code: Alles auswählen

AUTHKEY_REQ='<?xml version="1.0" encoding="utf-8"?<envelope><api type="pairing"><name>showKey</name></api></envelope>'
wieder aufpassen das anderer code nicht verletzt wird :)
so für die identifizierung wird dieser teil vervendet
original:

Code: Alles auswählen

AUTH_REQ='<?xml version="1.0" encoding="utf-8"?><auth><type>AuthReq</type><value>%@</value></auth>'
in dem php script aber so:

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?hello'.$pairkey.'0'
dem nach sollte es so geändert werden

Code: Alles auswählen

AUTH_REQ='<?xml version="1.0" encoding="utf-8"?hello'%@'0''
ob es funktioniert muss jemand der solch ein tv hat testen evtl '%@' ohne die striche ' ' schreiben...
allerdings gibt es in fhem forum eine andere auth xml version für diese tv

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?><envelope><api type="pairing"><name>hello</name><value>'.$paringkey.'</value></api></envelope>
dem nach könnte das xml teil so gehen:

Code: Alles auswählen

AUTH_REQ='<?xml version="1.0" encoding="utf-8"?><envelope><api type="pairing"><name>hello</name><value>%@</value></api></envelope>'
wie gesagt für welche fernseher das geht weiss ich nicht...aber evtl kann es jemand testen falls sein tv ab 2012 und aktuell ist und mit der änderung oben, wie ich es gemacht habe nicht geht.
Die erste änderung oben funktioniert mit meinem 2012 model und der deviceinfo die ich drunter gepostet habe.

Hier noch für modelle ab 2014-15 für mediola Programmierer als info :)
https://www.npmjs.com/package/lgtv


Wenn jemand es testet bitte feedback geben :)
Gruss

onkel_peter
Beiträge: 90
Registriert: 08.12.2014, 22:16
Wohnort: Erfurt

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von onkel_peter » 29.02.2016, 16:05

Hallo 33zdenko,

wie immer eine super Arbeit von Dir !
Bewundere Deine Geduld mit mediola..
Bin mal gespannt ob das im Code von mediola angepasst wird.
Schließlich wollen die doch ein Plugin für 50 € an den "Kunden" bringen.

Ich komme leider erst am kommenden Wochenende dazu das mit meinem LGTV zu testen.
Bin die ganze Woche unterwegs.

Gruß Peter

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von 33zdenko » 29.02.2016, 16:29

Hallo Peter :)
ein kleiner nachtrag dazu

Ich habe in zwischenzeit noch geforscht...
habe die datei xnm.aio.ip.js untersucht und dort den eintrag

Code: Alles auswählen

c="lgtv2012"==this._deviceInfo.id?c.TV2012:c.TV,
gefunden, das hat mich auf die idee gebracht die device id vom lgtv eintrag, zu tauschen im deviceinfo editor
der var so

Code: Alles auswählen

<device id="lg_tv" name="LG TV"
jetzt habe ich das so geändert:

Code: Alles auswählen

 <device id="lgtv2012" name="LG TV2012"
wohlgemerkt mit der originallen datei xnm.aio.lg.js
und siehe da, mein tv geht sofort damit :)
Ich ging davon aus dass man für 2012 model den tcptype= auf lgtv2012 und das war mein fehler :))))
so hätte ich nicht den ganzen thread oben geschrieben, aber dieser gilt weiterhin wenn man die anderen identifizierungs url und command url testen möchte, dann einfach als device id lg_tv lassen
und wie oben im thread die entsprechenden urls und xml daten anpassen...

so jetzt der neue deviceinfo eintrag ohne änderungen am neo vornehmen zu müssen:

Code: Alles auswählen

  <device id="lgtv2012" name="LG TV2012" tpl="320x460:228:3381@3|1024x748:239:3385@3" icon="xtv" upnptype="generic" tcptype="lgtv">
    <key id="channelUp" code="27"/>
    <key id="channelDown" code="28"/>
    <key id="volumeUp" code="24"/>
    <key id="volumeDown" code="25"/>
    <key id="mute" code="26"/>
    <key id="play" code="33"/>
    <key id="pause" code="34"/>
    <key id="stop" code="35"/>
    <key id="rewind" code="37"/>
    <key id="fastForward" code="36"/>
    <key id="record" code="40"/>
    <key id="up" code="12"/>
    <key id="down" code="13"/>
    <key id="left" code="14"/>
    <key id="right" code="15"/>
    <key id="home_menu" code="21"/>
    <key id="ok/enter" code="20"/>
    <key id="exit" code="412"/>
    <key id="PG_info" code="45"/>
    <key id="back" code="23"/>
    <key id="ExtInput" code="47"/>
    <key id="liveTV" code="43"/>
    <key id="QuickMenu" code="405"/>
    <key id="channelList" code="50"/>
    <key id="1" code="3"/>
    <key id="2" code="4"/>
    <key id="3" code="5"/>
    <key id="4" code="6"/>
    <key id="5" code="7"/>
    <key id="6" code="8"/>
    <key id="7" code="9"/>
    <key id="8" code="10"/>
    <key id="9" code="11"/>
    <key id="0" code="2"/>
    <key id="-" code="76"/>
    <key id="red" code="31"/>
    <key id="green" code="30"/>
    <key id="yellow" code="32"/>
    <key id="blue" code="29"/>
    <key id="TTxt" code="51"/>
    <key id="SIMPLINK" code="411"/>
    <key id="APPS" code="417"/>    
    <key id="AV_MODE" code="29"/>    
    <key id="EPG" code="44"/>    
    <key id="POWER" code="1"/>
    <key id="EXT_INPUT" code="29"/>    
    <key id="3D" code="400"/>    
  </device>
der eintrag name kann beliebig gegeben werden denke ich

Code: Alles auswählen

name="LG TV2012"
z.b meinTV
Leider ist da so ein problem, da es eigentlich keine anleitung für ip devices von mediola gibt....hier kann man wohl sehen dass es schon ganze zeit da gewesen ist, die lgtv ip steuerung,
aber keiner dahinter blickte.....sowas sollte mediola dokumentieren. Nun weiss ich jetzt wo man schauen muss bei solchen sachen um ein oder anderes gerät anzupassen..
Es wäre trotzdem gut wenn sich mediola das alles ansehen wurde und dann diese deviceinfo sache, für die neueren webos lg tv-s, anpassen könnte...oder eventuell als plugin
entwickeln wurde, für die user die mehr haben wollen. Ich bin mir sicher dass man damit auch eine rückmeldung für volumestate, oder programmnamen, epg usw. einbauen könnte.
Obwohl man mit dem php script aus den 2012 model einiges auslesen kann.

Gruss an alle hier und besonders an unsere Mediola Programmierer :)

onkel_peter
Beiträge: 90
Registriert: 08.12.2014, 22:16
Wohnort: Erfurt

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von onkel_peter » 29.02.2016, 17:32

Hallo 33zdenko,

das ist dann natürlich wesentlich einfacher.
Habe meine "deviceinfo.xml" schon mal geändert.
Das wäre natürlich super wenn es dann schon funktioniert.
Werde beide Varianten dann am WE testen.

Nochmal vielen Dank für Deine Mühe !!

Peter

onkel_peter
Beiträge: 90
Registriert: 08.12.2014, 22:16
Wohnort: Erfurt

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von onkel_peter » 29.02.2016, 17:37

Danke für die Ergänzung im Thread:
http://homematic-forum.de/forum/viewtop ... 7&start=10

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von 33zdenko » 29.02.2016, 18:02

onkel_peter hat geschrieben:Hallo 33zdenko,

das ist dann natürlich wesentlich einfacher.
Habe meine "deviceinfo.xml" schon mal geändert.
Das wäre natürlich super wenn es dann schon funktioniert.
Werde beide Varianten dann am WE testen.

Nochmal vielen Dank für Deine Mühe !!

Peter
also bei mir geht :)
muss dann auch bei dir laufen
gruss

onkel_peter
Beiträge: 90
Registriert: 08.12.2014, 22:16
Wohnort: Erfurt

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von onkel_peter » 06.03.2016, 12:57

Hallo 33zdenko,

wollte nur ein Status Feedback geben.
Nach Änderung der deviceinfo.xml funktioniert nun auch bei mir
die Steuerung meines LG-TV über IP.

Danke nochmal.
Gruß Peter

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von 33zdenko » 06.03.2016, 18:20

onkel_peter hat geschrieben: Nach Änderung der deviceinfo.xml funktioniert nun auch bei mir
die Steuerung meines LG-TV über IP.
Hallo :)
daran habe ich nicht gezweifelt. Die funktion war immer da nur wusste mediola auch nichts davon :)))
Freut mich sehr!
Gruß

chrishahn
Beiträge: 51
Registriert: 19.02.2015, 08:16
Wohnort: Hessen

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von chrishahn » 20.03.2016, 12:48

Hallo,
ich habe einen LG Fernseher von 2014 (55LB870V). Kann den leider nicht ansteuern. Habe alles sog eingestellt wie für die 2012er beschrieben. NEO sagt mir immer "Es ist ein Fehler aufgetreten". Wenn ich den Auth Key anfrage.

Was muss ich tun?

Vielen Dank,
C. Hahn

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

Re: LG TV 2012 mit deviceinfo steuern, funktioniert in Neo

Beitrag von 33zdenko » 20.03.2016, 14:24

chrishahn hat geschrieben:Hallo,
ich habe einen LG Fernseher von 2014 (55LB870V).
C. Hahn
dieses ist auch gedacht für modelle ab 2012 aber ich denke das lg noch etwas später geändert hat
was du machen kannst ist folgendes php script testen, falls du einen webserver hast, local
http://www.kixass.net/2015/10/lg-tv-schakelen/
falls du keinen hast musst du einen im web kostenlosen nehmen und dann den port freischalten 8080 im router
lima-city.de z.b.
sollte das klappen dann könnte man den lgtv adapter anpassen vielleicht

edit:
das oben wird nicht gehen mit deinem tv
aber dieses hier sollte funktionieren
https://knx-user-forum.de/forum/%C3%B6f ... webos-tv-s

wenn du kannst teste es

Antworten

Zurück zu „mediola“