[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

CoolTux

Hallo Leute,

Bin heute endlich mal wieder zu einem Codeview gekommen. Was mir aufgefallen ist, ist das wie zwar nach dem define die firstRun starten aber die darin aufgerufene Routine GetDeviceData nicht mehr vorhanden ist.
Wie genau ist denn nun der Flow? Haben wir überhaupt schon einen?
Frage. Wie ogt wird getDeviceData aufgerufen. Ich würde gerne eine Funktion einbauen die beim ersten getDeviceData ohne $hash->{TVMAC} den hash anlegt und sofern das DEF noch nicht vorhanden ist dieses dann setzt.

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Version 0.0.39
Habe eine Funktion eingebaut die nach dem erstellen des Devices automatisch die TVMAC in die Internals setzt und eine neu DEF schreibt.
Kann das bitte mal jemand testen. Dazu das aktuelle Device bitte löschen. Den Fernsehr an machen und dann einfach ein neues define schreiben. Nur mit der IP Adresse bitte

define myTV LoeweTV 192.168.1.1

Nach etwas Zeit sollte in den Internals eine TVMAC stehen und das define sollte hinter der IP nun auch die MAC stehen haben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

viegener

Zitat von: der.einstein am 23 September 2017, 11:02:31
@viegener: wie machst du es, dass der LoeweTV auf Ping reagiert, aber nicht an ist? :-)


Das klappt zum Beispiel wenn eine Aufzeichnung aktiv ist und das gerät in standby. Er scheint aber auch generell noch einige Zeit auf ping zu reagieren wenn man ihn ausschaltet (sprich stand-by)

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

viegener

Zitat von: CoolTux am 23 September 2017, 19:54:07
Hallo Leute,

Bin heute endlich mal wieder zu einem Codeview gekommen. Was mir aufgefallen ist, ist das wie zwar nach dem define die firstRun starten aber die darin aufgerufene Routine GetDeviceData nicht mehr vorhanden ist.
Wie genau ist denn nun der Flow? Haben wir überhaupt schon einen?
Frage. Wie ogt wird getDeviceData aufgerufen. Ich würde gerne eine Funktion einbauen die beim ersten getDeviceData ohne $hash->{TVMAC} den hash anlegt und sofern das DEF noch nicht vorhanden ist dieses dann setzt.

Momentan wird GetDeviceData nur einmalig (first run) aufgerufen, wenn der loewe auch present ist. Der regelmässige Aufruf ist noch deaktiviert. ImPrinzip müsste regelmässig mindestens GetDeviceData, GetVolume, GetMute aufgerufen werden. Ausserdem einmalig noch GetChannelList (vielleicht das nicht regelmässig)

Mein eigener Loewe ist ja leider etwas eingeschränkt (kein DVRarchiv, kein listoflists, kein wakeOnLan)

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

FHEM-Freak

Zitat von: der.einstein am 22 September 2017, 19:28:57
Da du schon die App drauf hast, kannst du mal raisfinden, was man für Pause, Play, Ff, Fr etc. für Tasten schicken muss? Eventuel mit Wireshark o. ä.

Ich bekomme es nicht hin mit Wireshark  :'(
Wenn ich nach der IP des iPads Filter kommt überhaupt nichts was zur IP des Tv sendet ?
Mach sicher was falsch, hat wer einen Tipp für mich.

Die App hat alle gewünschten Funktionen.
Banana Pi
HMLAN
3 x HM-CC-TC + HM-CC-VC
1 x HM-PB-2-WM55, 1 x HM-WDS10-TH-O
1 x HM-WDS30-T-O, 1 x HM-WDS40-TH-I

CoolTux

Zitat von: viegener am 24 September 2017, 12:55:45
Momentan wird GetDeviceData nur einmalig (first run) aufgerufen, wenn der loewe auch present ist. Der regelmässige Aufruf ist noch deaktiviert. ImPrinzip müsste regelmässig mindestens GetDeviceData, GetVolume, GetMute aufgerufen werden. Ausserdem einmalig noch GetChannelList (vielleicht das nicht regelmässig)

Mein eigener Loewe ist ja leider etwas eingeschränkt (kein DVRarchiv, kein listoflists, kein wakeOnLan)

Das ist das Problem. Die Funktion ist irgendwie verschwunden. Ich schau mal in den Commits
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

viegener

Verschwunden - ne

Im define wird LoeweTV_FirstRun (und ..._presence) aufgerufen

Firstrun ruft die device daten ab, wenn der Loewe present ist
und startet den regelmässigen Timer für LoeweTV_TimerStatusRequest

in LoeweTV_TimerStatusRequest ist allerdings wohl in den letzten Commits etwas durcheinandergeraten.

------------------

Momentan gibt es eigentlich 3 Routinen
  First-run - einmalig
  TimerStatusRequest - regelmässig inhalte abrufen
  Presence - regelmässig präsenz prüfen

Ich würde vorschlagen nur eine Routine TimerStatusRequest:
- Diese ruft am Anfang (if present) :
      - deviceData ab
      - wenn keine Channellist vorhanden aber das channellist attribut gesetzt ist auch die channellist ab
      - weitere Daten kann man noch nach Bedarf hinzufügen (das queuing sorgt ja für eine nicht blockierende sondern "stotternde" Ausführung
- am Ende startet sie den BlockingCall : presence_run

Vorteil es gibt nur einen Timer und ein Interval ausserdem wäre die ganze Logik zentral und gut erweiterbar.
   
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

der.einstein

Hi,
Ich hab v39 installiert, ein delete und eine defi,e nur mit IP gemacht.
Hier das Listing:


Internals:
   CFGFN
   CLIENTID   LRemoteClient-0-1506276861
   DEF        192.168.0.2 00:09:82:19:ab:58
   FCID       1234
   HOST       192.168.0.2
   INTERVAL   15
   NAME       LoeweTV
   NR         655
   STATE      connected
   TVMAC      00:09:82:19:ab:58
   TYPE       LoeweTV
   VERSION    0.0.39
   doStatus
   lastresponse <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header/> <SOAP-ENV:Body>  <m:GetDeviceDataResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1506276861</m:ClientId><m:Chassis>SL220</m:Chassis><m:SW-Version>2.4.55.0</m:SW-Version><m:MAC-Address>00:09:82:19:ab:58</m:MAC-Address><m:MAC-Address-LAN>00:09:82:19:ab:58</m:MAC-Address-LAN><m:MAC-Address-WLAN>f8:35:dd:97:9b:5a</m:MAC-Address-WLAN><m:Location>Germany</m:Location></m:GetDeviceDataResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
   Hu_do_params:
     args:
       GetDeviceData
       undef
       undef
       1
   Hu_sr_params:
     NAME
     action     GetDeviceData
     addr       http://192.168.0.2:905
     buf
     conn
     displayurl http://192.168.0.2:905/loewe_tablet_0001
     header     User-Agent: Assist Media/23 CFNetwork/808 Darwin/16.0.0

Accept: */*

Accept-Encoding: gzip, deflate

Accept-Language: de-de

Content-Type: application/soap+xml; charset=utf-8

Connection: keep-alive

SOAPAction: GetDeviceData
     host       192.168.0.2
     httpheader HTTP/1.1 200 OK

Date: Sun, 24 Sep 2017 20:15:01 GMT

Server: Nano HTTPD library

Content-Type: text/xml

Content-Length: 741
     hu_blocking 0
     hu_filecount 1
     hu_portSfx :905
     loglevel   4
     method     POST
     path       /loewe_tablet_0001
     protocol   http
     redirects  0
     timeout    30
     url        http://192.168.0.2:905/loewe_tablet_0001
     Sr_readings:
       Chassis    SL220
       SW_Version 2.4.55.0
     Handlers:
     Hash:
     Sslargs:
   Readings:
     2017-09-24 20:15:03   Chassis         SL220
     2017-09-24 20:15:03   SW_Version      2.4.55.0
     2017-09-24 20:14:23   access          accepted
     2017-09-24 20:14:19   presence        present
     2017-09-24 20:15:03   requestAction   GetDeviceData
     2017-09-24 20:15:03   requestResult   SUCCESS
     2017-09-24 20:14:23   state           connected
   actionQueue:
   Helper:
Attributes:


Es scheint aber zu funktionieren. Aber gibt es in dem Fall eine Lösung für TVs, die die MAC nicht übermitteln?

CoolTux

Perfekt. Danke Dir.
Ja gibt es. Man kann auch beim define die MAC mitgeben. Also direkt nach der IP
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

der.einstein

#219
So hier mal wieder ein Commit von mir gegen v39.
Man kann jetzt auch folgendes als remotekey verwenden:
41hdr = pause (d. h. auch z. B. zeitversetztes Fernsehen starten)
50hdr = rewind
52hdr = fastforward
53hdr = play (z. B. nach pause)
54hdr = Stop (beenden von Wiedergabe von Aufnahme oder Stream etc. )
55hdr = Record (z. B. Aktuelles Programm aufnehmen)

Hab diesmal den Patch mit CoolTux Aufruf erstellt  8)

Bitte bei Gefallen implementieren und testen.

@CoolTux: Ich musste in der set Routine den Check bei remotekey auf eine Integer entfernen, bin leider nicht sio reges Fest.

--- 82_LoeweTV_v39.pm 2017-09-24 20:29:30.753264808 +0200
+++ 82_LoeweTV.pm 2017-09-24 20:46:25.891961722 +0200
@@ -371,7 +371,7 @@ sub LoeweTV_Set($@) {
         return;
     
     } elsif( lc $cmd eq 'remotekey' ) {
-        return "$cmd needs argument remote key" if ( ( scalar( @args ) != 1 ) || ( $args[0] !~ /^\d+$/ ) );
+        return "$cmd needs argument remote key" if ( ( scalar( @args ) != 1 ) );
         @actionargs = ( 'InjectRCKey', $args[0] );   
     
     } elsif( lc $cmd eq 'connect' ) {
@@ -624,6 +624,7 @@ sub LoeweTV_SendRequest($$;$$$) {
     my $name = $hash->{NAME};
   
     my $ret;
+    my $alphabet;
   
     Log3 $name, 5, "LoeweTV_SendRequest $name: ";
     
@@ -683,9 +684,16 @@ sub LoeweTV_SendRequest($$;$$$) {
                                         'm:AccessStatus' => sub {LoeweTV_ParseRequestAccess($hash, $_->text_only('m:AccessStatus'));},}
                                     ],
                                     
-        "InjectRCKey"           =>  [sub {$content='<InputEventSequence>
-                                        <RCKeyEvent alphabet="l2700" value="'.$actPar1.'" mode="press"/>
-                                        <RCKeyEvent alphabet="l2700" value="'.$actPar1.'" mode="release"/>
+        "InjectRCKey"           =>  [sub {
+    if ( index($actPar1, "hdr" ) != -1 )
+   {
+    $actPar1 =~ s/hdr// ;
+    $alphabet = "l2700-hdr" ;
+   }
+    else { $alphabet = "l2700" ; } ;
+    $content='<InputEventSequence>
+                                        <RCKeyEvent alphabet="'.$alphabet.'" value="'.$actPar1.'" mode="press"/>
+                                        <RCKeyEvent alphabet="'.$alphabet.'" value="'.$actPar1.'" mode="release"/>
                                         </InputEventSequence>'},{"ltv:InjectRCKey" => sub {$hash->{helper}{lastchunk} = $_->text_only();}},],
                                         
         "GetDeviceData"         =>  [sub {$content='';},


Grüße.

CoolTux

Der Patch ist defekt. Da sind Zeilenumbrüche drin wo keine sein sollten.
Ich versuche mal von Hand das zu richten
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

der.einstein

SO, hab den Patch nochmal vom PC hochgeladen, siehe oben.

(es muss doch gehen, auf dem Smartphone ein vernünftiges copy+paste hinzubekommen  ;) )

CoolTux

Das sieht viel viel besser aus. Hoffe ich komme heute noch dazu ihn ein zu pflegen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

viegener

Was haltet ihr davon, dass die Funktionstasten (auch ?) über Textauswahl gesendet werden können?

Wie wäre es hdr als optionalen zusätzlichen Parameter für remotekey verwendet?

Also in der Form
set loewe remotekey 41 hdr

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

der.einstein

@viegener: Im Endeffekt ist das Wurst (aus meiner Sicht). Da ich davon ausgehe, dass wir früher oder später die set Befehle aus der DevelopmentGuidelineAV übernehmen, bzw. diese als "highlevel" Alternativen anbieten. Also "set MyLoewe pause" etc. Play, Pause, Stop gibt es ja. Es bräuchte dann halt noch record, fastforward und reverse. Damit wärs egal, was in der Routine steht.

Aber ich will kein Bremser sein, von mir aus kanns auch "41 hdr" werden  8)