[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern

Begonnen von der.einstein, 08 April 2017, 15:40:50

Vorheriges Thema - Nächstes Thema

viegener

@der.einstein: Mein Loewe scheint zwar auf Port 1543 UPnP anzubieten, allerdings werden keine Inhalte angezeigt (mit verschiedener UPnP-Software). Ich weiss, dass in neueren Chassis mehr UPnP/DLNA nachgerüstet wurde.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

der.einstein

Ok, ich hab die Soap Messages zusammen, die benötigt werden, um etwaige per DLNA abgespielte Videos auszulesen (Status, Name, Dauer etc.).

Ich würde das folgende vorschlagen:
Für das Initialize eine Erweiterung, bei der wir alle Settings auslesen und checken, ob der TV einen DLNA Renderer und/oder Server hat.
Hat er einen DLNA Renderer, sollte die Timer Routine anders ablaufen, und nach dem Presence Check zuerst gecheckt werden, ob per DLNA etwas läuft, wenn ja, dann NICHT GetCurrentEvent abfragen, wenn nicht, dann GetCurrentEvent.

Ich könnte die Soap Messages in dem Stil erstellen wie du es in LoeweTV_SendRequest gemacht hast. Aber wie sollte es dann bzgl. Queue und Callback gemacht werden? Also ich könnte mir eine eigene Funktion z.b. LoeweTV_SendDLNA vorstellen, aber wie kriegt man das dann alles in dieselbe Queue?

Danke dir  8)

der.einstein

Zitat von: SNOOPY2000 am 26 November 2017, 12:20:30
Hallo zusammen,

habe das Modul mit dem Loewe meiner Eltern getestet und es läuft recht gut.

In der API Doku gibt es auch die Möglichkeit eine Message zu senden, daher die Frage ob dies schonmal jemand versucht hat und ob bereits daran gearbeitet wird dies in das Modul zu integrieren. Habe mir den Quellcode angesehen und denke, dass dies "recht" einfach gehen sollte, da der Aufruf ähnlich zu volume ist.

Leider kann ich das nur höchst selten testen, da ich selbst keinen Loewe besitze.

Es wäre dennoch super diese Funktion zu integrieren, da man so schnell mal einen Telefonanrufer einblenden könnte.

Gruß und Danke für die gute Arbeit

@SNOOPY2000: Viegener hat Recht, mit "setactionfield" kannst du beliebigen Text in der rechten oberen Ecke des TV als Loewe Fenster anzeigen lassen.

viegener

Zitat von: der.einstein am 27 November 2017, 19:48:46
Ok, ich hab die Soap Messages zusammen, die benötigt werden, um etwaige per DLNA abgespielte Videos auszulesen (Status, Name, Dauer etc.).

Ich würde das folgende vorschlagen:
Für das Initialize eine Erweiterung, bei der wir alle Settings auslesen und checken, ob der TV einen DLNA Renderer und/oder Server hat.
Hat er einen DLNA Renderer, sollte die Timer Routine anders ablaufen, und nach dem Presence Check zuerst gecheckt werden, ob per DLNA etwas läuft, wenn ja, dann NICHT GetCurrentEvent abfragen, wenn nicht, dann GetCurrentEvent.

Ich könnte die Soap Messages in dem Stil erstellen wie du es in LoeweTV_SendRequest gemacht hast. Aber wie sollte es dann bzgl. Queue und Callback gemacht werden? Also ich könnte mir eine eigene Funktion z.b. LoeweTV_SendDLNA vorstellen, aber wie kriegt man das dann alles in dieselbe Queue?

Danke dir  8)

Also wenn ich es richtig verstehe gibt es SOAP-Requests, die man an den Loewe senden kann um rauszufinden, ob ein UPnP/DLNA-Abspielvorgang läuft.

Frage - Gehen diese Abfragen an den normalen Port über den auch die anderen Anfragen des Loewe-Moduls laufen
Wenn ja - dann sollte das in  LoeweTV_SendRequest gehen

Dasselbe sollte auch für die Funktionen zur Überprüfung gelten, ob der Fernsehen einen DLNA-Renderer hat.

Mir ist nicht klar, wofür ein LoeweTV_SendDLNA benötigt wird?
Wenn es um DLNA-Request geht, würde ich das nicht im Loewe-Modul sehen, denn es gibt ja ein offizielles DLNA-Modul?


Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

der.einstein

#379
Ja, es geht darum, herauszufinden, ob ein DLNA Abspielvorgang läuft.

Die normale Loewe Remote API läuft über Port 905, DLNA über die Ports 1543 (Renderer) und 1545 (Server).

Beides (Loewe Remote API und DLNA) basiert auf Soap-Requests, hier mal die relevanten Messages inklusive Rückmeldung vom TV:

curl -v -H 'Content-Type: text/xml; charset=utf-8' -H 'SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#GetTransportInfo"' -d '
<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:GetTransportInfo xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID></u:GetTransportInfo></s:Body></s:Envelope>' http://192.168.0.2:1545/happy/MediaRenderer_AVTransport/control

<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetTransportInfoResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><CurrentTransportState>PLAYING</CurrentTransportState><CurrentTransportStatus>OK</CurrentTransportStatus><CurrentSpeed>1</CurrentSpeed></u:GetTransportInfoResponse></s:Body></s:Envelope>


curl -v -H 'Content-Type: text/xml; charset=utf-8' -H 'SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#GetMediaInfo"' -d '
<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:GetMediaInfo xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID></u:GetMediaInfo></s:Body></s:Envelope>' http://192.168.0.2:1545/happy/MediaRenderer_AVTransport/control

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:GetMediaInfoResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<NrTracks>1</NrTracks><MediaDuration>02:04:21.000</MediaDuration>
<CurrentURI>http://192.168.0.4:8200/MediaItems/24463.mkv</CurrentURI>
<CurrentURIMetaData>&lt;
DIDL-Lite xmlns=&quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:upnp=&quot;urn:schemas-upnp-org:metadata-1-0/upnp/&quot;&gt;&lt;item&gt;&lt;dc:title&gt;media2435-20170411&lt;/dc:title&gt;&lt;dc:date&gt;2015-09-10T00:31:40&lt;/dc:date&gt;&lt;res protocolInfo=&quot;http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01700000000000000000000000000000&quot; duration=&quot;02:04:21.000&quot;&gt;http://192.168.0.4:8200/MediaItems/24463.mkv&lt;/res&gt;&lt;upnp:class&gt;object.item.videoItem&lt;/upnp:class&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;
</CurrentURIMetaData>
<NextURI></NextURI><NextURIMetaData></NextURIMetaData><PlayMedium>NETWORK</PlayMedium><RecordMedium>NOT_IMPLEMENTED</RecordMedium><WriteStatus>NOT_IMPLEMENTED</WriteStatus></u:GetMediaInfoResponse>
</s:Body>
</s:Envelope>


curl -v -H 'Content-Type: text/xml; charset=utf-8' -H 'SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"' -d '                                                                                                                                   <?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:SetAVTransportURI xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID><CurrentURI>http://192.168.0.4:8200/MediaItems/24463.mkv</CurrentURI><CurrentURIMetaData></CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>' http://192.168.0.2:1545/happy/MediaRenderer_AVTransport/control

<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:SetAVTransportURIResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"></u:SetAVTransportURIResponse></s:Body></s:Envelope>


curl -v -H 'Content-Type: text/xml; charset=utf-8' -H 'SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#Play"' -d '
<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:Play xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID><Speed>1</Speed></u:Play></s:Body></s:Envelope>' http://192.168.0.2:1545/happy/MediaRenderer_AVTransport/control

<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:PlayResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"></u:PlayResponse></s:Body></s:Envelope>


curl -v -H 'Content-Type: text/xml; charset=utf-8' -H 'SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#Pause"' -d '
<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:Pause xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID><Speed>1</Speed></u:Pause></s:Body></s:Envelope>' http://192.168.0.2:1545/happy/MediaRenderer_AVTransport/control

curl -v -H 'Content-Type: text/xml; charset=utf-8' -H 'SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#GetPositionInfo"' -d '
<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><u:GetPositionInfo xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>0</InstanceID></u:GetPositionInfo></s:Body></s:Envelope>' http://192.168.0.2:1545/happy/MediaRenderer_AVTransport/control

<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetPositionInfoResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><Track>0</Track><TrackDuration>00:00:00.000</TrackDuration><TrackMetaData></TrackMetaData><TrackURI></TrackURI><RelTime>00:00:00.000</RelTime><AbsTime>00:00:00.000</AbsTime><RelCount>2147483647</RelCount><AbsCount>2147483647</AbsCount></u:GetPositionInfoResponse></s:Body></s:Envelope>


Das DLNARenderer Modul hab ich gecheckt, installiert und ausprobiert. Leider funktioniert es nicht in der Art. Also ich kann damit nicht mit einem Timer den Status abfragen oder ähnliches.

Ich sehe es schon als Erweiterung des LoeweTV Moduls an.
Es könnte tatsächlich in LoeweTV_SendRequest gehen, wenn in HU_SR_PARAMS die Angaben zu URL und Method entsprechend variabel gestaltet werden, der Callback könnte ja bei "callback   => \&LoeweTV_HU_Callback" bleiben?

viegener

Zitat von: der.einstein am 27 November 2017, 21:16:00

Das DLNARenderer Modul hab ich gecheckt, installiert und ausprobiert. Leider funktioniert es nicht in der Art. Also ich kann damit nicht mit einem Timer den Status abfragen oder ähnliches.

Ich sehe es schon als Erweiterung des LoeweTV Moduls an.
Es könnte tatsächlich in LoeweTV_SendRequest gehen, wenn in HU_SR_PARAMS die Angaben zu URL und Method entsprechend variabel gestaltet werden, der Callback könnte ja bei "callback   => \&LoeweTV_HU_Callback" bleiben?

Ich tue mich leider schon wieder schwer die Aussagen zu verstehen - was hat jetzt der DLNARenderer mit Timerstatus zu tun - ich dachte es geht darum Inhalte auf dem Loewe abzuspielen?

Es würde schon gehen die Requests auch bei einem anderen Port ins Loewe-Modul einzubauen, allerdings würde ich vorher gerne verstehen, warum wir die DLNA-Funktionalität doppeln müssen
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

der.einstein

Also ich möchte erreichen, dass die Timer Routine beim LoeweTV Modul ohne Probleme durchlaufen kann, egal was grade am TV passiert bzw. in welchem Status der TV grade ist.
Dabei soll, falls zutreffend, neben Lautstärke und Mute Status auch das aktuell angezeigte Medium ausgelesen werden. Dazu gehört der Kanal, dessen Name, dessen URL und die aktuelle Sendung. Jetzt kann es aber sein, dass die aktuelle Sendung über DLNA eingespielt wird, dann sollte der Status des TV (Mode= DLNA), der Name des Mediums (z.B. meine-video-datei.mp4) und dessen URL über die DLNA Soap Messages eingeholt werden, weil es eben anders nicht geht.

Ein Nebeneffekt ist, dass man damit jetzt auch eine beliebige übers Netzwerk verfügbare Datei abspielen kann. Das beinhaltet neben Videos auch Musik oder Bilder. Wäre z.B. cool für die Darstellung einer Überwachungskamera, falls ein bestimmtes Ereignis stattfindet.

Jetzt nochmal zum Modul DLNARenderer: Ich hab es jetzt mehrere Wochen installiert ("defined") und ausprobiert. Das oben gewünschte, den aktuellen Status des TV abfragen, kriege ich nicht hin.

Siehst du einen anderen Weg, das zu bewerkstelligen?

SNOOPY2000

#382
Hallo vielen Dank für den Einbau der Message Funktion.

Laut API lautet der Aufruf

<ltv:SetActionField>
<ltv:fcid>8138436</ltv:fcid>
<ltv:ClientId>LRemoteClient-0-1314017969</ltv:ClientId>
<ltv:InputText>Test</ltv:InputText>
</ltv:SetActionField>

wo in der Version 0.52 wird das Feld <ltv:InputText> gebaut?
da der Fernseh leider mit "requestResult    HTTP-Error returned: 500" antwortet.

Ist es normal das bei einem neustart zunächst ein reset des Moduls durchgeführt werden muss on dann ein connect sowie ein on.
Bei mir ist diese sequenz erforderlich vorher sagt das Modul Loewe nicht present.

Folgender Auszug aus dem Logfile:
2017.11.29 20:18:30 3: LoeweTV MyLoewe: reset LoeweTV device
2017.11.29 20:19:49 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 1192.
2017.11.29 20:19:49 3: LoeweTV_HU_Callback MyLoewe: No retry for (ret: HTTP-Error returned: 500) for send request  :


Schönen Gruß








SNOOPY2000

Nehme alles zurück bzgl. der API,

wer die Suchfunktion bedienen kann ist klar im Vorteil ;-)

Dann scheint der Fernseh das leider auch nicht zu unterstützen.

Gruß

viegener

Zitat von: SNOOPY2000 am 29 November 2017, 20:27:27

wo in der Version 0.52 wird das Feld <ltv:InputText> gebaut?
da der Fernseh leider mit "requestResult    HTTP-Error returned: 500" antwortet.


Dann hast Du vermutlich auch ein altes Chassis von Loewe - der Befehl wird bei mir nicht unterstützt.
Zusammengebaut wird alles in ..._SendRequest.



Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Zitat von: SNOOPY2000 am 29 November 2017, 20:27:27
Ist es normal das bei einem neustart zunächst ein reset des Moduls durchgeführt werden muss on dann ein connect sowie ein on.
Bei mir ist diese sequenz erforderlich vorher sagt das Modul Loewe nicht present.

Folgender Auszug aus dem Logfile:
2017.11.29 20:18:30 3: LoeweTV MyLoewe: reset LoeweTV device
2017.11.29 20:19:49 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 1192.
2017.11.29 20:19:49 3: LoeweTV_HU_Callback MyLoewe: No retry for (ret: HTTP-Error returned: 500) for send request  :


Schönen Gruß

Ja - der Reset ist normal - der ist Teil des Define-Ablaufs

Für die Warnung habe ich mal eine Korrektur gemacht und als V 53 eingechecked
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

der.einstein

Hallo Kollegen :-) und noch schnell Gesundes Neues Jahr 2018!

Habe jetzt mal wieder etwas Zeit gefunden und provisorisch die Verlinkung zwischen LoeweTV Modul und dem DLNARenderer Modul (https://forum.fhem.de/index.php?topic=39706.0) umgesetzt.
@viegener: Ich hab nicht die DLNA Requests neu im Modul implementiert, ich schwör.  8)

Das Modul macht nun je nach eingestelltem Interval die Abfragen beim TV und checkt bei dem jeweiligen DLNA Device des anderen Moduls, ob hier etwas über DLNA läuft. Ist das der Fall, zieht er sich die Readings einfach aus dem DLNA Device. Damit blockiert der TV nun nicht mehr, wenn ich DLNA benutze.  ;D

Werde es noch etwas polieren und dann hier reinstellen.

Was noch anzumerken ist:
Das Modul DLNARenderer kann Eventing! Das heißt, wenn ich am TV die Lautstärke ändere, sendet der TV die Änderung unverzüglich an FHEM, ohne Polling!
Ich habe mal bei Dominik angefragt, ob er uns da mal unterstützen möchte oder ein paar Tips gibt. Denn das soll über die Remote-Api von Loewe ja auch gehen, nur leider versteh ichs nicht.  ;D

Grüße

philip10

Hallo zusammen,

sobald ich den TV über das define anlegen will, erhalte ich folgende Fehlermeldung: "Cannot define Loewe device. Perl modul XML::Twig is missing."
Hat jemand eine Idee, wie ich das beheben kann?

Vielen Dank und beste Grüße
Philip

der.einstein

Ja, du musst auf deinem Server das Perl Modul XML-Twig  installieren. Ohne das geht es momentan leider nicht.

Gesendet von meinem LG-D855 mit Tapatalk


philip10