Modul für aktuelle LG-TVs?

Begonnen von oxident, 09 September 2013, 21:38:33

Vorheriges Thema - Nächstes Thema

HolyMoly

Hab kein 2012/2013 Gerät, kann also nix testen ^^
bitte mal Zeile 124 ausbessern in:
$hash->{GetFn}    = "LGTV2012_Get";

dann bitte mal für alle verschiedenen hdmi channels probieren und schaun ob sich der text der zurückkommt ändert...

FHEM auf Raspi2 & Radxa Rock

siggi85

Zitat von: HolyMoly am 28 März 2014, 15:20:35
Hab kein 2012/2013 Gerät, kann also nix testen ^^
bitte mal Zeile 124 ausbessern in:
$hash->{GetFn}    = "LGTV2012_Get";

dann bitte mal für alle verschiedenen hdmi channels probieren und schaun ob sich der text der zurückkommt ändert...

Danach funktioniert das mit dem get Befehl. Die Ausgaben sind jedoch gleich.  :(

Ich habe noch kurz gelesen, es sieht so aus, als wenn bei einem Change des Inputinterfaces ein Signal vom TV zum Controller (in diesem Fall FHEM) gesendet werden muss. Hier der richtige Link, sorry für die falsche Pfärte:
Link

inputSourceName sollte das richtige XML Attribut sein.

HolyMoly

Sicher dass für alle HDMI Channels der Output exakt gleich ist? Bitte auch mal für SAT, etc. usw probieren...
In get currentChannel ist inputSourceName eigentlich schon enthalten nur halt leider leer. Wahrscheinlich einfach von LG vergessen worden. Schwer denkbar warum es nur bei einem ChannelChanged Event kommen sollte.
ChannelChanged werde ich nicht implementieren, das wäre wesentlich aufwendiger.
FHEM auf Raspi2 & Radxa Rock

Falkentavio

Hey HolyMoly, klappt soweit jetzt super, nachdem ich die Zeile 124 ausgebessert habe :)

Hab auch mal das get channel ausprobiert, in meinem Log finde ich dann für meinen RPi an HDMI1 (Name ni der Eingangsliste auf Smart Box gestellt, LG hat nur ein vorgegebenes Set an Namen)

<?xml version="1.0" encoding="utf-8"?>
<envelope>
    <dataList name="Current Channel Info">
        <data>
            <chtype>terrestrial</chtype>
            <sourceIndex>0</sourceIndex>
            <physicalNum>0</physicalNum>
            <major>0</major>
            <displayMajor>0</displayMajor>
            <minor>0</minor>
            <displayMinor>-1</displayMinor>
            <chname></chname>
            <progName></progName>
            <audioCh>0</audioCh>
            <inputSourceName>HDMI1</inputSourceName>
            <inputSourceType>6</inputSourceType>
            <labelName>Smart Box</labelName>
            <inputSourceIdx>4</inputSourceIdx>
        </data>
    </dataList>
</envelope>

Für einen HDMI2 Port ohne Gerät dran

<?xml version="1.0" encoding="utf-8"?>
<envelope>
    <dataList name="Current Channel Info">
        <data>
            <chtype>terrestrial</chtype>
            <sourceIndex>0</sourceIndex>
            <physicalNum>0</physicalNum>
            <major>0</major>
            <displayMajor>0</displayMajor>
            <minor>0</minor>
            <displayMinor>-1</displayMinor>
            <chname></chname>
            <progName></progName>
            <audioCh>0</audioCh>
            <inputSourceName>HDMI2</inputSourceName>
            <inputSourceType>6</inputSourceType>
            <labelName></labelName>
            <inputSourceIdx>5</inputSourceIdx>
        </data>
    </dataList>
</envelope>

Und für meinen Komponentanschluss mit der Wii dran (Name auf Spiel umgestellt)

<?xml version="1.0" encoding="utf-8"?>
<envelope>
    <dataList name="Current Channel Info">
        <data>
            <chtype>terrestrial</chtype>
            <sourceIndex>0</sourceIndex>
            <physicalNum>0</physicalNum>
            <major>0</major>
            <displayMajor>0</displayMajor>
            <minor>0</minor>
            <displayMinor>-1</displayMinor>
            <chname></chname>
            <progName></progName>
            <audioCh>0</audioCh>
            <inputSourceName>Komponente</inputSourceName>
            <inputSourceType>4</inputSourceType>
            <labelName>Spiel</labelName>
            <inputSourceIdx>3</inputSourceIdx>
        </data>
    </dataList>
</envelope>

XML gebeautified,
Habe leider keine Zeit mich selber damit zu beschäftigen, bekomme gleich noch Besuch übers WE. Wollte eigentlich nur das neue Modul testen^^
Sonst würde ich hier jetzt noch eine Werte-Tabelle mit allen Kanälen reinwerfen. Vielleicht hab ich morgen ein bischen Zeit wenn mein Besuch nen Termin in der Stadt hat.

EDIT: Achja, ich habe keinen TV-Anschluss. Kein Sat, Funk oder Kabel. Benutze nur SmartTV und Konsolen. Das erklärt wohl die ersten Werte.

HolyMoly

Na das klingt doch hervorragend!
Dann kann ich einfach ein Reading draus basteln.
Dh es geht auch nachdem der Fernseher aus war?
FHEM auf Raspi2 & Radxa Rock

Falkentavio

Ich hab den Fernseher einmal ausgeschaltet mit set power, dann mit dem cec-client wieder eingeschaltet und konnte erfolgreich mehrfach set mute machen. Das hat vorher nicht funktioniert, da musste ich nach dem Ausschalten immer fhem neu starten. Ist jetzt nicht mehr nötig. Intensivere Tests kann ich Sonntag durchführen :)

siggi85

Also bei wir war der XML Part fürs Source Input Device leer. Da es bei anderen zu funktionieren scheint, warte ich den Wert mal als Reading ab und teste dann noch etwas.  :)

Falkentavio

So, jetzt hab ich endlich wieder Zeit für diese Projekt :)
Ich habe nur die sich verändernden Werte in die Tabelle aufgenommen. Da ich keinen TV-Anschluss habe kann ich für den Rest keine Angaben machen.
Der chtype gibt immer den eingestellten Programmmodus an, egal welcher Eingang gerade aktiv ist.
audioCh ist meistens 0, eine 1 signalisiert, dass wir auf einem reinen Audio-Kanal sind, also soetwas wie Radio nehme ich an. Die Info habe ich aus der API Doku, testen konnte ich das nicht.
Der labelName gibt wie schon gesagt den Namen an den man in der Eingangsliste dem Eingang zugeordnet hat. Bei meinem TV kann ich keinen Namen von Hand eingeben, es gibt eine Liste vorgegebener Namen.











chtypesourceIndexinputSourceIdxinputSourceTypeinputSourceNameAnschluss am TV/Programmmodus
terrestrial011AV1Scart
terrestrial022AV2Rot/Weiß/Gelb vom Komponent-Anschluss
terrestrial034Komponentevollständiger Komponent-Anschluss
terrestrial046HDMI1HDMI1
terrestrial056HDMI2HDMI2
terrestrial066HDMI3HDMI3
terrestrial100Antenne
cable300Kabel
satellite700Satellit

siggi85

Zitat von: siggi85 am 29 März 2014, 09:07:00
Also bei wir war der XML Part fürs Source Input Device leer. Da es bei anderen zu funktionieren scheint, warte ich den Wert mal als Reading ab und teste dann noch etwas.  :)

Ich habe wieder etwas getestet, aber es hilft nichts, der "inputSourceName" bleibt bei mir leider leer.  :-\ In der Beschreibung von diesem Link steht folgendes:
inputSourceName
Name of the current input source. Fixed as Antenna.


Unter diesem Link steht folgendes:
inputSourceName

Name of the current input source. The following values are available.
Antenna: Input via the TV antenna
HDMI: HDMI input. The actual value has the label number for the HDMI input port of the TV at the end (for example, HDMI1, HDMI2, ...).
Component: Component input. The actual value has the label number for the component input port of the TV at the end (for example, Component1, Component2, ...)
Composite: Composite input. The actual value has the label number for the composite input port of the TV at the end (for example, Composite1, Composite2, ...)
RGB: RGB-PC input


Die Beschreibung des zweiten Links sieht vielversprechender aus. Ob das in der Ausgabe bei mir einen Unterschied machen würde weiß ich leider nicht. Da die beiden XML Parts die gleiche Bezeichnung haben (inputSourceName) bin ich mir unsicher.
Die zweite Art der Abfrage müsste eingehend Richtung FHEM statt finden. D.h. hier könnte man Events in FHEM bei Kanalwechsel generieren, auf welche man Notifys setzen könnte. Nur mal als Denkanstoß für ggf. eine Weiterentwicklung. ;)

HolyMoly

Hallo Leute,

hier mal eine neue Version vom Modul mit inputSourceName und presence Reading. Hat sich einiges verändert und ich kanns ja mangel 2012/2013 nicht testen... ist halt ein Bananenprodukt, reift beim Kunden ^^

Verwendung so:

define myTV2 LGTV2012 192.168.181.6
attr myTV2 pairingcode SMQRSA
attr myTV2 presencedevice LgTV #hier den namen vom Presence device angeben
attr myTV2 room Wohnzimmer
attr myTV2 verbose 5 #nicht mehr loglevel sondern nun verbose

@Siggi85
Viel Spass bei der Implementierung des bidirektionalen teils :P
Schreib eher mal LG sie könnten diesen Fehler per FW Update beheben...

@Falkentavio
Vielen Dank für die Tabelle, ich habe erstmal nur inputSourceName als reading herausgeführt, das ist am ehesten verständlich ;)


FHEM auf Raspi2 & Radxa Rock

der-Lolo

Hey HolyMoly,
tausend Dank für Deine Arbeit! Ich habs zwar jetzt noch nicht getestet - glaube aber das es gut funktioniert...
wofür wird denn bei der def. das presencedevice benötigt? Das verstehe ich noch nicht - erklärst Du das kurz?

HolyMoly

Das presencedevice notified mich wenn der Fernseher online geht, führt dann ein pairing durch und fragt alle 30s ab ob sich die InputSource geändert hat. Wenn der Fernseher offline geht sollte das ständige polling eingestellt werden.
FHEM auf Raspi2 & Radxa Rock

der-Lolo

Das bedeutet ich muss das PRESENCE Modul auf den Fernseher ansetzen? Hab ich mir bisher gespart - ich seh ja wenn der Fernseher an ist ;-) Ok - ich werds ausprobieren, aber erst wenn der CubieTruck vollständig läuft...
Bevor der Fernseher dann in die neue Config umzieht teste ich... für meinen zweck würde die aktuelle Variante auch reichen.
Gut, zu wissen welcher Eingang aktiv ist wäre schon schön.

Falkentavio

Funktioniert erstmal gut, allerdings wird nur presence geschaltet, der state Eintrag bleibt bei Paired. Für devStateIcon wird aber der state verwendet soweit ich das verstehe. Oder kann ich das irgendwie ummappen?
Der PRESENCE signalisiert dem LGTV2012 jetzt bei jedem auslesen des Status ein update. Es wird also bei jedem update vom presence (alle 60 Sekunden bei mir) ein repairing durchgeführt. Und mein Log wird mit Pairings und Received Infos überflutet. Fürs testen ganz gut, aber standard sollte ein Loglevel sein der das Log nicht so stark flutet.

Auch funktioniert das reading noch nicht bei mir. Es wird zwar alle paar Sekunden aktualisiert, aber ein Reading erscheint nicht in der Weboberfläche. Hier das Log:

2014.04.03 08:03:48 2: LGTV2012: Received info :<?xml version="1.0" encoding="utf-8"?><envelope><dataList name="Current Channel Info"><data><chtype>terrestrial</chtype><sourceIndex>0</sourceIndex><physicalNum>0</physicalNum><major>0</major><displayMajor>0</displayMajor><minor>0</minor><displayMinor>-1</displayMinor><chname></chname><progName></progName><audioCh>0</audioCh><inputSourceName>Komponente</inputSourceName><inputSourceType>4</inputSourceType><labelName>Spiel</labelName><inputSourceIdx>3</inputSourceIdx></data></dataList></envelope>

2014.04.03 08:03:48 2: LGTV2012: Current inputSourceName :

der-Lolo

ich hab da auch noch was - wenn das loggen mal optimiert wird, wäre es toll wenn die zeilenumbrüche verschwinden, zwischen den einträgen des lgtv liegen immer leerzeilen.