FHEM Forum

FHEM - Anwendungen => Multimedia => Thema gestartet von: der.einstein am 08 April 2017, 15:40:50

Titel: [Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 08 April 2017, 15:40:50
Hallo Fhemler,
Ich suche nach einer Möglichkeit meinen Loewe Smart-TV Connect ID DR+ 46" Baujahr 2013 über FHEM zu steuern.
Leider gibt es kein fertiges Modul hierfür.
Es gibt aber bereits vom Hersteller und Drittanbietern Android Apps, die dies können (vom Handy aus).
In einem Forum für Loewe-TVs hab ich eine Möglicht keit über eine SOAP-API gefunden, mit der ich jede Eingabe der Fernbedienung übers Netzwerk schicken kann. Die gibt mir dann sogar eine Antwort mit, z.B. welches Programm aktuell läuft z.B. ARD statt nur Kanal 1.
Dies funktioniert mit Curl:

curl -v -XPOST -H 'Accept: */*' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: nl-nl' -H 'Content-Type: application/soap+xml; charset=utf-8' -H 'Connection: keep-alive' -H 'SOAPAction: InjectRCKey' -H 'User-Agent: Assist Media/23 CFNetwork/808 Darwin/16.0.0' -d '<env:Envelope
        xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:ltv="urn:loewe.de:RemoteTV:Tablet">
        <env:Body>
            <ltv:InjectRCKey>
                <fcid>111</fcid>
                <ClientId>LRemoteClient-0-1470814689</ClientId>
                <InputEventSequence>
                    <RCKeyEvent
                        alphabet="l2700"
                        value="12"
                        mode="press"/>
                    </InputEventSequence>
                </ltv:InjectRCKey>
            </env:Body>
        </env:Envelope>' 'http://10.0.102.51:905/loewe_tablet_0001'

Jetzt die Frage: Damit müsste sich doch eine FHEM-Steuerung basteln lassen?
Kann ich dafür das Modul HTTPMOD verwenden? Und wenn ja, wie? Ich muss quasi für jede FB-Taste eine Funktion schreiben.

Hilfe dringend erwünscht...
Danke

PS: Falls jemand auch einen Loewe hat und es ausprobieren möchte, man muss auf dem Handy eine FB-App installieren, diese benutzen um den TV fernzubedienen und währenddessen die WLAN-Pakete mitschneiden. Warum? Der TV und die App müssen sich kennen und IDs erstellen und austauschen, das kann die App, ich aber nicht. Daher die App das übernehmen lassen und die ID herausfiltern. Sie kann dann benutzt werden, um mittels Curl den TV fernzusteuern.

EDIT: Laut mehrerer Quellen soll das auch mit SHARP Smart-TVs funktionieren, die haben wohl diesselbe Firmware.

Titel: Antw:Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 14 Juli 2017, 08:19:03
Mir liegt inzwischen die Dokumentation der Loewe API vor (siehe Anhang).

Es war mir damit auch möglich ein Pairing mit dem TV hinzubekommen und danach alle Funktionen fernzusteuern (mittels curl).

Ich suche nun immer noch nach einer Möglichkeit, dies in FHEM umzusetzen, das heißt über Perl mit z.B. HTTPMOD.

Im Endeffekt müsste FHEM/HTTPMOD nur ein (X)POST absetzen und dabei die SOAP Message senden.

Interessant ist auch die Möglichkeit, dass der Client (FHEM) beim Server (TV) "subscribed". Dann sendet der TV an FHEM eine Info, wenn sich bei ihm was ändert, z.B. umschalten etc.
Titel: Antw:Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 14 Juli 2017, 08:22:17
Hier mal noch die 2 (X)POST Messages, um den TV auf stumm zu schalten:

#!/bin/bash
curl -v -XPOST -H 'Accept: */*' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: de-de' -H 'Content-Type: application/soap+xml; charset=utf-8' -H 'Connection: keep-alive' -H 'SOAPAction: RequestAccess' -H 'User-Agent: Assist Media/23 CFNetwork/808 Darwin/16.0.0' -d '
<env:Envelope
        xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:ltv="urn:loewe.de:RemoteTV:Tablet">
        <env:Body>
<ltv:RequestAccess>
<ltv:fcid>12345</ltv:fcid>
<ltv:ClientId>LRemoteClient-0-1499966172</ltv:ClientId>
<ltv:DeviceType>Apple iPad</ltv:DeviceType>
<ltv:DeviceName>Odroid64-FHEM</ltv:DeviceName>
<ltv:DeviceUUID>00:1e:06:33:95:c9</ltv:DeviceUUID>
<ltv:RequesterName>Assist Media App</ltv:RequesterName>
</ltv:RequestAccess>
        </env:Body>
</env:Envelope> ' 'http://192.168.0.3:905/loewe_tablet_0001'

exit 0


und:

#!/bin/bash
curl -v -XPOST -H 'Accept: */*' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: de-de' -H 'Content-Type: application/soap+xml; charset=utf-8' -H 'Connection: keep-alive' -H 'SOAPAction: InjectRCKey' -H 'User-Agent: Assist Media/23 CFNetwork/808 Darwin/16.0.0' -d '
<env:Envelope
        xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:ltv="urn:loewe.de:RemoteTV:Tablet">
        <env:Body>
<ltv:InjectRCKey>
<fcid>12345</fcid>
<ClientId>LRemoteClient-0-1499966172</ClientId>
<InputEventSequence>
<RCKeyEvent alphabet="l2700" value="13" mode="press"/>
<RCKeyEvent alphabet="l2700" value="13" mode="release"/>
</InputEventSequence>
</ltv:InjectRCKey>
</env:Body>
</env:Envelope>
' 'http://192.168.0.3:905/loewe_tablet_0001'

exit 0

Titel: Antw:Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: Elektrolyt am 03 August 2017, 11:10:58
Hallo der.einstein,

vielen Dank für deinen sehr interessanten Post!
Hast du mal das Modul DLNARenderer probiert? (https://fhem.de/commandref.html#DLNARenderer)
Das hier https://www.loewe-friends.de/viewtopic.php?t=6475 fand ich auch interessant (hast du wahrscheinlich ebenfalls bereits gelesen)

Gruß, Jens
Titel: Antw:Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 03 August 2017, 12:49:09
Hab mir eben das Modul angeschaut, auch den Link zum Loewe Forum; kannte ich noch nicht [emoji57]

Aber ich hab mittlerweile etwas Perl gelernt und obiges in einem Perl Script umsetzen können, löste ich heute Nachmittag.

Problem ist dann noch die Integration in FHEM und ein Webview.

Zu dem DLNA: Es geht eher um eine reine TV Steuerung analog LGTV oder PHTV, DLNA kann der TV auch dafür wäre das oben genannte Modul schon ganz gut.

Ich möchte aber erreichen, dass ich ihn basierend auf anderen Einflüßen z. B. Licht an/aus und Uhrzeit, gezielt ein/ausschalten kann und einen bestimmten Sender einstellen kann.

Zudem wäre es cool wenn die Aufnahmefunktion mit FHEM möglich wäre zusammen mit dem Auslesen des EPG und der gespeicherten Aufnahmen. Diese macht der Loewe automatisch als DLNA Server bekannt -> kann ich somit auch woanders schaun.

Die Krönung wäre das oben genannte Subscription Feature: der TV meldet bei FHEM zum B. das auf ein bestimmtes Programm ungeschälten wurde.

Ich hoffe, du bleibst mir als Gesprächsteilnehmer erhalten [emoji57]

Grüße

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 08 August 2017, 22:08:57
So, es hat leider etwas länger gedauert, dafür funktioniert es nun schon sehr gut (allerdings standalone).

Hier das Skript bis dato:

#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use XML::Twig;
use Net::Address::Ethernet qw( get_address );
use Net::Ping;
use Net::Wake;

my $mac = get_address;
my $ip = "192.168.0.2";
my $tvmac = "00:09:82:19:ab:58";
my $action = $ARGV[0];
my $RCkey = $ARGV[1];
my $clientid = $ARGV[2];
my $fcid = $ARGV[3];
my $status = "";
my $noobie = "";
my $connectsuccess = "false";

################################################################################
#######                            INFOS                                ########
################################################################################
# use first command line argument as "action", eg. InjectRCKey
# use second command line argument as "RCkey", eg. 13
# use third command line argument as "clientid", eg. LRemoteClient-0-1501098376 or ?
# use fourth command line argument as "fcid", eg. 1234
# eg.: ./dertest7.pm RequestAccess 13 abcd

my $p = Net::Ping->new();
if (! $p->ping($ip)){Net::Wake::by_udp($ip,$tvmac);};
$p->close();

if (! defined $clientid){$clientid = "?"};
if (! defined $fcid){$fcid = "1234"};

my ($message, $response, $request, $userAgent, $noob, $twig1, $twig2, $content, $content_ra, $content_key);
$content_ra = ' <ltv:DeviceType>Apple iPad</ltv:DeviceType>
<ltv:DeviceName>FHEM</ltv:DeviceName>
<ltv:DeviceUUID>'.$mac.'</ltv:DeviceUUID>
<ltv:RequesterName>Assist Media App</ltv:RequesterName>';
$content_key = ' <InputEventSequence>
<RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="press"/>
<RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="release"/>
</InputEventSequence>';
$content = $content_ra;
$action = "RequestAccess";
&sendRequest;

if ($status ne "Accepted") {&sendRequest};
if ($status ne "Accepted") {&sendRequest};
$content = $content_key;
$action = $ARGV[0];
if ($status eq "Accepted")
{
&sendRequest;
}
#else {}

sub sendRequest {
my $header = "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'>
<env:Body>\n";
my $action_xml1 = " <ltv:$action>\n";
my $header2 = " <ltv:fcid>".$fcid."</ltv:fcid>
<ltv:ClientId>".$clientid."</ltv:ClientId>\n";
my $action_xml2 = " \n </ltv:$action>";
my $footer = "\n</env:Body>
</env:Envelope>\n";
$message = $header.$action_xml1.$header2.$content.$action_xml2.$footer;
$request = HTTP::Request->new(POST => 'http://'.$ip.':905/loewe_tablet_0001');
$userAgent = LWP::UserAgent->new(agent => 'Assist Media/23 CFNetwork/808 Darwin/16.0.0');
$request->header('Accept' => '*/*');
$request->header('Accept-Encoding' => 'gzip, deflate');
$request->header('Accept-Language' => 'de-de');
$request->header('Connection' => 'keep-alive');
$request->header('SOAPAction' => $action);
$request->content_type("application/soap+xml; charset=utf-8");
$request->content($message);
$response = $userAgent->request($request);
$noob = $response->decoded_content;
$twig1= new XML::Twig;
$twig1->parse($noob);
$twig2 = XML::Twig->new(
    twig_handlers => {
        'm:ClientId' => sub {
$clientid = $_->text_only('m:ClientId');     
        },
'm:AccessStatus' => sub {
$status = $_->text_only('m:AccessStatus');
},
    },
)->parse($noob);
}

if($response->code == 200) {
$connectsuccess = "true";
#print $noob;
#print $response->as_string;
}
else {
print $response->error_as_HTML;
}

print "Status: ",$status, " ClientId: ",$clientid, " ConnectSuccess: ",$connectsuccess,"\n";


Aufruf mit z.B.: meinscript.pl InjectRCKey 79
Was passiert? Am TV wird die Taste "Info" gedrückt.

Jetzt die wichtige Frage: Wie krieg ich das jetzt in FHEM rein? Als Modul?  8)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 17 August 2017, 14:49:00
Nach Absprache mit einem Moderator wurde dieses Thema aus der Bastelecke verschoben nach Multimedia, um hoffentlich mehr Unterstützung zu erhalten.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 17 August 2017, 19:50:45
Nun, jetzt wo Du so weit gekommen bist ist der Rest ein Klacks.

Du liest Die das Developer Guide im FHEM Wiki durch.
Sucht Dir ein Modul welches in Deine Richtung geht
Schreibst einem Developer der Dir Sympathisch ist ob er Lust und Zeit hat Dein Mentor zu sein.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 17 August 2017, 20:20:37


Zitat von: CoolTux am 17 August 2017, 19:50:45
Nun, jetzt wo Du so weit gekommen bist ist der Rest ein Klacks.

Du liest Die das Developer Guide im FHEM Wiki durch.
Sucht Dir ein Modul welches in Deine Richtung geht
Schreibst einem Developer der Dir Sympathisch ist ob er Lust und Zeit hat Dein Mentor zu sein.



Grüße

Und wer könnte der Glückliche sein? [emoji33]

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 17 August 2017, 20:27:03
Lese Dich bisschen durch das Forum und schaue wo Developer antworten. Dann entscheide und schreibe dir einfach mal an.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 28 August 2017, 22:10:35
So, ich bin mittlerweile selbst etwas weitergekommen.

Das Skript kann nun die meisten Funktionen:
- Online-Status checken
- wenn offline, dann WoL-Paket senden, dann TV hochfahren
- ausschalten und einschalten
- Pairing mit dem TV
- Lautstärke und Muting auslesen und senden
- Tastendruck senden (beliebigen)
- aktuelles Programm checken,
- Mode/App am TV checken und ändern (z.B. umschalten auf Browser mit bestimmter URL)
- Kanallisten Auslesen (auch setzen möglich)
- beliebigen Text in eingeblendetem Dialog anzeigen

Was noch fehlt:
- Aufnahme-Timer setzen
- beliebige Quelle abspielen (z.B: auch aus dem Netzwerk oder Internetstream)
- Subscribe (d.h. update push durch den Fernseher, wenn mit der Fernbedienung geschalten wurde)
- Aufnahmen auslesen (aus DR+ Archiv, wie es bei Loewe heißt)

Was ich nicht hinbekommen habe, trotz einlesen in diverse Pakete und Wiki-Seiten: ein FHEM Paket   :'(
Ich hab alles in einer handvoll Funktionen umgesetzt, alle werden aus einem Hash gespeist. So zuminest sollte es beim FHEM Modul auch sein.
Aber die Sache mit Initialize etc.pp. => da brauch ich Nachhilfe. Wie mache ich ab hier weiter?

Grüße!

#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use XML::Twig;
use Net::Address::Ethernet qw( get_address );
use Net::Ping::External qw(ping);
use Net::Wake;
use Data::Dumper::Simple;

$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;

my $themac = get_address;
my %hash = ( ip => '192.168.0.2',
tvmac => '00:09:82:19:ab:58',
action => $ARGV[0],
RCkey => $ARGV[1],
clientid => $ARGV[2],
fcid => $ARGV[3],
status => "",
connectsuccess => "false",
pingresult => "down",
mac => $themac,
lastresponse => "",
lastchunk => "",
volstate => "",
mutstate => "",
curlocator => "",
curevent => "",
nextevent => "",
);

################################################################################
#######                            INFOS                                ########
################################################################################
# use first command line argument as "action", eg. InjectRCKey
# use second command line argument as "RCkey", eg. 13
# use third command line argument as "clientid", eg. LRemoteClient-0-1501098376 or ?
# use fourth command line argument as "fcid", eg. 1234
# eg.: ./dertest7.pm RequestAccess 13 abcd

&LoeweTV_setKey();

sub LoeweTV_setKey {
print "RUNNING SETKEY   \n";
if (! defined $hash{RCkey}){$hash{RCkey} = ""};
if (! defined $hash{fcid}){$hash{fcid} = "1234"};
&LoeweTV_hostUp($hash{ip},$hash{tvmac},$hash{mac});
if (! defined $hash{clientid}){$hash{clientid} = "?"};
&LoeweTV_checkAccess($hash{clientid},$hash{fcid});
if ($hash{status} eq "Accepted") {&LoeweTV_sendRequest($hash{action},$hash{RCkey});}
}

sub LoeweTV_hostUp {
#my($hash{ip}, $hash{tvmac}, $hash{mac}) = @_;
print "RUNNING PING: ";
if (ping(host=>$hash{ip})) {$hash{pingresult} = "up";print "ONLINE \n"}else{print "OFFLINE \n";Net::Wake::by_udp($hash{ip},$hash{tvmac});Net::Wake::by_udp($hash{ip},$hash{tvmac});Net::Wake::by_udp($hash{ip},$hash{tvmac});Net::Wake::by_udp($hash{ip},$hash{tvmac});Net::Wake::by_udp($hash{ip},$hash{tvmac});&LoeweTV_checkAccess($hash{clientid},$hash{fcid});&LoeweTV_sendRequest("InjectRCKey",22)};
return($hash{pingresult});
}

sub LoeweTV_checkAccess {
print "RUNNING CHECKACCESS   \n";
#my($clientid,$fcid) = @_;
my $n = 1;
while (($hash{status} ne "Accepted") and ($n<=3)) {$n=$n+1;&LoeweTV_sendRequest("RequestAccess",0,)};
print "RAN CHECKACCESS: $hash{status}   \n";
return($hash{status});
}

sub LoeweTV_sendRequest {
my($action, $RCkey) = @_;
print "STARTING SENDREQUEST: $action   \n";
my ($message, $response, $request, $userAgent, $noob, $twig1, $twig2, $content);
our $result ="";
my $header = "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'>
<env:Body>\n";
my $action_xml1 = " <ltv:$action>\n";
my $header2 = " <ltv:fcid>".$hash{fcid}."</ltv:fcid>
<ltv:ClientId>".$hash{clientid}."</ltv:ClientId>\n";
my $action_xml2 = " \n </ltv:$action>";
my $footer = "\n</env:Body>
</env:Envelope>\n";
my %actions = (
        "RequestAccess" => sub {$content='<ltv:DeviceType>Apple iPad</ltv:DeviceType>
<ltv:DeviceName>FHEM</ltv:DeviceName>
<ltv:DeviceUUID>'.$hash{mac}.'</ltv:DeviceUUID>
<ltv:RequesterName>Assist Media App</ltv:RequesterName>'},
        "InjectRCKey",  => sub {$content='<InputEventSequence>
<RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="press"/>
<RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="release"/>
</InputEventSequence>'},
        "GetDeviceData"  => sub {$content='';$result="m:MAC-Address"},
        "GetChannelList"    => sub {$content="<ltv:ChannelListView>".$RCkey."</ltv:ChannelListView>
<ltv:QueryParameters>
<ltv:Range startIndex='".$ARGV[4]."' maxItems='9999'/>
<ltv:OrderField field='userChannelNumber' type='ascending'/>
</ltv:QueryParameters>";$result="m:GetChannelListResponse"},
"GetListOfChannelLists" => sub {$content="<ltv:QueryParameters>
<ltv:Range startIndex='".$RCkey."' maxItems='9999'/>
<ltv:OrderField field='userChannelNumber' type='ascending'/>
</ltv:QueryParameters>";$result="m:ResultItemChannelLists"},
"GetMediaItem"    => sub {$content='<MediaItemReference mediaItemUuid="'.$RCkey.'"/>'},
"GetChannelInfo" => sub {$content=""},
"GetCurrentPlayback"    => sub {$content='';$result="m:Locator"},
"GetCurrentEvent"    => sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetCurrentEventResponse"},
"GetNextEvent"    => sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetNextEventResponse"},
"SetActionField"    => sub {$content="<ltv:InputText>".$RCkey."</ltv:InputText>";$result="m:Result"},
"SetVolume"    => sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"},
"GetVolume"    => sub {$content="";$result="m:Value"},
"SetMute"    => sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"},
"GetMute"    => sub {$content="";$result="m:Value"},
    );
if ($actions{$action}) {$actions{$action}->();} else {die "Unknown action: $action\n";};
$message = $header.$action_xml1.$header2.$content.$action_xml2.$footer;
$request = HTTP::Request->new(POST => 'http://'.$hash{ip}.':905/loewe_tablet_0001');
$userAgent = LWP::UserAgent->new(agent => 'Assist Media/23 CFNetwork/808 Darwin/16.0.0');
$request->header('Accept' => '*/*');
$request->header('Accept-Encoding' => 'gzip, deflate');
$request->header('Accept-Language' => 'de-de');
$request->header('Connection' => 'keep-alive');
$request->header('SOAPAction' => $action);
$request->content_type("application/soap+xml; charset=utf-8");
$request->content($message);
$response = $userAgent->request($request);
$noob = $response->decoded_content;
$twig1= new XML::Twig;
$twig1->parse($noob);
my $handlers = {'m:ClientId' => sub {$hash{clientid} = $_->text_only('m:ClientId');},
'm:AccessStatus' => sub {$hash{status} = $_->text_only('m:AccessStatus');},
$result => sub {$hash{lastchunk} = $_->text_only($result);},
};
$twig2 = XML::Twig->new(twig_handlers => $handlers)->parse($noob);
if($response->code == 200) {
$hash{connectsuccess} = "true";
$hash{lastresponse} = $response->content;
}
else {
$hash{connectsuccess} = "false";
$hash{lastresponse} = $response->error_as_HTML;
}
if($hash{action} eq "RequestAccess"){return($hash{status})}else{return($hash{status})};
}

print Dumper(\%hash);
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: dev0 am 29 August 2017, 05:48:31
https://wiki.fhem.de/wiki/DevelopmentModuleIntro
https://wiki.fhem.de/wiki/DevelopmentModuleAPI
https://wiki.fhem.de/wiki/HttpUtils
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 29 August 2017, 06:58:19
Hier hast du Mal ein einfaches Modul mit den HttpUtils. Daran kannst Du Dich halten.

https://github.com/LeonGaultier/fhem-SmartPi/blob/master/46_SmartPi.pm


Wenn Du Fragen hast dann frag einfach.
Titel: Antw:Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: FHEM-Freak am 30 August 2017, 14:55:01
Zitat von: der.einstein am 03 August 2017, 12:49:09
Ich hoffe, du bleibst mir als Gesprächsteilnehmer erhalten [emoji57]
Ich bleib dir erhalten  ;)

Sehr interessant was du bis jetzt schon gemacht hast.
Mein Thema ist Statusmeldungen von Fhem an den TV zu senden.
Dazu verwende ich
<ltv:InputText>Test</ltv:InputText>

Somit werden mir Meldungen die von Fhem kommen am TV angezeigt.

Welches Chassis hat dein Connect ID (Schätze mal SL151) ?
Ich verwende einen Loewe Connect UHD (Chassis SL320) und einen bild7 (SL420)
Frage deshalb weil die älteren Chassis (L2710) noch die Möglichkeit hatten aktiv etwas an Fhem zu senden.
Sprich es konnte am TV ein Menü erstellt werde womit was abgefragt werden konnte.
Das gibt es bei der neueren Generation leider nicht mehr.
Bsp. https://www.loewe-friends.de/viewtopic.php?f=7&t=589&p=15644

Zitat von: der.einstein am 28 August 2017, 22:10:35
Was noch fehlt:
- Aufnahme-Timer setzen
- beliebige Quelle abspielen (z.B: auch aus dem Netzwerk oder Internetstream)
- Subscribe (d.h. update push durch den Fernseher, wenn mit der Fernbedienung geschalten wurde)
- Aufnahmen auslesen (aus DR+ Archiv, wie es bei Loewe heißt)

Die API befehle dazu hast du ?

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 31 August 2017, 22:06:09
Hallo,
Es ist ein SL220 aus 2013/2014.

Statusmeldungen anzeigen geht super mit dem Script!

API Befehle liegen mir vor, siehe erster Post.

Aktuell arbeite ich am Parsen der Antworten vom TV (z. B. bei den Aufnahmen etwas aufwändiger). Dann sollte es ein erstes FHEM Modul geben.

Das Ganze sollte auch bei deinen Loewes funktionieren, da die API mit den Firmware-Updates aktuell gehalten wird.

Wäre toll, wenn sich noch paar mehr Leute melden würden, die einen Loewe zu hause rumstehen haben.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 05 September 2017, 12:42:57
Beim ersten Test des provisorischen Moduls bin ich gleich auf ein Problem gestoßen:
Ich verwende "use ..." zum Laden von Modulen zu Beginn des Scripts. Jedoch brauche ich die Funktionen dieser Module "at runtime" z. B. in der Get Funktion. Ein Tipp, den ich gelesen hatte das mit "require" und "Import" zu machen schlug fehl.

Gibt's hier ein bestimmtes Vorgehen, damit ich in einer Funktion des Moduls eine Funktion eines Perl Moduls nutzen kann?
Der Code funktioniert mit der Perl Instanz auf dem Rechner perfekt.

Danke

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 05 September 2017, 12:49:07
Also wenn Du das use am Anfang Deiner Moduldatei verwendest, sollte das zusätzliche Perlmodul geladen sein und deren Funktionen zur Verwendung stehen.
Hast Du irgendwas online von Deinem Code?

package main;

my $missingModul = "";

use strict;
use warnings;

use HttpUtils;
use Data::Dumper;   #debugging

eval "use Encode qw(encode encode_utf8 decode_utf8);1" or $missingModul .= "Encode ";
eval "use JSON;1" or $missingModul .= "JSON ";
eval "use IO::Socket::SSL;1" or $missingModul .= "IO::Socket::SSL ";


sub MODULNAME_Initialize($) {


}
...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 05 September 2017, 13:03:39
Ich verwende Net::Address::Ethernet, um die MAC Addresse des FHEM Servers auszulesen, diese wird zum Handshake/Pairing mit dem TV benötigt.
Ich hatte angefangen mit einer Version, in der ich von Anfang an alle Funktionen reingepackt hab, die dann GAR NICHT funktioniert hatte  8)
Jetzt hab ich den umgekehrten Weg eingeschlagen und starte mit einem "minimal working example" und füge nach und nach alles hinzu. Unten die Version in der nur das Device "LoeweTV" angelegt und der Geräte-Hash populiert wird. Ein Schritt dabei ist das Platzieren der Server-MAC, was so scheinbar nicht funktioniert. Weder mit "use" noch mit "require". Auf der Kommandozeile klappt beides  :o
Gibt es einen anderen Weg die Server-MAC zu bekommen?

package main;

use strict;
use warnings;
#use LWP::UserAgent;
#use HTTP::Request::Common;
#use XML::Twig;
#use Net::Address::Ethernet;
#require Net::Address::Ethernet;
#Net::Address::Ethernet->import(get_address);
#use Net::Ping::External qw(ping);
#use Net::Wake;
#use Data::Dumper::Simple;

sub LoeweTV_Initialize($) {
    my ($hash) = @_;
    Log3 $hash, 5, "LoeweTV_Initialize: Entering";
    $hash->{GetFn}      = "LoeweTV_Get";
    $hash->{SetFn}      = "LoeweTV_Set";
    $hash->{DefFn}      = "LoeweTV_Define";

    $hash->{AttrList} =
    "ip " .
    "tvmac " .
    "action " .
    "RCkey " .
    "clientid " .
    "fcid:1234 " .
    "status " .
    "connectsuccess " .
    "pingresult:down " .
    "mac " .
    "lastersponse " .
    "lastchunk " .
    "volstate " .
    "mutstate " .
    "curlocator " .
    "curevent " .
    "nextevent " .
    "icon:it_television " ;
    #$readingsFnAttributes;

    }

sub LoeweTV_Define($$) {
    my ( $hash, $def ) = @_;
    my @a = split( "[ \t][ \t]*", $def );
    my $name = $hash->{NAME};
    my $ip = $a[2];
    my $tvmac = $a[3];
    my $fcid = $a[4];
    if ($fcid = undef){$fcid = 1234};
    require Net::Address::Ethernet;
    Net::Address::Ethernet->import(get_address);
    my $mac = &get_address;
    $hash->{ip} = $ip;
    $hash->{tvmac} = $tvmac;
    $hash->{fcid} = $fcid;
    $hash->{mac} = $mac;
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Define()";
}

sub LoeweTV_Set($$) {
    my ($hash, $def ) = @_;
    my $name = $hash->{NAME};
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Set()";
}

sub LoeweTV_Get($@) {
    my ( $hash, @a ) = @_;
    my $name = $hash->{NAME};

    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Get()";
}


1;


=pod
=item device
=item summary control for Loewe TV devices via network connection
=item summary_DE Steuerung von Loewe TV Ger&auml;ten &uuml;ber das Netzwerk
=begin html

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html

=begin html_DE

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html_DE

=cut


Im FHEM-Log findet sich bei "use ..." Folgendes:

2017.09.04 19:42:39 1: PERL WARNING: Subroutine LoeweTV_Set redefined at ./FHEM/70_LoeweTV.pm line 57.
2017.09.04 19:42:39 1: PERL WARNING: Subroutine LoeweTV_Get redefined at ./FHEM/70_LoeweTV.pm line 63.
2017.09.04 19:42:48 1: PERL WARNING:  EEE Ifconfig failed: Command 'LC_ALL=C /sbin/ifconfig -a 2>&1', exit code '-1'eth0      Link encap:Ethernet  HWaddr 00:1e:06:33:95:c9 
          inet addr:192.168.0.4  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21e:6ff:fe33:95c9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:52078856 errors:0 dropped:0 overruns:0 frame:0
          TX packets:169668467 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25116688987 (25.1 GB)  TX bytes:185791030866 (185.7 GB)
          Interrupt:40

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:4096  Metric:1
          RX packets:41281442 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41281442 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:20875284539 (20.8 GB)  TX bytes:20875284539 (20.8 GB)

2017.09.04 19:42:48 1: PERL WARNING: Use of uninitialized value $sName in concatenation (.) or string at /usr/local/share/perl/5.22.1/Net/Address/Ethernet.pm line 102.


Und bei "require..."

2017.09.04 21:41:30 1: PERL WARNING:  EEE Ifconfig failed: Command 'LC_ALL=C /sbin/ifconfig -a 2>&1', exit code '-1'eth0      Link encap:Ethernet  HWaddr 00:1e:06:33:95:c9 
          inet addr:192.168.0.4  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21e:6ff:fe33:95c9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:52142910 errors:0 dropped:0 overruns:0 frame:0
          TX packets:169736329 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25131501846 (25.1 GB)  TX bytes:185827789818 (185.8 GB)
          Interrupt:40

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:4096  Metric:1
          RX packets:41365015 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41365015 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:20917464955 (20.9 GB)  TX bytes:20917464955 (20.9 GB)

DDD raw output from Ifconfig is $VAR1 = undef;
DDD in get_address, a is $VAR1 = [];
DDD inspecting interface ...
DDD   but it is not active.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 05 September 2017, 13:21:17
Der Gedanke bezüglich MAC oder IP des FHEM Servers ist gut gemeint. Hatte ich bei meinem AMAD Modul auch. Schnell konnte man mich aber eines besseren belehren. Viele FHEM Server haben nicht nur ein Interface. Wie machst Du es da?

Jetzt mal ab von Deinem Problem würde meine Empfehlung da hin gehen das Du dem Anwender das eintragen der MAC über ein Attribut anbietest und bis dahin im state steht das er für ein Pairing die MAC eintragen muß.
Halte Dich erstmal nicht zu lange mit solchen kleinen Dingen auf. Sowas kann man später immer noch ausbauen. So kannst Du zum Beispiel dem User anbieten seine MAC per get Befehl zu erfahren.


Wenn es aber unbedingt die MAC sein muss dann schaue mal wie andere Module sowas machen. Gerade Module die Systeminfos sammeln. SYSMON zum Beispiel.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 05 September 2017, 23:30:56
Ok, danke für die Info. Ich dacht eben, wenn schon Automatisierung, dann bitte auch die MAC  :P
Nun eben erstmal ohne Auto-MAC (SYSMON kann das meiner Ansicht nach nur bei Fritzboxen?).

Ich hab jetzt eine Modul-Datei, die ich laden kann und ich kann auch ein Device erstellen, ohne dass FHEM dabei abkackt.

Problem: Ich habe es so verstanden, dass Module beim "Laden" nur in den Speicher geholt werden, und die Funktionen erst ausgeführt werden, wenn sie benötigt werden. Außer natürlich LoeweTV_Define, die wird ja beim Erstellen des Device ausgeführt. Jetzt sieht es aber so aus, dass alle Funktionen bereits bei Device-Erstellung ausgeführt werden, zumindest suggerieren das die Debug-Meldungen. Jedenfalls soll der Funktion "LoeweTV_sendRequest" zur Runtime die $action übergeben werden (momentan z.B. "get MyLoewe GetDeviceData"). Das musste ich jetzt aber auskommentieren und sozusagen hardcoden (siehe Script Zeilen 81-84). Das macht natürlich keinen Sinn, aber wenn ich es schreibe, wie konzipiert meckert er (berechtigterweise) darüber, dass keine $action = "LoeweTV" definiert ist, somit bricht er ab ABER BEREITS BEIM DEFINE! Das macht doch keinen Sinn?  ::)
Auf der anderen Seite führt er den Befehl mit "GetDeviceData" brav aus und schreibt mir die Response ins Device Internal "lastresponse".

Hier das Script:

package main;

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use XML::Twig;
#use Net::Address::Ethernet;
#require Net::Address::Ethernet;
#Net::Address::Ethernet->import(get_address);
use Net::Ping::External qw(ping);
use Net::Wake;
#use Data::Dumper::Simple;

# Declare functions
sub LoeweTV_Define($$);
sub LoeweTV_Initialize($);
sub LoeweTV_Get;
sub LoeweTV_Set($$);
sub LoeweTV_hostUp;
sub LoeweTV_checkAccess;
sub LoeweTV_sendRequest;

sub LoeweTV_Initialize($) {
    my ($hash) = @_;
    Log3 $hash, 5, "LoeweTV_Initialize: Entering";
    $hash->{GetFn}      = "LoeweTV_Get";
    $hash->{SetFn}      = "LoeweTV_Set";
    $hash->{DefFn}      = "LoeweTV_Define";

    $hash->{AttrList} =
    "ip " .
    "tvmac " .
    "action " .
    "RCkey " .
    "clientid " .
    "fcid " .
    "status:Accepted,Pending,Denied,undef " .
    "connectsuccess:true,false " .
    "pingresult:down,up " .
    "mac " .
    "lastersponse " .
    "lastchunk " .
    "volstate " .
    "mutstate:0,1 " .
    "curlocator " .
    "curevent " .
    "nextevent " .
    $readingFnAttributes;

    }

sub LoeweTV_Define($$) {
    my ( $hash, $def ) = @_;
    my @a = split( "[ \t][ \t]*", $def );
    my $name = $hash->{NAME};
    my $ip = $a[2];
    my $tvmac = $a[3];
    my $fcid = $a[4];
    if ($fcid = undef){$fcid = 1234};
    $hash->{ip} = $ip;
    $hash->{tvmac} = $tvmac;
    $hash->{fcid} = $fcid;
    $hash->{mac} = "";
    $hash->{clientid} = "?";
    $hash->{status} = "Denied";
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Define()";
    return undef;
}

sub LoeweTV_Set($$) {
    my ($hash, $def ) = @_;
    my $name = $hash->{NAME};
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Set()";
    return undef;
}

sub LoeweTV_Get {
    my ( $hash, @a ) = @_;
    my $name = $hash->{NAME};
    #$hash->{action} = $a[0];
    #$hash->{RCkey} = $a[1];
    $hash->{acion} = "GetDeviceData";
    $hash->{RCkey} = "";
    print "RUNNING SETKEY   \n";
    if (! defined $hash->{RCkey}){$hash->{RCkey} = ""};
    if (! defined $hash->{fcid}){$hash->{fcid} = "1234"};
    &LoeweTV_hostUp($hash,$hash->{ip},$hash->{tvmac},$hash->{mac});
    if (! defined $hash->{clientid}){$hash->{clientid} = "?"};
    &LoeweTV_checkAccess($hash,$hash->{clientid},$hash->{fcid});
    if ($hash->{status} eq "Accepted") {&LoeweTV_sendRequest($hash,$hash->{action},$hash->{RCkey});}
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Get()";
    return undef,
}

sub LoeweTV_hostUp {
#my($hash{ip}, $hash{tvmac}, $hash{mac}) = @_;
my ( $hash, @a ) = @_;
my $ip = $a[0];
print "RUNNING PING: ";
if (ping(host=>$ip)) {$hash->{pingresult} = "up";print "ONLINE \n"}else{print "OFFLINE \n";Net::Wake::by_udp($hash->{ip},$hash->{tvmac});Net::Wake::by_udp($hash->{ip},$hash->{tvmac});Net::Wake::by_udp($hash->{ip},$hash->{tvmac});Net::Wake::by_udp($hash->{ip},$hash->{tvmac});Net::Wake::by_udp($hash->{ip},$hash->{tvmac});&LoeweTV_checkAccess($hash,$hash->{clientid},$hash->{fcid});&LoeweTV_sendRequest($hash,"InjectRCKey",22)};
return($hash->{pingresult});
}

sub LoeweTV_checkAccess {
print "RUNNING CHECKACCESS   \n";
#my($clientid,$fcid) = @_;
my ($hash,@a) = @_;
my $n = 1;
while (($hash->{status} ne "Accepted") and ($n<=3)) {$n=$n+1;&LoeweTV_sendRequest($hash,"RequestAccess",0,)};
print "RAN CHECKACCESS: $hash->{status}   \n";
return($hash->{status});
}

sub LoeweTV_sendRequest {
my($hash, $action, $RCkey) = @_;
print "STARTING SENDREQUEST: $action   \n";
if ( ! defined($action)){$action = "GetDeviceData"};
my ($message, $response, $request, $userAgent, $noob, $twig2, $content, $handlers);
our $result ="";
my $header = "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'>
<env:Body>\n";
my $action_xml1 = " <ltv:$action>\n";
my $header2 = " <ltv:fcid>".$hash->{fcid}."</ltv:fcid>
<ltv:ClientId>".$hash->{clientid}."</ltv:ClientId>\n";
my $action_xml2 = " \n </ltv:$action>";
my $footer = "\n</env:Body>
</env:Envelope>\n";
my %actions = (
        "RequestAccess" => [sub {$content='<ltv:DeviceType>Apple iPad</ltv:DeviceType>
<ltv:DeviceName>FHEM</ltv:DeviceName>
<ltv:DeviceUUID>'.$hash->{mac}.'</ltv:DeviceUUID>
<ltv:RequesterName>Assist Media App</ltv:RequesterName>'},
{'m:ClientId' => sub {$hash->{clientid} = $_->text_only('m:ClientId');},
'm:AccessStatus' => sub {$hash->{status} = $_->text_only('m:AccessStatus');},}
],
        "InjectRCKey",  => [sub {$content='<InputEventSequence>
<RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="press"/>
<RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="release"/>
</InputEventSequence>'}],
        "GetDeviceData"  => [sub {$content='';$result="m:MAC-Address"}],
        "GetChannelList"    => [sub {$content="<ltv:ChannelListView>".$RCkey."</ltv:ChannelListView>
<ltv:QueryParameters>
<ltv:Range startIndex='".$ARGV[4]."' maxItems='9999'/>
<ltv:OrderField field='userChannelNumber' type='ascending'/>
</ltv:QueryParameters>";$result="m:GetChannelListResponse"}],
"GetListOfChannelLists" => [sub {$content="<ltv:QueryParameters>
<ltv:Range startIndex='".$RCkey."' maxItems='9999'/>
<ltv:OrderField field='userChannelNumber' type='ascending'/>
</ltv:QueryParameters>";$result="m:ResultItemChannelLists"}],
"GetMediaItem"    => [sub {$content='<MediaItemReference mediaItemUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
"GetMediaEvent"    => [sub {$content='<MediaEventReference mediaEventUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
"GetChannelInfo" => [sub {$content=""}],
"GetCurrentPlayback"    => [sub {$content='';},
{"m:Locator" => sub {$hash->{lastchunk} = $_->text_only();},}
],
"GetCurrentEvent"    => [sub {$content="<ltv:Player>0</ltv:Player>";},
{"m:Name" => sub {$hash->{curevent}[0] = $_->text("m:Name");},
"m:ExtendedInfo" => sub {$hash->{curevent}[1] = $_->text("m:ExtendenInfo");},
"m:Locator" => sub {$hash->{curlocator} = $_->text_only("m:Locator");}},
],
"GetNextEvent"    => [sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetNextEventResponse"}],
"SetActionField"    => [sub {$content="<ltv:InputText>".$RCkey."</ltv:InputText>";$result="m:Result"}],
"SetVolume"    => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
"GetVolume"    => [sub {$content="";$result="m:Value"}],
"SetMute"    => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
"GetMute"    => [sub {$content="";$result="m:Value"}],
"GetDRPlusArchive" => [sub {$content="<ltv:QueryParameters>
<ltv:Range startIndex='".$RCkey."' maxItems='1000'/>
<ltv:OrderField field='userChannelNumber' type='ascending'/>
</ltv:QueryParameters>";$result="ltv:ResultItemDRPlusFragment"}],
    );
if ($actions{$action}[0]) {$actions{$action}[0]->();$handlers=$actions{$action}[1];} else {die "Unknown action: $action\n";};
$message = $header.$action_xml1.$header2.$content.$action_xml2.$footer;
$request = HTTP::Request->new(POST => 'http://'.$hash->{ip}.':905/loewe_tablet_0001');
$userAgent = LWP::UserAgent->new(agent => 'Assist Media/23 CFNetwork/808 Darwin/16.0.0');
$request->header('Accept' => '*/*');
$request->header('Accept-Encoding' => 'gzip, deflate');
$request->header('Accept-Language' => 'de-de');
$request->header('Connection' => 'keep-alive');
$request->header('SOAPAction' => $action);
$request->content_type("application/soap+xml; charset=utf-8");
$request->content($message);
$response = $userAgent->request($request);
$noob = $response->content;
$twig2 = XML::Twig->new(twig_handlers => $handlers,keep_encoding => 1)->parse($noob);
if($response->code == 200) {
$hash->{connectsuccess} = "true";
$hash->{lastresponse} = $response->content;
}
else {
$hash->{connectsuccess} = "false";
$hash->{lastresponse} = $response->error_as_HTML;
}
if($hash->{action} eq "RequestAccess"){return($hash->{status})}else{return($hash->{status})};
}

1;


=pod
=item device
=item summary control for Loewe TV devices via network connection
=item summary_DE Steuerung von Loewe TV Ger&auml;ten &uuml;ber das Netzwerk
=begin html

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html

=begin html_DE

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html_DE

=cut


Befehle in FHEM:

reload 70_LoeweTV
define MyLoewe LoeweTV 192.168.0.2 00:09:82:19:ab:58


Und das Ergebnis in FHEM:

Internals:
   CFGFN
   DEF        192.168.0.2 00:09:82:19:ab:58
   NAME       LoeweTV2
   NR         50
   RCkey
   STATE      ???
   TYPE       LoeweTV
   acion      GetDeviceData
   clientid   LRemoteClient-0-1504642556
   connectsuccess true
   fcid       1234
   ip         192.168.0.2
   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-1504642556</m:ClientId><m:Chassis>SL220</m:Chassis><m:SW-Version>V2.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>
   mac
   status     Accepted
   tvmac      00:09:82:19:ab:58
Attributes:
   icon       it_television
   mac        00:1e:06:33:95:c9
   room       Andreas


Es kann sein, dass ich die Funktionsweise der Module, v.a. was das AUfrufen der Funktionen angeht, überhaupt nicht verstanden habe  :o 8) ??? ::)

Das Gute ist aber, dass FHEM den SOAP-Request Platzieren und eine SOAP-Antwort erhalten kann.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 06 September 2017, 08:40:50
Ich schaue mir Dein Modul heute mal in Ruhe an. Habe gerade bisschen überflogen.

Als generellen Tip schon mal folgendes. Stell Dir vor Du bist User und musst jetzt noch unendlich viele zusätzliche Pakete installieren. Das nervt und viele User werden kommen und sagen ich kann das nicht installieren weil ich eine Fritzbox oder ein NAS habe.

Daher mein Tip, versuche die von FHEM gegebenen Routinen/Module zu verwenden. In Deinem Fall, wenn ich das richtig gesehen habe wäre HttpUtils ein Ansatz. Zusammen mit der Funktion HttpUtils_NonblockingGet (https://wiki.fhem.de/wiki/HttpUtils#HttpUtils_NonblockingGet)

Das was Du jetzt beschrieben hast, also Dein "Problem" muss ich erstmal begreifen. Deswegen teste ich mal Dein Modul.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 06 September 2017, 20:18:31
Das Problem ist, dass ich ja nicht einfach ein HTTP Get machen kann, z.B. mit HTTPMOD.
Ich brauche erstens eine SOAP-Message, die ich zweitens über POST absetzen und drittens bei der Rückantwort teils komplexes XML parsen muss:

my $channellists = '<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:GetListOfChannelListsResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>0</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ResultItemChannelLists sequenceNumber="9076677" totalResults="5" returnedResults="5" startIndex="0"><m:ResultItemChannelList><m:View>favlist0</m:View><m:Name>Persönliche Liste 1</m:Name><m:TotalResults>38</m:TotalResults><m:Hash>817932246</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlist1</m:View><m:Name>Persönliche Liste 2</m:Name><m:TotalResults>29</m:TotalResults><m:Hash>236324662</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscan0</m:View><m:Name>DVB-C</m:Name><m:TotalResults>391</m:TotalResults><m:Hash>4024613345</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscan1</m:View><m:Name>Unitymedia</m:Name><m:TotalResults>0</m:TotalResults><m:Hash>509297849</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>avlist0</m:View><m:Name>#3051</m:Name><m:TotalResults>9</m:TotalResults><m:Hash>2242429194</m:Hash></m:ResultItemChannelList></m:ResultItemChannelLists><m:Result>OK</m:Result></m:GetListOfChannelListsResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $channellist = '<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:GetChannelListResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>0</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ChannelListView>favlist0</m:ChannelListView><m:ChannelListName>Persönliche Liste 1</m:ChannelListName><m:ResultItemFragment sequenceNumber="9076676" totalResults="38" returnedResults="38" startIndex="0" hash="817932246"><m:ResultItemReference
mediaItemUuid="chl0:00-00030001ffff041b2b5c"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04372b66"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc35c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc362"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271dc35d"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ec359"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271dc35f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc35b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c36c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2719c37b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c363"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2724c375"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271e2b70"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04312856"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff044d2859"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b6ea5"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b2840"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff0437286f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271e2873"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27192b7a"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27212b8e"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2719285b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27192b98"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ac385"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ac381"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2720c36f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2726d04c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ec35a"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c365"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04316f46"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff044d2870"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b7033"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04376d6b"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04376d70"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b6f47"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b7031"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2721cf11"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2712cf76"/></m:ResultItemFragment></m:GetChannelListResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $curplayback = '<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:GetCurrentPlaybackResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:Mode>tv</m:Mode><m:Locator>channel://9:fffca5971e530d32982</m:Locator></m:GetCurrentPlaybackResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $curevent = '<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:GetCurrentEventResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ItemLocator>channel://9:fffca5971e530d32982</m:ItemLocator><m:Locator>channel://9:fffca5971e530d32982</m:Locator><m:LiveEvent><m:Name>Mrs. Doubtfire - Das stachelige Kindermädchen</m:Name><m:ExtendedInfo>Um seinen Kindern täglich nah sein zu können, schlüpft der geschiedene Schauspieler und Stimmenimitator Daniel Hillard kurzerhand in die Rolle des betagten Kindermädchens Mrs. Doubtfire. Der ständige Rollenwechsel hat jedoch seine Tücken - und verheerende Folgen...</m:ExtendedInfo><m:Availability><m:ScheduledTime startTime="1504030500" duration="9300"/></m:Availability></m:LiveEvent></m:GetCurrentEventResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $mediaitem = '<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:GetMediaItemResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ResultItem><m:MediaItem itemInfoClass="object.item.videoItem"><m:uuid>chl0:00-0003f001ffff2716c36c</m:uuid><m:Locator>channel://9:fffca5971e530d32982</m:Locator><m:Caption>9</m:Caption></m:MediaItem><m:MediaInformation><m:ShortInfo>SUPER RTL HD</m:ShortInfo><m:Attributes>13</m:Attributes><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$1$0$8</m:StreamingUrl></m:MediaInformation></m:ResultItem></m:GetMediaItemResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';


Ich glaube nicht, dass das auf einfachem Wege mit den FHEM Modulen möglich ist. Aber ich bin ja lernwillig  8)
Außerdem bin ich dankbar für jede Hilfe!  ;D ;D
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 06 September 2017, 21:30:38
Zitat von: der.einstein am 06 September 2017, 20:18:31
Das Problem ist, dass ich ja nicht einfach ein HTTP Get machen kann, z.B. mit HTTPMOD.
Ich brauche erstens eine SOAP-Message, die ich zweitens über POST absetzen und drittens bei der Rückantwort teils komplexes XML parsen muss:

my $channellists = '<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:GetListOfChannelListsResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>0</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ResultItemChannelLists sequenceNumber="9076677" totalResults="5" returnedResults="5" startIndex="0"><m:ResultItemChannelList><m:View>favlist0</m:View><m:Name>Persönliche Liste 1</m:Name><m:TotalResults>38</m:TotalResults><m:Hash>817932246</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlist1</m:View><m:Name>Persönliche Liste 2</m:Name><m:TotalResults>29</m:TotalResults><m:Hash>236324662</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscan0</m:View><m:Name>DVB-C</m:Name><m:TotalResults>391</m:TotalResults><m:Hash>4024613345</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscan1</m:View><m:Name>Unitymedia</m:Name><m:TotalResults>0</m:TotalResults><m:Hash>509297849</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>avlist0</m:View><m:Name>#3051</m:Name><m:TotalResults>9</m:TotalResults><m:Hash>2242429194</m:Hash></m:ResultItemChannelList></m:ResultItemChannelLists><m:Result>OK</m:Result></m:GetListOfChannelListsResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $channellist = '<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:GetChannelListResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>0</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ChannelListView>favlist0</m:ChannelListView><m:ChannelListName>Persönliche Liste 1</m:ChannelListName><m:ResultItemFragment sequenceNumber="9076676" totalResults="38" returnedResults="38" startIndex="0" hash="817932246"><m:ResultItemReference
mediaItemUuid="chl0:00-00030001ffff041b2b5c"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04372b66"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc35c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc362"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271dc35d"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ec359"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271dc35f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc35b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c36c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2719c37b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c363"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2724c375"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271e2b70"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04312856"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff044d2859"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b6ea5"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b2840"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff0437286f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271e2873"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27192b7a"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27212b8e"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2719285b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27192b98"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ac385"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ac381"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2720c36f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2726d04c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ec35a"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c365"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04316f46"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff044d2870"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b7033"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04376d6b"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04376d70"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b6f47"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b7031"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2721cf11"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2712cf76"/></m:ResultItemFragment></m:GetChannelListResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $curplayback = '<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:GetCurrentPlaybackResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:Mode>tv</m:Mode><m:Locator>channel://9:fffca5971e530d32982</m:Locator></m:GetCurrentPlaybackResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $curevent = '<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:GetCurrentEventResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ItemLocator>channel://9:fffca5971e530d32982</m:ItemLocator><m:Locator>channel://9:fffca5971e530d32982</m:Locator><m:LiveEvent><m:Name>Mrs. Doubtfire - Das stachelige Kindermädchen</m:Name><m:ExtendedInfo>Um seinen Kindern täglich nah sein zu können, schlüpft der geschiedene Schauspieler und Stimmenimitator Daniel Hillard kurzerhand in die Rolle des betagten Kindermädchens Mrs. Doubtfire. Der ständige Rollenwechsel hat jedoch seine Tücken - und verheerende Folgen...</m:ExtendedInfo><m:Availability><m:ScheduledTime startTime="1504030500" duration="9300"/></m:Availability></m:LiveEvent></m:GetCurrentEventResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $mediaitem = '<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:GetMediaItemResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ResultItem><m:MediaItem itemInfoClass="object.item.videoItem"><m:uuid>chl0:00-0003f001ffff2716c36c</m:uuid><m:Locator>channel://9:fffca5971e530d32982</m:Locator><m:Caption>9</m:Caption></m:MediaItem><m:MediaInformation><m:ShortInfo>SUPER RTL HD</m:ShortInfo><m:Attributes>13</m:Attributes><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$1$0$8</m:StreamingUrl></m:MediaInformation></m:ResultItem></m:GetMediaItemResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';


Ich glaube nicht, dass das auf einfachem Wege mit den FHEM Modulen möglich ist. Aber ich bin ja lernwillig  8)
Außerdem bin ich dankbar für jede Hilfe!  ;D ;D

Ich fürchte Du hast Recht. Habe mal etwas gesucht und auch nichts einfacheres gefunden.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 06 September 2017, 21:39:13
Das Einzige, was noch gehen könnte, wäre die SOAP-Message mit SOAP::Lite zu schicken, aber für das Parsen braucht man vermutlich ein extra Modul.

Wie ist das nun mit dem Aufrufen der FHEM-Modul-Funktionen?  ;D

Und was bedeuten die "$" und "@" bei den Sub-Definitionen. z.B. hier (hab ich aus anderen Modulen so übernommen:

sub LoeweTV_Initialize($) {

Grüße und Danke für die Hilfe  :)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 06 September 2017, 21:46:05
Wenn ich meine früheren Experimente mit dem Loewe-API richtig erinnere ist ja der SOAP-Request für jedese Kommand relativ stabil und es wird der eigentliche Befehl (also zum Beispiel Lautstärke erhöhen als Tastendruck) und eine Client-ID, die man einmalig erzeugen muss.

Für grundsätzliche Befehle  wie von einer Fernbedieung wäre das einfach und sollte mit HTTPMod gehen.

Wenn man auch auf Programmlisten / PVR etc zugreifen will, ist es sicher besser ein komplettes Modul zu haben
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 06 September 2017, 22:08:28
Zitat von: der.einstein am 06 September 2017, 21:39:13
Wie ist das nun mit dem Aufrufen der FHEM-Modul-Funktionen?  ;D
Was soll damit noch mal genau sein?

Zitat
Und was bedeuten die "$" und "@" bei den Sub-Definitionen. z.B. hier (hab ich aus anderen Modulen so übernommen:

sub LoeweTV_Initialize($) {

Das gibt die Anzahl und/oder den Type des Übergabe oder Aufrufparameters der Routine an
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 06 September 2017, 22:13:37
Zitat von: viegener am 06 September 2017, 21:46:05
Wenn ich meine früheren Experimente mit dem Loewe-API richtig erinnere ist ja der SOAP-Request für jedese Kommand relativ stabil und es wird der eigentliche Befehl (also zum Beispiel Lautstärke erhöhen als Tastendruck) und eine Client-ID, die man einmalig erzeugen muss.

Für grundsätzliche Befehle  wie von einer Fernbedieung wäre das einfach und sollte mit HTTPMod gehen.

Wenn man auch auf Programmlisten / PVR etc zugreifen will, ist es sicher besser ein komplettes Modul zu haben

Mit den Tastendrücken der FB hast du recht. Das ist simpel und bleibt gleich (außer die Nummer der Taste).
Was ich auf jeden Fall brauche ist ein und ausschalten sowie Status abfragen, zudem klappt das Auslesen der Programmlisten mit den "stand-alone" Skript bereits.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 06 September 2017, 22:16:59
Zitat von: CoolTux am 06 September 2017, 22:08:28
Das gibt die Anzahl und/oder den Type des Übergabe oder Aufrufparameters der Routine an

Sorry, hatte ich etwas knapp geschrieben.
Ich verstehe nicht, warum FHEM die Funktion LoeweTV_Set ausführt, wenn ich bloß den "define Myloewe LoeweTV ..." eingebe.
Dass FHEM das tut, sehe ich an der Ausgabe im Log. So, wie ich es verstanden habe, sollte die Funktion doch aber erst ausgeführt werden wenn jemand "set Myloewe ..." eingibt?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 06 September 2017, 22:18:54
Das hat mit dem define nichts zu tun, sondern damit das die Detailseite des Devices ausgeführt wird und somit set und get ausgeführt werden damit die Drop Down Felder gefüllt werden können.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 06 September 2017, 22:20:35
Ok, das kann ich verstehen.
Wie kann ich regeln, welche Parameter dabei an diese Funktionen übergeben werden?
Oder kann man das Ausführen an dieser Stelle unterbinden?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 06 September 2017, 22:29:34
Lese Dir mal das Developer Wiki durch da steht alles drin was Du wissen musst.

in der Set Funktion arbeitest Du mit Abfragen

if() {

} elsif() {

} elsif() {

} else {

}


Wichtig ist auch das Du Dich daran hälst


_Set($$@) {

    my ($hash, $name, @aa)  = @_;
    my ($cmd, @args)        = @aa;
}
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 06 September 2017, 23:33:51
Danke CoolTux für den Hinweis! Hat mir weitergeholfen.

Mit ein paar Änderungen hab ich es jetzt soweit, dass ich über "get MyLoewe ..." alle Befehle absetzen kann, wie mit dem Skript.
Darunter auch alle Fernbedienungstasten (wobei das bei get natürlich quatsch ist).

package main;

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use XML::Twig;
#use Net::Address::Ethernet;
#require Net::Address::Ethernet;
#Net::Address::Ethernet->import(get_address);
use Net::Ping::External qw(ping);
use Net::Wake;
use Data::Dumper::Simple;

# Declare functions
sub LoeweTV_Define($$);
sub LoeweTV_Initialize($);
sub LoeweTV_Get($$@);
sub LoeweTV_Set($$@);
sub LoeweTV_hostUp;
sub LoeweTV_checkAccess;
sub LoeweTV_sendRequest;

sub LoeweTV_Initialize($) {
    my ($hash) = @_;
    Log3 $hash, 5, "LoeweTV_Initialize: Entering";
    $hash->{GetFn}      = "LoeweTV_Get";
    $hash->{SetFn}      = "LoeweTV_Set";
    $hash->{DefFn}      = "LoeweTV_Define";

    $hash->{AttrList} =
    "ip " .
    "tvmac " .
    "action " .
    "RCkey " .
    "clientid " .
    "fcid " .
    "status:Accepted,Pending,Denied,undef " .
    "connectsuccess:true,false " .
    "pingresult:down,up " .
    "mac " .
    "lastersponse " .
    "lastchunk " .
    "volstate " .
    "mutstate:0,1 " .
    "curlocator " .
    "curevent " .
    "nextevent " .
    $readingFnAttributes;

    }

sub LoeweTV_Define($$) {
    my ( $hash, $def ) = @_;
    my @a = split( "[ \t][ \t]*", $def );
    my $name = $hash->{NAME};
    my $ip = $a[2];
    my $tvmac = $a[3];
    my $fcid = $a[4];
    if ($fcid = undef){$fcid = 1234};
    $hash->{ip} = $ip;
    $hash->{tvmac} = $tvmac;
    $hash->{fcid} = $fcid;
    $hash->{mac} = "";
    $hash->{clientid} = "?";
    $hash->{status} = "Denied";
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Define()";
    return undef;
}

sub LoeweTV_Set($$@) {
    my ($hash, $name, @aa ) = @_;
    my ($cmd, @args) = @aa;
    #my $name = $hash->{NAME};
    #print "LoeweSet was executed!";
    #print Dumper $hash;
    #print $cmd;
    #print @args;
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Set()";
    return undef;
}

sub LoeweTV_Get($$@) {
    my ( $hash, $name, $opt, @args ) = @_;
    print Dumper $hash;
    print Dumper $opt;
    print Dumper @args;
    my $action = $opt;
    my $RCkey = $args[0];
    if ( ! defined($action)){$action = "GetDeviceData"};
    #$hash->{action} = $action;
    #$hash->{RCkey} = $args[0];
    #$hash->{action} = $a[0];
    #$hash->{RCkey} = $a[1];
    #$hash->{action} = "GetDeviceData";
    #$hash->{RCkey} = "";
    print "RUNNING SETKEY   \n";
    if (! defined $hash->{RCkey}){$hash->{RCkey} = ""};
    if (! defined $hash->{fcid}){$hash->{fcid} = "1234"};
    &LoeweTV_hostUp($hash,$hash->{ip},$hash->{tvmac},$hash->{mac});
    if (! defined $hash->{clientid}){$hash->{clientid} = "?"};
    &LoeweTV_checkAccess($hash,$hash->{clientid},$hash->{fcid});
    if ($hash->{status} eq "Accepted") {&LoeweTV_sendRequest($hash,$action,$RCkey);}
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Get()";
    return undef,
}

sub LoeweTV_hostUp {
#my($hash{ip}, $hash{tvmac}, $hash{mac}) = @_;
my ( $hash, @a ) = @_;
my $ip = $a[0];
print "RUNNING PING: ";
if (ping(host=>$ip)) {$hash->{pingresult} = "up";print "ONLINE \n"}else{print "OFFLINE \n";Net::Wake::by_udp($hash->{ip},$hash->{tvmac});Net::Wake::by_udp($hash->{ip},$hash->{tvmac});Net::Wake::by_udp($hash->{ip},$hash->{tvmac});Net::Wake::by_udp($hash->{ip},$hash->{tvmac});Net::Wake::by_udp($hash->{ip},$hash->{tvmac});&LoeweTV_checkAccess($hash,$hash->{clientid},$hash->{fcid});&LoeweTV_sendRequest($hash,"InjectRCKey",22)};
return($hash->{pingresult});
}

sub LoeweTV_checkAccess {
print "RUNNING CHECKACCESS   \n";
#my($clientid,$fcid) = @_;
my ($hash,@a) = @_;
my $n = 1;
while (($hash->{status} ne "Accepted") and ($n<=3)) {$n=$n+1;&LoeweTV_sendRequest($hash,"RequestAccess",0,)};
print "RAN CHECKACCESS: $hash->{status}   \n";
return($hash->{status});
}

sub LoeweTV_sendRequest {
my($hash, $action, $RCkey) = @_;
print "STARTING SENDREQUEST: $action   \n";
if ( ! defined($action)){$action = "GetDeviceData"};
my ($message, $response, $request, $userAgent, $noob, $twig2, $content, $handlers);
our $result ="";
my $header = "<env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'>
<env:Body>\n";
my $action_xml1 = " <ltv:$action>\n";
my $header2 = " <ltv:fcid>".$hash->{fcid}."</ltv:fcid>
<ltv:ClientId>".$hash->{clientid}."</ltv:ClientId>\n";
my $action_xml2 = " \n </ltv:$action>";
my $footer = "\n</env:Body>
</env:Envelope>\n";
my %actions = (
        "RequestAccess" => [sub {$content='<ltv:DeviceType>Apple iPad</ltv:DeviceType>
<ltv:DeviceName>FHEM</ltv:DeviceName>
<ltv:DeviceUUID>'.$hash->{mac}.'</ltv:DeviceUUID>
<ltv:RequesterName>Assist Media App</ltv:RequesterName>'},
{'m:ClientId' => sub {$hash->{clientid} = $_->text_only('m:ClientId');},
'm:AccessStatus' => sub {$hash->{status} = $_->text_only('m:AccessStatus');},}
],
        "InjectRCKey",  => [sub {$content='<InputEventSequence>
<RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="press"/>
<RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="release"/>
</InputEventSequence>'}],
        "GetDeviceData"  => [sub {$content='';$result="m:MAC-Address"}],
        "GetChannelList"    => [sub {$content="<ltv:ChannelListView>".$RCkey."</ltv:ChannelListView>
<ltv:QueryParameters>
<ltv:Range startIndex='".$ARGV[4]."' maxItems='9999'/>
<ltv:OrderField field='userChannelNumber' type='ascending'/>
</ltv:QueryParameters>";$result="m:GetChannelListResponse"}],
"GetListOfChannelLists" => [sub {$content="<ltv:QueryParameters>
<ltv:Range startIndex='".$RCkey."' maxItems='9999'/>
<ltv:OrderField field='userChannelNumber' type='ascending'/>
</ltv:QueryParameters>";$result="m:ResultItemChannelLists"}],
"GetMediaItem"    => [sub {$content='<MediaItemReference mediaItemUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
"GetMediaEvent"    => [sub {$content='<MediaEventReference mediaEventUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
"GetChannelInfo" => [sub {$content=""}],
"GetCurrentPlayback"    => [sub {$content='';},
{"m:Locator" => sub {$hash->{lastchunk} = $_->text_only();},}
],
"GetCurrentEvent"    => [sub {$content="<ltv:Player>0</ltv:Player>";},
{"m:Name" => sub {$hash->{curevent}[0] = $_->text("m:Name");},
"m:ExtendedInfo" => sub {$hash->{curevent}[1] = $_->text("m:ExtendenInfo");},
"m:Locator" => sub {$hash->{curlocator} = $_->text_only("m:Locator");}},
],
"GetNextEvent"    => [sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetNextEventResponse"}],
"SetActionField"    => [sub {$content="<ltv:InputText>".$RCkey."</ltv:InputText>";$result="m:Result"}],
"SetVolume"    => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
"GetVolume"    => [sub {$content="";$result="m:Value"}],
"SetMute"    => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
"GetMute"    => [sub {$content="";$result="m:Value"}],
"GetDRPlusArchive" => [sub {$content="<ltv:QueryParameters>
<ltv:Range startIndex='".$RCkey."' maxItems='1000'/>
<ltv:OrderField field='userChannelNumber' type='ascending'/>
</ltv:QueryParameters>";$result="ltv:ResultItemDRPlusFragment"}],
    );
if ($actions{$action}[0]) {$actions{$action}[0]->();$handlers=$actions{$action}[1];} else {print "Unknown action: $action\n";};
$message = $header.$action_xml1.$header2.$content.$action_xml2.$footer;
$request = HTTP::Request->new(POST => 'http://'.$hash->{ip}.':905/loewe_tablet_0001');
$userAgent = LWP::UserAgent->new(agent => 'Assist Media/23 CFNetwork/808 Darwin/16.0.0');
$request->header('Accept' => '*/*');
$request->header('Accept-Encoding' => 'gzip, deflate');
$request->header('Accept-Language' => 'de-de');
$request->header('Connection' => 'keep-alive');
$request->header('SOAPAction' => $action);
$request->content_type("application/soap+xml; charset=utf-8");
$request->content($message);
$response = $userAgent->request($request);
$noob = $response->content;
$twig2 = XML::Twig->new(twig_handlers => $handlers,keep_encoding => 1)->parse($noob);
if($response->code == 200) {
$hash->{connectsuccess} = "true";
$hash->{lastresponse} = $response->content;
}
else {
$hash->{connectsuccess} = "false";
$hash->{lastresponse} = $response->error_as_HTML;
}
if($hash->{action} eq "RequestAccess"){return($hash->{status})}else{return($hash->{status})};
}

1;


=pod
=item device
=item summary control for Loewe TV devices via network connection
=item summary_DE Steuerung von Loewe TV Ger&auml;ten &uuml;ber das Netzwerk
=begin html

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html

=begin html_DE

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html_DE

=cut
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 07 September 2017, 05:41:18
Und warum nimmst Du get? Dafür ist doch set da. Mit set sendest Du Daten/Befehle an das Endgerät und mit get holst Du Informationen vom Endgerät.


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 September 2017, 09:49:32
Das war designbedingt erstmal einfacher, da im Ausgangs-Skript nicht zwischen Get/Set unterschieden wurde, am Ende wurden ja nur Befehle an den TV gesendet. Wird aber jetzt geändert  8)

Folgende Fragen:
1. Wie implementiere ich, dass FHEM anzeigt, ob der TV online (nur LAN) ist, bzw. an ist (Programm wird angezeigt)? Wie ich die Infos vom TV kriege weiß ich, aber wie teile ich das FHEM mit? Kommt hier Pollen ins Spiel?
2. Wie implementiere ich, dass FHEM darüberhinaus einen "erweiterten Status" anzeigt, d.h. welches Programm wird angezeigt, welcher Film läuft? Wie oben: Ich weiß, wie ich es vom TV kriege, aber wie teile ich das FHEM mit.

Besten Dank!
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 07 September 2017, 10:39:36
Kurz als Anmerkung
Ich helfe gerne und werde Dir auch sicherlich weiter hier helfen, aber glaube mir es nützt Dir nichts wenn Du nicht wenigstens Dir das Developer Guide durch liest.


Nun zu Deinen Fragen. Die ja eigentlich einfach sein sollte. Zu mindest in der theoretischen Beantwortung.
Mit Readings. Alle Zustande eines Gerätes werden in FHEM mit Hilfe von Readings da gestellt.
Du musst also die Informationen Du Dein Gerät Dir (von alleine = push, über Zwang = pollen) liefert aufarbeiten und dann als sinnvolle Reading darstellen.

Liefert das Gerät denn Informationen als Response zum Beispiel nach jedem Schaltbefehl? Kannst Du allgemeine Informationen durch eine Request Anforderung abrufen?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 September 2017, 12:52:51
Zu meiner Verteidigung: ich hab das Developer Wiki durchgelesen und ausgedruckt. Leider bin ich damit alleine nicht zu etwas gekommen was funktioniert hat.

Readings, ok, dann werd ich mich da schlau machen.

Das Gerät liefert immer Antworten (meist sinnvoll) zurück, die von einer Bestätigung bis zu allgemeinen Infos reichen.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 07 September 2017, 13:17:49
Wir können gerne zusammen schauen. Wichtig ist erstmal das Du ein allgemeines Konstrukt auf baust.
Nicht alles in eine Routine bauen sondern versuchen sinnvoll auf mehrere kleine zu verteilen.

Ich gehe davon aus das der Fernsehr nicht von sich aus die Daten liefert sondern nur beim absetzen eines Befehls als Response etwas kommt.

Kannst Du einen allgemeinen Befehl absetzen wo Du eine relativ große Anzahl von Daten bekommst? Also kein schalte mal um oder so, sondern he wie geht es Dir. Oder stell Dich mal vor wo Du Daten geliefert bekommst wie Modell Firmware aktueller Sender,aktuelles Volume und so.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 07 September 2017, 15:19:12
Kannst Du mir etwas bei Deinem Code helfen?

{"m:Locator" => sub {$hash->{lastchunk} = $_->text_only();},}

$hash->{lastchunk} ist das der $hash von FHEM? Und sehe ich das richtig. Du schreibst den Wert von ' $_->text_only() ' nach $hash->{lastchunk} ??

Wäre dann folgendes korrekt


'm:AccessStatus' => sub {readingsSingleUpdate($name,'state',"$_->text_only('m:AccessStatus'",1);}


Schreibe den Wert ' $_->text_only('m:AccessStatus ' als Reading in state. Hierzu wird eine Funktion aufgerufen.


Ich versuche mich gerade in Deinen Code ein zu arbeiten. Allerdings muß ich gestehen das ich Ihn so sehr schlecht lesen kann. Daher habe ich mir erlaubt Ihn zu entzerren und Lesefreundlich zu machen. Hoffe ist ok.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 07 September 2017, 15:24:41
Hier mal eine Version zum testen wenn Du magst.
Kann sein das er noch so einiges an meckert, wäre super wenn Du das dann bitte hier einstellen würdest. Solltest Du lieber alleine weiter machen wollen und nur Fragen stellen wollen ist das auch ok. Aber bitte Bescheid geben. Nicht das ich umsonst weiter mache   ;D


package main;

use strict;
use warnings;


my $missingModul = "";
eval "use JSON;1" or $missingModul .= "JSON ";
eval "use LWP::UserAgent;1" or $missingModul .= "LWP::UserAgent ";
eval "use HTTP::Request::Common;1" or $missingModul .= "HTTP::Request::Common ";
eval "use XML::Twig;1" or $missingModul .= "XML::Twig ";
#use Net::Address::Ethernet;
#require Net::Address::Ethernet;
#Net::Address::Ethernet->import(get_address);
eval "use Net::Ping::External qw(ping);1" or $missingModul .= "Net::Ping::External ";
eval "use Net::Wake;1" or $missingModul .= "Net::Wake;1 ";
use Data::Dumper::Simple;





# Declare functions
sub LoeweTV_Define($$);
sub LoeweTV_Undef($$);
sub LoeweTV_Initialize($);
sub LoeweTV_Get($@);
sub LoeweTV_Set($@);
sub LoeweTV_hostUp($);
sub LoeweTV_checkAccess($);
sub LoeweTV_sendRequest($$$);




sub LoeweTV_Initialize($) {
    my ($hash) = @_;
   
    #$hash->{GetFn}      = "LoeweTV_Get";
    $hash->{SetFn}      = "LoeweTV_Set";
    $hash->{DefFn}      = "LoeweTV_Define";
    $hash->{UndefFn}    = "LoeweTV_Undef";

    $hash->{AttrList}   = "ip " .
                        "tvmac " .
                        "action " .
                        "RCkey " .
                        "clientid " .
                        "fcid " .
                        "status:accepted,Pending,Denied,undef " .
                        "connectsuccess:true,false " .
                        "pingresult:down,up " .
                        "mac " .
                        "lastersponse " .
                        "lastchunk " .
                        "volstate " .
                        "mutstate:0,1 " .
                        "curlocator " .
                        "curevent " .
                        "nextevent " .
                        $readingFnAttributes;
}

sub LoeweTV_Define($$) {

    my ( $hash, $def ) = @_;
   
    my @a               = split( "[ \t][ \t]*", $def );

   
    return "too few parameters: define <NAME> LoeweTV <HOST> <TV-MAC> <FC-ID>" if( @a != 5 ) ;
    return "Cannot define Loewe device. Perl modul ${missingModul}is missing." if ( $missingModul );

   
   
   
    my $name            = $hash->{NAME};
    my $host            = $a[2];
    my $tvmac           = $a[3];
    my $fcid            = $a[4];
   
   
    $fcid               = 1234 if($fcid = undef);
   
    $hash->{HOST}       = $host;
    $hash->{TVMAC}      = $tvmac;
    $hash->{FCID}       = $fcid;
    #$hash->{MAC}        = "";
    $hash->{CLIENTID}   = "?";
    #$hash->{STATUS}     = "Denied";
   
   
    Log3 $name, 3, "LoeweTV $name: defined LoeweTV device";
   
    $modules{LoeweTV}{defptr}{HOST} = $hash;
    readingsSingleUpdate($hash,'state','denied',1);
   
    return undef;
}

sub LoeweTV_Undef($$) {

    my ( $hash, $arg ) = @_;


    #RemoveInternalTimer($hash);
    delete $modules{LoeweTV}{defptr}{HOST} if( defined($modules{GardenaSmartBridge}{defptr}{HOST}) );

    return undef;
}

sub LoeweTV_Set($@) {
   
    my ($hash, $name, $cmd, @args) = @_;
    my ($arg, @params) = @args;

   
    if( lc $cmd eq 'setactionfield' ) {

    } elsif( lc $cmd eq 'setvolume' ) {
   
    } elsif( lc $cmd eq 'setmute' ) {
   
    } elsif( lc $cmd eq '' ) {
   
    } elsif( lc $cmd eq '' ) {
   
   
    } elsif( lc $cmd eq '' ) {
   
   
    } elsif( lc $cmd eq '' ) {
   
   
    } else {
   
        my $list    = 'SetActionField SetVolume:slider,0,1,100 SetMute:on,off';
       
        return "Unknown argument $cmd, choose one of $list";
    }
   
    #my $name = $hash->{NAME};
    #print "LoeweSet was executed!";
    #print Dumper $hash;
    #print $cmd;
    #print @args;
   
   
    $hash->{helper}{RCkey} = "" if( not defined $hash->{helper}{RCkey} );
   
    $hash->{helper}{fcid} = "1234" if( not defined $hash->{helper}{fcid} );
   
    LoeweTV_hostUp($hash);
   
   
   
   
   
   
   
   
   
    if (! defined $hash->{CLIENTID}){$hash->{CLIENTID} = "?"};
   
    &LoeweTV_checkAccess($hash,$hash->{CLIENTID},$hash->{FCID});
   
    if ($hash->{status} eq "accepted") {&LoeweTV_sendRequest($hash,$action,$RCkey);}
   
   
   
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Set()";
    return undef;
}

# sub LoeweTV_Get($@) {
#     my ( $hash, $name, $opt, @args ) = @_;
#     print Dumper $hash;
#     print Dumper $opt;
#     print Dumper @args;
#     my $action = $opt;
#     my $RCkey = $args[0];
#     if ( ! defined($action)){$action = "GetDeviceData"};
#     #$hash->{action} = $action;
#     #$hash->{RCkey} = $args[0];
#     #$hash->{action} = $a[0];
#     #$hash->{RCkey} = $a[1];
#     #$hash->{action} = "GetDeviceData";
#     #$hash->{RCkey} = "";
#     print "RUNNING SETKEY   \n";
#     if (! defined $hash->{RCkey}){$hash->{RCkey} = ""};
#     if (! defined $hash->{FCID}){$hash->{FCID} = "1234"};
#     &LoeweTV_hostUp($hash,$hash->{ip},$hash->{tvmac},$hash->{mac});
#     if (! defined $hash->{CLIENTID}){$hash->{CLIENTID} = "?"};
#     &LoeweTV_checkAccess($hash,$hash->{CLIENTID},$hash->{FCID});
#     if ($hash->{status} eq "accepted") {&LoeweTV_sendRequest($hash,$action,$RCkey);}
#     Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Get()";
#     return undef,
# }

sub LoeweTV_hostUp($) {

    my $hash        = shift;
   
    my $host        = $hash->{HOST};
    my $tvmac       = $hash->{TVMAC};

    print "RUNNING PING: ";
   
    if (ping(host=>$host)) {
        $hash->{helper}{pingresult} = "up";print "ONLINE \n"
       
    } else {
   
        print "OFFLINE \n";
        ##### Wieso so oft???
        # by_udp($host,$tvmac)    sollte das nicht ausreichen??
        Net::Wake::by_udp($host,$tvmac);
        Net::Wake::by_udp($host,$tvmac);
        Net::Wake::by_udp($host,$tvmac);
        Net::Wake::by_udp($host,$tvmac);
        Net::Wake::by_udp($host,$tvmac);
       
        LoeweTV_checkAccess($hash,$hash->{CLIENTID},$hash->{FCID});
        LoeweTV_sendRequest($hash,"InjectRCKey",22);
    }
   
    return($hash->{helper}{pingresult});
}

sub LoeweTV_checkAccess($) {

    my ($hash)      = shift;
    my $name        = $hash->{NAME};
    my $n           = 1;
   
   
    while ((ReadingsVal($name,'state','denied') ne "accepted") and ($n<=3)) {
   
        $n=$n+1;
        LoeweTV_sendRequest($hash,"RequestAccess",0)
    };
   
   
   
    print "run CHECKACCESS: ReadingsVal($name,'state','denied')   \n";
   
   
    return(ReadingsVal($name,'state','denied'));
   
   
    }

sub LoeweTV_sendRequest($$$) {

    my($hash, $action, $RCkey)  = @_;
   
    my $name                    = $hash->{NAME};
   

    print "STARTING SENDREQUEST: $action   \n";
   
    $action = "GetDeviceData" if( ! defined($action));
   
    my ($message, $response, $request, $userAgent, $noob, $twig2, $content, $handlers);
   
    our $result ="";
   
    my $header = "<env:Envelope
        xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'
        xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'><env:Body>\n";
   
    my $action_xml1 = "<ltv:$action>\n";
   
    my $header2 = "<ltv:fcid>".$hash->{FCID}."</ltv:fcid>
            <ltv:ClientId>".$hash->{CLIENTID}."</ltv:ClientId>\n";

    my $action_xml2 = "\n</ltv:$action>";
   
    my $footer = "\n</env:Body></env:Envelope>\n";
   
   
    my %actions = (
            "RequestAccess"         =>  [sub {$content='<ltv:DeviceType>Apple iPad</ltv:DeviceType>
                                            <ltv:DeviceName>FHEM</ltv:DeviceName>
                                            <ltv:DeviceUUID>'.$hash->{mac}.'</ltv:DeviceUUID>
                                            <ltv:RequesterName>Assist Media App</ltv:RequesterName>'},
                                            {'m:ClientId' => sub {$hash->{CLIENTID} = $_->text_only('m:ClientId');},
                                            'm:AccessStatus' => sub {readingsSingleUpdate($name,'state',"$_->text_only('m:AccessStatus'",1);},}
                                        ],
                                   
            "InjectRCKey"           =>  [sub {$content='<InputEventSequence>
                                            <RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="press"/>
                                            <RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="release"/>
                                            </InputEventSequence>'}],
                                       
            "GetDeviceData"         =>  [sub {$content='';$result="m:MAC-Address"}],
           
            "GetChannelList"        =>  [sub {$content="<ltv:ChannelListView>".$RCkey."</ltv:ChannelListView>
                                            <ltv:QueryParameters>
                                            <ltv:Range startIndex='".$ARGV[4]."' maxItems='9999'/>
                                            <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                            </ltv:QueryParameters>";$result="m:GetChannelListResponse"}
                                        ],
                                       
            "GetListOfChannelLists" =>  [sub {$content="<ltv:QueryParameters>
                                            <ltv:Range startIndex='".$RCkey."' maxItems='9999'/>
                                            <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                            </ltv:QueryParameters>";$result="m:ResultItemChannelLists"}
                                        ],
                                       
            "GetMediaItem"          =>  [sub {$content='<MediaItemReference mediaItemUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
           
            "GetMediaEvent"         =>  [sub {$content='<MediaEventReference mediaEventUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
           
            "GetChannelInfo"        =>  [sub {$content=""}],
           
            "GetCurrentPlayback"    =>  [sub {$content='';},
                                            {"m:Locator" => sub {$hash->{lastchunk} = $_->text_only();},}
                                        ],
                                       
            "GetCurrentEvent"       =>  [sub {$content="<ltv:Player>0</ltv:Player>";},
                                            {"m:Name" => sub {$hash->{curevent}[0] = $_->text("m:Name");},
                                            "m:ExtendedInfo" => sub {$hash->{curevent}[1] = $_->text("m:ExtendenInfo");},
                                            "m:Locator" => sub {$hash->{curlocator} = $_->text_only("m:Locator");}},
                                        ],
                                       
            "GetNextEvent"          => [sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetNextEventResponse"}],
           
            "SetActionField"        => [sub {$content="<ltv:InputText>".$RCkey."</ltv:InputText>";$result="m:Result"}],
           
            "SetVolume"             => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
           
            "GetVolume"             => [sub {$content="";$result="m:Value"}],
           
            "SetMute"               => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
           
            "GetMute"               => [sub {$content="";$result="m:Value"}],
           
            "GetDRPlusArchive"      => [sub {$content="<ltv:QueryParameters>
                                            <ltv:Range startIndex='".$RCkey."' maxItems='1000'/>
                                            <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                            </ltv:QueryParameters>";$result="ltv:ResultItemDRPlusFragment"}
                                        ],
    );


    if ($actions{$action}[0]) {
   
        $actions{$action}[0]->();
        $handlers=$actions{$action}[1];
   
    } else {
        print "Unknown action: $action\n";
    };

    # Aufbau der Messages
    $message = $header.$action_xml1.$header2.$content.$action_xml2.$footer;
   
   
    # Aufbau der HTTP Verbindung
    $request = HTTP::Request->new(POST => 'http://'.$hash->{ip}.':905/loewe_tablet_0001');
   
    # Aufbau des Agents
    $userAgent = LWP::UserAgent->new(agent => 'Assist Media/23 CFNetwork/808 Darwin/16.0.0');
   
    Aufbau des Headers
    $request->header('Accept' => '*/*');
    $request->header('Accept-Encoding' => 'gzip, deflate');
    $request->header('Accept-Language' => 'de-de');
    $request->header('Connection' => 'keep-alive');
   
    $request->header('SOAPAction' => $action);
   
    # !!!
    $request->content_type("application/soap+xml; charset=utf-8");
   
    # ???
    $request->content($message);
    $response = $userAgent->request($request);
   
   
    $noob = $response->content;
   
   
   
   
   
   
    $twig2 = XML::Twig->new(twig_handlers => $handlers,keep_encoding => 1)->parse($noob);
   
   
   
   
    if($response->code == 200) {
        $hash->{connectsuccess} = "true";
        $hash->{lastresponse} = $response->content;
   
    } else {
        $hash->{connectsuccess} = "false";
        $hash->{lastresponse} = $response->error_as_HTML;
    }
   
    if($hash->{action} eq "RequestAccess"){
        return($hash->{status})
    }else{
        return($hash->{status})
    };
}

1;


=pod
=item device
=item summary control for Loewe TV devices via network connection
=item summary_DE Steuerung von Loewe TV Ger&auml;ten &uuml;ber das Netzwerk
=begin html

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html

=begin html_DE

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html_DE

=cut
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 September 2017, 16:14:49
Also die Funktion "text_only" kommt von XML::Twig und entnimmt Werte aus XML/SOap.
Diese Rückgabe-Werte hab ich dann nach "lastchunk" geschoben. Das macht z. B. Bei einfachen Dingen wie "GetVolume" Sinn, es gibt nur 1 Wert zurück.
Das Ganze ist nur vorläufig, ich wusste jetzt auch nicht wohin mit dem Wert sonst, wenn nicht in den Geräte-Hash.

Ah, ok, du hast die Subroutine gändert, damit sie gleich den Wert in ein Reading schiebt? Das könnte so klappen. 

Eine einfache Funktion für "Hallo, ich bin der Fernseher" ist "GetDeviceData". Die gibt Namen, Mac, Status, Sw-Version etc. zurück.

Werde deinen Code sehr gerne heut Abend testen.

Grüße!


Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 September 2017, 16:18:12
Der TV sendet nur an FHEM oder irgendwen, wenn er vorher angefragt wurde.
Es gibt zwar ein Subscription Feature, das ist mir aber aktuell zu hoch. Hierbei soll der TV sich einmal beim SOap Server (!) registrieren und sendet dann ungefragt Antworten, wenn z. B. mit der normalen Fernbedienung geschalten wurde.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 07 September 2017, 16:30:36
Zitat von: der.einstein am 07 September 2017, 16:18:12
Der TV sendet nur an FHEM oder irgendwen, wenn er vorher angefragt wurde.
Es gibt zwar ein Subscription Feature, das ist mir aber aktuell zu hoch. Hierbei soll der TV sich einmal beim SOap Server (!) registrieren und sendet dann ungefragt Antworten, wenn z. B. mit der normalen Fernbedienung geschalten wurde.

Gesendet von meinem LG-D855 mit Tapatalk

Na das ist doch ne coole Sache  ;D
Ich werde sehen das ich dann heute Abend noch bisschen was anpassen jetzt wo ich weiß was Du da willst.
Um beim Beispiel zu bleiben. Wenn diese Funktion bei einem getVolume einen Wert zurück gibt, dann ist das doch ein Wert der weiter verarbeitet wird und an den Fernsehr gesendet wird, oder? Das ist ja noch nicht das tatsächliche Volume vom Fernsehr. Wozu im Hash parken und nicht in eine einfache Variable?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 September 2017, 16:47:37
Achso, naja eigentlich passiert beides.
Bei meinem ersten Skript, dass ich hochgeldane habe sende ich den "GetVolume" Befehl ab (ohne Argument sozusagen).
Dann bekommt man, wenn der TV den Befehl akzeptiert, was er sollte, eine Antwort zurück.
Bei mir war das dann "220000" --> das ist die Lautstärke.
Mit "SetVolume 110000" konnte ich die Lautsstärke leiser machen und mit "SetVolume 220000" wieder lauter. --> hier gibt es als Antwort "0".
Ähnlich ist es bei "GetMute" und "SetMute". Hier setzt bzw. erhält man "0" oder "1".
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 07 September 2017, 17:06:09
Und was genau soll 220000 sein? Eventuell 22 als Lautstärke?

Es geht ja darum Informationen des Gerätes in Readings zu schreiben. Da hilft die 220000 erstmal wenig, wir müssen das zur Lautstärke des Fernsehrs zuordnen können.

Aber davon mal ganz ab musst Du mir bitte bei der Reihenfolge helfen.
Angefangen mit dem was wir tatsächlich brauchen um ein Gespräch an zu fangen bis dahin wo wir Informationen bekommen die wir auswerten können.


Also, was brauchen wir um einen ersten Kontakt mit dem Fernsehr auf zu bauen?
Beispiel: TV IP, TV MAC
Was bekommen wir zurück nach unserer ersten Anfrage und brauchen wir die Info?
Beispiel: Token, oder eine ID die wir immer für die Verbindung brauchen.

Als zweites rufen alle wichtigen Informationen für die Readings ab. Modell, Firmware, aktueller Sender, aktuelles Volume, welcher Eingang (SCART) und so weiter.

Wir müssen also eine Kommunikationsroutine aufbauen bevor wir überhaupt irgendwas schalten wollen. Denn erstmal ist interessant  wie der aktuelle Status ist bevor wir was schalten. Wenn schon Volume 12 ist müssen wir es ja nicht einstellen, also als set senden.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 September 2017, 18:44:58
Also,
Zunächst muss man die IP des TV wissen,
Wenn er in dem Moment an ist, kann er seine MAC selbst melden (GetDeviceData, benötigt kein Handshake).
Mit IP und MAC muss ein RequestAccess gesendet werden (inkl. FHEM-MAC), dies 3 mal: 1. Bekanntmachung von FHEM 2. Handshake 3. Einholen der Antwort mit Rückgabewert "Accepted". Hier erhält man eine ClientId zurück, diese sollte fortan immer mit übertragen werden.
Von da an kann ich alle anderen Befehle senden. Es gibt immer einen Rückgabewert. Dieser ist eine Soap-Message. Ist es nur 1 Wert, d. H. Scalar, ist es kein Problem den zu extrahieren. Aber beim abfragen der Senderliste ist es aufwendiger.
Es gibt auch z. B. die Funktionen "GetCurrentPlayback", die mir anzeigt, was der TV grade macht (TV, Web, EPG) und "GetCurrentEvent", das mir die aktuelle Sendung auf dem Kanal anzeigt.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 September 2017, 19:41:55
Daneben ist vielleicht noch die "fcid" zu erwähnen.
Die kann man benutzen, um eine Session zu kennzeichnen. Ist nur dann relevant, wenn mehrere Geräte gleichzeitig den TV per SOap ansprechen. Z. B. dann, wenn ich die Senderliste Abfrage und über 100 Sender drin sind. Denn, der TV kann bis zu 100 Items (egal was) auf einmal schicken, sind es mehr, muss ich öfter abfragen. Bei den Sendern ist das noch zu umgehen, wer hat schon 100+ Sender in 1 Liste. Aber es kann interessant werden bei z. B. den Aufnahmen, da hab ich schon deutlich mehr.
Jedoch, sollte es ausreichen die fcid einmalig zu setzen und gut ist.

Bei der "ClientId" ist noch zu erwähnen, dass diese nur solange aufrecht erhalten bleibt, bis der TV sich dazu entscheidet diese zu "droppen". So steht's in der API. Das passiert eigentlich nur beim ein- und ausschalten des TV.

In der Praxis war es dann so, dass ich immer vorneweg ein RequestAccess geschickt habe, wenn er dann Accepted und die ClientId zurück gibt ist alles gut, ansonsten halt Access Accepted abwarten.

Danach kann der eigentliche Befehl gesendet werden.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 07 September 2017, 20:33:03
Siehst Du das sind die wichtigen und relevanten Informationen die wir brauchen. Bevor man überhaupt ans schalten denkt.  ;D
Ich versuche morgen mal eine Ablaufplan zu entwickeln damit wir beim Start an sie Informationen kommen und wie im laufenden Betrieb die Infos aktuell gehalten werden können.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 07 September 2017, 22:22:00
@der.einstein: Vielleicht als Anregung: Ich habe ein Modul für Blinkcameras entwickelt - das ein relativ ähnliches Problem löst.
Es gibt ein Token, dass nur begrenzt gültig ist und danach neu beim Server angefragt werden muss
Darin ist auch ein regelmässiges Polling von Statusinformationen (da kein Push vorhanden)
Ausserdem gibt es verschiedene Kommandos, die gesendet werden

Vielleicht hilft das um ein Grundgerüst für ein Loewe-Modul aufzubauen, die grundlegende Meachnik könnte helfen?

Das Modul wird hier diskutiert : https://forum.fhem.de/index.php/topic,59719.0.html (https://forum.fhem.de/index.php/topic,59719.0.html)
Die Quellen liegen hier: https://github.com/viegener/Telegram-fhem/tree/master/Blink (https://github.com/viegener/Telegram-fhem/tree/master/Blink) - Es ist nicht Teil der offiziellen auslieferung

Es geht dabei nur um das Grundgerüst - die grundsätzliche Anwendung erscheint mir aber strukturell aber ähnlich
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 September 2017, 22:57:18
@CoolTux:
- dein von dir gepostetes Script funktioniert bei mir nur nach ein paar Änderungen bis zum define, weiter komm ich leider nicht
- ich sende 4 mal das Wake-On-LAN Paket, weil es sein kann, dass wenn die LAN-Karte pennt, sie nicht jedes Paket mitbekommt, außerdem dauert es etwas, bis der TV online kommt --> ein wait würde es auch tun
- das "Accepted" als Antwort auf das "RequestAccess" kommt immer mit großem "A" an, nicht mit kleinem

@viegener:
- danke ich schau mir das Modul gerne an!

Mal als Lacher für alle: Habe für das Projekt hier angefangen Perl zu lernen, da ich sonst nur R und Shell-Script nutze. Dabei im Buch "Learning Perl" (The Lama Book) geschmökert. Darin steht, dass man am Ende des Buches in der Lage ist 150-zeilige Perl-Skripte zu schreiben und dies auf 95% der Perl-Skripte zutrifft  ;D
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 08 September 2017, 05:21:11
Zitat von: der.einstein am 07 September 2017, 22:57:18
@CoolTux:
- dein von dir gepostetes Script funktioniert bei mir nur nach ein paar Änderungen bis zum define, weiter komm ich leider nicht
- ich sende 4 mal das Wake-On-LAN Paket, weil es sein kann, dass wenn die LAN-Karte pennt, sie nicht jedes Paket mitbekommt, außerdem dauert es etwas, bis der TV online kommt --> ein wait würde es auch tun
- das "Accepted" als Antwort auf das "RequestAccess" kommt immer mit großem "A" an, nicht mit kleinem

Guten Morgen,

Es sollte ja auch erstmal noch nicht mehr tun. Mir fehlen ja noch Infos zum Kommunikationsablauf.
Kannst Du mir die Änderungen zukommen lassen? Wenn möglich bitte nur die Änderungen.


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 08 September 2017, 10:21:37
Habe etwas weiter gemacht.

Was habe ich gemacht, will ich hin?

Ich habe nun die Define so ergänzt das nach dem anlegen des Devices ein ping Check gemacht wird, dieser ping Check ist nicht blockierend, das ist wichtig. Nachdem der Check positiv verlaufen ist, der Fernsehr also erreichbar ist, gehe ich davon aus das ich ihn per GetDeviceData auch abfragen kann (ist das wirklich so?).

Wo will ich hin. Ich möchte nun nach dem ich ein GetDeviceData gemacht habe an die MAC des TV's kommen und diese nachträglich ins DEF schreiben. So das bei späteren Neustarts des TV's ich nun schon die IP und die MAC im Define stehen habe.
Immer Schritt für Schritt. Was ich nun brauche von Dir ist was am Ende im response drin steht. Dazu habe ich kleine Ausgaben eingebaut. Zu finden sind diese Ausgaben im FHEM Log.
Wichtig für mich wäre auch ob ich reponse überhaupt so auf die Art sauber an eine weitere Routine übergeben kann.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 08 September 2017, 10:22:41

package main;

use strict;
use warnings;


my $missingModul = "";
eval "use LWP::UserAgent;1" or $missingModul .= "LWP::UserAgent ";
eval "use HTTP::Request::Common;1" or $missingModul .= "HTTP::Request::Common ";
eval "use XML::Twig;1" or $missingModul .= "XML::Twig ";

use Blocking;




# Declare functions
sub LoeweTV_Define($$);
sub LoeweTV_Undef($$);
sub LoeweTV_Initialize($);
sub LoeweTV_Get($@);
sub LoeweTV_Set($@);
sub LoeweTV_WakeUp_Udp($@);
sub LoeweTV_CheckAccess($);
sub LoeweTV_SendRequest($$$);
sub LoeweTV_ResponseProcessing($$);
sub LoeweTV_WriteReadings($$);
sub LoeweTV_Presence($);
sub LoeweTV_PresenceRun($);
sub LoeweTV_PresenceDone($);
sub LoeweTV_PresenceAborted($);




sub LoeweTV_Initialize($) {
    my ($hash) = @_;
   
    #$hash->{GetFn}      = "LoeweTV_Get";
    $hash->{SetFn}      = "LoeweTV_Set";
    $hash->{DefFn}      = "LoeweTV_Define";
    $hash->{UndefFn}    = "LoeweTV_Undef";

    $hash->{AttrList}   =  "fhemMAC " .
                        "interval " .
                        #"ip " .
                        #"tvmac " .
                        #"action " .
                        #"RCkey " .
                        #"clientid " .
                        #"fcid " .
                        #"status:accepted,Pending,Denied,undef " .
                        #"connectsuccess:true,false " .
                        #"pingresult:down,up " .
                        #"lastersponse " .
                        #"lastchunk " .
                        #"volstate " .
                        #"mutstate:0,1 " .
                        #"curlocator " .
                        #"curevent " .
                        #"nextevent " .
                        $readingFnAttributes;
}

sub LoeweTV_Define($$) {

    my ( $hash, $def )  = @_;
   
    my @a               = split( "[ \t][ \t]*", $def );


    return "too few parameters: define <NAME> LoeweTV <HOST> <MAC-TV>" if( @a < 3 or @a > 4 );
    return "Cannot define Loewe device. Perl modul ${missingModul}is missing." if ( $missingModul );

   
   
   
    my $name            = $hash->{NAME};
    my $host            = $a[2];
   
    $hash->{HOST}       = $host;
    $hash->{FCID}       = 1234;
    $hash->{TVMAC}      = $a[3] if(defined($a[3]));
    $hash->{INTERVAL}   = 15;
   
   
    Log3 $name, 3, "LoeweTV $name: defined LoeweTV device";
   
    $modules{LoeweTV}{defptr}{HOST} = $hash;
    readingsSingleUpdate($hash,'state','initialized',1);
   
    LoeweTV_Presence($hash);
   
   
    if( $init_done ) {
        LoeweTV_Presence($hash);
        InternalTimer( gettimeofday()+5, "LoeweTV_FirstRun", $hash, 0 );
    } else {
        InternalTimer( gettimeofday()+15, "LoeweTV_Presence", $hash, 0 );
        InternalTimer( gettimeofday()+20, "LoeweTV_FirstRun", $hash, 0 );
    }
   
    return undef;
}

sub LoeweTV_Undef($$) {

    my ( $hash, $arg ) = @_;


    #RemoveInternalTimer($hash);
    delete $modules{LoeweTV}{defptr}{HOST} if( defined($modules{LoeweTV}{defptr}{HOST}) );

    return undef;
}

sub LoeweTV_Attr(@) {

    my ( $cmd, $name, $attrName, $attrVal ) = @_;
    my $hash = $defs{$name};
   
    my $orig = $attrVal;

   
    if( $attrName eq "disable" ) {
        if( $cmd eq "set" and $attrVal eq "1" ) {
            readingsSingleUpdate ( $hash, "state", "disabled", 1 );
            $hash->{PARTIAL} = '';
            Log3 $name, 3, "LoeweTV ($name) - disabled";
        }

        elsif( $cmd eq "del" ) {
            readingsSingleUpdate ( $hash, "state", "active", 1 );
            Log3 $name, 3, "LoeweTV ($name) - enabled";
        }
    }
   
    elsif( $attrName eq "disabledForIntervals" ) {
        if( $cmd eq "set" ) {
            Log3 $name, 3, "LoeweTV ($name) - enable disabledForIntervals";
            readingsSingleUpdate ( $hash, "state", "Unknown", 1 );
        }

        elsif( $cmd eq "del" ) {
            readingsSingleUpdate ( $hash, "state", "active", 1 );
            Log3 $name, 3, "LoeweTV ($name) - delete disabledForIntervals";
        }
    }
   
    elsif( $attrName eq "interval" ) {
        if( $cmd eq "set" ) {
            $hash->{INTERVAL}   = $attrVal;
            RemoveInternalTimer($hash);
            Log3 $name, 3, "LoeweTV ($name) - set interval: $attrVal";
            LoeweTV_InternalTimerGetDeviceData($hash);
        }

        elsif( $cmd eq "del" ) {
            $hash->{INTERVAL}   = 15;
            RemoveInternalTimer($hash);
            Log3 $name, 3, "LoeweTV ($name) - delete User interval and set default: 300";
            LoeweTV_InternalTimerGetDeviceData($hash);
        }
    }

    return undef;
}

sub LoeweTV_FirstRun($) {

    my $hash        = shift;
   
    my $name        = $hash->{NAME};
   
   
    if(ReadingsVal($name,'presence','absent') eq 'present') {
   
        LoeweTV_SendRequest($hash,'GetDeviceData',0);
       
    } else {
   
        readingsSingleUpdate($hash,'state','off',1);
    }
   
    InternalTimer( gettimeofday()+10, "LoeweTV_TimerStatusRequest", $hash, 1 );
}

sub LoeweTV_Set($@) {
   
    my ($hash, $name, $cmd, @args) = @_;
    my ($arg, @params) = @args;
   
    my ($action,$RCkey);

   
    if( lc $cmd eq 'setactionfield' ) {

    } elsif( lc $cmd eq 'setvolume' ) {
   
    } elsif( lc $cmd eq 'setmute' ) {
   
    } elsif( lc $cmd eq 'connect' ) {
   
    } elsif( lc $cmd eq '' ) {
   
   
    } elsif( lc $cmd eq '' ) {
   
   
    } elsif( lc $cmd eq '' ) {
   
   
    } else {
   
        my $list    = 'SetActionField SetVolume:slider,0,1,100 SetMute:on,off connect:noArg';
       
        return "Unknown argument $cmd, choose one of $list";
    }
   
   
#     $hash->{helper}{RCkey} = "" if( not defined $hash->{helper}{RCkey} );
#     
#     $hash->{helper}{fcid} = "1234" if( not defined $hash->{helper}{fcid} );
#     
#     LoeweTV_hostUp($hash);
#
#     
#     if (! defined $hash->{CLIENTID}){$hash->{CLIENTID} = "?"};
#     
#     LoeweTV_CheckAccess($hash,$hash->{CLIENTID},$hash->{FCID});
#     
#     if ($hash->{status} eq "accepted") {LoeweTV_SendRequest($hash,$action,$RCkey);}
   
   
   
    LoeweTV_SendRequest($hash,$action,$RCkey) if(ReadingsVal($name,'presence','absent') eq 'present');
   
   
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Set()";
    return undef;
}

sub LoeweTV_TimerStatusRequest($) {

### Hier kommen dann die Sachen rein welche alle x Sekunden ausfegührt werden um Infos zu erhalten
### presence zum Beispiel





}

# method to wake via lan, taken from Net::Wake package
sub LoeweTV_WakeUp_Udp($@) {

    my ($hash,$mac_addr,$host,$port) = @_;
    my $name  = $hash->{NAME};

    # use the discard service if $port not passed in
    if (!defined $port || $port !~ /^\d+$/ ) { $port = 9 }

    my $sock = new IO::Socket::INET(Proto=>'udp') or die "socket : $!";
    if(!$sock) {
        Log3 $name, 3, "LoeweTV ($name) - Can't create WOL socket";
        return 1;
    }
 
    my $ip_addr   = inet_aton($host);
    my $sock_addr = sockaddr_in($port, $ip_addr);
    $mac_addr     =~ s/://g;
    my $packet    = pack('C6H*', 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, $mac_addr x 16);

    setsockopt($sock, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt : $!";
    send($sock, $packet, 0, $sock_addr) or die "send : $!";
    close ($sock);

    return 1;
}

sub LoeweTV_CheckAccess($) {

    my ($hash)      = shift;
    my $name        = $hash->{NAME};
    my $n           = 1;
   
   
    while ((ReadingsVal($name,'state','denied') ne "accepted") and ($n<=3)) {
   
        $n=$n+1;
        LoeweTV_SendRequest($hash,"RequestAccess",0)
    };
   
   
   
    print "run CHECKACCESS: ReadingsVal($name,'state','denied')   \n";
   
   
    return(ReadingsVal($name,'state','denied'));
   
   
    }

sub LoeweTV_SendRequest($$$) {

    my($hash, $action, $RCkey)  = @_;
   
    my $name                    = $hash->{NAME};

    my ($message, $response, $request, $userAgent, $noob, $twig2, $content, $handlers);
    our $result ="";
    my %actions = (
        "RequestAccess"         =>  [sub {$content='<ltv:DeviceType>Apple iPad</ltv:DeviceType>
                                        <ltv:DeviceName>FHEM</ltv:DeviceName>
                                        <ltv:DeviceUUID>'.$hash->{mac}.'</ltv:DeviceUUID>
                                        <ltv:RequesterName>Assist Media App</ltv:RequesterName>'},
                                        {'m:ClientId' => sub {$hash->{CLIENTID} = $_->text_only('m:ClientId');},
                                        'm:AccessStatus' => sub {readingsSingleUpdate($name,'state',"$_->text_only('m:AccessStatus'",1);},}
                                    ],
                                   
        "InjectRCKey"           =>  [sub {$content='<InputEventSequence>
                                        <RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="press"/>
                                        <RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="release"/>
                                        </InputEventSequence>'}],
                                       
        "GetDeviceData"         =>  [sub {$content='';$result="m:MAC-Address"}],
           
        "GetChannelList"        =>  [sub {$content="<ltv:ChannelListView>".$RCkey."</ltv:ChannelListView>
                                        <ltv:QueryParameters>
                                        <ltv:Range startIndex='".$ARGV[4]."' maxItems='9999'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="m:GetChannelListResponse"}
                                    ],
                                       
        "GetListOfChannelLists" =>  [sub {$content="<ltv:QueryParameters>
                                        <ltv:Range startIndex='".$RCkey."' maxItems='9999'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="m:ResultItemChannelLists"}
                                    ],
                                       
        "GetMediaItem"          =>  [sub {$content='<MediaItemReference mediaItemUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
           
        "GetMediaEvent"         =>  [sub {$content='<MediaEventReference mediaEventUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
           
        "GetChannelInfo"        =>  [sub {$content=""}],
           
        "GetCurrentPlayback"    =>  [sub {$content='';},
                                        {"m:Locator" => sub {$hash->{lastchunk} = $_->text_only();},}
                                    ],
                                       
        "GetCurrentEvent"       =>  [sub {$content="<ltv:Player>0</ltv:Player>";},
                                        {"m:Name" => sub {$hash->{curevent}[0] = $_->text("m:Name");},
                                        "m:ExtendedInfo" => sub {$hash->{curevent}[1] = $_->text("m:ExtendenInfo");},
                                        "m:Locator" => sub {$hash->{curlocator} = $_->text_only("m:Locator");}},
                                    ],
                                       
        "GetNextEvent"          => [sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetNextEventResponse"}],
           
        "SetActionField"        => [sub {$content="<ltv:InputText>".$RCkey."</ltv:InputText>";$result="m:Result"}],
           
        "SetVolume"             => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
           
        "GetVolume"             => [sub {$content="";$result="m:Value"}],
           
        "SetMute"               => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
           
        "GetMute"               => [sub {$content="";$result="m:Value"}],
           
        "GetDRPlusArchive"      => [sub {$content="<ltv:QueryParameters>
                                        <ltv:Range startIndex='".$RCkey."' maxItems='1000'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="ltv:ResultItemDRPlusFragment"}
                                    ],
    );

   
    print "STARTING SENDREQUEST: $action   \n";
   
    #$action = "GetDeviceData" if( ! defined($action));
   
    my $header = "<env:Envelope
        xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'
        xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'><env:Body>\n";
   
    my $action_xml1 = "<ltv:$action>\n";
   
    my $header2 = "<ltv:fcid>".$hash->{FCID}."</ltv:fcid>
            <ltv:ClientId>".$hash->{CLIENTID}."</ltv:ClientId>\n";

    my $action_xml2 = "\n</ltv:$action>";
   
    my $footer = "\n</env:Body></env:Envelope>\n";
   
   



    if ($actions{$action}[0]) {
   
        $actions{$action}[0]->();
        $handlers=$actions{$action}[1];
   
    } else {
        print "Unknown action: $action\n";
    };

    # Aufbau der Messages
    $message = $header.$action_xml1.$header2.$content.$action_xml2.$footer;
   
   
    # Aufbau der HTTP Verbindung
    $request = HTTP::Request->new(POST => 'http://'.$hash->{ip}.':905/loewe_tablet_0001');
   
    # Aufbau des Agents
    $userAgent = LWP::UserAgent->new(agent => 'Assist Media/23 CFNetwork/808 Darwin/16.0.0');
   
    Aufbau des Headers
    $request->header('Accept' => '*/*');
    $request->header('Accept-Encoding' => 'gzip, deflate');
    $request->header('Accept-Language' => 'de-de');
    $request->header('Connection' => 'keep-alive');
   
    $request->header('SOAPAction' => $action);
   
    # !!!
    $request->content_type("application/soap+xml; charset=utf-8");
   
    # ???
    $request->content($message);
    $response = $userAgent->request($request);
   
   
    $noob = $response->content;
   
    $twig2 = XML::Twig->new(twig_handlers => $handlers,keep_encoding => 1)->parse($noob);
   
   
    LoeweTV_ResponseProcessing($hash,$response);
}
   
   
sub LoeweTV_ResponseProcessing($$) {
   
    my ($hash,$response)        = @_;
   
    my $name                    = $hash->{NAME};
   
    Log3 $name, 2, "Sub LoeweTV_PresenceRun ($name) - Response: $response->error_as_HTML";
    Log3 $name, 2, "Sub LoeweTV_PresenceRun ($name) - Response: $response->content";
   
    if($response->code == 200) {
        $hash->{connectsuccess} = "true";
        $hash->{lastresponse} = $response->content;
   
    } else {
        $hash->{connectsuccess} = "false";
        $hash->{lastresponse} = $response->error_as_HTML;
    }
   
    if($hash->{action} eq "RequestAccess"){
        return($hash->{status})
    }else{
        return($hash->{status})
    };
}

sub LoeweTV_WriteReadings($$) {




}

############ Presence Erkennung Begin #################
sub LoeweTV_Presence($) {

    my $hash    = shift;   
    my $name    = $hash->{NAME};
   
   
    $hash->{helper}{RUNNING_PID} = BlockingCall("LoeweTV_PresenceRun", $name.'|'.$hash->{HOST}, "LoeweTV_PresenceDone", 5, "LoeweTV_PresenceAborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}) );
}

sub LoeweTV_PresenceRun($) {

    my $string          = shift;
    my ($name, $host)   = split("\\|", $string);
   
    my $tmp;
    my $response;

   
    $tmp = qx(ping -c 3 -w 2 $host 2>&1);

    if(defined($tmp) and $tmp ne "") {
   
        chomp $tmp;
        Log3 $name, 5, "LoeweTV ($name) - ping command returned with output:\n$tmp";
        $response = "$name|".(($tmp =~ /\d+ [Bb]ytes (from|von)/ and not $tmp =~ /[Uu]nreachable/) ? "present" : "absent");
   
    } else {
   
        $response = "$name|Could not execute ping command";
    }
   
    Log3 $name, 4, "Sub LoeweTV_PresenceRun ($name) - Sub finish, Call LoeweTV_PresenceDone";
    return $response;
}

sub LoeweTV_PresenceDone($) {

    my ($string)            = @_;
   
    my ($name,$response)    = split("\\|",$string);
    my $hash                = $defs{$name};
   
   
    delete($hash->{helper}{RUNNING_PID});
   
    Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Der Helper ist disabled. Daher wird hier abgebrochen" if($hash->{helper}{DISABLED});
    return if($hash->{helper}{DISABLED});
   
    readingsSingleUpdate($hash,'presence',$response,1);
   
    Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Abschluss!";
}

sub LoeweTV_PresenceAborted($) {

    my ($hash)  = @_;
    my $name    = $hash->{NAME};

   
    delete($hash->{helper}{RUNNING_PID});
    readingsSingleUpdate($hash,'presence','timedout', 1);
   
    Log3 $name, 4, "Sub LoeweTV_PresenceAborted ($name) - The BlockingCall Process terminated unexpectedly. Timedout!";
}

####### Presence Erkennung Ende ############








1;


=pod
=item device
=item summary control for Loewe TV devices via network connection
=item summary_DE Steuerung von Loewe TV Ger&auml;ten &uuml;ber das Netzwerk
=begin html

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html

=begin html_DE

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html_DE

=cut
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 08 September 2017, 12:11:11
Habe nun doch Lust gefunden die fehlenden Packete auf meinem Testsystem nach zu installieren. Jetzt kann ich zu mindest das laden testen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 08 September 2017, 12:55:08
Sieht doch schon mal nach was aus
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 08 September 2017, 23:40:47
Super, das ist schon etwas mehr entwickelt [emoji16]

Bzgl. der Request "GetDeviceData" sagt die API, dass der TV hier auch antwortet, ohne das vorher ein Handshake gemacht wurde. Das ist als Service Discovery gedacht. Die ClientId muss in dem Fall "?" sein, d. h. Sie ist nicht gesetzt.

Wenn du jetzt in die Sub LoeweTV_SendRequest in die actions schaust, wirst du bei "GetDeviceData" sehen, dass der Wert, der im XML in m:Mac-Address steht in die Variable $results geschrieben wird. Das passiert dann weiter unten wenn das $twig aufgebaut wird (heißt so komisch, wegen des Moduls). Diese Funktion übernehmen die $handlers.

Ich konnte dann diesen Wert (die MAC) in den $hash schreiben, es kann aber sein, dass er in dem jetzigen Fall woanders hin soll, das sollte aber gehen.

Bei der Definition der %actions habe ich 3 Dinge pro Action: 1. Name des Requests 2. Definition der $handlers (was wird geparsed) 3. Code, der nach dem Parsen ausgeführt werden soll.
So hat man pro action unterschiedliche Prozessierungen. Zugriff auf diese Dinge dann mit $actions{$action}[0-2] 

Hoffe, das hilft.

Ich bin (leider) am WE außer Haus Kurzurlaub, sodass ich nichts testen kann. Geht erst Sonntagabend wieder.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 09 September 2017, 10:05:29
Gibt es das Modul schon irgendwo auf github, dann könnte ich auch beitragen oder zumindest leichter testen?

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 09 September 2017, 10:36:36
Hast Du denn einen Loewe Fernsehr?
Dann Stelle ich das Modul sehr gerne auf GitHub zur Verfügung.

Was ich oder wir brauchen ist erstmal die erste Antwort nach dem GetDeviceData wie genau die Ausschaut und welche Daten da kommen. Ziel sind erste Readings zum Device aber vor allem extraieren der MAC und damit verbunden das neu schreiben der $hash->{DEF}
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 09 September 2017, 10:47:23
Ja ich habe einen Loewe-Fernseher und hatte deshalb mal das Protokoll ein wenig reverse engineered - Da Loewe mir aber vor 2 Jahren die API-Beschreibung nicht geben wollte, habe ich dann aufgehört. Für mich sind nicht die einfachen Fernbedienungsbefehle interessant, sondern es wäre schön, wenn man von remote Aufzeichnungen starten könnte.

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 09 September 2017, 11:04:01
Ich stelle im laufe des WE's das Projekt online.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 09 September 2017, 11:45:36
Projekt steht nun auf GitHub

https://github.com/LeonGaultier/fhem-LoeweTV





Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 09 September 2017, 16:04:17
Finde gut, dass es auf GitHub steht.

Zum "GetDeviceData": wie gesagt macht das was du möchtest bereits das Script in Post 5-7 (oder so).
Außerdem kann man dem PDF mit der Loewe API aus Post 2 sowohl jeweils ein Beispiel zum Request für jeden Befehl, als auch der Antwort für jeden Befehl entnehmen.

Ich würde daher vorschlagen, dort mal nachzusehen.

@viegener: Programmierung einer Aufzeichnung ist möglich. Dafür brauchst du aber die Startzeit nach UTC, die Länge der Sendung, sowie den Sender. Die Schwierigkeit beim Sender ist, dass man nicht sagen kann nimm ZDF auf. Vielmehr hat ja der TV Senderlisten (min. eine). In der trägt jeder Sender eine ID (Mediathek ID), über diese kann der Sender dann referenziert werden.
Um das zu erreichen was du, glaube ich, willst, müsste man daher erstmal die Senderliste auslesen und abspeichern in FHEM. Dann in FHEM quasi beim Auswählen von "ZDF" dem TV die jeweilige ID aus der Senderliste schicken.
Ein Vorgehen zum Parsen der Senderliste habe ich bereits.

Grüße

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 09 September 2017, 18:35:23
Hier der Auszug aus der API für GetDeviceData:


Retrieving Device Information 
This call allows the client to retrieve additional information from the TV regarding its configuration. 
GetDeviceData can be used for discovery. The value of element ClientId can be left empty, there is no
need to call RequestAccess first.
<ltv:GetDeviceData>
  <ltv:fcid>8138942</ltv:fcid>
  <ltv:ClientId>LRemoteClient-0-1314017969</ltv:ClientId>
</ltv:GetDeviceData>
might yield the following response:
<ltv:GetDeviceDataResponse>
  <ltv:fcid>8138942</ltv:fcid>
  <ltv:ClientId>LRemoteClient-0-1314017969</ltv:ClientId>
  <ltv:Chassis>SL150</ltv:Chassis>
  <ltv:SW-Version>PV7.2.1</ltv:SW-Version>
  <ltv:MAC-Address>00:0a:0b:0c:0d:0e</ltv:MAC-Address>
  <ltv:MAC-Address-LAN>34:f6:2d:ff:ff:ff</ltv:MAC-Address-LAN>
  <ltv:MAC-Address-WLAN/>
  <ltv:Location>Germany</ltv:Location>
  <ltv:NetworkHostName>hl1</ltv:NetworkHostName>
  <ltv:StreamingServerName>Remote TV</ltv:StreamingServerName>
  <ltv:OwnVolumeId>DLN1://2fd9d370-1dd2-11b2-822f-00098219b9bb</ltv:OwnVolumeId>
</ltv:GetDeviceDataResponse>
Some elements of the response might not be supported by older chassis.
For SL220, from PV1.9.1 on also the MAC address is returned as above to support i.e. wake on
(w)lan functionality. In addition to the MAC-Address of the currently active network device, MAC-
Address-LAN and MAC-Address-WLAN are returned. MAC-Address-WLAN may be empty, when
there is no wireless hardware installed.     
Location returns the location of the device, which is set at initial installation. 
If there is some kind of error while collecting the device data, the response will contain empty strings
for some or all values:
<ltv:GetDeviceDataResponse>
  <ltv:fcid>8138942</ltv:fcid>
  <ltv:ClientId>LRemoteClient-0-1314017969</ltv:ClientId>
  <ltv:Chassis/>
  <ltv:SW-Version/>
  <ltv:MAC-Address/>
  <ltv:MAC-Address-LAN/>
  <ltv:MAC-Address-WLAN/>
  <ltv:Location/>
  <ltv:NetworkHostName/>
  <ltv:StreamingServerName/>
  <ltv:OwnVolumeId/>
</ltv:GetDeviceDataResponse>
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 09 September 2017, 18:39:10
Und hier der Auszug aus der API für das Setzen eines Timers:


Programming Timers
External applications may program record timers on the tv set:
<ltv:ProgramTimer>
  <ltv:fcid>8138436</ltv:fcid>
  <ltv:ClientId>LRemoteClient-0-1314017969</ltv:ClientId>
  <ltv:Device>PVR</ltv:Device>
  <ltv:RecordingType>default</ltv:RecordingType>
  <ltv:Locator>
dvb://localhost/#?chlview=default&amp;progNum=2&amp;gcn=7&amp;onid=1&amp;tsid=1011&amp;sid=11110
  </ltv:Locator>
  <ltv:Timer starttime="1315494000" duration="3600" repeatDays="0"/>
</ltv:ProgramTimer>
"Device" specifies the device to record on. Currently only "PVR", referring to the local DR+
recorder, is supported.
"RecordingType" will allow specifying different recording type i.e. for series recording etc. Currently
only "default" is supported.
"Locator" is the usual locator format which must refer to a channel.
"Timer" then contains the timing information for the recording. The starttime should be given in
seconds since epoch UTC, the duration in seconds. "repeatDays" is a bitmask specifying which days
to repeat the recording on: 

Sun Mon Tue Wed Thu Fri Sat
0x01 0x02 0x04 0x08 0x10 0x20 0x40
If the value for "repeatDays" is prefixed with "0x", it will be treated as a hexadecimal value.
Otherwise, a decimal value is assumed.

The above message yields a simple response message:
<ltv:ProgramTimerResponse>
  <ltv:fcid>8138436</ltv:fcid>
  <ltv:ClientId>LRemoteClient-0-1314017969</ltv:ClientId>
  <ltv:Result>0</ltv:Result>
</ltv:ProgramTimerResponse>
As usual a result of "0" denotes success where a negative value is an error code. Note that since
recording requests may be delayed an arbitrary time due to necessary user interaction in terms of
conflict, "0" does not mean that the timer has necessarily been correctly programmed. It only means
that the tv has accepted and processed the request.


Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 10 September 2017, 21:52:06
Habe gerade das erste mal getestet, leider komme ich nicht sehr weit, beim define kommt folgende Fehlermeldung:

2017.09.10 21:40:57 3: LoeweTV loewe: defined LoeweTV device
STARTING SENDREQUEST: GetDeviceData
2017.09.10 21:41:03 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 433.
2017.09.10 21:41:03 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 458.
Can't locate object method "Headers" via package "HTTP::Headers" at /usr/share/perl5/HTTP/Message.pm line 649.


Da hänge ich jetzt erstmal
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 10 September 2017, 22:18:32
Ja, das ist wegen den paar Änderungen, die man bei CoolTuc Version machen muss.
Ich werde morgen gern ein Diff Patch machen.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 10 September 2017, 22:23:51
Danke für das Testen. Ich schaue es mir morgen früh einmal in Ruhe an.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 11 September 2017, 10:19:21
So, hier mal die Zeilen, die ich geändert habe, damit dein (CooLTux) Script (Achtung: Aus Post Nr. 38 https://forum.fhem.de/index.php?action=post;quote=682281;topic=70266.30;last_msg=683900 (https://forum.fhem.de/index.php?action=post;quote=682281;topic=70266.30;last_msg=683900)) bei mir läuft:

50c50
<                         "status:Accepted,Pending,Denied,undef " .
---
>                         "status:accepted,Pending,Denied,undef " .
116c116
<     my ($action,$RCkey);
---
>
118c118
<     if( lc $cmd eq 'setactionfield' ) { $action = $arg;$RCkey = $params[0];
---
>     if( lc $cmd eq 'setactionfield' ) {
120c120
<     } elsif( lc $cmd eq 'setvolume' ) { $action = "SetVolume";$RCkey = $params[0];
---
>     } elsif( lc $cmd eq 'setvolume' ) {
122c122
<     } elsif( lc $cmd eq 'setmute' ) { $action = "SetMute"; $RCkey = $params[0];
---
>     } elsif( lc $cmd eq 'setmute' ) {
167c167
<     if ($hash->{status} eq "Accepted")        {&LoeweTV_sendRequest($hash,$action,$RCkey);}
---
>     if ($hash->{status} eq "accepted")        {&LoeweTV_sendRequest($hash,$action,$RCkey);}
223,224c223,224
<         &LoeweTV_checkAccess($hash,$hash->{CLIENTID},$hash->{FCID});
<         &LoeweTV_sendRequest($hash,"InjectRCKey",22);
---
>         LoeweTV_checkAccess($hash,$hash->{CLIENTID},$hash->{FCID});
>         LoeweTV_sendRequest($hash,"InjectRCKey",22);
237c237
<     while ((ReadingsVal($name,'state','denied') ne "Accepted") and ($n<=3)) {
---
>     while ((ReadingsVal($name,'state','denied') ne "accepted") and ($n<=3)) {
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 11 September 2017, 10:34:43
Baue ich ein und gebe Euch dann Bescheid
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 11 September 2017, 12:47:18
Also ich habe mir den Patch angeschaut. Basierend auf dem aktuellen Stand des Modules hilft der Patch nicht weiter.
Sicherlich kommt das ein oder andere später zum tragen aber nicht bei der ersten Kontaktaufnahme die ich erstmal aktiv ablaufen habe. Mehr macht ein Define aktuell nicht.

Ich hoffe viegener kann sich das mal genauer anschauen. Oder der.einstein nimmt noch mal aus dem Git die aktuelle Version.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 11 September 2017, 12:47:57
Ich bin dafür entweder nach dem setzen und parsen des $twig ein weiteres "$actions{$action}2]->();" einzufügen (man beachte die 2), oder das Setzen/Parsen des $twig zusammen mit einer weiteren anonymen Subroutine mit in den %actions hash aufzunehmen.

Dann hätte man die Möglichkeit geschaffen, abhängig vom Funktionsaufruf vor und nach dem Absetzen der Request eigenen Code abzuarbeiten.

In dem Teil für "GetCurrentEvent" siehst du, wie mehrere Infos aus dem Response extrahiert werden können: Titel, Inhalt, Locator. Diese kann man an der Stelle in jede beliebige Perl-Datenstruktur schieben -> Frage ist, wo du sie haben möchtest.

Grüße

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 11 September 2017, 12:51:25
Zitat von: CoolTux am 11 September 2017, 12:47:18
Also ich habe mir den Patch angeschaut. Basierend auf dem aktuellen Stand des Modules hilft der Patch nicht weiter.
Sicherlich kommt das ein oder andere später zum tragen aber nicht bei der ersten Kontaktaufnahme die ich erstmal aktiv ablaufen habe. Mehr macht ein Define aktuell nicht.

Ich hoffe viegener kann sich das mal genauer anschauen. Oder der.einstein nimmt noch mal aus dem Git die aktuelle Version.
Ja, hatte das befürchtet [emoji14]
Ich machs heut Abend nochmal mit der GitHub Version

Wir Krieg ich die aktuellen GitHub Version am schnellsten in FHEM? (ich verwende Ubuntu 16.04)

Wieso hast du dem Skript die "82_" vorangestellt? Macht das einen Unterschied?

Grüße

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 11 September 2017, 13:05:20
Hier bekommst immer die aktuellste Developer Version
https://github.com/LeonGaultier/fhem-LoeweTV/archive/devel.zip


Die 82 ist eine Zuordnung die lediglich den Zusammenhang zu Multimedia Module in FHEM darstellen soll. Hat keinen Nutzen bezüglich dem Einbinden an sich sondern ist eine FHEM Developerinterne Sache. Man versucht gleiche Module unter einer Nummer zu bekommen. Weather Module zum Beispiel und halt Multimedia. Für Multimedia gibt es einen extra Guide bezüglich Readings und States. Hier lohnt sich mal ein Blick rein.
https://wiki.fhem.de/wiki/DevelopmentGuidelinesAV


Installieren entweder kopieren der Datei mittels scp(ssh) oder ich kopiere aus dem Entwicklereditor den Code und füge ihn in die Moduldatei über vim direkt ein.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 12 September 2017, 02:03:02
So, hiermit komme ich ein wenig weiter:

package main;

use strict;
use warnings;
use Data::Dumper::Simple;
use XML::Twig;

my $missingModul = "";
eval "use LWP::UserAgent;1" or $missingModul .= "LWP::UserAgent ";
eval "use HTTP::Request::Common;1" or $missingModul .= "HTTP::Request::Common ";
eval "use XML::Twig;1" or $missingModul .= "XML::Twig ";

use Blocking;


my $version = "0.0.23";


# Declare functions
sub LoeweTV_Define($$);
sub LoeweTV_Undef($$);
sub LoeweTV_Initialize($);
sub LoeweTV_Get($@);
sub LoeweTV_Set($@);
sub LoeweTV_WakeUp_Udp($@);
sub LoeweTV_CheckAccess($);
sub LoeweTV_SendRequest($$$);
sub LoeweTV_ResponseProcessing($$);
sub LoeweTV_WriteReadings($$);
sub LoeweTV_Presence($);
sub LoeweTV_PresenceRun($);
sub LoeweTV_PresenceDone($);
sub LoeweTV_PresenceAborted($);




sub LoeweTV_Initialize($) {
    my ($hash) = @_;
   
    #$hash->{GetFn}      = "LoeweTV_Get";
    $hash->{SetFn}      = "LoeweTV_Set";
    $hash->{DefFn}      = "LoeweTV_Define";
    $hash->{UndefFn}    = "LoeweTV_Undef";

    $hash->{AttrList}   =  "fhemMAC " .
                        "interval " .
                        #"ip " .
                        #"tvmac " .
                        #"action " .
                        #"RCkey " .
                        #"clientid " .
                        #"fcid " .
                        "status:Accepted,Pending,Denied,undef " .
                        #"connectsuccess:true,false " .
                        #"pingresult:down,up " .
                        "lastersponse " .
                        "lastchunk " .
                        #"volstate " .
                        #"mutstate:0,1 " .
                        #"curlocator " .
                        #"curevent " .
                        #"nextevent " .
                        $readingFnAttributes;
                         
    foreach my $d(sort keys %{$modules{LoeweTV}{defptr}}) {
   
        my $hash = $modules{LoeweTV}{defptr}{$d};
        $hash->{VERSION}      = $version;
    }
}

sub LoeweTV_Define($$) {

    my ( $hash, $def )  = @_;
   
    my @a               = split( "[ \t][ \t]*", $def );


    return "too few parameters: define <NAME> LoeweTV <HOST> <MAC-TV>" if( @a < 3 or @a > 4 );
    return "Cannot define Loewe device. Perl modul ${missingModul}is missing." if ( $missingModul );

   
   
   
    my $name            = $hash->{NAME};
    my $host            = $a[2];
   
    $hash->{HOST}       = $host;
    $hash->{FCID}       = 1234;
    $hash->{TVMAC}      = $a[3] if(defined($a[3]));
    $hash->{VERSION}    = $version;
    $hash->{INTERVAL}   = 15;
    $hash->{CLIENTID} = "?";
    $hash->{status} = undef;

    Log3 $name, 3, "LoeweTV $name: defined LoeweTV device";
   
    $modules{LoeweTV}{defptr}{HOST} = $hash;
    readingsSingleUpdate($hash,'state','initialized',1);
   
    LoeweTV_Presence($hash);
   
   
    if( $init_done ) {
        LoeweTV_Presence($hash);
        InternalTimer( gettimeofday()+5, "LoeweTV_FirstRun", $hash, 0 );
    } else {
        InternalTimer( gettimeofday()+15, "LoeweTV_Presence", $hash, 0 );
        InternalTimer( gettimeofday()+20, "LoeweTV_FirstRun", $hash, 0 );
    }
   
    return undef;
}

sub LoeweTV_Undef($$) {

    my ( $hash, $arg ) = @_;


    #RemoveInternalTimer($hash);
    delete $modules{LoeweTV}{defptr}{HOST} if( defined($modules{LoeweTV}{defptr}{HOST}) );

    return undef;
}

sub LoeweTV_Attr(@) {

    my ( $cmd, $name, $attrName, $attrVal ) = @_;
    my $hash = $defs{$name};
   
    my $orig = $attrVal;

   
    if( $attrName eq "disable" ) {
        if( $cmd eq "set" and $attrVal eq "1" ) {
            readingsSingleUpdate ( $hash, "state", "disabled", 1 );
            $hash->{PARTIAL} = '';
            Log3 $name, 3, "LoeweTV ($name) - disabled";
        }

        elsif( $cmd eq "del" ) {
            readingsSingleUpdate ( $hash, "state", "active", 1 );
            Log3 $name, 3, "LoeweTV ($name) - enabled";
        }
    }
   
    elsif( $attrName eq "disabledForIntervals" ) {
        if( $cmd eq "set" ) {
            Log3 $name, 3, "LoeweTV ($name) - enable disabledForIntervals";
            readingsSingleUpdate ( $hash, "state", "Unknown", 1 );
        }

        elsif( $cmd eq "del" ) {
            readingsSingleUpdate ( $hash, "state", "active", 1 );
            Log3 $name, 3, "LoeweTV ($name) - delete disabledForIntervals";
        }
    }
   
    elsif( $attrName eq "interval" ) {
        if( $cmd eq "set" ) {
            $hash->{INTERVAL}   = $attrVal;
            RemoveInternalTimer($hash);
            Log3 $name, 3, "LoeweTV ($name) - set interval: $attrVal";
            LoeweTV_InternalTimerGetDeviceData($hash);
        }

        elsif( $cmd eq "del" ) {
            $hash->{INTERVAL}   = 15;
            RemoveInternalTimer($hash);
            Log3 $name, 3, "LoeweTV ($name) - delete User interval and set default: 300";
            LoeweTV_InternalTimerGetDeviceData($hash);
        }
    }

    return undef;
}

sub LoeweTV_FirstRun($) {

    my $hash        = shift;
   
    my $name        = $hash->{NAME};
   
   
    if(ReadingsVal($name,'presence','absent') eq 'present') {
   
        LoeweTV_SendRequest($hash,'GetDeviceData',0);
       
    } else {
   
        readingsSingleUpdate($hash,'state','off',1);
    }
   
    InternalTimer( gettimeofday()+10, "LoeweTV_TimerStatusRequest", $hash, 1 );
}

sub LoeweTV_Set($@) {
   
    my ($hash, $name, $cmd, @args) = @_;
    my ($arg, @params) = @args;
   
    my ($action,$RCkey);

   
    if( lc $cmd eq 'setactionfield' ) { $action = "SetActionField";$RCkey = $arg;

    } elsif( lc $cmd eq 'setvolume' ) { $action = "SetVolume";$RCkey = $arg;
   
    } elsif( lc $cmd eq 'setmute' ) { $action = "SetMute";$RCkey = $arg;
   
    } elsif( lc $cmd eq 'connect' ) { $action = "RequestAccess";$RCkey = "0";
   
    } elsif( lc $cmd eq 'wakeup' ) {
   
        LoeweTV_WakeUp_Udp($hash,$hash->{HOST},$hash->{TVMAC});
        return;
   
    } elsif( lc $cmd eq 'remotecontrol' ) { $action = "InjectRCKey";$RCkey = $arg;
   
   
    } elsif( lc $cmd eq '' ) {
   
   
    } else {
   
        my $list    = 'SetActionField SetVolume:slider,0,1,100 SetMute:on,off connect:noArg WakeUp:noArg';
       
        return "Unknown argument $cmd, choose one of $list";
    }
   
   
#     $hash->{helper}{RCkey} = "" if( not defined $hash->{helper}{RCkey} );
#     
#     $hash->{helper}{fcid} = "1234" if( not defined $hash->{helper}{fcid} );
#     
#     LoeweTV_hostUp($hash);
#
#     
#     if (! defined $hash->{CLIENTID}){$hash->{CLIENTID} = "?"};
#     
#     LoeweTV_CheckAccess($hash,$hash->{CLIENTID},$hash->{FCID});
#     
#     if ($hash->{status} eq "accepted") {LoeweTV_SendRequest($hash,$action,$RCkey);}
   
   
   
    LoeweTV_SendRequest($hash,$action,$RCkey) if(ReadingsVal($name,'presence','absent') eq 'present');
   
   
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Set()";
    return undef;
}

sub LoeweTV_TimerStatusRequest($) {

### Hier kommen dann die Sachen rein welche alle x Sekunden ausfegührt werden um Infos zu erhalten
### presence zum Beispiel





}

# method to wake via lan, taken from Net::Wake package
sub LoeweTV_WakeUp_Udp($@) {

    my ($hash,$mac_addr,$host,$port) = @_;
    my $name  = $hash->{NAME};

    # use the discard service if $port not passed in
    if (!defined $port || $port !~ /^\d+$/ ) { $port = 9 }

    my $sock = new IO::Socket::INET(Proto=>'udp') or die "socket : $!";
    if(!$sock) {
        Log3 $name, 3, "LoeweTV ($name) - Can't create WOL socket";
        return 1;
    }
 
    my $ip_addr   = inet_aton($host);
    my $sock_addr = sockaddr_in($port, $ip_addr);
    $mac_addr     =~ s/://g;
    my $packet    = pack('C6H*', 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, $mac_addr x 16);

    setsockopt($sock, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt : $!";
    send($sock, $packet, 0, $sock_addr) or die "send : $!";
    close ($sock);

    return 1;
}

sub LoeweTV_CheckAccess($) {

    my ($hash)      = shift;
    my $name        = $hash->{NAME};
    my $n           = 1;
   
   
    while (($hash->{status} ne "Accepted") and ($n<=3)) {
   
        $n=$n+1;
        LoeweTV_SendRequest($hash,"RequestAccess",0);
    };


    print "run CHECKACCESS: $hash->{status}   \n";
   
   
    return($hash->{status});
   
   
    }

sub LoeweTV_SendRequest($$$) {

    my($hash, $action, $RCkey)  = @_;
    print "action: $action     RCkey: $RCkey \n";
    my $name                    = $hash->{NAME};

    my ($message, $response, $request, $userAgent, $noob, $twig2, $content, $handlers);
    our $result ="";
    my %actions = (
        "RequestAccess"         =>  [sub {$content='<ltv:DeviceType>Apple iPad</ltv:DeviceType>
                                        <ltv:DeviceName>FHEM</ltv:DeviceName>
                                        <ltv:DeviceUUID>'.$hash->{TVMAC}.'</ltv:DeviceUUID>
                                        <ltv:RequesterName>Assist Media App</ltv:RequesterName>'},
                                        {'m:ClientId' => sub {$hash->{CLIENTID} = $_->text_only('m:ClientId')},
                                        'm:AccessStatus' => sub {readingsSingleUpdate($name,'state',"$_->text_only('m:AccessStatus'",1);},}
                                    ],
                                   
        "InjectRCKey"           =>  [sub {$content='<InputEventSequence>
                                        <RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="press"/>
                                        <RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="release"/>
                                        </InputEventSequence>'},{"ltv:InjectRCKey" => sub {$hash->{lastchunk} = $_->text_only();}},],
                                       
        "GetDeviceData"         =>  [sub {$content='';},{"m:MAC-Address" => sub {$hash->{TVMAC} = $_->text("m:MAC-Address");}}],
           
        "GetChannelList"        =>  [sub {$content="<ltv:ChannelListView>".$RCkey."</ltv:ChannelListView>
                                        <ltv:QueryParameters>
                                        <ltv:Range startIndex='".$ARGV[4]."' maxItems='9999'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="m:GetChannelListResponse"}
                                    ],
                                       
        "GetListOfChannelLists" =>  [sub {$content="<ltv:QueryParameters>
                                        <ltv:Range startIndex='".$RCkey."' maxItems='9999'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="m:ResultItemChannelLists"}
                                    ],
                                       
        "GetMediaItem"          =>  [sub {$content='<MediaItemReference mediaItemUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
           
        "GetMediaEvent"         =>  [sub {$content='<MediaEventReference mediaEventUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
           
        "GetChannelInfo"        =>  [sub {$content=""}],
           
        "GetCurrentPlayback"    =>  [sub {$content='';},
                                        {"m:Locator" => sub {$hash->{lastchunk} = $_->text_only();},}
                                    ],
                                       
        "GetCurrentEvent"       =>  [sub {$content="<ltv:Player>0</ltv:Player>";},
                                        {"m:Name" => sub {$hash->{curevent}[0] = $_->text("m:Name");},
                                        "m:ExtendedInfo" => sub {$hash->{curevent}[1] = $_->text("m:ExtendenInfo");},
                                        "m:Locator" => sub {$hash->{curlocator} = $_->text_only("m:Locator");}},
                                    ],
                                       
        "GetNextEvent"          => [sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetNextEventResponse"}],
           
        "SetActionField"        => [sub {$content="<ltv:InputText>".$RCkey."</ltv:InputText>";$result="m:Result"}],
           
        "SetVolume"             => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
           
        "GetVolume"             => [sub {$content="";$result="m:Value"}],
           
        "SetMute"               => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
           
        "GetMute"               => [sub {$content="";$result="m:Value"}],
           
        "GetDRPlusArchive"      => [sub {$content="<ltv:QueryParameters>
                                        <ltv:Range startIndex='".$RCkey."' maxItems='1000'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="ltv:ResultItemDRPlusFragment"}
                                    ],
    );

   
    print "STARTING SENDREQUEST: $action   \n";
   
    #$action = "GetDeviceData" if( ! defined($action));
   
    my $header = "<env:Envelope
        xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'
        xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'><env:Body>\n";
   
    my $action_xml1 = "<ltv:$action>\n";
   
    my $header2 = "<ltv:fcid>".$hash->{FCID}."</ltv:fcid>
            <ltv:ClientId>".$hash->{CLIENTID}."</ltv:ClientId>\n";

    my $action_xml2 = "\n</ltv:$action>";
   
    my $footer = "\n</env:Body></env:Envelope>\n";
   
   



    if ($actions{$action}[0]) {
   
        $actions{$action}[0]->();
        $handlers=$actions{$action}[1];
   
    } else {
        print "Unknown action: $action\n";
    };

    # Aufbau der Messages
    $message = $header.$action_xml1.$header2.$content.$action_xml2.$footer;
   
   
    # Aufbau der HTTP Verbindung
    $request = HTTP::Request->new(POST => 'http://'.$hash->{HOST}.':905/loewe_tablet_0001');
   
    # Aufbau des Agents
    $userAgent = LWP::UserAgent->new(agent => 'Assist Media/23 CFNetwork/808 Darwin/16.0.0');
   
    #Aufbau des Headers
    $request->header('Accept' => '*/*');
    $request->header('Accept-Encoding' => 'gzip, deflate');
    $request->header('Accept-Language' => 'de-de');
    $request->header('Connection' => 'keep-alive');
   
    $request->header('SOAPAction' => $action);
   
    # !!!
    $request->content_type("application/soap+xml; charset=utf-8");
   
    # ???
    $request->content($message);
    $response = $userAgent->request($request);
   
   
    $noob = $response->content;
    #print "RESPONSE WAS: $response->content \n";
    print Dumper $response;
    $twig2 = XML::Twig->new(twig_handlers => $handlers,keep_encoding => 1)->parse($noob);
   
   
    LoeweTV_ResponseProcessing($hash,$response);
}
   
   
sub LoeweTV_ResponseProcessing($$) {
   
    my ($hash,$response)        = @_;
   
    my $name                    = $hash->{NAME};
   
    Log3 $name, 2, "Sub LoeweTV_PresenceRun ($name) - Response: $response->error_as_HTML";
    Log3 $name, 2, "Sub LoeweTV_PresenceRun ($name) - Response: $response->content";
   
    if($response->code == 200) {
        $hash->{connectsuccess} = "true";
        $hash->{lastresponse} = $response->content;
   
    } else {
        $hash->{connectsuccess} = "false";
        $hash->{lastresponse} = $response->error_as_HTML;
    }
   
    if($hash->{action} eq "RequestAccess"){
        return($hash->{status})
    }else{
        return($hash->{status})
    };
}

sub LoeweTV_WriteReadings($$) {




}

############ Presence Erkennung Begin #################
sub LoeweTV_Presence($) {

    my $hash    = shift;   
    my $name    = $hash->{NAME};
   
   
    $hash->{helper}{RUNNING_PID} = BlockingCall("LoeweTV_PresenceRun", $name.'|'.$hash->{HOST}, "LoeweTV_PresenceDone", 5, "LoeweTV_PresenceAborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}) );
}

sub LoeweTV_PresenceRun($) {

    my $string          = shift;
    my ($name, $host)   = split("\\|", $string);
   
    my $tmp;
    my $response;

   
    $tmp = qx(ping -c 3 -w 2 $host 2>&1);

    if(defined($tmp) and $tmp ne "") {
   
        chomp $tmp;
        Log3 $name, 5, "LoeweTV ($name) - ping command returned with output:\n$tmp";
        $response = "$name|".(($tmp =~ /\d+ [Bb]ytes (from|von)/ and not $tmp =~ /[Uu]nreachable/) ? "present" : "absent");
   
    } else {
   
        $response = "$name|Could not execute ping command";
    }
   
    Log3 $name, 4, "Sub LoeweTV_PresenceRun ($name) - Sub finish, Call LoeweTV_PresenceDone";
    return $response;
}

sub LoeweTV_PresenceDone($) {

    my ($string)            = @_;
   
    my ($name,$response)    = split("\\|",$string);
    my $hash                = $defs{$name};
   
   
    delete($hash->{helper}{RUNNING_PID});
   
    Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Der Helper ist disabled. Daher wird hier abgebrochen" if($hash->{helper}{DISABLED});
    return if($hash->{helper}{DISABLED});
   
    readingsSingleUpdate($hash,'presence',$response,1);
   
    Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Abschluss!";
}

sub LoeweTV_PresenceAborted($) {

    my ($hash)  = @_;
    my $name    = $hash->{NAME};

   
    delete($hash->{helper}{RUNNING_PID});
    readingsSingleUpdate($hash,'presence','timedout', 1);
   
    Log3 $name, 4, "Sub LoeweTV_PresenceAborted ($name) - The BlockingCall Process terminated unexpectedly. Timedout!";
}

####### Presence Erkennung Ende ############








1;


=pod
=item device
=item summary control for Loewe TV devices via network connection
=item summary_DE Steuerung von Loewe TV Ger&auml;ten &uuml;ber das Netzwerk
=begin html
<a name="LoeweTV"></a>
<h3>LoeweTV</h3>
=end html
=begin html_DE
<a name="LoeweTV"></a>
<h3>LoeweTV</h3>
=end html_DE
=cut
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 12 September 2017, 05:43:28
Sehr schön. Und wie weit genau.
Kommst Du bis zum ResponseProcessing? Wie sehen dann die Ausgaben aus?


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 12 September 2017, 10:49:03
Ich habe jetzt einige Anpassungen übernommen. Bewusst aber nicht alle weil ich noch nicht so weit bin.
use XML::Twig; gab es bereits als eval Verpackung

Ansonsten habe ich erstmal Änderungen gemacht die lediglich den ersten Kontakt betreffen sollten. Also für ein GetDeviceData nötig sein sollten.
Kann bitte einmal jemand die Version testen und mir wenn es denn klappt ein Logauszug geben. Sollte ja was drin stehen im Log
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 12 September 2017, 20:37:42
Hallo CoolTux,
also in Zeile 339 "LoeweTV_SendRequest($hash,"RequestAccess",0);" fehlt definitiv ein ";"  8)

Dann brauchen wir meiner Meinung nach beides: eine Variable für "status" (wo immer die dann gespeichert ist) und das Reading "state".

Außerdem sollten wir ein Define des TV mit NUR der IP zulassen, wenn wir die TVMAC über "GetDeviceData" bekommen wollen.

Hier der Output, den ich jetzt hatte ab "Define":

2017.09.12 20:22:34 3: LoeweTV LoeweTV: defined LoeweTV device
STARTING SENDREQUEST: GetDeviceData   
2017.09.12 20:22:39 2: Sub LoeweTV_PresenceRun (LoeweTV) - Response: HTTP::Response=HASH(0x40efbb8)->error_as_HTML
2017.09.12 20:22:39 2: Sub LoeweTV_PresenceRun (LoeweTV) - Response: HTTP::Response=HASH(0x40efbb8)->content


Also: Leider führt er den Code an der Stelle nicht aus, sondern macht ein "print" der $response. Hier müssen wir vermutlich mit "." Concatenation arbeiten? Kann mich aber auch irren  8)

Schade, dass du die anderen Funktionen wieder rausgeschmissen hast  ::) Aber da kommen wir schon noch hin  ;D

Mir ist außerdem Aufgefallen über Debugging mit "Data::Dumper::Simple", dass FHEM zwar die richtige $request absetzt und die richtige $response erhält, aber das Parsen nicht hinhaut. Daher habe ich mal des XML::Twig nochmal obenhin gestellt. Eventuell ist es auch ein Problem mit dem Scoping der Variablen? Aber da bin ich noch Anfänger und hab da erstmal keine Lösung gefunden.  :-\

@CoolTux: Kannst du mir auch bitte mal schreiben, wie bei dir jetzt die logische Abfolge der Funktionen ist bei unterschiedlichen Vorgängen? Danke.

Grüße!
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 12 September 2017, 21:24:42
Zitat
Außerdem sollten wir ein Define des TV mit NUR der IP zulassen, wenn wir die TVMAC über "GetDeviceData" bekommen wollen.

Wie genau meinst Du das? Man kann doch das Modul ohne Probleme anlegen wenn man nur die IP ein gibt. Bei mir meckert er zu mindest nicht


Zitat
@CoolTux: Kannst du mir auch bitte mal schreiben, wie bei dir jetzt die logische Abfolge der Funktionen ist bei unterschiedlichen Vorgängen? Danke.
Meinst jetzt bei mir im speziellen oder allgemein wie es im Modul werden soll? Denk dran ich habe keon Loewe TV ich mache das alles im Blindflug und so wirklich komme ich aktuell auch nicht weiter.
Aber vielleicht mal eine Beschreibung wie die ersten Schritte aussehen sollen.
Also define einer Modulinstanz durch Angabe der IP, dabei sollte der Fernsehr erreichbar sein und antworten (reicht es hier aus das er auf standby ist oder muss er richtig an sein), dann wird ein getdevicedata gemacht und wir fischen die MAC Adresse des TV aus der Antwort. Dann wird die DEF über $hash->{DEF} neu geschrieben, diesmal mit IP MAC. Das machen wir deswegen damit wie beim nächsten mal wenn FHEM neugestartet wird nicht wieder den Fernsehr an haben müssen um an die MAC zu kommen sondern dann haben wir die MAC fertig in der Konfig im define. Wenn wir das haben machen wir uns Gedanken um die weiteren Dinge. Immer Schritt für Schritt. Es sei denn Du hast eine bessere/schnellere funktionierende Lösung.
Wie schön erwähnt ist das schreiben eines einfachen Perl Scriptes was plump Schaltbefehle senden soll und das entwickeln eines FHEM Modules wo es um Kommunikationsaufbau und Interaktionsprozesse geht komplett unterschiedlich.


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 12 September 2017, 22:25:43
Sorry, es klappt mit nur der IP beim Anlegen/Define.

Der TV reagiert im Standby nicht auf Ping und nicht auf SOAP-Requests, AUSSER er wurde mit Wake-On-MAN aufgeweckt, dann kann ich am der Stelle InjectRCKey 22 senden, und er fährt richtig,hoch und zeigt das zuletzt gesehene Programm an.
D. h. er sollte richtig an sein beim Define.

Bzgl. der Readings hab ich noch ne Frage. Wenn es ums Anlegen eines Wertes/Textes geht, den ich zwar für das Funktionieren des Module brauche und zwischen den einzelnen Funktionen übergeben muss, und wenn dieser uninteressant für externe Module ist, und er nicht nach einem Neustart sofort verfügbar sein soll, dann kann der Wert doch in der $hash->{werr}? Oder sollte er dann in den $hash->{HELPER}?

Grüße

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 12 September 2017, 22:36:56
OK, habe die neue Version aus github geladen und das Semikolon ergänzt (und dann auch noch Data::Dumper::Simple installiert  ;)

Gute Nachricht - es geht etwas weiter / Schlechte Nachricht Es gibt immer noch reichlich logs und einen Crash:


2017.09.12 22:26:06 3: LoeweTV loewe: defined LoeweTV device
STARTING SENDREQUEST: GetDeviceData
2017.09.12 22:26:12 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x3cea318)->error_as_HTML
2017.09.12 22:26:12 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x3cea318)->content
2017.09.12 22:26:12 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/82_LoeweTV.pm line 509.
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 426.
STARTING SENDREQUEST:
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 434.
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 439.
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in hash element at ./FHEM/82_LoeweTV.pm line 447.
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 453.
Unknown action:
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $content in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 457.
2017.09.12 22:26:23 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x489be70)->error_as_HTML
2017.09.12 22:26:23 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x489be70)->content
STARTING SENDREQUEST:
Unknown action:
2017.09.12 22:26:34 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x457ea58)->error_as_HTML
2017.09.12 22:26:34 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x457ea58)->content
2017.09.12 22:26:47 1: PERL WARNING: Use of uninitialized value in subroutine entry at ./FHEM/82_LoeweTV.pm line 318.
Bad arg length for Socket::pack_sockaddr_in, length is 0, should be 4 at /usr/lib/perl5/Socket.pm line 809.


Nach dem Define habe ich noch set mut und WakeUp etc ausprobiert

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 12 September 2017, 22:48:24
Zitat von: viegener am 12 September 2017, 22:36:56
OK, habe die neue Version aus github geladen und das Semikolon ergänzt (und dann auch noch Data::Dumper::Simple installiert  ;)

Gute Nachricht - es geht etwas weiter / Schlechte Nachricht Es gibt immer noch reichlich logs und einen Crash:


2017.09.12 22:26:06 3: LoeweTV loewe: defined LoeweTV device
STARTING SENDREQUEST: GetDeviceData
2017.09.12 22:26:12 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x3cea318)->error_as_HTML
2017.09.12 22:26:12 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x3cea318)->content
2017.09.12 22:26:12 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/82_LoeweTV.pm line 509.
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 426.
STARTING SENDREQUEST:
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 434.
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 439.
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in hash element at ./FHEM/82_LoeweTV.pm line 447.
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $action in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 453.
Unknown action:
2017.09.12 22:26:23 1: PERL WARNING: Use of uninitialized value $content in concatenation (.) or string at ./FHEM/82_LoeweTV.pm line 457.
2017.09.12 22:26:23 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x489be70)->error_as_HTML
2017.09.12 22:26:23 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x489be70)->content
STARTING SENDREQUEST:
Unknown action:
2017.09.12 22:26:34 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x457ea58)->error_as_HTML
2017.09.12 22:26:34 2: Sub LoeweTV_PresenceRun (loewe) - Response: HTTP::Response=HASH(0x457ea58)->content
2017.09.12 22:26:47 1: PERL WARNING: Use of uninitialized value in subroutine entry at ./FHEM/82_LoeweTV.pm line 318.
Bad arg length for Socket::pack_sockaddr_in, length is 0, should be 4 at /usr/lib/perl5/Socket.pm line 809.


Nach dem Define habe ich noch set mut und WakeUp etc ausprobiert

Bitte noch keine Set Befehle. So weit sind wir noch lange nicht. Wir sind erst beim define und beim erhalten der ersten Informationen nach einer ersten Kontaktaufnahme.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 12 September 2017, 22:54:04
Zitat von: der.einstein am 12 September 2017, 22:25:43
Sorry, es klappt mit nur der IP beim Anlegen/Define.

Der TV reagiert im Standby nicht auf Ping und nicht auf SOAP-Requests, AUSSER er wurde mit Wake-On-MAN aufgeweckt, dann kann ich am der Stelle InjectRCKey 22 senden, und er fährt richtig,hoch und zeigt das zuletzt gesehene Programm an.
D. h. er sollte richtig an sein beim Define.

Bzgl. der Readings hab ich noch ne Frage. Wenn es ums Anlegen eines Wertes/Textes geht, den ich zwar für das Funktionieren des Module brauche und zwischen den einzelnen Funktionen übergeben muss, und wenn dieser uninteressant für externe Module ist, und er nicht nach einem Neustart sofort verfügbar sein soll, dann kann der Wert doch in der $hash->{werr}? Oder sollte er dann in den $hash->{HELPER}?

Grüße

Gesendet von meinem LG-D855 mit Tapatalk
Wenn Du einen Wert hast den Du ständig zum abgleichen benötigst, und zwar nicht nur bei einer Ausführung sondern permanent dann legst Du ihn entweder sichtbar als Internal ab das wäre dann $hash->{INTERNALNAME}. Oder aber unter $hash->{helper}{Name} also in helper. Ins Internal lohnt sich nur wenn es etwas ist was auch mal so von Interesse ist. An sonsten helper.
Sowas wie du ab fragen willst, also so eine Art Zwischenstatus macht man am besten in den helper.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 13 September 2017, 00:29:18
Ich hab mal ein bisschen weitergeschaut:

- Ich denke es wäre hilfreich Requestmessage und Response zu Dumpen (per Dumper-Aufruf)
- Im Request fehlt soweit ich das erkennen kann ein "<?xml version='1.0' encoding='UTF-8'?>"
- In meinen Versuchen habe ich noch einen SOAPAction - Header im http-header gesehen (weiss aber nicht ob der zwingend ist (im API ist er so nicht beschrieben)

Ich konnte aber bisher keinen erfolgreichen "GetDeviceData" Request sehen -
@der.einstein: klappt das bei Dir ?


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 13 September 2017, 21:33:36
So Jungs, einen ersten Erfolg haben wir: der GetDeviceData Call funktioniert und extrahiert erfolgreich die TVMAC!
Ich hab jetzt allerdings einen RequestAccess Call vorgeschalten. Dieser extrahiert erfolgreich eine ClientId

@viegener: habe das Dumping nun so hinbekommen, dass es sinnvollen output im Log geben sollte

Hier der Code, nach meinen Modifizierungen:

package main;

use strict;
use warnings;

use Data::Dumper::Simple;    # Kann später entfernt werden, nur zum Debuggen


my $missingModul = "";
eval "use LWP::UserAgent;1" or $missingModul .= "LWP::UserAgent ";
eval "use HTTP::Request::Common;1" or $missingModul .= "HTTP::Request::Common ";
eval "use XML::Twig;1" or $missingModul .= "XML::Twig ";

use Blocking;


my $version = "0.0.26";


# Declare functions
sub LoeweTV_Define($$);
sub LoeweTV_Undef($$);
sub LoeweTV_Initialize($);
sub LoeweTV_Get($@);
sub LoeweTV_Set($@);
sub LoeweTV_WakeUp_Udp($@);
sub LoeweTV_CheckAccess($$$);
sub LoeweTV_SendRequest($$$);
sub LoeweTV_ResponseProcessing($$$);
sub LoeweTV_WriteReadings($$);
sub LoeweTV_Presence($);
sub LoeweTV_PresenceRun($);
sub LoeweTV_PresenceDone($);
sub LoeweTV_PresenceAborted($);




sub LoeweTV_Initialize($) {
    my ($hash) = @_;
   
    #$hash->{GetFn}      = "LoeweTV_Get";
    $hash->{SetFn}      = "LoeweTV_Set";
    $hash->{DefFn}      = "LoeweTV_Define";
    $hash->{UndefFn}    = "LoeweTV_Undef";

    $hash->{AttrList}   =  "fhemMAC " .
                        "interval " .
                        #"ip " .
                        #"tvmac " .
                        #"action " .
                        #"RCkey " .
                        #"clientid " .
                        #"fcid " .
                        "status:Accepted,Pending,Denied,undef " .
                        #"connectsuccess:true,false " .
                        #"pingresult:down,up " .
                        #"lastersponse " .
                        #"lastchunk " .
                        #"volstate " .
                        #"mutstate:0,1 " .
                        #"curlocator " .
                        #"curevent " .
                        #"nextevent " .
                        $readingFnAttributes;
                         
    foreach my $d(sort keys %{$modules{LoeweTV}{defptr}}) {
   
        my $hash = $modules{LoeweTV}{defptr}{$d};
        $hash->{VERSION}      = $version;
    }
}

sub LoeweTV_Define($$) {

    my ( $hash, $def )  = @_;
   
    my @a               = split( "[ \t][ \t]*", $def );


    return "too few parameters: define <NAME> LoeweTV <HOST> <MAC-TV>" if( @a < 2 or @a > 4 );
    return "Cannot define Loewe device. Perl modul ${missingModul}is missing." if ( $missingModul );

   
   
   
    my $name            = $hash->{NAME};
    my $host            = $a[2];
   
    $hash->{HOST}       = $host;
    $hash->{FCID}       = 1234;
    $hash->{TVMAC}      = $a[3] if(defined($a[3]));
    $hash->{TVMAC} = undef if(!defined($a[3]));
    $hash->{VERSION}    = $version;
    $hash->{INTERVAL}   = 15;
    $hash->{CLIENTID}   = "?";
    $hash->{status} = "Denied";
    $hash->{lastresponse} = "";
    $hash->{lastchunk} = "";
    $hash->{lastrequest} = "";
    $hash->{Chassis} = "";
    $hash->{SW_Version} = "";

    Log3 $name, 3, "LoeweTV $name: defined LoeweTV device";
   
    $modules{LoeweTV}{defptr}{HOST} = $hash;
    readingsSingleUpdate($hash,'state','initialized',1);
   
    LoeweTV_Presence($hash);
   
   
    if( $init_done ) {
        LoeweTV_Presence($hash);
        InternalTimer( gettimeofday()+5, "LoeweTV_FirstRun", $hash, 0 );
    } else {
        InternalTimer( gettimeofday()+15, "LoeweTV_Presence", $hash, 0 );
        InternalTimer( gettimeofday()+20, "LoeweTV_FirstRun", $hash, 0 );
    }

    #if(ReadingsVal($name,'presence','absent') eq 'present') {
    #}

    return undef;
}

sub LoeweTV_Undef($$) {

    my ( $hash, $arg ) = @_;


    #RemoveInternalTimer($hash);
    delete $modules{LoeweTV}{defptr}{HOST} if( defined($modules{LoeweTV}{defptr}{HOST}) );

    return undef;
}

sub LoeweTV_Attr(@) {

    my ( $cmd, $name, $attrName, $attrVal ) = @_;
    my $hash = $defs{$name};
   
    my $orig = $attrVal;

   
    if( $attrName eq "disable" ) {
        if( $cmd eq "set" and $attrVal eq "1" ) {
            readingsSingleUpdate ( $hash, "state", "disabled", 1 );
            $hash->{PARTIAL} = '';
            Log3 $name, 3, "LoeweTV ($name) - disabled";
        }

        elsif( $cmd eq "del" ) {
            readingsSingleUpdate ( $hash, "state", "active", 1 );
            Log3 $name, 3, "LoeweTV ($name) - enabled";
        }
    }
   
    elsif( $attrName eq "disabledForIntervals" ) {
        if( $cmd eq "set" ) {
            Log3 $name, 3, "LoeweTV ($name) - enable disabledForIntervals";
            readingsSingleUpdate ( $hash, "state", "Unknown", 1 );
        }

        elsif( $cmd eq "del" ) {
            readingsSingleUpdate ( $hash, "state", "active", 1 );
            Log3 $name, 3, "LoeweTV ($name) - delete disabledForIntervals";
        }
    }
   
    elsif( $attrName eq "interval" ) {
        if( $cmd eq "set" ) {
            $hash->{INTERVAL}   = $attrVal;
            RemoveInternalTimer($hash);
            Log3 $name, 3, "LoeweTV ($name) - set interval: $attrVal";
            LoeweTV_InternalTimerGetDeviceData($hash);
        }

        elsif( $cmd eq "del" ) {
            $hash->{INTERVAL}   = 15;
            RemoveInternalTimer($hash);
            Log3 $name, 3, "LoeweTV ($name) - delete User interval and set default: 300";
            LoeweTV_InternalTimerGetDeviceData($hash);
        }
    }

    return undef;
}

sub LoeweTV_FirstRun($) {

    my $hash        = shift;
    my $name        = $hash->{NAME};
   
    if(ReadingsVal($name,'presence','absent') eq 'present') {
        LoeweTV_CheckAccess($hash,$hash->{CLIENTID},$hash->{FCID});
        LoeweTV_SendRequest($hash,'GetDeviceData',0);
    } else {
        readingsSingleUpdate($hash,'state','off',1);
    }
   
    InternalTimer( gettimeofday()+10, "LoeweTV_TimerStatusRequest", $hash, 1 );
}

sub LoeweTV_Set($@) {
   
    my ($hash, $name, $cmd, @args) = @_;
    my ($arg, @params) = @args;
   
    my ($action,$RCkey);

   
    if( lc $cmd eq 'setactionfield' ) {

    } elsif( lc $cmd eq 'setvolume' ) {
   
    } elsif( lc $cmd eq 'setmute' ) {
   
    } elsif( lc $cmd eq 'connect' ) { LoeweTV_SendRequest($hash, "RequestAccess", 0)
   
    } elsif( lc $cmd eq 'wakeup' ) {
   
        LoeweTV_WakeUp_Udp($hash,$hash->{HOST},$hash->{TVMAC});
        return;
   
    } elsif( lc $cmd eq '' ) {
   
   
    } elsif( lc $cmd eq '' ) {
   
   
    } else {
   
        my $list    = 'SetActionField SetVolume:slider,0,1,100 SetMute:on,off connect:noArg WakeUp:noArg';
       
        return "Unknown argument $cmd, choose one of $list";
    }
   
   
#     $hash->{helper}{RCkey} = "" if( not defined $hash->{helper}{RCkey} );
#     
#     $hash->{helper}{fcid} = "1234" if( not defined $hash->{helper}{fcid} );
#     
#     LoeweTV_hostUp($hash);
#
#     
#     if (! defined $hash->{CLIENTID}){$hash->{CLIENTID} = "?"};
#     
#     LoeweTV_CheckAccess($hash,$hash->{CLIENTID},$hash->{FCID});
#     
#     if ($hash->{status} eq "accepted") {LoeweTV_SendRequest($hash,$action,$RCkey);}
   
   
   
    LoeweTV_SendRequest($hash,$action,$RCkey) if(ReadingsVal($name,'presence','absent') eq 'present');
   
   
    Log3 $name, 5, "LoeweTV $name: called function LoeweTV_Set()";
    return undef;
}

sub LoeweTV_TimerStatusRequest($) {

### Hier kommen dann die Sachen rein welche alle x Sekunden ausfegührt werden um Infos zu erhalten
### presence zum Beispiel





}

# method to wake via lan, taken from Net::Wake package
sub LoeweTV_WakeUp_Udp($@) {

    my ($hash,$mac_addr,$host,$port) = @_;
    my $name  = $hash->{NAME};

    # use the discard service if $port not passed in
    if (!defined $port || $port !~ /^\d+$/ ) { $port = 9 }

    my $sock = new IO::Socket::INET(Proto=>'udp') or die "socket : $!";
    if(!$sock) {
        Log3 $name, 3, "LoeweTV ($name) - Can't create WOL socket";
        return 1;
    }
 
    my $ip_addr   = inet_aton($host);
    my $sock_addr = sockaddr_in($port, $ip_addr);
    $mac_addr     =~ s/://g;
    my $packet    = pack('C6H*', 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, $mac_addr x 16);

    setsockopt($sock, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt : $!";
    send($sock, $packet, 0, $sock_addr) or die "send : $!";
    close ($sock);

    return 1;
}

sub LoeweTV_CheckAccess($$$) {

    my ( $hash, $clientid, $fcid ) = @_;
    #my ($hash)      = shift;
    my $name        = $hash->{NAME};
    my $n           = 1;
   
   
    while (($hash->{status} ne "Accepted") and ($n<=3)) {
   
        $n=$n+1;
        LoeweTV_SendRequest($hash,"RequestAccess",0);
    };

print "run CHECKACCESS: ".ReadingsVal($name,'state','denied')."   \n";
   
   
    return(ReadingsVal($name,'state','denied'));
   
   
    }

sub LoeweTV_SendRequest($$$) {

    my($hash, $action, $RCkey)  = @_;
   
    my $name                    = $hash->{NAME};

    my ($message, $response, $request, $userAgent, $noob, $twig2, $content, $handlers);
    our $result ="";
    my %actions = (
        "RequestAccess"         =>  [sub {$content='<ltv:DeviceType>Apple iPad</ltv:DeviceType>
                                        <ltv:DeviceName>FHEM</ltv:DeviceName>
                                        <ltv:DeviceUUID>'.$hash->{TVMAC}.'</ltv:DeviceUUID>
                                        <ltv:RequesterName>Assist Media App</ltv:RequesterName>'},
                                        {'m:ClientId' => sub {$hash->{CLIENTID} = $_->text_only('m:ClientId')},
                                        'm:AccessStatus' => sub {$hash->{status} = $_->text_only('m:AccessStatus');},}
                                    ],
                                   
        "InjectRCKey"           =>  [sub {$content='<InputEventSequence>
                                        <RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="press"/>
                                        <RCKeyEvent alphabet="l2700" value="'.$RCkey.'" mode="release"/>
                                        </InputEventSequence>'},{"ltv:InjectRCKey" => sub {$hash->{helper}{lastchunk} = $_->text_only();}},],
                                       
        "GetDeviceData"         =>  [sub {$content='';},{"m:MAC-Address" => sub {$hash->{TVMAC} = $_->text("m:MAC-Address");},"m:Chassis" => sub {$hash->{Chassis} = $_->text("m:Chassis");},"m:SW-Version" => sub {$hash->{SW_Version} = $_->text("m:SW-Version");}}],
           
        "GetChannelList"        =>  [sub {$content="<ltv:ChannelListView>".$RCkey."</ltv:ChannelListView>
                                        <ltv:QueryParameters>
                                        <ltv:Range startIndex='".$ARGV[4]."' maxItems='9999'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="m:GetChannelListResponse"}
                                    ],
                                       
        "GetListOfChannelLists" =>  [sub {$content="<ltv:QueryParameters>
                                        <ltv:Range startIndex='".$RCkey."' maxItems='9999'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="m:ResultItemChannelLists"}
                                    ],
                                       
        "GetMediaItem"          =>  [sub {$content='<MediaItemReference mediaItemUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
           
        "GetMediaEvent"         =>  [sub {$content='<MediaEventReference mediaEventUuid="'.$RCkey.'"/>';$result="m:ShortInfo"}],
           
        "GetChannelInfo"        =>  [sub {$content=""}],
           
        "GetCurrentPlayback"    =>  [sub {$content='';},
                                        {"m:Locator" => sub {$hash->{helper}{lastchunk} = $_->text_only();},}
                                    ],
                                       
        "GetCurrentEvent"       =>  [sub {$content="<ltv:Player>0</ltv:Player>";},
                                        {"m:Name" => sub {$hash->{curevent}[0] = $_->text("m:Name");},
                                        "m:ExtendedInfo" => sub {$hash->{curevent}[1] = $_->text("m:ExtendenInfo");},
                                        "m:Locator" => sub {$hash->{curlocator} = $_->text_only("m:Locator");}},
                                    ],
                                       
        "GetNextEvent"          => [sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetNextEventResponse"}],
           
        "SetActionField"        => [sub {$content="<ltv:InputText>".$RCkey."</ltv:InputText>";$result="m:Result"}],
           
        "SetVolume"             => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
           
        "GetVolume"             => [sub {$content="";$result="m:Value"}],
           
        "SetMute"               => [sub {$content="<Value>".$RCkey."</Value>";$result="m:Value"}],
           
        "GetMute"               => [sub {$content="";$result="m:Value"}],
           
        "GetDRPlusArchive"      => [sub {$content="<ltv:QueryParameters>
                                        <ltv:Range startIndex='".$RCkey."' maxItems='1000'/>
                                        <ltv:OrderField field='userChannelNumber' type='ascending'/>
                                        </ltv:QueryParameters>";$result="ltv:ResultItemDRPlusFragment"}
                                    ],
    );

   
    print "STARTING SENDREQUEST: $action with $RCkey   \n";
   
    #$action = "GetDeviceData" if( ! defined($action));
   
    my $header = "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'><env:Body>";
   
    my $action_xml1 = "<ltv:$action>";
   
    my $header2 = "<ltv:fcid>".$hash->{FCID}."</ltv:fcid><ltv:ClientId>".$hash->{CLIENTID}."</ltv:ClientId>";

    my $action_xml2 = "</ltv:$action>";
   
    my $footer = "</env:Body></env:Envelope>";
   
   



    if ($actions{$action}[0]) {
   
        $actions{$action}[0]->();
        $handlers=$actions{$action}[1];
   
    } else {
        print "Unknown action: $action\n";
    };

    # Aufbau der Messages
    $message = $header.$action_xml1.$header2.$content.$action_xml2.$footer;
    print Dumper $message;
   
    # Aufbau der HTTP Verbindung
    $request = HTTP::Request->new(POST => 'http://'.$hash->{HOST}.':905/loewe_tablet_0001');
   
    # Aufbau des Agents
    $userAgent = LWP::UserAgent->new(agent => 'Assist Media/23 CFNetwork/808 Darwin/16.0.0');
   
    # Aufbau des Headers
    $request->header('Accept' => '*/*');
    $request->header('Accept-Encoding' => 'gzip, deflate');
    $request->header('Accept-Language' => 'de-de');
    $request->header('Connection' => 'keep-alive');
   
    $request->header('SOAPAction' => $action);
   
    # !!!
    $request->content_type("application/soap+xml; charset=utf-8");
   
    # ???
    $request->content($message);
    $response = $userAgent->request($request);
   
    $hash->{lastrequest} = $request->content;
   
    $noob = $response->content;
    #print Dumper $response;
    print "\n";
    print Dumper $noob;
    $twig2 = XML::Twig->new(twig_handlers => $handlers,keep_encoding => 1)->parse($noob);
   
   
    LoeweTV_ResponseProcessing($hash,$action,$response);
}
   
   
sub LoeweTV_ResponseProcessing($$$) {
   
    my ($hash,$action,$response)        = @_;
   
    my $name                    = $hash->{NAME};
   
    Log3 $name, 2, "Sub LoeweTV_PresenceRun ($name) - Response: $response->error_as_HTML";
    Log3 $name, 2, "Sub LoeweTV_PresenceRun ($name) - Response: $response->content";
   
    if($response->code == 200) {
        $hash->{connectsuccess} = "true";
        $hash->{lastresponse} = $response->content;
   
    } else {
        $hash->{connectsuccess} = "false";
        $hash->{lastresponse} = $response->error_as_HTML;
    }
   
    if($action eq "RequestAccess"){
        return($hash->{status})
    }else{
        return($hash->{status})
    };
}

sub LoeweTV_WriteReadings($$) {




}

############ Presence Erkennung Begin #################
sub LoeweTV_Presence($) {

    my $hash    = shift;   
    my $name    = $hash->{NAME};
   
   
    $hash->{helper}{RUNNING_PID} = BlockingCall("LoeweTV_PresenceRun", $name.'|'.$hash->{HOST}, "LoeweTV_PresenceDone", 5, "LoeweTV_PresenceAborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}) );
}

sub LoeweTV_PresenceRun($) {

    my $string          = shift;
    my ($name, $host)   = split("\\|", $string);
   
    my $tmp;
    my $response;

   
    $tmp = qx(ping -c 3 -w 2 $host 2>&1);

    if(defined($tmp) and $tmp ne "") {
   
        chomp $tmp;
        Log3 $name, 5, "LoeweTV ($name) - ping command returned with output:\n$tmp";
        $response = "$name|".(($tmp =~ /\d+ [Bb]ytes (from|von)/ and not $tmp =~ /[Uu]nreachable/) ? "present" : "absent");
   
    } else {
   
        $response = "$name|Could not execute ping command";
    }
   
    Log3 $name, 4, "Sub LoeweTV_PresenceRun ($name) - Sub finish, Call LoeweTV_PresenceDone";
    return $response;
}

sub LoeweTV_PresenceDone($) {

    my ($string)            = @_;
   
    my ($name,$response)    = split("\\|",$string);
    my $hash                = $defs{$name};
   
   
    delete($hash->{helper}{RUNNING_PID});
   
    Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Der Helper ist disabled. Daher wird hier abgebrochen" if($hash->{helper}{DISABLED});
    return if($hash->{helper}{DISABLED});
   
    readingsSingleUpdate($hash,'presence',$response,1);
   
    Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Abschluss!";
}

sub LoeweTV_PresenceAborted($) {

    my ($hash)  = @_;
    my $name    = $hash->{NAME};

   
    delete($hash->{helper}{RUNNING_PID});
    readingsSingleUpdate($hash,'presence','timedout', 1);
   
    Log3 $name, 4, "Sub LoeweTV_PresenceAborted ($name) - The BlockingCall Process terminated unexpectedly. Timedout!";
}

####### Presence Erkennung Ende ############








1;


=pod
=item device
=item summary control for Loewe TV devices via network connection
=item summary_DE Steuerung von Loewe TV Ger&auml;ten &uuml;ber das Netzwerk
=begin html

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html

=begin html_DE

<a name="LoeweTV"></a>
<h3>LoeweTV</h3>

=end html_DE

=cut


Und hier der Eintrag in FHEM:

CFGFN
   
CLIENTID
   
LRemoteClient-1-1505330745
Chassis
   
SL220
DEF    
192.168.0.2
FCID
   
1234
HOST
   
192.168.0.2
INTERVAL
   
15
NAME
   
LoeweTV
NR
   
87
STATE
   
initialized
SW_Version
   
2.4.55.0
TVMAC
   
00:09:82:19:ab:58
TYPE
   
LoeweTV
VERSION
   
0.0.26
connectsuccess
   
true
lastchunk
   
lastrequest
   
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ltv='urn:loewe.de:RemoteTV:Tablet'><env:Body><ltv:GetDeviceData><ltv:fcid>1234</ltv:fcid><ltv:ClientId>LRemoteClient-1-1505330745</ltv:ClientId></ltv:GetDeviceData></env:Body></env:Envelope>
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-1-1505330745</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>
status
   
Accepted
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 13 September 2017, 22:53:25
@der.einstein: Ja - hab mir Deine Änderungen angeschaut - das Problem ist, dass GetDeviceData wohl entgegen der API-Beschreibung wohl nur mit Client-ID geht (auch leer habe ich probiert)

@Cooltux: Das mit der SoapAction war ja bereits drin, das hatte ich wohl übersehen

@CoolTux: Ich habe meine Änderungen mal als pull request in Dein git repository gestellt

In der Version funktioniert GetDeviceData und CheckAccess bei mir grundsätzlich
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 14 September 2017, 06:54:13
Zitat von: viegener am 13 September 2017, 22:53:25
@der.einstein: Ja - hab mir Deine Änderungen angeschaut - das Problem ist, dass GetDeviceData wohl entgegen der API-Beschreibung wohl nur mit Client-ID geht (auch leer habe ich probiert)

@Cooltux: Das mit der SoapAction war ja bereits drin, das hatte ich wohl übersehen

@CoolTux: Ich habe meine Änderungen mal als pull request in Dein git repository gestellt

In der Version funktioniert GetDeviceData und CheckAccess bei mir grundsätzlich

Guten Morgen,

Vielen Dank, ich habe es so übernommen.

@der.einstein
Ich habe immer noch Schwierigkeiten das ganze Konstrukt zu verstehen. Aber ich habe da eine Befürchtung, helft mir mal beide bitte.

"GetDeviceData"         =>  [sub {$content='';},{"m:MAC-Address" => sub {$hash->{TVMAC} = $_->text("m:MAC-Address");},"m:Chassis" => sub {$hash->{Chassis} = $_->text("m:Chassis");},"m:SW-Version" => sub {$hash->{SW_Version} = $_->text("m:SW-Version");}}],


Verstehe ich das richtig? Diese Zeile dient nicht nur zum erstellen einer Anfrage zum Fernsehr hin, sondern ist in Verbindung mit dieser anonymen Subroutine gleich noch die Auswertung? Wenn ja würde dieser Satz von Dir dann auch für mich Sinn ergeben
Zitat
In dem Teil für "GetCurrentEvent" siehst du, wie mehrere Infos aus dem Response extrahiert werden können: Titel, Inhalt, Locator. Diese kann man an der Stelle in jede beliebige Perl-Datenstruktur schieben -> Frage ist, wo du sie haben möchtest.
In meinen Augen wäre das seltsam und unflexible. Wüsste jetzt nicht wie ich da das schreiben der Readings und/oder das neusetzen der DEF unterbringen sollte.


Zitat
Und hier der Eintrag in FHEM:

CFGFN
   
CLIENTID
   
LRemoteClient-1-1505330745
Chassis
   
SL220
DEF   
192.168.0.2
FCID
   
1234
HOST
   
192.168.0.2
INTERVAL
   
15
NAME
   
LoeweTV
NR
   
87
STATE
   
initialized
SW_Version
   
2.4.55.0
TVMAC
   
00:09:82:19:ab:58
TYPE
   
LoeweTV
VERSION
   
0.0.26
connectsuccess
   
true
lastchunk
   
lastrequest


Hier gehören einige Angaben in Readings.
Zitat
<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-1-1505330745</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>

In die Internals kommen aus diesen Informationen lediglich die MAC welche ausserdem mittels $hash->{DEF} noch zusätzlich mit in die DEF kommt sowie die ClientId. Alle anderen Infos müssen in Readings geschrieben werden.
Noch eine Frage zu der MAC, ich sehe hier zwei, einmal WLan und einmal LAN. Ist es egal welche man nimmt? sicherlich nicht. Wie erkennt man ob der Fernsehr über LAN oder WLAN mit FHEM verbunden ist so das wir automatisch die richtige eintragen können?
Wenn man das nicht kann, schlage ich vor beide MAC's erstmal in Readings zu schreiben und dann über die get Funktion ein Auswahlmenü mit den MAC Adressen und der Anbindungsform an zu bieten wo der User dann Anklicken muß wie er eigebunden ist. Danach erst wird $hash->{MAC} gesetzt und $hash->{DEF} neu geschrieben.

Was sagt Ihr dazu?



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 10:55:01
Über das Konstrukt im SendRequest bin ich auch gestolpert. Ja es dient zum Erstellen der Anfrage und Analysieren der Antwort. Kommt sehr elegant daher, finde ich aber persönlich schwer zu warten (es kommen manchmal die berühmten fehlermeldungen mit eval at line 5 - wo ist bitte zeile 5 in dem Konstrukt  ;) ). Und ich stimme zu - für die Handhabung von Readings etc ist das jetzt nicht optimal.

Den Vorschlga mit den MACs finde ich gut - aus meiner Sicht würde ich die MAC sogar aus der DEF heraushalten, denn diese ist ja vom Device zu ermitteln und MAC-Addressen sind nicht das was jeder eintippen will.

Ich denke was man berücktichtigen sollte, ist dass für die meisten Aufrufe eine gültige ClientID erforderlich ist. Diese ist aber nur begrenzt haltbar, deshalb habe ich in einem anderen Modul eine Art queuing eingerichtet. Wenn ein Request mit der Fehlermeldung client id nicht gültig zurückkommt wird einfach ein requestAccess gequeued und dann derselbe aufruf auch in die Queue geschrieben.

Wenn ich das richtig verstehe sind die jetzigen Aufrufe zum Fernseher blocking? Wenn ja dann müsste das vermutlich geändert werden, da ie Queue ist verrmutlich auch notwendig, weil die Aufrufe zum Teil Zeit benötigen und bei Fehlern auch in Timeouts laufen könnten. Dann wäre auch ein Queuing erforderlich, damit immer nur ein Request zum Fernseher geht, selbst wenn jeman den nächsten Request schon absetzt.

Das Queuing ist auch ganz simpel:

- Die Parameter eines Requests werden in der Queue abgelegt - z.B. als Hash oder Array
- Wenn ein Request abgesetzt wird, wird ein Status intern im Modul gesetzt - working
- Sollte ein neuer Request kommen wird dieser einfach in die Queue gestellt - fertig
- Am ende des Requests wird der interne Status einfach wieder auf - idle gesetzt
- Im Fehlerfall lässt sich dann auch ein retry abhandeln

Wie gesagt die Behandlung sollte sowieso non-blocking / asynchron werden
Vorraussetzung ist allerdings, dass man alles was später zur Behandlung der Antwort braucht auch in der Queue im Parameterhash steht

Ich kann da gerne auch beitragen, allerdings wäre wohl eine Umstellung auf httpUtils Vorraussetzung


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 14 September 2017, 11:19:26
Zitat von: CoolTux am 14 September 2017, 06:54:13
Guten Morgen,

Vielen Dank, ich habe es so übernommen.

@der.einstein
Ich habe immer noch Schwierigkeiten das ganze Konstrukt zu verstehen. Aber ich habe da eine Befürchtung, helft mir mal beide bitte.

"GetDeviceData"         =>  [sub {$content='';},{"m:MAC-Address" => sub {$hash->{TVMAC} = $_->text("m:MAC-Address");},"m:Chassis" => sub {$hash->{Chassis} = $_->text("m:Chassis");},"m:SW-Version" => sub {$hash->{SW_Version} = $_->text("m:SW-Version");}}],


Verstehe ich das richtig? Diese Zeile dient nicht nur zum erstellen einer Anfrage zum Fernsehr hin, sondern ist in Verbindung mit dieser anonymen Subroutine gleich noch die Auswertung? Wenn ja würde dieser Satz von Dir dann auch für mich Sinn ergebenIn meinen Augen wäre das seltsam und unflexible. Wüsste jetzt nicht wie ich da das schreiben der Readings und/oder das neusetzen der DEF unterbringen sollte.



Hier gehören einige Angaben in Readings.
In die Internals kommen aus diesen Informationen lediglich die MAC welche ausserdem mittels $hash->{DEF} noch zusätzlich mit in die DEF kommt sowie die ClientId. Alle anderen Infos müssen in Readings geschrieben werden.
Noch eine Frage zu der MAC, ich sehe hier zwei, einmal WLan und einmal LAN. Ist es egal welche man nimmt? sicherlich nicht. Wie erkennt man ob der Fernsehr über LAN oder WLAN mit FHEM verbunden ist so das wir automatisch die richtige eintragen können?
Wenn man das nicht kann, schlage ich vor beide MAC's erstmal in Readings zu schreiben und dann über die get Funktion ein Auswahlmenü mit den MAC Adressen und der Anbindungsform an zu bieten wo der User dann Anklicken muß wie er eigebunden ist. Danach erst wird $hash->{MAC} gesetzt und $hash->{DEF} neu geschrieben.

Was sagt Ihr dazu?



Grüße
Das hatte ich ja versucht dir zu sagen: Request zusammenbauen und Konstruktion des Parsers werden im Hash %actions definiert. Der Vorteil daraus ist, es gibt nur die eine Stelle im Modul, an der ich da was ändern müsste. Der Nachteil ist,  dass es eventuell erstmal ungewöhnlich ist, aber meiner Meinung nach nutzt es Perl sehr gut aus. Daraus erklärt sich auch mein weiterer Vorschlag von weiter oben: für jede definierte Request nicht nur Code angeben der vor dem Request auszuführen ist, sondern auch danach, also "$actions{$action}[2]". Schreiben von Readings und Ändern der DEF sollten damit kein Problem sein.
Ich habe die Art und Weise, wie das geschrieben ist, von den Beispielen zu XML::Twig entlehnt.

Zu dem Problem mit den MACs des TV habe ich es so verstanden dass in dem XML-Feld, dass wir jetzt abfragen, die aktuell relevante Addresse steht. Bei mir ist der TV über LAN im Netz, daher steht dort diese. Wäre er über WLAN im Netz, stünde in dem Feld die andere Addresse. Also sollte es ausreichen, das 1 Feld abzufragen?

@viegener: über HttpUtils könnten wir maximal die Requests absetzen, aber die Responses müssen mit einem speziell für XML gedachten Paket bearbeitet werden, da sollten wir nicht das Rad neu erfinden.
Das mit dem Queuing finde ich interessant. Bei mir hatte bisher aber ausgereicht, vor dem Absetzen eines Request einfach den AccessStatus abzufragen und ggf. die aktuelle ClientId zu verlängern/bestätigen. Ich kann mir aber vorstellen, dass man mit Queuing komplexere Situationen handeln kann.

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 14 September 2017, 11:32:51
Zitat von: viegener am 14 September 2017, 10:55:01
Über das Konstrukt im SendRequest bin ich auch gestolpert. Ja es dient zum Erstellen der Anfrage und Analysieren der Antwort. Kommt sehr elegant daher, finde ich aber persönlich schwer zu warten (es kommen manchmal die berühmten fehlermeldungen mit eval at line 5 - wo ist bitte zeile 5 in dem Konstrukt  ;) ). Und ich stimme zu - für die Handhabung von Readings etc ist das jetzt nicht optimal.
Mag elegant sein für unsere Anforderungen ist es aber verkehrt/kacke. Kenne mich leider damit auch nicht so aus.
Das werden wir sicherlich Ändern müssen.

Zitat
Den Vorschlga mit den MACs finde ich gut - aus meiner Sicht würde ich die MAC sogar aus der DEF heraushalten, denn diese ist ja vom Device zu ermitteln und MAC-Addressen sind nicht das was jeder eintippen will.
Kleines Verständnis Problem glaube. Keiner soll hier ne MAC eintippen. Das aller erste Define welches vom User kommt wird lediglich die Host IP beinhalten als Option
define myTV LoeweTV 192.168.1.1
Sobald der define Befehl ausgeführt wurde wird ein der getDeviceData Befehl ausgeführt und somit die MAC ausgelesen. Nun kommt es drauf an, wäre es nur eine MAC hätte ich in der Auswertung einfach die DEF über den Hash neu geschrieben damit in der Konfig beim define nun die MAC mit dran steht. Würde also in der Konfig dann drin stehen
define myTV LoeweTV 192.168.1.1 00:09:82:19:ab:58
somit kann man dann das bei späteren FHEM Starts ausklammern und muß nicht neu ermitteln. Nur so eine Idee.
Noch logischer kommt es ja daher wenn wir darauf achten müssen welche MAC benutzt wird. So muß man die MAC nur einmal ermitteln lässt sich die mittels FHEM get Befehl anzeigen und klickt dann einfach auf den Link mit der richtigen MAC. Der Link führt entweder den $hash->{DEF} aus oder eben ein defmod oder so.


Zitat
Ich denke was man berücktichtigen sollte, ist dass für die meisten Aufrufe eine gültige ClientID erforderlich ist. Diese ist aber nur begrenzt haltbar, deshalb habe ich in einem anderen Modul eine Art queuing eingerichtet. Wenn ein Request mit der Fehlermeldung client id nicht gültig zurückkommt wird einfach ein requestAccess gequeued und dann derselbe aufruf auch in die Queue geschrieben.
Finde ich eine sehr gute Lösung und sollten wir im Hinterkopf behalten

Zitat
Wenn ich das richtig verstehe sind die jetzigen Aufrufe zum Fernseher blocking? Wenn ja dann müsste das vermutlich geändert werden, da ie Queue ist verrmutlich auch notwendig, weil die Aufrufe zum Teil Zeit benötigen und bei Fehlern auch in Timeouts laufen könnten. Dann wäre auch ein Queuing erforderlich, damit immer nur ein Request zum Fernseher geht, selbst wenn jeman den nächsten Request schon absetzt.

Das Queuing ist auch ganz simpel:

- Die Parameter eines Requests werden in der Queue abgelegt - z.B. als Hash oder Array
- Wenn ein Request abgesetzt wird, wird ein Status intern im Modul gesetzt - working
- Sollte ein neuer Request kommen wird dieser einfach in die Queue gestellt - fertig
- Am ende des Requests wird der interne Status einfach wieder auf - idle gesetzt
- Im Fehlerfall lässt sich dann auch ein retry abhandeln

Wie gesagt die Behandlung sollte sowieso non-blocking / asynchron werden
Vorraussetzung ist allerdings, dass man alles was später zur Behandlung der Antwort braucht auch in der Queue im Parameterhash steht

Ich kann da gerne auch beitragen, allerdings wäre wohl eine Umstellung auf httpUtils Vorraussetzung

Das wird auf jeden Fall noch geändert. Ich wollte erstmal schauen was an kommt und wie man das verarbeiten kann. Mir ging es um das verstehen so das ich das ganze dann auf httputils umbauen kann. Aber noch habe ich einen Knoten im Gehirn.


@der.einstein
Der Request beinhaltete

<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>

Also sollte die tatsächlich relevante MAC in <m:MAC-Address>00:09:82:19:ab:58</m:MAC-Address> stehen, korrekt?

Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 11:40:10
ZitatAlso sollte die tatsächlich relevante MAC in <m:MAC-Address>00:09:82:19:ab:58</m:MAC-Address> stehen, korrekt?

Ja das passt --> Diese Mac ist Loewe Opta zugeordnet / die andere gehört wohl dem Hersteller des WLAN-Moduls (Gemtek)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 11:53:00
Vielleicht sollten wir uns abstimmen was die nunfolgenden Änderungen angeht, damit wir uns nicht gegenseitig ins Handwerk greifen.

Was den Komplex des Requestprocessings angeht gibt es vermutlich eine Abhängigkeit - erst httputils / dann queuing?

Ich kann vermutlich zu beidem beitragen, vielleicht muss man das sogar in einem Rutsch machen, da für den Callback bei httputil ja sowieso eine Parameterübergabe im Hash erforderlich wäre.

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 14 September 2017, 12:48:52
Ich kann versuchen Code bei zu tragen sofern ich einige Zusammenhänge und vor allem Ergebnisse verstehe. Testen kann ich leider nicht. Eigentlich wollte ich ja der.einstein nur ein Grundgerüst bieten   ;D
Aber wenn ich schon mal dabei bin.


Es muss doch möglich sein entsprechend die Requests zusammen zu setzen und ab zu schicken und dann den Response der da kommt weiter zu verarbeiten.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 14:06:20
OK, dann versuche ich mich mal an ein paar Änderungen...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 14 September 2017, 15:50:12
Zitat von: viegener am 14 September 2017, 14:06:20
OK, dann versuche ich mich mal an ein paar Änderungen...
Ich werde an dem Code klar weiterschreiben. Allerdings hab ich den Eindruck gewonnen, dass das was ich schreibe eher FHEM untypisch ist. Mir wäre jetzt z. B. egal welches Perl oder FHEM Paket dafür jetzt geladen werden muss, solange das ganze halbwegs performant ist. Ihr hattet ja eher das meiste von mir wieder rausgeschmissen (was ich jetzt nicht schlimm finde). Aber es wäre halt Käse, dass ich weiterschreibe, es hier hochstelle, und allgemeines Desinteresse bzw. Ablehnung das Resultat sind.  In dem Fall hat die Arbeit für mich kaum Sinn.

Falls ihr darauf besteht, alles in GitHub mit Pull Requests etc. zu machen, hab ich da erstmal ne neue Baustelle, wo ich mich einarbeiten müsste.

Wie gesagt ich werd auf jeden Fall weitermachen, aber es macht natürlich am meisten Sinn, wenn wir die Arbeit sinnvoll bündeln können. [emoji41] [emoji106]

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 14 September 2017, 16:03:19
Zitat von: der.einstein am 14 September 2017, 15:50:12
Ich werde an dem Code klar weiterschreiben. Allerdings hab ich den Eindruck gewonnen, dass das was ich schreibe eher FHEM untypisch ist. Mir wäre jetzt z. B. egal welches Perl oder FHEM Paket dafür jetzt geladen werden muss, solange das ganze halbwegs performant ist. Ihr hattet ja eher das meiste von mir wieder rausgeschmissen (was ich jetzt nicht schlimm finde). Aber es wäre halt Käse, dass ich weiterschreibe, es hier hochstelle, und allgemeines Desinteresse bzw. Ablehnung das Resultat sind.  In dem Fall hat die Arbeit für mich kaum Sinn.

Falls ihr darauf besteht, alles in GitHub mit Pull Requests etc. zu machen, hab ich da erstmal ne neue Baustelle, wo ich mich einarbeiten müsste.

Wie gesagt ich werd auf jeden Fall weitermachen, aber es macht natürlich am meisten Sinn, wenn wir die Arbeit sinnvoll bündeln können. [emoji41] [emoji106]

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Und genau deswegen habe ich bereits mehrmals Dir empfohlen Dich in FHEM Developer einzuarbeiten. Dazu gehört der Developer Guide im Wiki, sich andere Module (Multimedia) an zu schauen und sich eine Art Mentor zu suchen.

Es bringt nichts wenn FHEM für 3 Sekunden blockiert wird weil der TV aus ist jemand irgendwas gedrückt hat oder die define Routine läuft. Da laufen die Frauen bei manchen Usern Amok oder der User selber weil wichtige Events für Markisen im Wind ausbleiben.
Du hast bisher für Dich entwickelt und ohne FHEM. Da waren die Ansprüche nicht so hoch und wenn dann halt nur Deine. Ein Modul wird für die Gemeinschaft entwickelt und sollte bestimmten Vorgaben entsprechen. Ist nicht immer Einfach aber meistens Machbar  ;D

Ich denke Mal die erste Aufgabe sollte sein Request und Response zu trennen. Gerne auch erstmal mit der bestehenden Aufruflösung. Wenn das klappt sollte es einfacher sein das auf HttpUtils_NonblockingGet um zu bauen. Es sei denn jemand löst das in einem Rutsch.


Git ist eigentlich Recht einfach. Ich weiß ja nicht wie du entwickelst aber es gibt Integrationen in IDE's oder auch in Editoren.
Bei Linux kann ich Dir helfen, Windows kenne ich gar nicht.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 16:09:51
@der.einstein: Das klingt jetzt eher frustriert und das war sicher nicht meine Absicht.

Grundsätzlich müssen die Dinge aber mit dem Rest von FHEM zusammenpassen, denn sonst kann das keiner Nutzen - Wenn FHEM komplett für Sekunden blockiert wird, weil auf eine Antwort vom Fernseher gewarte wird geht das nicht. --> Deshalb HTTPUtils

Ausserdem vermute ich, dass Cooltux und ich den Ansatz sehen, erstmal müssen die grundsätzlichen Ablaufe define/set/etc laufen, dann kann man funktionen erweitern - deshalb viele Änderungen

Git ist nur einfach besser als Files im Forum austauschen - Wenn Du einen anderen Vorschlag hast wie der Austausch gehen soll - gerne
Ist auch nicht wirklich einfach für Perl aber erlaubt es halt Änderungen von mehreren Leuten zu mergen - Deine Änderungen habe ich gestern händisch übernehmen müssen und das war sehr fehlerkritisch



Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 16:18:05
Ohh Cooltux - Du warst schneller

@der.einstein: Ich habe hier eine Version die mit httputils geht - lass mich wissen ob es Interesse gibt
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 14 September 2017, 16:24:46
Meinst Du jetzt eine Version des LoeweTV Modules? Dann habe ich Interesse.


Ich glaube bei all unseren geschreibe habe ich das wichtigste komplett vergessen.
@der.einstein
Vielen vielen Dank für Deine tolle Vorbereitung. Du hast sicherlich lange im Internet Zeit verbracht um Deine Lösung zu bekommen. Wirklich gute Arbeit. Lass uns nun zusammen versuchen diese tolle Arbeit in FHEM für andere Nutzbar zu machen. Wirst sehen das macht großen Spaß. Nur nicht frustriert hinwerfen nur weil es gerade etwas holprig ist oder Teile weg kommen wo Du bereits investiert hast. Man lernt niemals um sonst.




Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 14 September 2017, 17:01:47
Zitat von: CoolTux am 14 September 2017, 16:24:46
Meinst Du jetzt eine Version des LoeweTV Modules? Dann habe ich Interesse.


Ich glaube bei all unseren geschreibe habe ich das wichtigste komplett vergessen.
@der.einstein
Vielen vielen Dank für Deine tolle Vorbereitung. Du hast sicherlich lange im Internet Zeit verbracht um Deine Lösung zu bekommen. Wirklich gute Arbeit. Lass uns nun zusammen versuchen diese tolle Arbeit in FHEM für andere Nutzbar zu machen. Wirst sehen das macht großen Spaß. Nur nicht frustriert hinwerfen nur weil es gerade etwas holprig ist oder Teile weg kommen wo Du bereits investiert hast. Man lernt niemals um sonst.




Grüße
Ja minimal Frust war jetzt sicherlich mal da. [emoji6]
Ich wollte nur vermeiden, dass wir jetzt aneinander vorbeiarbeiten und ihr mich irgendwo abhängt. Dann könnte ich selber nichts mehr an dem Modul ändern.
Die DeveloperWikis zu Multimedia und Modulen im Allgemeinen habe ich wie gesagt gelesen. Aber es ist nunmal was anderes darüber zu lesen oder es praktisch umzusetzen.
Daher hier meine Bitte: Nehmt mich mit, bei der Entwicklung. Spass macht es allemal. 

Übrigens Wohn ich hier in Kronach in Reichweite des Werksverkaufs. Also falls jemand mal was von Loewe braucht...

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 18:17:35
Zitat von: CoolTux am 14 September 2017, 16:24:46
Meinst Du jetzt eine Version des LoeweTV Modules? Dann habe ich Interesse.


Die frage war zwar primär an der.einstein gerichtet - aber ja es ist ein Version des LoeweTV-Moduls mit HTTPUtils, die asynchron arbeitet (nonblocking über HTTPUtil) - zumindest getAccess und getDeviceData haben bei mir funktioniert. Habe es mal über http in github hochgeladen (habe egrade keinen git client hier), leider kennt es das nun als komplette Ersetzung  :o und zeigt keine detailierten Änderungsinfos
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 18:48:20
Habe mal einen pull request gestellt.

@der.einstein: Die neueste Version ist hier: https://raw.githubusercontent.com/viegener/fhem-LoeweTV/devel/82_LoeweTV.pm (https://raw.githubusercontent.com/viegener/fhem-LoeweTV/devel/82_LoeweTV.pm)

Wenn Du eine andere Idee hast zum SourceCodeAustausch sag Bescheid - ich bin nicht auf github festgelegt...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 14 September 2017, 19:12:51
Zitat von: viegener am 14 September 2017, 18:17:35
Die frage war zwar primär an der.einstein gerichtet - aber ja es ist ein Version des LoeweTV-Moduls mit HTTPUtils, die asynchron arbeitet (nonblocking über HTTPUtil) - zumindest getAccess und getDeviceData haben bei mir funktioniert. Habe es mal über http in github hochgeladen (habe egrade keinen git client hier), leider kennt es das nun als komplette Ersetzung  :o und zeigt keine detailierten Änderungsinfos
Ich bin daran auf jeden Fall interessiert.
Wenn du's auf GitHub gestellt hast, schau ich's mir gern an.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 14 September 2017, 22:53:49
OK, ich bin heute nochmal ein wenig weitergekommen und habe auch mal das queuing eingebaut.

Dabei bin ich ich allerdings auf ein paar Inkonsistenzen gestossen:
- Bei mir kommt keine MAC Addresse - vermutlich geht bei mir der wakeup deshalb auch nicht
- In der Anfrage RequestAccess sollte eigentlich wohl die MAC-des Clients (also des FHEM_Rechners auftauchen), momentan kein grosse Problem, aber vermutlich sollte man das auf die FHEM uniqueid umstellen?
- momentan wird zwar keep-alive gesetzt aber der Socket bleibt nicht offen - vielleicht kann man das auch lassen
- Mir ist nicht klar,w as eigentlich für den Befehl connect vorgesehen war?
- was sollten wir in die fcid eintragen?

Ich stelle noch eine weitere Version nach github
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 15 September 2017, 07:07:31
Zitat von: viegener am 14 September 2017, 22:53:49
OK, ich bin heute nochmal ein wenig weitergekommen und habe auch mal das queuing eingebaut.

Dabei bin ich ich allerdings auf ein paar Inkonsistenzen gestossen:
- Bei mir kommt keine MAC Addresse - vermutlich geht bei mir der wakeup deshalb auch nicht
- In der Anfrage RequestAccess sollte eigentlich wohl die MAC-des Clients (also des FHEM_Rechners auftauchen), momentan kein grosse Problem, aber vermutlich sollte man das auf die FHEM uniqueid umstellen?
- momentan wird zwar keep-alive gesetzt aber der Socket bleibt nicht offen - vielleicht kann man das auch lassen
- Mir ist nicht klar,w as eigentlich für den Befehl connect vorgesehen war?
- was sollten wir in die fcid eintragen?

Ich stelle noch eine weitere Version nach github

Guten Morgen,

1. Bekommst Du gar keine MAC im response mitgeliefert?
2. FHEM uniqueid umstellen? Warum? Die FHEM uniqueid ist doch für sensible Daten als Container gedacht. Verstehe gerade Deinen Gedanken nicht ganz  ;D
3. Ich halte das eigentlich für nicht so schlimm. Es kann sein das der Socketserver trotz keep-alive den Socket nach dem Response zu macht.
4. Ist beim kopieren über geblieben, da noch nicht genau wusste wie das handling an sich sein wird.
5.
Zitat von: der.einstein am 07 September 2017, 19:41:55
Daneben ist vielleicht noch die "fcid" zu erwähnen.
Die kann man benutzen, um eine Session zu kennzeichnen. Ist nur dann relevant, wenn mehrere Geräte gleichzeitig den TV per SOap ansprechen. Z. B. dann, wenn ich die Senderliste Abfrage und über 100 Sender drin sind. Denn, der TV kann bis zu 100 Items (egal was) auf einmal schicken, sind es mehr, muss ich öfter abfragen. Bei den Sendern ist das noch zu umgehen, wer hat schon 100+ Sender in 1 Liste. Aber es kann interessant werden bei z. B. den Aufnahmen, da hab ich schon deutlich mehr.
Jedoch, sollte es ausreichen die fcid einmalig zu setzen und gut ist.
Sollte also egal sein was man da setzt, oder? Hauptsache eindeutig


Ich habe bisschen Pflege betrieben und die set Befehle an die AV Richtlinien angepasst.
@Viegener
Kannst Du bitte kurz erklären wer $ret genau füllt

# send the request non blocking
    if ( defined( $ret ) ) {
      Log3 $name, 1, "LoeweTV_SendRequest $name: Failed with :$ret:";
      LoeweTV_HU_Callback( $hash->{HU_SR_PARAMS}, $ret, "");

    } else {
      $hash->{HU_DO_PARAMS}->{args} = \@args;
     
      Log3 $name, 4, "LoeweTV_SendRequest $name: call url :".$hash->{HU_SR_PARAMS}->{url}.": ";
      HttpUtils_NonblockingGet( $hash->{HU_SR_PARAMS} );

    }

Ich habe im Code nur noch ein my $ret gefunden in der selbigen Routine.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 15 September 2017, 07:28:46
@Viegener
Kannst über Github erkennen das ich etwas neues gepusht habe? Bekommst Du da eine Meldung?


@der.einstein
Wenn Du Fragen hast dann einfach Fragen!



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 15 September 2017, 08:33:08
Zitat von: CoolTux am 15 September 2017, 07:28:46
@Viegener
Kannst über Github erkennen das ich etwas neues gepusht habe? Bekommst Du da eine Meldung?

Nein ich bekomme nur benachrichtigungen bei "conversations" also zum Beispiel wenn Du pull-requests übernimmst.
Nach meinem verständnis muss ich die immer manuell in meinen Fork übernehmen bevor ich loslege.

Einfacher wäre vermutlich, wenn Du mich als "collaborator" in Deinem Repository zulässt (Settings / Collaborators), ich vermute dann kan ich direkt von meiner Platte Änderungen pushen und Konflikte werden dann schon aufgelöst.

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 15 September 2017, 08:42:55
Zitat von: viegener am 15 September 2017, 08:33:08
Nein ich bekomme nur benachrichtigungen bei "conversations" also zum Beispiel wenn Du pull-requests übernimmst.
Nach meinem verständnis muss ich die immer manuell in meinen Fork übernehmen bevor ich loslege.

Einfacher wäre vermutlich, wenn Du mich als "collaborator" in Deinem Repository zulässt (Settings / Collaborators), ich vermute dann kan ich direkt von meiner Platte Änderungen pushen und Konflikte werden dann schon aufgelöst.

Alles klar, das probieren wir mal aus. Ist meine erste Zusammenarbeit so über Github. Hatte zwar mal mit Tobias gemacht aber da haben wir es etwas umständlich gehandhabt.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 15 September 2017, 08:51:32
Habe Dich mal hinzugefügt
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 15 September 2017, 09:03:45
Ich räume das mal von hinten auf:
Zitat von: CoolTux am 15 September 2017, 07:07:31
@Viegener
Kannst Du bitte kurz erklären wer $ret genau füllt


Ja ich gebe zu, dass ist noch auf Zuwachs geplant.
Hintergrund: Beim Aufbau des Requests werden noch keine Konsistenzprüfungen gemacht - wenn diese fehlschlagen soll trotzdem in den callback gelaufen werden, da der dann den nächsten Eintrag in der Queue abarbeitet. Bisher sind da noch keine Checks ich habe den generellen Ablauf aus meinem anderen Modul übernommen.

Also Fehler können schon vor dem Absenden des Requests auftreten und dann soll trotzdem in den callback verzweigt werden, um ein geordnetes Abarbeiten sicherzustellen.

Zitat von: CoolTux am 15 September 2017, 07:07:31
Guten Morgen,

1. Bekommst Du gar keine MAC im response mitgeliefert?
2. FHEM uniqueid umstellen? Warum? Die FHEM uniqueid ist doch für sensible Daten als Container gedacht. Verstehe gerade Deinen Gedanken nicht ganz  ;D
3. Ich halte das eigentlich für nicht so schlimm. Es kann sein das der Socketserver trotz keep-alive den Socket nach dem Response zu macht.
4. Ist beim kopieren über geblieben, da noch nicht genau wusste wie das handling an sich sein wird.
5.Sollte also egal sein was man da setzt, oder? Hauptsache eindeutig


zu 1 - Ja - keinerlei MAC vom Loewe chassis (ich habe einen SL150, der unterstützt wohl diese wakeup/MAC-Teile nicht) - eskommen aber werte (Chassis und SW_Version zurück
zu 2: Mir geht es um die eigentliche uniqueId nicht um die speicherfunktionalität getkey/setkey) sondern darum eine ID für FHEM zu haben, die man an den Fernseher weitergeben kann. Hintergrund - die Fernseher sind schwachbrüstig und müssen alle ClientIds verwalten, nur wenn man da mit einer beliebigen Kennung kommt wird ein neuer Eintrag angelegt, wenn man mit der Mac des Fernsehers kommt ist man nicht gegen andere Einträge geschützt die das üebrschreiben
zu 3 - Ja schlimm ist das nicht aber inkonsistent - entweder kein keep-alive anfordern oder den Socket auch erhalten - Ich würde erstes vorschlagen
zu 4 - OK, connect habe ich entfernt

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 15 September 2017, 09:04:29
Zitat von: CoolTux am 15 September 2017, 08:51:32
Habe Dich mal hinzugefügt
Werde ich später mal ausprobieren - muss vermutlich erstmal meinen Fork auflösen...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 15 September 2017, 09:13:47
Ok. Wäre ja Cool wenn wir das mal raus finden. könnten. Auch für spätere Zusammenarbeiten.
Mein Gedanke ist ja das wenn ich einen push mache in mein devel Du dann eine Info bekommst und dir die neuen Daten ziehen kannst.

Aktuell ist das so das ich ne Info bekomme wenn Du ein pull request machst und ich dann in meiner Konsole
git pull https://github.com/viegener/fhem-LoeweTV.git devel
mache. Vorher habe ich ein extra branch für dich angelegt.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 15 September 2017, 11:35:23
@viegener
Kannst du mal bitte die komplette Response, die du beim GetDeviceData bekommst hier rein kopieren?

Schau mal in die API letzte Seite, da steht was über den Funktionsumfang bei unterschiedlichen Firmwares meine ich.

Ansonsten könntest du auf dem Handy ne Loewe App installieren und per Wireshark schaun, was die sendet/kriegt.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 15 September 2017, 20:58:18
Zitat von: der.einstein am 15 September 2017, 11:35:23
@viegener
Kannst du mal bitte die komplette Response, die du beim GetDeviceData bekommst hier rein kopieren?

Schau mal in die API letzte Seite, da steht was über den Funktionsumfang bei unterschiedlichen Firmwares meine ich.


Ja, das mit dem wakeup ist nur für Chassis 2xx angegeben.

Ich habe das ja ursprünglich nicht mit wireshark gemacht, sondern über einen separaten proxy mit kali https://www.kali.org/ (https://www.kali.org/), da damit auch SSL-Zugriffe protokollierbar sind, das geht so mit wireshark nicht.

Dies ist das Ergebnis des Calls aus FHEM (Zeilenumbrücke von mir)

<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-1505501482</m:ClientId>
<m:Chassis>SL150</m:Chassis>
<m:SW-Version>PV8.46.0</m:SW-Version>
</m:GetDeviceDataResponse>
</SOAP-ENV:Body></SOAP-ENV:Envelope>



Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 15 September 2017, 21:51:53
Zitat von: viegener am 15 September 2017, 20:58:18
Ja, das mit dem wakeup ist nur für Chassis 2xx angegeben.

Ich habe das ja ursprünglich nicht mit wireshark gemacht, sondern über einen separaten proxy mit kali https://www.kali.org/ (https://www.kali.org/), da damit auch SSL-Zugriffe protokollierbar sind, das geht so mit wireshark nicht.

Dies ist das Ergebnis des Calls aus FHEM (Zeilenumbrücke von mir)

<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-1505501482</m:ClientId>
<m:Chassis>SL150</m:Chassis>
<m:SW-Version>PV8.46.0</m:SW-Version>
</m:GetDeviceDataResponse>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

Gut, man könnte jetzt die MAC über das TV-Menü herausfinden oder eventuell Arp oder ein äquivalenten Perl-Call benutzen. Aber hast du mal gecheckt, ob der TV auf Wake-On-LAN Pakete reagiert?

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 16 September 2017, 00:08:18
Zitat von: CoolTux am 15 September 2017, 09:13:47
Ok. Wäre ja Cool wenn wir das mal raus finden. könnten. Auch für spätere Zusammenarbeiten.
Mein Gedanke ist ja das wenn ich einen push mache in mein devel Du dann eine Info bekommst und dir die neuen Daten ziehen kannst.

Aktuell ist das so das ich ne Info bekomme wenn Du ein pull request machst und ich dann in meiner Konsole
git pull https://github.com/viegener/fhem-LoeweTV.git devel
mache. Vorher habe ich ein extra branch für dich angelegt.

Leider ist das mit den jetzigen pull requests sehr hakelig. Denn dann muss ich immer manuell mein Repository mit Deinem abgleichen. Wenn Du mich als "collaborator" hinzufügst in deinem LoeweTV repository (Settings --> Collaborators --> "viegener" eintragen) wäre das vermutlich einfacher und ich muss nicht immer erst mit x Befehlen Deine Änderungen übernehmen - meine Änderungen hochladen und dann manuell einen pull request stellen

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 16 September 2017, 06:05:27
Ups verdammt, vergessen zu erwähnen. Ich habe Dich gestern Abend bereits hinzugefügt.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 17 September 2017, 10:52:23
Zitat von: CoolTux am 16 September 2017, 06:05:27
Ups verdammt, vergessen zu erwähnen. Ich habe Dich gestern Abend bereits hinzugefügt.

Leider klappt das mit dem direkten Einchecken in Dein Repository nicht - Ich bekomme immer noch einen Berechtigungsfehler.
Kannst Du mich nochmal als Collaborator hinzufügen (ich habe mal meinen Fork gelöscht).

Was meintest Du übrigens mit einen Branchangelegt (ich sehe nur devel als Branch)?

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 17 September 2017, 11:01:32
Habe dich noch mal hinzugefügt. Hier der invite Link falls es hilft
https://github.com/LeonGaultier/fhem-LoeweTV/invitations

Ich habe bei mir local einen extra branch und ziehe mir die Änderung aus dem repo von dir. So stand es als Empfehlung bei GitHub in der Meldung das Du ein Request gemacht hast.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 17 September 2017, 11:07:25
Zitat von: CoolTux am 17 September 2017, 11:01:32
Habe dich noch mal hinzugefügt. Hier der invite Link falls es hilft
https://github.com/LeonGaultier/fhem-LoeweTV/invitations

Ich habe bei mir local einen extra branch und ziehe mir die Änderung aus dem repo von dir. So stand es als Empfehlung bei GitHub in der Meldung das Du ein Request gemacht hast.


Klasse jetzt geht es - meine Änderungen von vorgestern sind drin --> Viel einfacher als erst einen pulll request und dann nach dem Merge händisch die Änderungen wieder in mein lokales Repo rüberziehen

Neue Version 0.0.28
Im wesentlichen etwas aufräumen - Die Verbindung (requestAccess) ist jetzt ein Reading
Ich habe im Header so eine Art changelog hinzugefügt, weiss nicht ob das für Euch auch passt


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 17 September 2017, 11:12:20
@der.einstein: Funktioniert der wakeup bei Dir denn korrekt mit dem Modul?

Was sind denn die Funktionen, die im Modul benötigt würden, basierend auf dem jetzigen Grundgerüst.

Ideen:
- Benannte Fernbedienungstasten (so dass man nicht den Code in der Doc nachschauen muss)
- Automatisches Polling von Device Daten und Status (wie zum Beispiel mute-status / volume / sender)
- Abruf der Kanäle / Sender
- Auslesen der Medieninfos
...


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 17 September 2017, 11:23:40
Zitat von: viegener am 17 September 2017, 11:07:25
Klasse jetzt geht es - meine Änderungen von vorgestern sind drin --> Viel einfacher als erst einen pulll request und dann nach dem Merge händisch die Änderungen wieder in mein lokales Repo rüberziehen

Neue Version 0.0.28
Im wesentlichen etwas aufräumen - Die Verbindung (requestAccess) ist jetzt ein Reading
Ich habe im Header so eine Art changelog hinzugefügt, weiss nicht ob das für Euch auch passt

Ok wenn ich das jetzt richtig verstanden habe, schreiben wir beide gleichberechtigt in den devel branch. Ist das richtig? Was genau hast du lokal bei dir gemacht?
Ist ja auch interessant für spätere Projekte
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 17 September 2017, 12:36:18
Zitat von: CoolTux am 17 September 2017, 11:23:40
Ok wenn ich das jetzt richtig verstanden habe, schreiben wir beide gleichberechtigt in den devel branch. Ist das richtig? Was genau hast du lokal bei dir gemacht?
Ist ja auch interessant für spätere Projekte

Ja, aber nicht vollständig gleichberechtigt, denn admin Rechte hast Du - ich habe nur schreibenden Zugriff (ähnlich wie wir im FHEM-SVN mit ganz vielen Leuten zusammenarbeiten)

Ich habe einfach nur für (den origin) mein lokales repository auf meiner Platte statt dem link auf meinen Fork den Link auf Dein Repository eingetragen. Das heisst meine push requests laufen jetzt auf Dein github-repository. Der fork ist gelöscht.
(Ich verwende für die git operationen aber nicht das commandline interface sondern "sourcetree" von atlassian - darunter liegt aber das normale git)


 

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 17 September 2017, 12:57:10
Dann schlage ich mal vor probieren wir es einfach. Müssen uns ja anscheinend beide erst in sowas einarbeiten  ;D

Zurück zum Modul.
Persönlich Versuche ich immer alle Sinnvollen Informationen als Reading dar zu stellen. Man glaubt gar nicht auf was für Ideen die Leute so kommen wenn sie erstmal die Info haben.

Auf jeden Fall
volume
mute
channel
channelName
extInput - HDMI1 u.s.w



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 17 September 2017, 22:30:49
Bin heute abend mal dazugekommen das mit den Readings anzugehen. Dazu gibt es jetzt auch Infrastruktur um Readings beim Auslesen des Ergebnisses / XMLs zu setzen (als Bulk update)
volume / mute werden jetzt als readings gespeichert - und es gibt entsprechende get funktionen


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 17 September 2017, 22:45:46
So, ich möchte mich auch mal wieder melden, nach einem Familienwochenende  8)

Ich habe mir die Implementation mit HttpUtils und Non-Blocking angeschaut, dass mit der Konstruktion und dem Absenden der Response hab ich geschnallt und kann gerne so bleiben.
Den Part mit Non-Blocking muss ich mir dagegen w
ohl noch paar mal zugemüte führen  ;D

@viegener: DIe SOAP Header "SOAPAction" muss (zumindest bei meinem TV) gesetzt sein, und zwar entsprechend dem enthaltenen Loewe-API Befehl, sonst lehnt der TV den Request sofort ab.

Getestet hab ich bei mir Version 0.0.28 aus dem Repository von CoolTux.
Hier funktionieren bei mir das Anlegen des TV, sowie das Update der Readings. Auch funktionieren die Set-Befehle SetVolume, SetMute, InjectRCKey. WakeUp und SetActionField klappen nicht (letzteres ist wohl auch noch nicht implementiert). Leider habe ich keine sinnvollen/passenden Fehler dazu im Log gefunden.

Bzgl. der Funktionen, die ich gerne am Ende hätte:
- channel (wobei dies beim Loewe auch HDMI etc. beinhalten sollte)
- channelName (dies ist schwieriger, aber machbar, und für mich unerlässlich, damit man z.B. in FHEM einen Aufruf a la "set LoeweTV channel "ARD" platzieren kann)
- currentEvent und ggf. nextEvent
- Angabe des Locator bzw. der URL (es ist tasächlich möglich die URL des TV zu einem bst. Kanal auch auf einem anderen Rechner oder am Smartphone zu öffnen, der TV streamt den Kanal ins LAN, somit könnte man den aktuell gesehenen Kanal auf ein anderes Gerät übertragen)
- Programmierung und Auslesen des Aufnahmearchivs (würde ich für mich persönlich erstmal als weniger wichtig sehen)
- die Implementierung der Funktion ZapToChannel (oder wie es heißt), damit kann man einen beliebigen im Netzwerk verfügbaren Stream/Datei abspielen aber auch alle im Loewe verfügbaren Medien)

Für ChannelName habe ich schon ein paar Infos und paar Vorarbeiten gemacht:
- zuerst muss die Kanalliste abgefragt werden (zu Beginn erstmal die Hauptliste "favlist0"
- diese enthält alle MediaItems der Kanäle
- für jedes MediaItem muss mit GetMediaItem abgefragt werden, wie der "ShortTitle" des Kanals ist, und wie dessen "Locator" lautet. Letzteren braucht man, um zu dem definierten Kanal zu zappen, also bräuchte man hier so etwas wie eine Tabelle (in Perl dann ein "Hash of Hashes"?)
- EDIT: D.h. man muss bei jedem Lesen der Kanalliste für jeden Eintrag nocheinmal ein "SendRequest" bzw. "GetMediaItem" schicken.

Wenn Ihr mir sagt, in welcher Form ich meine Änderungen am Code, die sich dann auf einen bestimmten Bereich des Moduls beschränken werden, einbringen kann, würde ich hier gern beitragen.

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 17 September 2017, 22:47:12
Zitat von: viegener am 17 September 2017, 22:30:49
Bin heute abend mal dazugekommen das mit den Readings anzugehen. Dazu gibt es jetzt auch Infrastruktur um Readings beim Auslesen des Ergebnisses / XMLs zu setzen (als Bulk update)
volume / mute werden jetzt als readings gespeichert - und es gibt entsprechende get funktionen

Super. Kurze Anmerkung, sollte sowas nicht automatisiert geholt werden. Also Infos die in Readings dargestellt werden? Niemand drückt ein Knopf um das aktuelle Volume zu erfragen. Oder habe ich da was falsch verstanden?


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 17 September 2017, 22:56:21
Ein Satz noch zu InjectRCKey:
- falls das zum Umschalten benutzt werden sollte, geht das nur gut für Kanäle von 0-9
- das liegt daran, dass man in der aktuellen Konfiguration nur 1 Taste senden kann
- über die "Press" und "Release" Statements könnte man prinzipiell mehrere Tasten schicken, ist aber kompliziert
- eine Alternative ist "ZapToMedia", dafür braucht man den "Locator"
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 17 September 2017, 22:57:15
@der.einstein
Kannst du bitte ein list vom Device hier einstellen.

Du kannst immer die neuste Version von Githib holen und dann ein diff mit Deinen Änderungen hier posten. Wenn es okay ist.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 17 September 2017, 23:00:28
Zitat von: CoolTux am 17 September 2017, 22:47:12
Super. Kurze Anmerkung, sollte sowas nicht automatisiert geholt werden. Also Infos die in Readings dargestellt werden? Niemand drückt ein Knopf um das aktuelle Volume zu erfragen. Oder habe ich da was falsch verstanden?


Grüße

Ja das ist vorgesehen, dass alle diese Daten automatisch über den regelmässigen update geholt werden. Ich habe das momentan noch deaktiviert, da das beim Entwicklen probleme gibt (beim Reload mit syntaxfehlern etc)
Habe ich auch in den TODOs eingetragen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 17 September 2017, 23:02:32
Gerne:

Internals:
   CFGFN
   CLIENTID   LRemoteClient-0-1505682001
   DEF        192.168.0.2 00:09:82:19:ab:58
   FCID       1234
   HOST       192.168.0.2
   INTERVAL   15
   NAME       LoeweTV
   NR         75
   STATE      connected
   TVMAC      00:09:82:19:ab:58
   TYPE       LoeweTV
   VERSION    0.0.28
   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:SetVolumeResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1505682001</m:ClientId><m:Value>230000</m:Value></m:SetVolumeResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
   Hu_do_params:
     args:
       SetVolume
       239976
       undef
       1
   Hu_sr_params:
     NAME
     action     SetVolume
     addr       http://192.168.0.2:905
     buf
     conn
     displayurl http://192.168.0.2:905/loewe_tablet_0001
     handlers
     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: SetVolume
     host       192.168.0.2
     httpheader HTTP/1.1 200 OK

Date: Sun, 17 Sep 2017 23:00:51 GMT

Server: Nano HTTPD library

Content-Type: text/xml

Content-Length: 499
     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:
     Hash:
     Sslargs:
   Readings:
     2017-09-17 23:00:05   Chassis         SL220
     2017-09-17 23:00:05   SW_Version      2.4.55.0
     2017-09-17 23:00:05   TVMAC           00:09:82:19:ab:58
     2017-09-17 23:00:05   access          accepted
     2017-09-17 23:00:02   presence        present
     2017-09-17 23:00:55   requestAction   SetVolume
     2017-09-17 23:00:55   requestResult   SUCCESS
     2017-09-17 23:00:05   state           connected
   actionQueue:
   Helper:
Attributes:
   fhemMAC    00:1e:06:33:95:c9


Mir ist auch aufgefallen, dass ich TVMAC nicht selbst setzen kann, fhemMAC aber schon. Ist das so gewollt, wenn ja, was ist der HIntergrund?

Danke.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 17 September 2017, 23:04:26
Zitat von: der.einstein am 17 September 2017, 22:45:46

@viegener: DIe SOAP Header "SOAPAction" muss (zumindest bei meinem TV) gesetzt sein, und zwar entsprechend dem enthaltenen Loewe-API Befehl, sonst lehnt der TV den Request sofort ab.

Getestet hab ich bei mir Version 0.0.28 aus dem Repository von CoolTux.
Hier funktionieren bei mir das Anlegen des TV, sowie das Update der Readings. Auch funktionieren die Set-Befehle SetVolume, SetMute, InjectRCKey. WakeUp und SetActionField klappen nicht (letzteres ist wohl auch noch nicht implementiert). Leider habe ich keine sinnvollen/passenden Fehler dazu im Log gefunden.



Das ist ja klasse, dass das soweit funktioniert.
Ich habe übrigens festegestellt, dass bei mir grundsätzlich volume 0 zurückkommt, wenn eine externe audioausgabe aktiv ist - mute geht dann auch nicht....

Ja das mit SOAPAction hatte cooltux schon vorher eingabut - ich hatte er nur übersehen, da ich den httpheader nicht ausgegeben habe

Wakeup kann ich definitiv nicht testen, denn das erlaubt mein chassis wohl nicht

An den Kanälen beisse ich mir gerade die Zähne aus, ich bekomme momentan nur SOAPFaults zurück...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 17 September 2017, 23:12:31
Zu der Frage mit der MAC setzen. Alles was uns geliefert wird vom System brauchen wir nicht setzen lassen. Versetzt euch in die Lage eines Otto normal Users. Der will das Modul definieren und loslegen. Die wenigsten wissen überhaupt was eine MAC ist. Daher sollte ja die MAC automatisch ausgelesen werden und dann als Internal sowie in der DEF neu gesetzt werden. Ein setzen der MAC ist im übrigen Bein define möglich.

Bitte kurz festhalten das die MAC des TV worüber ich die ganze Zeit rede nicht als Reading vorgehalten werden muss. Es gibt sie ja bereits als Internal.

Durchaus möglich das wakeup nicht geht. Ich kann das leider nicht testen in meinem Netz, nicht Mal an meinem LG Fernsehr.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 18 September 2017, 00:04:26
OK - channels (zumindest default) lassen sich jetzt abfragen und per media tiem (muss die uuid angegebn werden) auch die Info dazu. Findet sich als Version 30 in github

Jetzt müssen wir aber überlegen, wie wir die Informationen zu den Programmen ablegen/verwalten wollen. Denn Pro kanal kommt da ziemlich viel Info zurück:


<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:GetMediaItemResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1505676484</m:ClientId><m:ResultItem><m:MediaItem itemInfoClass="object.item.videoItem"><m:uuid>chl0:00-0009a401ffff041b2b5c</m:uuid><m:Locator>dvb://localhost/#?chlview=default&amp;progNum=1&amp;gcn=9&amp;onid=41985&amp;tsid=1051&amp;sid=11100</m:Locator><m:Caption>1</m:Caption></m:MediaItem><m:MediaInformation><m:ShortInfo>Das Erste HD</m:ShortInfo></m:MediaInformation></m:ResultItem></m:GetMediaItemResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>


Man braucht wohl auf jeden fall die uuid (damit bekommt man diese Infos)
shortinfo wohl auch, da kommt ja der Name raus

Die eigentlichen Infos zur programm nummer stecke wohl bei mir in der Locator

Ideen?
Ich denke an ein hash in den internals (mit uuid als key) und im value ein Array oder ein space separierter String mit den anderen Infos. Dann eine Reihe von Zugriffsfunktionen. Vermutlich braucht man noch etwas was namen in uuids wandelt für den use case von der.einstein.


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 18 September 2017, 07:53:18
Zitat von: viegener am 18 September 2017, 00:04:26
OK - channels (zumindest default) lassen sich jetzt abfragen und per media tiem (muss die uuid angegebn werden) auch die Info dazu. Findet sich als Version 30 in github

Jetzt müssen wir aber überlegen, wie wir die Informationen zu den Programmen ablegen/verwalten wollen. Denn Pro kanal kommt da ziemlich viel Info zurück:


<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:GetMediaItemResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1505676484</m:ClientId><m:ResultItem><m:MediaItem itemInfoClass="object.item.videoItem"><m:uuid>chl0:00-0009a401ffff041b2b5c</m:uuid><m:Locator>dvb://localhost/#?chlview=default&amp;progNum=1&amp;gcn=9&amp;onid=41985&amp;tsid=1051&amp;sid=11100</m:Locator><m:Caption>1</m:Caption></m:MediaItem><m:MediaInformation><m:ShortInfo>Das Erste HD</m:ShortInfo></m:MediaInformation></m:ResultItem></m:GetMediaItemResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>


Man braucht wohl auf jeden fall die uuid (damit bekommt man diese Infos)
shortinfo wohl auch, da kommt ja der Name raus

Die eigentlichen Infos zur programm nummer stecke wohl bei mir in der Locator

Ideen?
Ich denke an ein hash in den internals (mit uuid als key) und im value ein Array oder ein space separierter String mit den anderen Infos. Dann eine Reihe von Zugriffsfunktionen. Vermutlich braucht man noch etwas was namen in uuids wandelt für den use case von der.einstein.

Was sagt Ihr zu $hash->{helper}{channelinfo}
Und da als Array die Daten ablegen.
Das selbe dann mit Channellist.


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 18 September 2017, 11:16:07
Wegen dem wake on lan habe ich da wohl was gefunden. Mein Fehler, Variablen dreher. Ich mache gleich mal ein fix fertig
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 18 September 2017, 12:00:17
@viegener:
Das Wake-On-LAN musste ich im Loewe-Menü erst einstellen! Heißt irgendwas mit  Netzwerkfähigkeit auch im Standby oder so
ACHTUNG: Bei der "Default" Liste waren es bei mir über 200 Treffer, das ist eine Liste, in der alle gefundenen Kanäle stehen. In der "favlist0" sind bei mir nur 38, die ich selber dahin geschoben habe. Das ist die Liste, die der TV benutzt, wenn du ihn anschaltest. Jetzt kommt das Brenzelige: Sind in der Liste über 100 Einträge, dann kann es sein / muss man mehrmals abfragen, da zumindest mein TV nur bis zu 100 Sender gleichzeitig ausgibt. Ich würde daher erstmal bei der "favlist0" bleiben, falls du so eine hast? Lass doch mal die Abfrage mit "favlist0" laufen bei dir...

@CoolTux:
$hash->{helper}->{channellist} finde ich gut.
Allerdings müsste es sich mindestens um einen %channellist (also ein hash) handeln, dann die MediaItems in den keys und jeweils ein Array als Value. Der Array enthält dann Locator, ShortInfo, Caption (d.h. eventuell verziechtbar?), und Stream (sehr wichtig für mich, diese URL funktioniert dann auch bei anderen Geräten z.B. Smartphone).
Für die andere Richtung, d.h. ShortInfo (Das Erste) -> Locator müsste man das Ganze quasi umgekehrt abspeichern.
Eine Alternative wäre eine andere Datenstruktur, in der Perl das Gnaze tatsächlich als Tabelle ablegt, da bräuchte man aber wieder ein Paket  8)

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 18 September 2017, 15:09:25
Das wake on LAN Problem konnte ich nun abschließend lösen. Den Code werde ich heute Abend mergen. Ihr müsstet dann bitte einmal testen und Feedback geben.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 18 September 2017, 20:43:00
Habe eben die Version 30 getestet.
Die Funktionen (set und get) scheinen alle eine korrekte Response zu generieren. Was aber meines erachtens nach fehlt ist eine "AUtomatik", dass FHEM sich immer rückversichert, dass die aktuelle ClientId noch gültig ist. Dafür müsste eigentlich nur vor jedem sonstigen SendRequest einmalig "RequestAccess" geschickt werden, mit der aktuellen ClientId. Kennt der TV die Id noch, schickt er "Accepted" und alles ist gut, die eigentliche SendRequest wird geschickt. Ist die ClientId nicht mehr gültig, schickt der TV "Denied" oder "Pending" zurück. Dann muss noch 1 oder 2 "RequestAccess" geschickt werden, bis "Accepted" zurück kommt, dann erst sollte die eigentliche "SendRequest" gesendet werden.
Das würde dafür sorgen, dass die Pflicht, eine gültige ClientId vorzuhalten vom User auf FHEM übergeht, was in meinen Augen eine gute Idee ist.

Was meint ihr?

PS: Was mir noch eingefallen ist: die Kanalliste/n und die Zuordnung MediaItem/Locator/ShortTitle/Stream müsste nur 1-malig beim define ausgelesen und so abgespeichert werden, dass sie nach einem Reboot/Restart von FHEM bzw. AN/AUS des TV immer noch zur Verfügung steht. Ist das bei $hash->{helper} der Fall?

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 18 September 2017, 21:00:49
Das ginge nur als Reading oder ausserhalb in eine Datei. Ich finde das sollten wir einfach nach jeden Neustart machen lassen und nach einen power on des TV abfragen ob die liste existiert und wenn ja nicht erneut einlesen. Ausser natürlich die Programmliste die kann man ja alle 15 oder 30 min einlesen oder immer nach einem Kanalwechsel.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 18 September 2017, 21:05:37
Zitat von: der.einstein am 18 September 2017, 20:43:00
Habe eben die Version 30 getestet.
Die Funktionen (set und get) scheinen alle eine korrekte Response zu generieren. Was aber meines erachtens nach fehlt ist eine "AUtomatik", dass FHEM sich immer rückversichert, dass die aktuelle ClientId noch gültig ist. Dafür müsste eigentlich nur vor jedem sonstigen SendRequest einmalig "RequestAccess" geschickt werden, mit der aktuellen ClientId. Kennt der TV die Id noch, schickt er "Accepted" und alles ist gut, die eigentliche SendRequest wird geschickt. Ist die ClientId nicht mehr gültig, schickt der TV "Denied" oder "Pending" zurück. Dann muss noch 1 oder 2 "RequestAccess" geschickt werden, bis "Accepted" zurück kommt, dann erst sollte die eigentliche "SendRequest" gesendet werden.
Das würde dafür sorgen, dass die Pflicht, eine gültige ClientId vorzuhalten vom User auf FHEM übergeht, was in meinen Augen eine gute Idee ist.

Was meint ihr?

PS: Was mir noch eingefallen ist: die Kanalliste/n und die Zuordnung MediaItem/Locator/ShortTitle/Stream müsste nur 1-malig beim define ausgelesen und so abgespeichert werden, dass sie nach einem Reboot/Restart von FHEM bzw. AN/AUS des TV immer noch zur Verfügung steht. Ist das bei $hash->{helper} der Fall?

Grüße.

Natürlich ist es geplant, dass nicht der User sich um RequestAccess kümmern muss. Aber ich habe noch nicht verstanden, warum die ClientID relativ schnell wieder ungültig wird. Und den Aufruf 2 mal zu machen erschliesst sich mir auch noch nicht, denn das klingt danach als ob wir noch etwas falsch machen.

Wie schon beschrieben, das mit der Automatik ist im Prinzip schon vorbereitet, das sollte aber erst aktiviert werden, wenn es etwas stabiler ist (s.o.)

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 18 September 2017, 21:11:13
Zitat von: CoolTux am 18 September 2017, 21:00:49
Das ginge nur als Reading oder ausserhalb in eine Datei. Ich finde das sollten wir einfach nach jeden Neustart machen lassen und nach einen power on des TV abfragen ob die liste existiert und wenn ja nicht erneut einlesen. Ausser natürlich die Programmliste die kann man ja alle 15 oder 30 min einlesen oder immer nach einem Kanalwechsel.

Ja, ich denke auch, das wir die Kanalliste beim Neustart (und auf Anforderung) neulesen sollten. Ich würde die Kanalliste aber nicht regelmässig neu einlesen, sondern das erstmal nur auf manuelle Anforderung (wer will kann das ja alle 15 min per at antriggern).

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 18 September 2017, 21:22:09
@der.einstein: Könntest Du mal aus dem log das Ergebnis Deiner "default" channellist hier posten und auf die erste uuid ein get mediaitem machen? Ich möchte gerne wissen, wie das mit den mediaitems bei neueren chassis aussieht, denn ich habe ja nur das alte chassis.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 18 September 2017, 21:43:17
Hier mal ein paar Responses, wie sie bei mir vom TV kommen:

my $channellists = '<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:GetListOfChannelListsResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>0</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ResultItemChannelLists sequenceNumber="9076677" totalResults="5" returnedResults="5" startIndex="0"><m:ResultItemChannelList><m:View>favlist0</m:View><m:Name>Persönliche Liste 1</m:Name><m:TotalResults>38</m:TotalResults><m:Hash>817932246</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlist1</m:View><m:Name>Persönliche Liste 2</m:Name><m:TotalResults>29</m:TotalResults><m:Hash>236324662</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscan0</m:View><m:Name>DVB-C</m:Name><m:TotalResults>391</m:TotalResults><m:Hash>4024613345</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscan1</m:View><m:Name>Unitymedia</m:Name><m:TotalResults>0</m:TotalResults><m:Hash>509297849</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>avlist0</m:View><m:Name>#3051</m:Name><m:TotalResults>9</m:TotalResults><m:Hash>2242429194</m:Hash></m:ResultItemChannelList></m:ResultItemChannelLists><m:Result>OK</m:Result></m:GetListOfChannelListsResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $channellist = '<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:GetChannelListResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>0</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ChannelListView>favlist0</m:ChannelListView><m:ChannelListName>Persönliche Liste 1</m:ChannelListName><m:ResultItemFragment sequenceNumber="9076676" totalResults="38" returnedResults="38" startIndex="0" hash="817932246"><m:ResultItemReference
mediaItemUuid="chl0:00-00030001ffff041b2b5c"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04372b66"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc35c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc362"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271dc35d"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ec359"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271dc35f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271fc35b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c36c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2719c37b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c363"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2724c375"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271e2b70"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04312856"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff044d2859"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b6ea5"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b2840"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff0437286f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271e2873"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27192b7a"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27212b8e"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2719285b"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff27192b98"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ac385"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ac381"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2720c36f"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2726d04c"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff271ec35a"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2716c365"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04316f46"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff044d2870"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b7033"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04376d6b"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff04376d70"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b6f47"/><m:ResultItemReference mediaItemUuid="chl0:00-00030001ffff041b7031"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2721cf11"/><m:ResultItemReference mediaItemUuid="chl0:00-0003f001ffff2712cf76"/></m:ResultItemFragment></m:GetChannelListResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $curplayback = '<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:GetCurrentPlaybackResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:Mode>tv</m:Mode><m:Locator>channel://9:fffca5971e530d32982</m:Locator></m:GetCurrentPlaybackResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $curevent = '<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:GetCurrentEventResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ItemLocator>channel://9:fffca5971e530d32982</m:ItemLocator><m:Locator>channel://9:fffca5971e530d32982</m:Locator><m:LiveEvent><m:Name>Mrs. Doubtfire - Das stachelige Kindermädchen</m:Name><m:ExtendedInfo>Um seinen Kindern täglich nah sein zu können, schlüpft der geschiedene Schauspieler und Stimmenimitator Daniel Hillard kurzerhand in die Rolle des betagten Kindermädchens Mrs. Doubtfire. Der ständige Rollenwechsel hat jedoch seine Tücken - und verheerende Folgen...</m:ExtendedInfo><m:Availability><m:ScheduledTime startTime="1504030500" duration="9300"/></m:Availability></m:LiveEvent></m:GetCurrentEventResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';

my $mediaitem = '<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:GetMediaItemResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1504032928</m:ClientId><m:ResultItem><m:MediaItem itemInfoClass="object.item.videoItem"><m:uuid>chl0:00-0003f001ffff2716c36c</m:uuid><m:Locator>channel://9:fffca5971e530d32982</m:Locator><m:Caption>9</m:Caption></m:MediaItem><m:MediaInformation><m:ShortInfo>SUPER RTL HD</m:ShortInfo><m:Attributes>13</m:Attributes><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$1$0$8</m:StreamingUrl></m:MediaInformation></m:ResultItem></m:GetMediaItemResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>';


Zu beachten:
Beim "GetListOfChannelLists gibt er mir immer einen Hash aus, der laut API Doku sich nur ändert, wenn auch in der Liste Änderungen stehen: "<m:Hash>817932246</m:Hash>"
Somit könnte man das nutzen, um ein GetChannelList zu triggern bzw. zu überspringen.

Übrigens könnte man die MediaItems der TV-Sender auch "berechnen". Bei mir geht das über die Seite [url]https://helpdesk.kdgforum.de/sendb/belegung-284.html[/url mit den Angaben aus der Loewe Remote API bzgl. TSID, ONID, SID (wenn man das möchte

Beim Response zu "MediaItem" seht ihr auch "<m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$1$0$8</m:StreamingUrl>". Diese URL könnte ich am PC oder am Smartphone öffnen und mir den TV-Kanal vom TV hierhin streamen lassen. Könnte eine ziemlich geile "follow me" Funktion abgeben  8)

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 18 September 2017, 22:45:13
@cooltux: Sehe ich das richtig, dass presence eigentlich nur einmal durchlaufen wird beim define und nicht immer wieder ?
War das so gedacht nur beim define festzustellen ob das Gerät gefunden wird?


Ich hatte mir das bisher noch nicht angeschaut. Wäre es sinnvoll, das regelmässig auszuführen oder war das nicht so gedacht?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 18 September 2017, 22:51:38
Hier mal eine Änderung mit funktionierendem GetCurrentEvent und GetNextEvent. Hoffe, das passt für euch so  8)
Es ist ein Diff gegen Version 31:

0a1,4
> ###############################################################################
> #
> # Developed with Kate
> #
284,286c288,289
<     if( lc $cmd eq 'setactionfield' ) {
<         return "$cmd needs text to show" if ( ( scalar( @args ) != 1 ) );
<         @actionargs = ( 'SetActionField', $args[0] );
---
>     if( lc $cmd eq 'setactionfield' ) {
>
346,351d348
<     } elsif( lc $cmd eq 'currentevent' ) {
<         @actionargs = ( 'GetCurrentEvent' );
<
<     } elsif( lc $cmd eq 'nextevent' ) {
<         @actionargs = ( 'GetNextEvent' );
<     
371c368
<         my $list    = 'volume:noArg mute:noArg currentplayback:noArg listofchannellists channellist mediaitem currentevent:noArg nextevent:noArg';
---
>         my $list    = 'volume:noArg mute:noArg currentplayback:noArg listofchannellists channellist mediaitem';
580,590c577
<         
<         "GetCurrentEvent" =>  [sub {$content="<ltv:Player>0</ltv:Player>";},
<         {"m:Name" => sub {LoeweTV_PrepareReading($hash,"CurrentEvent_Name", $_->text("m:Name"));},
<         "m:ExtendedInfo" => sub {LoeweTV_PrepareReading($hash,"CurrentEvent_Info",$_->text("m:ExtendedInfo"));},
<         "m:Locator" => sub {LoeweTV_PrepareReading($hash,"CurrentEvent_Locator",$_->text("m:Locator"));}}],
<
<         "GetNextEvent" =>  [sub {$content="<ltv:Player>0</ltv:Player>";},
<         {"m:Name" => sub {LoeweTV_PrepareReading($hash,"NextEvent_Name", $_->text("m:Name"));},
<         "m:ExtendedInfo" => sub {LoeweTV_PrepareReading($hash,"NextEvent_Info",$_->text("m:ExtendedInfo"));},
<         "m:Locator" => sub {LoeweTV_PrepareReading($hash,"NextEvent_Locator",$_->text("m:Locator"));}}],
<     
---
>             
595a583,590
>         "GetCurrentEvent"       =>  [sub {$content="<ltv:Player>0</ltv:Player>";},
>                                         {"m:Name" => sub {$hash->{curevent}[0] = $_->text("m:Name");},
>                                         "m:ExtendedInfo" => sub {$hash->{curevent}[1] = $_->text("m:ExtendenInfo");},
>                                         "m:Locator" => sub {$hash->{curlocator} = $_->text_only("m:Locator");}},
>                                     ],
>                                         
>         "GetNextEvent"          => [sub {$content="<ltv:Player>0</ltv:Player>";$result="m:GetNextEventResponse"}],
>             
888a884
>
890a887
>
891a889
>
892a891
>
894a894
>
895a896
>
896a898
>


Und hier mal, was ich jetzt im List habe:

Internals:
   CLIENTID   LRemoteClient-0-1505759665
   DEF        192.168.0.2 00:09:82:19:ab:58
   FCID       1234
   HOST       192.168.0.2
   INTERVAL   15
   NAME       LoeweTV
   NR         47
   STATE      connected
   TVMAC      00:09:82:19:ab:58
   TYPE       LoeweTV
   VERSION    0.0.31
   curlocator channel://6:fffca5971e530532991
   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:GetNextEventResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ItemLocator>channel://6:fffca5971e530532991</m:ItemLocator><m:Locator>channel://6:fffca5971e530532991</m:Locator><m:LiveEvent><m:Name>Zwei bärenstarke Typen</m:Name><m:ExtendedInfo>Im letzten Moment können die Kleinganoven Roscoe und Doug mal wieder der Polizei entkommen, weil sie sich am Flughafen als die ausgerufenen Passagiere Steinberg und Mason ausgeben. Damit gelangen sie allerdings vom Regen in die Traufe: Denn Steinberg und Mason sind CIA-Agenten. Nun müssen Roscoe und Doug in die Rolle der Spione schlüpfen und, ausgerüstet mit allerhand technischem Schickschnack, auf die Jagd nach dem Bösewicht K1 gehen.

Regie: E. B. Clucher
Drehbuch: Marcotullio Barboni
Komponist: Franco Micalizzi
Kamera: Ben McDermott

Darsteller:
Terence Hill (Rosco Frazer)
Bud Spencer (Doug O'Riordon)
Buffy Dee (K1)
Faith Minton (Der Vamp)
David Huddleston (Tiger)
Riccardo Pizzuti (Infido)
Dan Fitzgerald (Porter)
Dan Rambo (Jeremy Scott)
Susan Teesdale (Wirtin)</m:ExtendedInfo><m:Availability><m:ScheduledTime startTime="1505773231" duration="7176"/></m:Availability></m:LiveEvent></m:GetNextEventResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
   Hu_do_params:
     args:
       GetNextEvent
       undef
       undef
       1
   Hu_sr_params:
     NAME
     action     GetNextEvent
     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: GetNextEvent
     host       192.168.0.2
     httpheader HTTP/1.1 200 OK

Date: Mon, 18 Sep 2017 22:48:46 GMT

Server: Nano HTTPD library

Content-Type: text/xml

Content-Length: 1514
     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:
       NextEvent_Info Im letzten Moment können die Kleinganoven Roscoe und Doug mal wieder der Polizei entkommen, weil sie sich am Flughafen als die ausgerufenen Passagiere Steinberg und Mason ausgeben. Damit gelangen sie allerdings vom Regen in die Traufe: Denn Steinberg und Mason sind CIA-Agenten. Nun müssen Roscoe und Doug in die Rolle der Spione schlüpfen und, ausgerüstet mit allerhand technischem Schickschnack, auf die Jagd nach dem Bösewicht K1 gehen.

Regie: E. B. Clucher
Drehbuch: Marcotullio Barboni
Komponist: Franco Micalizzi
Kamera: Ben McDermott

Darsteller:
Terence Hill (Rosco Frazer)
Bud Spencer (Doug O'Riordon)
Buffy Dee (K1)
Faith Minton (Der Vamp)
David Huddleston (Tiger)
Riccardo Pizzuti (Infido)
Dan Fitzgerald (Porter)
Dan Rambo (Jeremy Scott)
Susan Teesdale (Wirtin)
       NextEvent_Locator channel://6:fffca5971e530532991
       NextEvent_Name Zwei bärenstarke Typen
     Handlers:
     Hash:
     Sslargs:
   Readings:
     2017-09-17 23:00:05   Chassis         SL220
     2017-09-18 22:48:44   CurrentEvent_Info Der Chinese Han Sing, ein knallharter Ex-Cop, kommt in die USA, um den Tod seines Bruders zu rächen, eines hochrangigen Mitglieds einer mächtigen asiatischen Gang. Als Han in den blutigen Bandenkrieg zwischen den Asiaten und einer rivalisierenden afro-amerikanischen Gang gerät, versucht er zu vermitteln. Doch dann verliebt er sich in Trish O'Day, die Tochter des Anführers der Gegenseite. Gemeinsam suchen Han und Trish nach einer friedlichen Lösung für die Feindseligkeiten.

Regie: Andrzej Bartkowiak
Drehbuch: John Jarrell, Jerrold E. Brown, Mitchell Kapner
Komponist: Stanley Clarke
Kamera: Glen MacPherson

Darsteller:
Jet Li (Han Sing)
Aaliyah (Trish O'Day)
Russell Wong (Kai Sing)
Isaiah Washington (Mac)
Delroy Lindo (Isaak O'Day)
Anthony Anderson (Maurice)
DMX (Silk)
DB Woodside (Colin O'Day)
Henry O (Ch'u Sing)
     2017-09-18 22:48:44   CurrentEvent_Locator channel://6:fffca5971e530532991
     2017-09-18 22:48:44   CurrentEvent_Name Romeo Must Die
     2017-09-18 22:48:47   NextEvent_Info  Im letzten Moment können die Kleinganoven Roscoe und Doug mal wieder der Polizei entkommen, weil sie sich am Flughafen als die ausgerufenen Passagiere Steinberg und Mason ausgeben. Damit gelangen sie allerdings vom Regen in die Traufe: Denn Steinberg und Mason sind CIA-Agenten. Nun müssen Roscoe und Doug in die Rolle der Spione schlüpfen und, ausgerüstet mit allerhand technischem Schickschnack, auf die Jagd nach dem Bösewicht K1 gehen.

Regie: E. B. Clucher
Drehbuch: Marcotullio Barboni
Komponist: Franco Micalizzi
Kamera: Ben McDermott

Darsteller:
Terence Hill (Rosco Frazer)
Bud Spencer (Doug O'Riordon)
Buffy Dee (K1)
Faith Minton (Der Vamp)
David Huddleston (Tiger)
Riccardo Pizzuti (Infido)
Dan Fitzgerald (Porter)
Dan Rambo (Jeremy Scott)
Susan Teesdale (Wirtin)
     2017-09-18 22:48:47   NextEvent_Locator channel://6:fffca5971e530532991
     2017-09-18 22:48:47   NextEvent_Name  Zwei bärenstarke Typen
     2017-09-17 23:00:05   SW_Version      2.4.55.0
     2017-09-17 23:00:05   TVMAC           00:09:82:19:ab:58
     2017-09-18 22:48:01   access          accepted
     2017-09-18 22:18:34   presence        present
     2017-09-18 22:48:47   requestAction   GetNextEvent
     2017-09-18 22:48:47   requestResult   SUCCESS
     2017-09-18 22:48:01   state           connected
     2017-09-18 22:48:18   volume          20
   actionQueue:
   curevent:
     Romeo Must Die
     Der Chinese Han Sing, ein knallharter Ex-Cop, kommt in die USA, um den Tod seines Bruders zu rächen, eines hochrangigen Mitglieds einer mächtigen asiatischen Gang. Als Han in den blutigen Bandenkrieg zwischen den Asiaten und einer rivalisierenden afro-amerikanischen Gang gerät, versucht er zu vermitteln. Doch dann verliebt er sich in Trish O'Day, die Tochter des Anführers der Gegenseite. Gemeinsam suchen Han und Trish nach einer friedlichen Lösung für die Feindseligkeiten.

Regie: Andrzej Bartkowiak
Drehbuch: John Jarrell, Jerrold E. Brown, Mitchell Kapner
Komponist: Stanley Clarke
Kamera: Glen MacPherson

Darsteller:
Jet Li (Han Sing)
Aaliyah (Trish O'Day)
Russell Wong (Kai Sing)
Isaiah Washington (Mac)
Delroy Lindo (Isaak O'Day)
Anthony Anderson (Maurice)
DMX (Silk)
DB Woodside (Colin O'Day)
Henry O (Ch'u Sing)
   Helper:
Attributes:
   fhemMAC    00:1e:06:33:95:c9
   room       Andreas


Sieht sowiet ganz gut aus. Man könnte jetzt überlegen, wie man das präsentieren will, es gäbe ja auch noch die Startzeit und die Dauer zum Auslesen bzw. Berechnen (Startzeit+Dauer=Endzeit).

PS: "SetActionField" hatte bei mir irgendwie nicht hingehaun. Mit den Änderungen oben klappt es aber.

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 19 September 2017, 01:10:11
Ich habe gerade noch version 32 hochgeladen.

Hauptsächlich mit einem kompletten Auslesen der channellist (die daten werden aber noch nicht abgelegt)
Es gibt ein attribut channellist in dem man die abgefragte channellist hinterlegen kann

Achtung. Die ist sehr geschwätzig im log file!!!! - da alle channelinfos gelesen werden und dann automatisch für jeden Eintrag ein getMediaIteam ausgelöst wird.

Ich kann sagen das Queuing funktioniert  ;)

Es steht aber noch an
- Daten im helper - hash ablegen (Format: Ich tendiere als ersten Schritt mal zu einem String aus
    caption url name
- Log file einträge muss ich noch etwas disziplinieren
- irgendwas muss noch mit den channelinfos passieren - also umschaltung oder so
   ich hatte gedacht, dass man ein set channel mit dropdown anbieten
...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 19 September 2017, 07:23:06
Zitat von: viegener am 18 September 2017, 22:45:13
@cooltux: Sehe ich das richtig, dass presence eigentlich nur einmal durchlaufen wird beim define und nicht immer wieder ?
War das so gedacht nur beim define festzustellen ob das Gerät gefunden wird?


Ich hatte mir das bisher noch nicht angeschaut. Wäre es sinnvoll, das regelmässig auszuführen oder war das nicht so gedacht?

Guten Morgen,

Die presence Funktion sollte später in einem Timer laufen. Sobald erkannt wird das der TV presence ist können die Daten geholt werden. So war die Idee.

Ich hoffe das ich heute Mal dazu komme mir alles neue an zu schauen und das wake on LAN ein zu bauen.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 19 September 2017, 08:38:50
Ich habe soeben Version 0.0.33 eingecheckt. Der WakeOnLAN sollte nun funktionieren.
@Johannes
Wenn ich das richtig gesehen habe, hast Du den patch von der.einstein schon eingebaut!?




Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 19 September 2017, 10:20:42
Zitat von: CoolTux am 19 September 2017, 08:38:50
@Johannes
Wenn ich das richtig gesehen habe, hast Du den patch von der.einstein schon eingebaut!?

Nein, den Fix von der.einstein habe ich NICHT eingebaut, den habe ich zu spät gesehen und musste dann erstmal die Änderungen zum Queuing der channellist durchbekommen - damit ich keinen unfertigen Branch bei mir habe. Übrigens das mit der Kollaboration auf Deinem github-Repository funktioniert für mich sehr gut.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 19 September 2017, 10:29:38
So war das ja auch gedacht mit der Zusammenarbeit  ;D
Wenn ich dazu komme werde ich den patch einarbeiten. Sah nur für mich so aus als wenn da schon was wäre.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 19 September 2017, 10:33:54
Zitat von: CoolTux am 19 September 2017, 07:23:06
Die presence Funktion sollte später in einem Timer laufen. Sobald erkannt wird das der TV presence ist können die Daten geholt werden. So war die Idee.

Ich hoffe das ich heute Mal dazu komme mir alles neue an zu schauen und das wake on LAN ein zu bauen.


Ja das hatte ich so angenommen. Danke für die Bestätigung.

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 19 September 2017, 11:39:58
Wenn alle einverstanden sind würde ich im nächsten Schritt versuche das Auslesen und Verwalten der Channellist zu vervollständigen.
- Auslesen
- Verwalten
- Zugriffsfunktionen
--> Find name for UUID / channelnum(caption)
--> find UUID for channelnum
--> dump channellist
- channellist attribute handling
- ...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 19 September 2017, 12:11:45
Nichts dagegen.  ;D
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 19 September 2017, 12:46:15
@viegener:
Ja, gerne.

Ich würde mir mal anschaun, wie man einen beliebigen Sender einstellt (Zaptomedia oder so). Hierfür braucht man dann den Locator. Der kann aber auch eine URL eines Streams sein.

Würde es dann wieder als Diff Patch posten?

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 19 September 2017, 20:53:09
Hoffe, ihr habt die Änderungen noch nicht eingepflegt.
Hier die Änderungen von oben gegen v30 mit zusätzlich ZapToMedia implementiert als "switchto"

--- 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='';},


Somit kann mit "set MyLoewe switchto locator" auf einen anderen Kanal geschalten werden. Das klappt erstaunlich gut und außerdem schneller als mit der Fernbedienung. Der Locator muss in diesem Fall zwingend ein Channel sein. Durch GetMediaItem kann ich aus einer UUID den Locator bekommen.

Cool wäre es jetzt, wenn man aus einer Dropdownliste "ARD" oder ähnliches auswählen könnte.

Es gibt auch noch die Funktion "ZapToApplication". Damit kann ich zu einer bestimmten Website springen. Ist das von Interesse?

Was könnte man sinnvollerweise als Text aus FHEM auf dem TV anzeigen?  ;D Also via "SetActionField"...

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 19 September 2017, 23:09:18
@der.einstein
Ich habe die Vermutung das Dein Patch falsch erstellt ist. Du darfst nicht ein patch von Deiner geänderten Version gegen die alte Version erstellen, sondern immer von der alten gegen die neue
diff -up oldfile newfile > /path/to/patchfile.patch

Deswegen dachte ich auch Johannes hätte Deine Version schon eingespielt.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 19 September 2017, 23:24:33
Version 0.0.34
Ich habe der.einstein seinen Patch eingepflegt
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 01:06:06
Geht ja gut voran - ich habe auch noch eine

Version 0.0.35

Die Channels werden jetzt eingelesen mit Medieninfo
per attribut maxchannels kann man die Anzahl jetzt begrenzen
mit get showchannellist kann man eine Textversion der Channelliste zur Anzeige bringen

Bitte (mindestens) diese Version für weitere diffs nehmen, es ist ziemlich viel dazugekommen und auch verschoben
(Ich wollte alle channelfunktionen in einem Block haben, denn langsam wird das Modul lang)

Ja ich habe meine Änderungen natürlich in die 34 gemerged und nicht einfach überschrieben...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 September 2017, 12:41:57
@CoolTux: Ja, hatte ich vermutlich falsch rum gemacht :-D

@viegener: Natürlich sollte der Patch für die aktuelle Version sein, aber wie auch du, ist es für mich auch doof alles 2mal zu machen. Beim nächsten mal wird alles besser :-)

Bleibt zu konstatieren, dass es voran geht.

Aufnahmen zu setzen würde ich mal als nächstes angehen. Wichtig wäre hier für mich, wie in FHEM normalerweise die Zeiten angegeben werden. Beim LoeweTV muss es dann ja als Epoch UTC plus Dauer in Sekunden ankommen. Was ist hier bei FHEM die Konvention?

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 12:54:24
Zitat von: der.einstein am 20 September 2017, 12:41:57
@viegener: Natürlich sollte der Patch für die aktuelle Version sein, aber wie auch du, ist es für mich auch doof alles 2mal zu machen. Beim nächsten mal wird alles besser :-)



War von mir nicht als Vorwurf gemeint, aber das mergen ist immer sehr aufwändig, wenn Blöcke verschoben werden.

Generell bevor es zu weit geht wäre es mir wichtig, dass noch mehr Tests und die Grundstruktur passt, denn es stehen noch ein paar ganz grundsätzliche Dinge an

- Regelmässiges Abfragen der Daten / Presence Status
- Fehlerbehandlung SOAP-Fault / leere Rückgaben / AccessDenied or pending
- Keep-Alive auf dem socket (ich habe das Gefühl, dass bei der Channellist --> ca. 200 Abfragen bei mir hier deutlich performance zu gewinnen wäre
- Log messages anpassen (verbose level)

Gerade bei der Fehlerbahndlung habe ich ein Problem: Wenn der Client nicht akzeptiert wird, sendet mein Fernseher eine gültige Soap-Nachricht mit allen Tags aber ohne die eigentlichen Daten zurück - Nicht einfach zu erkennen und nicht dokumentiert
Passiert das bei Dir auch?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 September 2017, 13:09:41
@viegener: Nein, hab ich noch nicht gesehen. Ich krieg dann immer nur den HTTP Fehler 200(?). In der API steht so ein Verhalten ja nur für das GetDeviceData, schon möglich, dass das bei anderen Responses auch so gehandhabt wird. Hast du bestimmt schon gemacht, aber der Vollständigkeit halber: Hast du mal gecheckt, ob es für dein Chassis eine neue Firmware gibt?

Am Ende der API gibt es noch eine Funktion, um die Settings des TV auszulesen, unter anderem, ob Wake-On-LAN gesetzt ist. Ich weiß jetzt auch nicht, was da zurückkommt, wenn der TV WOL gar nicht erst unterstützt. Könnte uns das was helfen, dann darauf basierend den TV unterschieldich im Modul zu behandeln?

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 13:57:50
@Johannes,
In den Zeilen 813-817

if ( defined( $refreadings->{$readName} ) ) {
        readingsBulkUpdate($hash, $readName, $refreadings->{$readName} );       
      } else {
        delete($hash->{READINGS}{$readName});
      }


Hier stößt mir das delete($hash->{READINGS}{$readName}); unangenehm auf.
Kurze Frage warum sollten hier bereits angelegte Readings wieder gelöscht werden? Sowas soll ja laut Developer Guide (inoffiziell) nicht gewünscht sein.
Und die zweite Frage, wenn doch nötig so wäre es besser dies über die FHEM Routine CommandDeleteReading zu machen, da Hash Manipulationen vermieden werden sollen.
Daher wenn nötig

if ( defined( $refreadings->{$readName} ) ) {
        readingsBulkUpdate($hash, $readName, $refreadings->{$readName} );       
      } else {
        CommandDeleteReading(undef,$readName);
      }


Wie denkst Du darüber?



Grüße
Leon
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 14:18:59
@cooltux: Oh Je - mein Code stösst unnangenehm auf - das will ich natürlich nicht  ;)

Aber ja, Du hast absolut recht, das ist eine alte Routine, die ich einfach per Copy/Paste übertragen habe. Ich hatte den Mechanismus um Readings aufzusammeln auch in anderen Modulen im Einsatz und er passt hier ja ebenfalls. Der Mechanismus wird bei mir benötigt, wenn es dynamische Readings gibt, die Abhängigkeit von extern sind. HTTPMod wäre ein Beispiel für ein Modul, das ebenfalls solche dynamischen Abhängigkeiten und meiner Erinnerung nach auch Readings entfernt.

Willst Du die Änderung machen?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 14:22:30
Ich würde die Änderung machen. Komplett das delete weg oder magst lieber löschen. Ist Deine Routine also Deine Entscheidung  :)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 14:46:18
Zitat von: CoolTux am 20 September 2017, 14:22:30
Ich würde die Änderung machen. Komplett das delete weg oder magst lieber löschen. Ist Deine Routine also Deine Entscheidung  :)

Ich mag die Variante mit CommandDeleteReading lieber, ich denke wir werden dynamische Readings bekommen...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 14:51:27
Zitat von: viegener am 20 September 2017, 14:46:18
Ich mag die Variante mit CommandDeleteReading lieber, ich denke wir werden dynamische Readings bekommen...

Ist schon geändert und wird gleich hochgeladen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 September 2017, 19:21:27
Soll ich eigentlich mal das Repo von euch beiden im ersten Post angeben?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 19:30:43
Nein bitte nicht. Das Modul ist in noch keinem wirklich funktionsfähigen Zustand für User.
Noch etwas Geduld.

Kann mir mal einer ein List vom Device machen. Mich interessieren die Readings.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 September 2017, 19:39:10
Kein Problem, war nur so ne Idee.

Hier das Listing:

Internals: CLIENTID LRemoteClient-0-1505928675 DEF 192.168.0.2 00:09:82:19:ab:58 FCID 1234 HOST 192.168.0.2 INTERVAL 15 NAME LoeweTV NR 47 STATE connected TVMAC 00:09:82:19:ab:58 TYPE LoeweTV VERSION 0.0.35 curlocator channel://6:fffca5971e530532991 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:GetMediaItemResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet"> <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1505928675</m:ClientId><m:ResultItem><m:MediaItem itemInfoClass="object.item.videoItem"><m:uuid>chl0:00-0003f001ffff2712cf76</m:uuid><m:Locator>channel://38:fffca5971e530931574</m:Locator><m:Caption>38</m:Caption></m:MediaItem><m:MediaInformation><m:ShortInfo>RTL NITRO</m:ShortInfo><m:Attributes>131080</m:Attributes><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$1$0$37</m:StreamingUrl></m:MediaInformation></m:ResultItem></m:GetMediaItemResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope> Hu_do_params: args: GetMediaItem chl0:00-0003f001ffff2712cf76 undef 1 Hu_sr_params: NAME action GetMediaItem 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: GetMediaItem host 192.168.0.2 httpheader HTTP/1.1 200 OK Date: Wed, 20 Sep 2017 19:34:38 GMT Server: Nano HTTPD library Content-Type: text/xml Content-Length: 881 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: Handlers: Hash: Sslargs: Readings: 2017-09-17 23:00:05 Chassis SL220 2017-09-20 19:31:35 CurrentEvent_Info Sebastian, 33 Jahre: Vorspeise: Harzer Bergsteiger-Süppchen Hauptspeise: Lammfilet mit Kartoffelrösti und Böhnchen Nachspeise: Harzer Schlemmerküchlein auf Mango- und Passionsfruchtpüree 2017-09-20 19:31:35 CurrentEvent_Locator channel://5:fffca5971e53063299d 2017-09-20 19:31:35 CurrentEvent_Name Das perfekte Dinner 2017-09-18 22:48:47 NextEvent_Info Im letzten Moment können die Kleinganoven Roscoe und Doug mal wieder der Polizei entkommen, weil sie sich am Flughafen als die ausgerufenen Passagiere Steinberg und Mason ausgeben. Damit gelangen sie allerdings vom Regen in die Traufe: Denn Steinberg und Mason sind CIA-Agenten. Nun müssen Roscoe und Doug in die Rolle der Spione schlüpfen und, ausgerüstet mit allerhand technischem Schickschnack, auf die Jagd nach dem Bösewicht K1 gehen. Regie: E. B. Clucher Drehbuch: Marcotullio Barboni Komponist: Franco Micalizzi Kamera: Ben McDermott Darsteller: Terence Hill (Rosco Frazer) Bud Spencer (Doug O'Riordon) Buffy Dee (K1) Faith Minton (Der Vamp) David Huddleston (Tiger) Riccardo Pizzuti (Infido) Dan Fitzgerald (Porter) Dan Rambo (Jeremy Scott) Susan Teesdale (Wirtin) 2017-09-18 22:48:47 NextEvent_Locator channel://6:fffca5971e530532991 2017-09-18 22:48:47 NextEvent_Name Zwei bärenstarke Typen 2017-09-17 23:00:05 SW_Version 2.4.55.0 2017-09-17 23:00:05 TVMAC 00:09:82:19:ab:58 2017-09-20 19:33:57 access accepted 2017-09-18 22:18:34 presence present 2017-09-20 19:34:41 requestAction GetMediaItem 2017-09-20 19:34:41 requestResult SUCCESS 2017-09-20 19:33:57 state connected 2017-09-18 22:48:18 volume 20 actionQueue: curevent: Romeo Must Die Der Chinese Han Sing, ein knallharter Ex-Cop, kommt in die USA, um den Tod seines Bruders zu rächen, eines hochrangigen Mitglieds einer mächtigen asiatischen Gang. Als Han in den blutigen Bandenkrieg zwischen den Asiaten und einer rivalisierenden afro-amerikanischen Gang gerät, versucht er zu vermitteln. Doch dann verliebt er sich in Trish O'Day, die Tochter des Anführers der Gegenseite. Gemeinsam suchen Han und Trish nach einer friedlichen Lösung für die Feindseligkeiten. Regie: Andrzej Bartkowiak Drehbuch: John Jarrell, Jerrold E. Brown, Mitchell Kapner Komponist: Stanley Clarke Kamera: Glen MacPherson Darsteller: Jet Li (Han Sing) Aaliyah (Trish O'Day) Russell Wong (Kai Sing) Isaiah Washington (Mac) Delroy Lindo (Isaak O'Day) Anthony Anderson (Maurice) DMX (Silk) DB Woodside (Colin O'Day) Henry O (Ch'u Sing) Helper: ChannelListCount 38 ChannelListView favlist0 Channellist: chl0:00-00030001ffff041b2840: chl0:00-00030001ffff041b2840 channel://17:fffca5671e70003cebe 17 SWR RP HD chl0:00-00030001ffff041b2b5c: chl0:00-00030001ffff041b2b5c channel://1:fffca5671e70003b192 1 Das Erste HD chl0:00-00030001ffff041b6ea5: chl0:00-00030001ffff041b6ea5 channel://16:fffca5671e700037445 16 WDR HD Köln chl0:00-00030001ffff041b6f47: chl0:00-00030001ffff041b6f47 channel://35:fffca5671e7000375a7 35 ARD-alpha chl0:00-00030001ffff041b7031: chl0:00-00030001ffff041b7031 channel://36:fffca5671e7000376c9 36 tagesschau24 chl0:00-00030001ffff041b7033: chl0:00-00030001ffff041b7033 channel://32:fffca5671e7000376cb 32 EinsPlus chl0:00-00030001ffff04312856: chl0:00-00030001ffff04312856 channel://14:fffca5671e702a3ce94 14 BR Nord HD chl0:00-00030001ffff04316f46: chl0:00-00030001ffff04316f46 channel://30:fffca5671e702a375a4 30 SR Fernsehen chl0:00-00030001ffff0437286f: chl0:00-00030001ffff0437286f channel://18:fffca5671e702c3ce8f 18 rbb Berlin HD chl0:00-00030001ffff04372b66: chl0:00-00030001ffff04372b66 channel://2:fffca5671e702c3b184 2 ZDF HD chl0:00-00030001ffff04376d6b: chl0:00-00030001ffff04376d6b channel://33:fffca5671e702c37383 33 ZDFinfo chl0:00-00030001ffff04376d70: chl0:00-00030001ffff04376d70 channel://34:fffca5671e702c3738e 34 zdf.kultur chl0:00-00030001ffff044d2859: chl0:00-00030001ffff044d2859 channel://15:fffca5671e70563ce91 15 NDR FS HH HD chl0:00-00030001ffff044d2870: chl0:00-00030001ffff044d2870 channel://31:fffca5671e70563ce8e 31 MDR Sachsen HD chl0:00-0003f001ffff2712cf76: chl0:00-0003f001ffff2712cf76 channel://38:fffca5971e530931574 38 RTL NITRO chl0:00-0003f001ffff2716c363: chl0:00-0003f001ffff2716c363 channel://11:fffca5971e530d3299b 11 sixx HD chl0:00-0003f001ffff2716c365: chl0:00-0003f001ffff2716c365 channel://29:fffca5971e530d32985 29 ServusTV HD chl0:00-0003f001ffff2716c36c: chl0:00-0003f001ffff2716c36c channel://9:fffca5971e530d32982 9 SUPER RTL HD chl0:00-0003f001ffff2719285b: chl0:00-0003f001ffff2719285b channel://22:fffca5971e53023ce93 22 PHOENIX HD chl0:00-0003f001ffff27192b7a: chl0:00-0003f001ffff27192b7a channel://20:fffca5971e53023b170 20 zdf_neo HD chl0:00-0003f001ffff27192b98: chl0:00-0003f001ffff27192b98 channel://23:fffca5971e53023b156 23 KiKA HD chl0:00-0003f001ffff2719c37b: chl0:00-0003f001ffff2719c37b channel://10:fffca5971e530232973 10 TELE 5 HD chl0:00-0003f001ffff271ac381: chl0:00-0003f001ffff271ac381 channel://25:fffca5971e530132979 25 Nick Jr. HD chl0:00-0003f001ffff271ac385: chl0:00-0003f001ffff271ac385 channel://24:fffca5971e530132965 24 Nickelodeon HD chl0:00-0003f001ffff271dc35d: chl0:00-0003f001ffff271dc35d channel://5:fffca5971e53063299d 5 VOX HD chl0:00-0003f001ffff271dc35f: chl0:00-0003f001ffff271dc35f channel://7:fffca5971e53063299f 7 ProSieben HD chl0:00-0003f001ffff271e2873: chl0:00-0003f001ffff271e2873 channel://19:fffca5971e53053ce8b 19 hr-fernsehen HD chl0:00-0003f001ffff271e2b70: chl0:00-0003f001ffff271e2b70 channel://13:fffca5971e53053b18e 13 arte HD chl0:00-0003f001ffff271ec359: chl0:00-0003f001ffff271ec359 channel://6:fffca5971e530532991 6 kabel eins HD chl0:00-0003f001ffff271ec35a: chl0:00-0003f001ffff271ec35a channel://28:fffca5971e530532990 28 SPORT1 HD chl0:00-0003f001ffff271fc35b: chl0:00-0003f001ffff271fc35b channel://8:fffca5971e530432993 8 RTL II HD chl0:00-0003f001ffff271fc35c: chl0:00-0003f001ffff271fc35c channel://3:fffca5971e530432992 3 RTL HD chl0:00-0003f001ffff271fc362: chl0:00-0003f001ffff271fc362 channel://4:fffca5971e530432998 4 SAT.1 HD chl0:00-0003f001ffff2720c36f: chl0:00-0003f001ffff2720c36f channel://26:fffca5971e533b3298f 26 Disney Ch. HD chl0:00-0003f001ffff27212b8e: chl0:00-0003f001ffff27212b8e channel://21:fffca5971e533a3b16c 21 3sat HD chl0:00-0003f001ffff2721cf11: chl0:00-0003f001ffff2721cf11 channel://37:fffca5971e533a315e9 37 ProSieben MAXX chl0:00-0003f001ffff2724c375: chl0:00-0003f001ffff2724c375 channel://12:fffca5971e533f32975 12 DMAX HD chl0:00-0003f001ffff2726d04c: chl0:00-0003f001ffff2726d04c channel://27:fffca5971e533d316a2 27 SAT.1 Gold Attributes: fhemMAC 00:1e:06:33:95:c9 room Andreas


Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 19:46:23
Na ich hoffe nicht das dies das list ist


list TVDEVICENAME

Oben in der FHEMWEB Befehlszeile bitte eingeben.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 September 2017, 19:48:38
Zitat von: CoolTux am 20 September 2017, 19:46:23
Na ich hoffe nicht das dies das list ist


list TVDEVICENAME

Oben in der FHEMWEB Befehlszeile bitte eingeben.
Ja, doch. Genau das hab ich gemacht. 
Sieht das irgendwie komisch aus für dich?
Hab's vom Smartphone aus ge'copy-pasted.

@viegener: die channellist sieht schon mal sehr gut aus!

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 19:53:31
Ja sieht komisch aus. Das kann ich so nicht lesen. Sollte eigentlich genau so aussehen wie wenn du es in FHEMWEB ein gibst. Alles sauber untereinander
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 September 2017, 19:55:15
Internals:
   CLIENTID   LRemoteClient-0-1505928675
   DEF        192.168.0.2 00:09:82:19:ab:58
   FCID       1234
   HOST       192.168.0.2
   INTERVAL   15
   NAME       LoeweTV
   NR         47
   STATE      connected
   TVMAC      00:09:82:19:ab:58
   TYPE       LoeweTV
   VERSION    0.0.35
   curlocator channel://6:fffca5971e530532991
   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:GetMediaItemResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1505928675</m:ClientId><m:ResultItem><m:MediaItem itemInfoClass="object.item.videoItem"><m:uuid>chl0:00-0003f001ffff2712cf76</m:uuid><m:Locator>channel://38:fffca5971e530931574</m:Locator><m:Caption>38</m:Caption></m:MediaItem><m:MediaInformation><m:ShortInfo>RTL NITRO</m:ShortInfo><m:Attributes>131080</m:Attributes><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$1$0$37</m:StreamingUrl></m:MediaInformation></m:ResultItem></m:GetMediaItemResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
   Hu_do_params:
     args:
       GetMediaItem
       chl0:00-0003f001ffff2712cf76
       undef
       1
   Hu_sr_params:
     NAME
     action     GetMediaItem
     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: GetMediaItem
     host       192.168.0.2
     httpheader HTTP/1.1 200 OK

Date: Wed, 20 Sep 2017 19:34:38 GMT

Server: Nano HTTPD library

Content-Type: text/xml

Content-Length: 881
     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:
     Handlers:
     Hash:
     Sslargs:
   Readings:
     2017-09-17 23:00:05   Chassis         SL220
     2017-09-20 19:31:35   CurrentEvent_Info Sebastian, 33 Jahre:
Vorspeise: Harzer Bergsteiger-Süppchen
Hauptspeise: Lammfilet mit Kartoffelrösti und Böhnchen
Nachspeise: Harzer Schlemmerküchlein auf Mango-
und Passionsfruchtpüree
     2017-09-20 19:31:35   CurrentEvent_Locator channel://5:fffca5971e53063299d
     2017-09-20 19:31:35   CurrentEvent_Name Das perfekte Dinner
     2017-09-18 22:48:47   NextEvent_Info  Im letzten Moment können die Kleinganoven Roscoe und Doug mal wieder der Polizei entkommen, weil sie sich am Flughafen als die ausgerufenen Passagiere Steinberg und Mason ausgeben. Damit gelangen sie allerdings vom Regen in die Traufe: Denn Steinberg und Mason sind CIA-Agenten. Nun müssen Roscoe und Doug in die Rolle der Spione schlüpfen und, ausgerüstet mit allerhand technischem Schickschnack, auf die Jagd nach dem Bösewicht K1 gehen.

Regie: E. B. Clucher
Drehbuch: Marcotullio Barboni
Komponist: Franco Micalizzi
Kamera: Ben McDermott

Darsteller:
Terence Hill (Rosco Frazer)
Bud Spencer (Doug O'Riordon)
Buffy Dee (K1)
Faith Minton (Der Vamp)
David Huddleston (Tiger)
Riccardo Pizzuti (Infido)
Dan Fitzgerald (Porter)
Dan Rambo (Jeremy Scott)
Susan Teesdale (Wirtin)
     2017-09-18 22:48:47   NextEvent_Locator channel://6:fffca5971e530532991
     2017-09-18 22:48:47   NextEvent_Name  Zwei bärenstarke Typen
     2017-09-17 23:00:05   SW_Version      2.4.55.0
     2017-09-17 23:00:05   TVMAC           00:09:82:19:ab:58
     2017-09-20 19:33:57   access          accepted
     2017-09-18 22:18:34   presence        present
     2017-09-20 19:34:41   requestAction   GetMediaItem
     2017-09-20 19:34:41   requestResult   SUCCESS
     2017-09-20 19:33:57   state           connected
     2017-09-18 22:48:18   volume          20
   actionQueue:
   curevent:
     Romeo Must Die
     Der Chinese Han Sing, ein knallharter Ex-Cop, kommt in die USA, um den Tod seines Bruders zu rächen, eines hochrangigen Mitglieds einer mächtigen asiatischen Gang. Als Han in den blutigen Bandenkrieg zwischen den Asiaten und einer rivalisierenden afro-amerikanischen Gang gerät, versucht er zu vermitteln. Doch dann verliebt er sich in Trish O'Day, die Tochter des Anführers der Gegenseite. Gemeinsam suchen Han und Trish nach einer friedlichen Lösung für die Feindseligkeiten.

Regie: Andrzej Bartkowiak
Drehbuch: John Jarrell, Jerrold E. Brown, Mitchell Kapner
Komponist: Stanley Clarke
Kamera: Glen MacPherson

Darsteller:
Jet Li (Han Sing)
Aaliyah (Trish O'Day)
Russell Wong (Kai Sing)
Isaiah Washington (Mac)
Delroy Lindo (Isaak O'Day)
Anthony Anderson (Maurice)
DMX (Silk)
DB Woodside (Colin O'Day)
Henry O (Ch'u Sing)
   Helper:
     ChannelListCount 38
     ChannelListView favlist0
     Channellist:
       chl0:00-00030001ffff041b2840:
         chl0:00-00030001ffff041b2840
         channel://17:fffca5671e70003cebe
         17
         SWR RP HD
       chl0:00-00030001ffff041b2b5c:
         chl0:00-00030001ffff041b2b5c
         channel://1:fffca5671e70003b192
         1
         Das Erste HD
       chl0:00-00030001ffff041b6ea5:
         chl0:00-00030001ffff041b6ea5
         channel://16:fffca5671e700037445
         16
         WDR HD Köln
       chl0:00-00030001ffff041b6f47:
         chl0:00-00030001ffff041b6f47
         channel://35:fffca5671e7000375a7
         35
         ARD-alpha
       chl0:00-00030001ffff041b7031:
         chl0:00-00030001ffff041b7031
         channel://36:fffca5671e7000376c9
         36
         tagesschau24
       chl0:00-00030001ffff041b7033:
         chl0:00-00030001ffff041b7033
         channel://32:fffca5671e7000376cb
         32
         EinsPlus
       chl0:00-00030001ffff04312856:
         chl0:00-00030001ffff04312856
         channel://14:fffca5671e702a3ce94
         14
         BR Nord HD
       chl0:00-00030001ffff04316f46:
         chl0:00-00030001ffff04316f46
         channel://30:fffca5671e702a375a4
         30
         SR Fernsehen
       chl0:00-00030001ffff0437286f:
         chl0:00-00030001ffff0437286f
         channel://18:fffca5671e702c3ce8f
         18
         rbb Berlin HD
       chl0:00-00030001ffff04372b66:
         chl0:00-00030001ffff04372b66
         channel://2:fffca5671e702c3b184
         2
         ZDF HD
       chl0:00-00030001ffff04376d6b:
         chl0:00-00030001ffff04376d6b
         channel://33:fffca5671e702c37383
         33
         ZDFinfo
       chl0:00-00030001ffff04376d70:
         chl0:00-00030001ffff04376d70
         channel://34:fffca5671e702c3738e
         34
         zdf.kultur
       chl0:00-00030001ffff044d2859:
         chl0:00-00030001ffff044d2859
         channel://15:fffca5671e70563ce91
         15
         NDR FS HH HD
       chl0:00-00030001ffff044d2870:
         chl0:00-00030001ffff044d2870
         channel://31:fffca5671e70563ce8e
         31
         MDR Sachsen HD
       chl0:00-0003f001ffff2712cf76:
         chl0:00-0003f001ffff2712cf76
         channel://38:fffca5971e530931574
         38
         RTL NITRO
       chl0:00-0003f001ffff2716c363:
         chl0:00-0003f001ffff2716c363
         channel://11:fffca5971e530d3299b
         11
         sixx HD
       chl0:00-0003f001ffff2716c365:
         chl0:00-0003f001ffff2716c365
         channel://29:fffca5971e530d32985
         29
         ServusTV HD
       chl0:00-0003f001ffff2716c36c:
         chl0:00-0003f001ffff2716c36c
         channel://9:fffca5971e530d32982
         9
         SUPER RTL HD
       chl0:00-0003f001ffff2719285b:
         chl0:00-0003f001ffff2719285b
         channel://22:fffca5971e53023ce93
         22
         PHOENIX HD
       chl0:00-0003f001ffff27192b7a:
         chl0:00-0003f001ffff27192b7a
         channel://20:fffca5971e53023b170
         20
         zdf_neo HD
       chl0:00-0003f001ffff27192b98:
         chl0:00-0003f001ffff27192b98
         channel://23:fffca5971e53023b156
         23
         KiKA HD
       chl0:00-0003f001ffff2719c37b:
         chl0:00-0003f001ffff2719c37b
         channel://10:fffca5971e530232973
         10
         TELE 5 HD
       chl0:00-0003f001ffff271ac381:
         chl0:00-0003f001ffff271ac381
         channel://25:fffca5971e530132979
         25
         Nick Jr. HD
       chl0:00-0003f001ffff271ac385:
         chl0:00-0003f001ffff271ac385
         channel://24:fffca5971e530132965
         24
         Nickelodeon HD
       chl0:00-0003f001ffff271dc35d:
         chl0:00-0003f001ffff271dc35d
         channel://5:fffca5971e53063299d
         5
         VOX HD
       chl0:00-0003f001ffff271dc35f:
         chl0:00-0003f001ffff271dc35f
         channel://7:fffca5971e53063299f
         7
         ProSieben HD
       chl0:00-0003f001ffff271e2873:
         chl0:00-0003f001ffff271e2873
         channel://19:fffca5971e53053ce8b
         19
         hr-fernsehen HD
       chl0:00-0003f001ffff271e2b70:
         chl0:00-0003f001ffff271e2b70
         channel://13:fffca5971e53053b18e
         13
         arte HD
       chl0:00-0003f001ffff271ec359:
         chl0:00-0003f001ffff271ec359
         channel://6:fffca5971e530532991
         6
         kabel eins HD
       chl0:00-0003f001ffff271ec35a:
         chl0:00-0003f001ffff271ec35a
         channel://28:fffca5971e530532990
         28
         SPORT1 HD
       chl0:00-0003f001ffff271fc35b:
         chl0:00-0003f001ffff271fc35b
         channel://8:fffca5971e530432993
         8
         RTL II HD
       chl0:00-0003f001ffff271fc35c:
         chl0:00-0003f001ffff271fc35c
         channel://3:fffca5971e530432992
         3
         RTL HD
       chl0:00-0003f001ffff271fc362:
         chl0:00-0003f001ffff271fc362
         channel://4:fffca5971e530432998
         4
         SAT.1 HD
       chl0:00-0003f001ffff2720c36f:
         chl0:00-0003f001ffff2720c36f
         channel://26:fffca5971e533b3298f
         26
         Disney Ch. HD
       chl0:00-0003f001ffff27212b8e:
         chl0:00-0003f001ffff27212b8e
         channel://21:fffca5971e533a3b16c
         21
         3sat HD
       chl0:00-0003f001ffff2721cf11:
         chl0:00-0003f001ffff2721cf11
         channel://37:fffca5971e533a315e9
         37
         ProSieben MAXX
       chl0:00-0003f001ffff2724c375:
         chl0:00-0003f001ffff2724c375
         channel://12:fffca5971e533f32975
         12
         DMAX HD
       chl0:00-0003f001ffff2726d04c:
         chl0:00-0003f001ffff2726d04c
         channel://27:fffca5971e533d316a2
         27
         SAT.1 Gold
Attributes:
   fhemMAC    00:1e:06:33:95:c9
   room       Andreas
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 20:01:41
Ok das passt. Bitte bitte nächstes Mal in Codetags.
Oben bei den Symbolen die Raute.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 20:05:23
Spricht etwas dagegen das Reading TVMAC nicht anlegen zu lassen? Wir haben ja die MAC im Internal und in der DEF
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 September 2017, 20:17:02


Zitat von: CoolTux am 20 September 2017, 20:05:23
Spricht etwas dagegen das Reading TVMAC nicht anlegen zu lassen? Wir haben ja die MAC im Internal und in der DEF

Also ich brauchs nicht.

Mal was wegen der Channellist: können wir die quasi mehrfach anlegen? Also einmal mit ShortInfo als Keys, einmal mit UUID als Keys und einmal mit Locator als Keys? Dann quasi {channellist}{byshortinfo}, etc. und darunter dann den Hash?

Dann könnte man entsprechend switchto umsetzen als "Set MyLoewe switchto byshortinfo "Das Erste HD" oder ä.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 21:10:55
Zitat von: der.einstein am 20 September 2017, 20:17:02

Also ich brauchs nicht.

Mal was wegen der Channellist: können wir die quasi mehrfach anlegen? Also einmal mit ShortInfo als Keys, einmal mit UUID als Keys und einmal mit Locator als Keys? Dann quasi {channellist}{byshortinfo}, etc. und darunter dann den Hash?

Dann könnte man entsprechend switchto umsetzen als "Set MyLoewe switchto byshortinfo "Das Erste HD" oder ä.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk



Gar nicht nötig - dafür habe ich zwei Routinen Implementiert:

LoeweTV_getUUIDForChannelName

LoeweTV_getUUIDForChannelCaption

Auch wenn die einfach suchend über die ganze Liste gehen und dann den locator zurückliefern.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 21:17:23
Zitat von: viegener am 20 September 2017, 21:10:55
Gar nicht nötig - dafür habe ich zwei Routinen Implementiert:

LoeweTV_getUUIDForChannelName

LoeweTV_getUUIDForChannelCaption

Auch wenn die einfach suchend über die ganze Liste gehen und dann den locator zurückliefern.
Besser wie alles 3 mal im RAM vor zu halten. Das gibt nur blähungen  ;D
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 21:25:30
Zum Vergleich hier auch noch mein List:

Internals:
   CLIENTID   LRemoteClient-0-1505935369
   DEF        192.168.2.37
   FCID       1234
   HOST       192.168.2.37
   INTERVAL   15
   NAME       loewe
   NR         1481
   STATE      connected
   TYPE       LoeweTV
   VERSION    0.0.35
   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:RequestAccessResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1505935369</m:ClientId><m:AccessStatus>Accepted</m:AccessStatus></m:RequestAccessResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
   HU_DO_PARAMS:
     args:
       RequestAccess
       undef
       undef
       1
   HU_SR_PARAMS:
     NAME
     action     RequestAccess
     addr       http://192.168.2.37:905
     buf
     conn
     displayurl http://192.168.2.37: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: RequestAccess
     host       192.168.2.37
     httpheader HTTP/1.1 200 OK

Date: Wed, 20 Sep 2017 21:23:41 GMT

Server: Nano HTTPD library

Content-Type: text/xml

Content-Length: 523
     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.2.37:905/loewe_tablet_0001
     SR_READINGS:
     handlers:
     hash:
     sslargs:
   Helper:
     DBLOG:
       access:
         logdb:
           TIME       1505935421.42471
           VALUE      accepted
       presence:
         logdb:
           TIME       1505935287.8675
           VALUE      present
       requestAction:
         logdb:
           TIME       1505935421.46046
           VALUE      RequestAccess
       requestResult:
         logdb:
           TIME       1505935421.46046
           VALUE      SUCCESS
       state:
         logdb:
           TIME       1505935421.39438
           VALUE      connected
   READINGS:
     2017-09-19 23:16:45   Chassis         SL150
     2017-09-19 23:16:45   SW_Version      PV8.46.0
     2017-09-20 21:23:41   access          accepted
     2017-09-20 21:21:27   presence        present
     2017-09-20 21:23:41   requestAction   RequestAccess
     2017-09-20 21:23:41   requestResult   SUCCESS
     2017-09-20 21:23:41   state           connected
   actionQueue:
   helper:
     ChannelListCount 0
     ChannelListView
Attributes:
   maxchannel 12
   verbose    5
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 21:33:28
ich würde mich jetzt mal dran machen
- Loglevels besser zu setzen
- Rückgabe von requestAccess genauer analysieren


1 weiterer Vorschlag was meint ihr:
- requestAccess und deviceData gehören für mich eher nach get (als nach set)


@der.einstein: hast Du mal eine andere channellist über setzen des Attributs ausprobiert (Deine Favoritenliste)?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 September 2017, 21:41:08
Zitat von: viegener am 20 September 2017, 21:33:28
ich würde mich jetzt mal dran machen
- Loglevels besser zu setzen
- Rückgabe von requestAccess genauer analysieren


1 weiterer Vorschlag was meint ihr:
- requestAccess und deviceData gehören für mich eher nach get (als nach set)


@der.einstein: hast Du mal eine andere channellist über setzen des Attributs ausprobiert (Deine Favoritenliste)?

Ja, in dem Beispiel oben ist es die favlist0

Die beiden können von Set nach Get, aber vielleicht sollte es Set MyLoewe Connect heißen, dann würde Set wieder passen [emoji41]

Übrigens Krieg ich den TV nicht aus dem Standby aufgeweckt.
Wenn er aus ist, und ich Set MyLoewe WakeUp sende, blinkt er kurz 4-5 mal. Und reagiert dann auch auf SendRequests, aber er fährt nicht hoch. Normalerweise sollten 2-3 WOL Pakete geschickt werden, dann etwas warten, RequestAccess bis Accepted ist, dann InjectRCKey 22.
Das klappt blöderweise nicht. Mit dem Skript vorher ging's aber, daher sollte das Vorgehen so stimmen?

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 21:41:31
Ich denke mal das kann man in der Tat als get machen.

Konnte schon mal jemand den wake on lan testen?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 21:44:02
Dann schaue ich mir das gerne noch mal an mit dem wakeUp
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 22:56:03
Neue Version 36 ist da:

- Loglevels besser zu setzen
- Rückgabe von requestAccess genauer analysieren
- requestAccess und deviceData nach get (als nach set) - habe connect zu set hinzugefügt

Ausserdem wird jetzt die channelliste in der originalreihenfolge zurückgegegeben und nicht nach hashes sortiert
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 20 September 2017, 23:01:33
Super Arbeit Johannes.
Vielen Dank.


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 23:16:30
Gerade noch einen Fix nachgeliefert - die get parameter waren etwas durcheinandergeraten
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 September 2017, 23:38:47
Funktioniert eigentlich listofchannellists bei irgendjemandem?

Ich bekomme immer einen SOAPFault (http code 500) zurück:

... <faultstring>URN 'urn:loewe.de:RemoteTV:Tablet' not found</faultstring>...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 21 September 2017, 02:14:33
Zitat von: viegener am 20 September 2017, 23:38:47
Funktioniert eigentlich listofchannellists bei irgendjemandem?

Ich bekomme immer einen SOAPFault (http code 500) zurück:

... <faultstring>URN 'urn:loewe.de:RemoteTV:Tablet' not found</faultstring>...
Ja, hier mal die Response aus dem list:


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:GetListOfChannelListsResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet"> <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1505952672</m:ClientId><m:ResultItemChannelLists sequenceNumber="9076676" totalResults="5" returnedResults="5" startIndex="0"><m:ResultItemChannelList><m:View>favlist0</m:View><m:Name>Persönliche Liste 1</m:Name><m:TotalResults>38</m:TotalResults><m:Hash>144815150</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlist1</m:View><m:Name>Persönliche Liste 2</m:Name><m:TotalResults>29</m:TotalResults><m:Hash>150069283</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscan0</m:View><m:Name>DVB-C</m:Name><m:TotalResults>391</m:TotalResults><m:Hash>2532519043</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscan1</m:View><m:Name>Unitymedia</m:Name><m:TotalResults>0</m:TotalResults><m:Hash>342862674</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>avlist0</m:View><m:Name>#3051</m:Name><m:TotalResults>9</m:TotalResults><m:Hash>2362527828</m:Hash></m:ResultItemChannelList></m:ResultItemChannelLists><m:Result>OK</m:Result></m:GetListOfChannelListsResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>



Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 21 September 2017, 08:43:01
Zitat von: der.einstein am 21 September 2017, 02:14:33
Ja, hier mal die Response aus dem list:


OK, dann ist der Call bei meinem Chassis wohl nicht (korrekt ?) implementiert - ich habe mit verschiedenen Varianten nur SOAP-Faults bekommen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 21 September 2017, 11:41:23
Zitat von: viegener am 21 September 2017, 08:43:01
OK, dann ist der Call bei meinem Chassis wohl nicht (korrekt ?) implementiert - ich habe mit verschiedenen Varianten nur SOAP-Faults bekommen
Dass heißt, dass du nur die "default" Liste abfragen kannst? Hast du mal Konstellationen a la favlist0 bzw. avlist0 probiert?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 21 September 2017, 20:00:26
@@viegener:
Kann ich eigentlich irgendwie vom Channelnamen (Das Erste HD) auf den Locator schließen?
Ein "getLocatorFromName" hab ich nicht gesehen?

Danke.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: FHEM-Freak am 21 September 2017, 21:05:15
Zitat von: viegener am 20 September 2017, 23:38:47
Funktioniert eigentlich listofchannellists bei irgendjemandem?

Ich bekomme immer einen SOAPFault (http code 500) zurück:

... <faultstring>URN 'urn:loewe.de:RemoteTV:Tablet' not found</faultstring>...

Bei mir sieht es so aus

<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:GetListOfChannelListsResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet"> <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1506019747</m:ClientId><m:ResultItemChannelLists sequenceNumber="9076676" totalResults="5" returnedResults="4" startIndex="1"><m:ResultItemChannelList><m:View>fastscansl9d148dd1-6df5-400e-935a-3c893236214a</m:View><m:Name>ASTRA1 19,2°E</m:Name><m:TotalResults>1186</m:TotalResults><m:Hash>4294967295</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlistsl0a15dd7d-bcba-4d67-b2d1-558ad01b2281</m:View><m:Name>HD+</m:Name><m:TotalResults>24</m:TotalResults><m:Hash>4294967295</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlistsl527157e6-0d79-42d2-89a5-ed4454d456f8</m:View><m:Name>SAT HD</m:Name><m:TotalResults>52</m:TotalResults><m:Hash>4294967295</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlistsl803412f9-51e8-455b-9e3f-d1f757aca01f</m:View><m:Name>UHD</m:Name><m:TotalResults>4</m:TotalResults><m:Hash>4294967295</m:Hash></m:ResultItemChannelList></m:ResultItemChannelLists><m:Result>OK</m:Result></m:GetListOfChannelListsResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 21 September 2017, 21:35:34
Habe heute v36 installiert:

Kompliment an alle!
Diesmal hat's geklappt. Ich konnte den TV erfolgreich aus dem Standby wecken, Access bekommen, hochfahren, den Kanal wechseln per Locator und das Ding dann wieder komplett ausschalten.

:-)

Willkommen FHEM-Freak

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 21 September 2017, 21:49:05
Zitat von: der.einstein am 21 September 2017, 20:00:26
@@viegener:
Kann ich eigentlich irgendwie vom Channelnamen (Das Erste HD) auf den Locator schließen?
Ein "getLocatorFromName" hab ich nicht gesehen?

Danke.

Gesendet von meinem LG-D855 mit Tapatalk

Die Routine gibt es im Code - ich fände es nicht sehr gut nutzbar, wenn man die uuid irgendwo eintragen müsste
Aus meiner Sicht sollte es die Möglichkeit geben aus einer DropDown den Namen zu wählen oder eine Programmnummer anzugeben

ich setze mich mal dran das einzubauen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 21 September 2017, 22:04:00
Zitat von: der.einstein am 21 September 2017, 11:41:23
Dass heißt, dass du nur die "default" Liste abfragen kannst? Hast du mal Konstellationen a la favlist0 bzw. avlist0 probiert?

Gesendet von meinem LG-D855 mit Tapatalk

Nein ich kann andere channellisten abfragen aber eben nicht die Liste der vorhandenen channellists

favlist0 und favlist1 geht
avlist0 nicht
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 21 September 2017, 22:07:09
Zitat von: der.einstein am 21 September 2017, 21:35:34
Habe heute v36 installiert:

Kompliment an alle!
Diesmal hat's geklappt. Ich konnte den TV erfolgreich aus dem Standby wecken, Access bekommen, hochfahren, den Kanal wechseln per Locator und das Ding dann wieder komplett ausschalten.

:-)

Willkommen FHEM-Freak

Gesendet von meinem LG-D855 mit Tapatalk

Na das nenne ich doch schon Fortschritt - schön zu hören
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 22 September 2017, 01:19:42
So jetzt noch eine Version 37 hochgeladen

switchToName und switchToNumber
bei switchToName gibt es eine DropDownListe
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 22 September 2017, 12:54:50
Habe festgestellt, dass wir eventuell mehr WOL Pakete senden müssen, und/oder dann eine Warte Zeit einbauen bei einem "on" Befehl. Der wäre ja mal die logische Konsequenz, oder?

FHEM-Freak, unterstützt sein TV WOL?

Außerdem, sollten wir die Kanalluste irgendwie doch als Reading anbieten, damit ein externes Modul sehen kann, welche Kanäle geschaltet werden können.
Es gibt da diesen Thread zur Anzeige von TV-Programm. Wenn man das kombinieren könnte wär toll. D. h. also wenn ich dort ins Programm schaue und was interessantes lese kann ich draufklicken und entweder gleich am TV anschaun oder aufnehmen. Fänd ich gut

Wie wäre es, wenn wir ne Startup Routine schreiben, die von einem "Set MyLoewe switchtoname Das_Erste_HD ausgeführt wird, wenn der TV aus ist?

Falls ich wieder beim übernächsten Schritt bin, bitte auf den nächsten Schritt hinweisen [emoji41]

@viegener: switchtoname geht super! Ist das ein Muss mit den Unterstrichen? Ich hab bei ZDF Neo so was hier: "zdf`_´Neo"
Habt ihr das auch? Also die Hochkommata stehen mit drinnen.

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: FHEM-Freak am 22 September 2017, 15:40:26
v0.0.37 installiert
Ja beide (SL320/SL420) unterstützen WOL und es ist auch aktiviert.

Lassen sich aber nicht mit WakeUp aufwecken  :'(
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 22 September 2017, 15:44:12
Zitat von: FHEM-Freak am 22 September 2017, 15:40:26
v0.0.37 installiert
Ja beide (SL320/SL420) unterstützen WOL und es ist auch aktiviert.

Lassen sich aber nicht mit WakeUp aufwecken  :'(
Du musst das WOL erst in den Einstellungen aktivieren. Das ist angeblich erstmal aus, weil der TV dann mehr Strom brauch im Standby [emoji33]

Du kannst auch mal außerhalb von FHEM ein paar WOL Pakete schicken. Bei mir blinkt dann derLichtstreifen unten, bis er hochgefahren ist.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: FHEM-Freak am 22 September 2017, 16:19:06
Zitat von: FHEM-Freak am 22 September 2017, 15:40:26
.. WOL und es ist auch aktiviert.

Ist aktiviert da ich auch die Loewe app verwende.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 22 September 2017, 16:20:36
Zitat von: FHEM-Freak am 22 September 2017, 16:19:06
Ist aktiviert da ich auch die Loewe app verwende.
Geht es denn mit der App?
Ich weiß jetzt gar nicht, ob man damit den TV an und aus schalten kann.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 22 September 2017, 16:47:53
Zitat von: der.einstein am 22 September 2017, 12:54:50
@viegener: switchtoname geht super! Ist das ein Muss mit den Unterstrichen? Ich hab bei ZDF Neo so was hier: "zdf`_´Neo"
Habt ihr das auch? Also die Hochkommata stehen mit drinnen.

Das Problem ist, dass in den Programmnamen keine Leerzeichen enthalten sein dürfen (sonst kann ich wohl die Dropdown nicht füllen).
Ich habe deshalb Leerzeichen durch Unterstriche ersetzt, da aber auch Unterstriche vorkommen können muss ich diese durch etwas anderes ersetzen dazu habe ich die Hochkommas verwendet. Ich hatte gehofft Unterstriche sind selten ...
Es geht ja darum das Programm dann wieder über den Namen zu finden...

Also Leerzeichen muss ich durch etwas ersetzen -> Es gibt auch Alternativen zum Unterstrich (den fand ich nur gut lesbar)
wie wäre es mit ~ (das kommt wohl nicht in Programmnamen vor)

Das mit den Reading ist sicher möglich, habe aber noch keine gute Idee. Ich kenne den Thread nicht -> hast Du einen link?

Generell würde ich jetzt das Anlegen von Timern, das Du auch vor ein paar Tagen angesprochen hast, vorher angehen.
Timer - nur speichern oder auch erinnern?
(Ich fände auch das Abspielen/Auslesen des PVR interessant)

Generell wäre die Automatik sicher jetzt ein Punkt - Das umfasst aber einiges
- Automatischer Presence - Intervall
- Abfragen von Kanalinformationen wenn nicht vorhanden
- Regelmässiges Abfragen der Kanäle -> intervall2?
- Das Einschalten des TVs (WOL) vor einem anderen Befehl sollte zumindest schaltbar sein - Attribut?

Gibt es mehr Tester? - momentan sind wir zu dritt - das ist schonmal genug für Skat  ;)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: FHEM-Freak am 22 September 2017, 18:04:20
Zitat von: der.einstein am 22 September 2017, 16:20:36
Geht es denn mit der App?
Ich weiß jetzt gar nicht, ob man damit den TV an und aus schalten kann.

Da spinnt gerade etwas.
Geht mit der App auch nicht  :(
WOL vom PC aus hat geklappt.

Ich werde das nochmal testen.

Mit der App geht auch einschalten und Livestream, Timeraufnahmen usw.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 22 September 2017, 19:28:57
Zitat von: FHEM-Freak am 22 September 2017, 18:04:20
Da spinnt gerade etwas.
Geht mit der App auch nicht  :(
WOL vom PC aus hat geklappt.

Ich werde das nochmal testen.

Mit der App geht auch einschalten und Livestream, Timeraufnahmen usw.
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. ä.

Das steht dummerweise nicht in der Remote API [emoji33] [emoji33] [emoji33]

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 22 September 2017, 21:20:40
Interessante Erkenntnis, wenn mein Loewe zumindest per Ping erreichbar ist, geht auch das Senden von rckey 22 und er wacht auf
Das ist schonmal gut...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 22 September 2017, 21:22:46
Zitat von: viegener am 22 September 2017, 21:20:40
Interessante Erkenntnis, wenn mein Loewe zumindest per Ping erreichbar ist, geht auch das Senden von rckey 22 und er wacht auf
Das ist schonmal gut...
Im schlimmsten Fall musst du halt eine Schaltsteckdose zwischen klemmen.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 23 September 2017, 00:26:26
Leider funktioniert bei meinem Gerät auch das Auflisten der DRPlus-Inhalte nicht - es gibt wiederum nur einen SOAPFault wie bei listofchannellists.

Neue Version hochgeladen, aber nur minimale Änderungen.
Zum Beispiel ein neues "get drarchive" - leider liefert das nur den Fehler - geht das bei jemand anders?

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 23 September 2017, 05:44:43
Zitat von: viegener am 23 September 2017, 00:26:26
Leider funktioniert bei meinem Gerät auch das Auflisten der DRPlus-Inhalte nicht - es gibt wiederum nur einen SOAPFault wie bei listofchannellists.

Neue Version hochgeladen, aber nur minimale Änderungen.
Zum Beispiel ein neues "get drarchive" - leider liefert das nur den Fehler - geht das bei jemand anders?
Ich kriege das hier in der Response:

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:GetDRPlusArchiveResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet"> <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1506137919</m:ClientId><m:ResultItemDRPlusFragment sequenceNumber="5023233" totalResults="141" returnedResults="10" startIndex="0"><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000259</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000259</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Matrix Revolutions</m:Title><m:Subtitle>Matrix Revolutions</m:Subtitle><m:ServiceName>PRO 7 HD</m:ServiceName><m:Duration>01:59:51.000</m:Duration><m:StartTime>2016-02-14T03:34:58+02:00</m:StartTime><m:EndTime>2016-02-14T05:34:49+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$0</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$0</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000263</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000263</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Final Call - Wenn er auflegt, muss sie sterben</m:Title><m:Subtitle>Final Call - Wenn er auflegt, muss sie sterben</m:Subtitle><m:ServiceName>Kabel eins HD</m:ServiceName><m:Duration>01:56:41.000</m:Duration><m:StartTime>2016-03-10T20:13:09+02:00</m:StartTime><m:EndTime>2016-03-10T22:09:50+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$1</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$1</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000271</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000271</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Dead Rising</m:Title><m:Subtitle>Dead Rising</m:Subtitle><m:ServiceName>RTL 2 HD</m:ServiceName><m:Duration>02:21:45.000</m:Duration><m:StartTime>2016-04-01T22:38:04+02:00</m:StartTime><m:EndTime>2016-04-02T00:59:49+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$2</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$2</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000273</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000273</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Der Exorzist - Director's Cut</m:Title><m:Subtitle>Der Exorzist - Director's Cut</m:Subtitle><m:ServiceName>TELE 5 HD</m:ServiceName><m:Duration>02:11:38.000</m:Duration><m:StartTime>2016-04-28T00:15:11+02:00</m:StartTime><m:EndTime>2016-04-28T02:26:49+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$3</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$3</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000275</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000275</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Enigma - Das Geheimnis</m:Title><m:Subtitle>Enigma - Das Geheimnis</m:Subtitle><m:ServiceName>TELE 5 HD</m:ServiceName><m:Duration>01:53:51.000</m:Duration><m:StartTime>2016-04-28T02:26:58+02:00</m:StartTime><m:EndTime>2016-04-28T04:20:49+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$4</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$4</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000277</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000277</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Total Recall - Die totale Erinnerung</m:Title><m:Subtitle>Total Recall - Die totale Erinnerung</m:Subtitle><m:ServiceName>VOX HD</m:ServiceName><m:Duration>02:11:40.000</m:Duration><m:StartTime>2016-05-05T22:48:08+02:00</m:StartTime><m:EndTime>2016-05-06T00:59:48+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$5</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$5</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000279</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000279</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Jäger des verlorenen Schatzes</m:Title><m:Subtitle>Jäger des verlorenen Schatzes</m:Subtitle><m:ServiceName>SAT.1 HD</m:ServiceName><m:Duration>01:54:51.000</m:Duration><m:StartTime>2016-05-06T00:59:58+02:00</m:StartTime><m:EndTime>2016-05-06T02:54:49+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$6</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$6</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000281</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000281</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Indiana Jones und der Tempel des Todes</m:Title><m:Subtitle>Indiana Jones und der Tempel des Todes</m:Subtitle><m:ServiceName>SAT.1 HD</m:ServiceName><m:Duration>01:54:51.000</m:Duration><m:StartTime>2016-05-06T02:54:58+02:00</m:StartTime><m:EndTime>2016-05-06T04:49:49+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$7</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$7</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000283</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000283</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Sin City</m:Title><m:Subtitle>Sin City</m:Subtitle><m:ServiceName>Kabel eins HD</m:ServiceName><m:Duration>02:36:49.000</m:Duration><m:StartTime>2016-05-09T23:03:00+02:00</m:StartTime><m:EndTime>2016-05-10T01:39:49+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$8</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$8</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus><m:ResultItemDRPlus><m:MediaItemDRPlus itemInfoClass="object.item.videoItem"><m:uuid>UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000285</m:uuid><m:Locator>drplus://UUID_HDR_db34389d-8498-4f51-948b-bed5ee0d458e_00000285</m:Locator></m:MediaItemDRPlus><m:MediaInformationDRPlus><m:Folder></m:Folder><m:Title>Resident Evil: Extinction</m:Title><m:Subtitle>Resident Evil: Extinction</m:Subtitle><m:ServiceName>VOX HD</m:ServiceName><m:Duration>01:46:38.000</m:Duration><m:StartTime>2016-05-12T22:23:11+02:00</m:StartTime><m:EndTime>2016-05-13T00:09:49+02:00</m:EndTime><m:StreamingUrl>http://192.168.0.2:1543/lt0/0/$0$9</m:StreamingUrl><m:ImageUrl>http://192.168.0.2:1543/lt0/xetn/0/$0$9</m:ImageUrl><m:Attributes>8321</m:Attributes></m:MediaInformationDRPlus></m:ResultItemDRPlus></m:ResultItemDRPlusFragment></m:GetDRPlusArchiveResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>


Also ja, scheint zu klappen!

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag 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? :-)

@all: werde mal die InjectRCKey Routine erweitern, dass auch die in der Remote API als HDR (denke HD recorder) benannten Keys (41, 50, 52, 53, 54, 55) gesendet werden. Dafür muss ein anderes Alphabet gesetzt werden: "l2700-hdr"

@FHEM-Freak: hast du mal gecheckt, was dein TV auf GetDeviceData antwortet? Es gibt ja die LAN und WLAN MAC. Kann sein, dass er die falsche extrahiert. Dann würde das WOL nicht klappen.

Übrigens kann ich mit switchto "Locator" auch die DrPlus Aufnahmen starten [emoji41] [emoji106]  sehr gut.

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: FHEM-Freak am 23 September 2017, 13:48:12
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. ä.
Bin gerade beim installieren und einarbeiten mit Wireshark.

Zitat von: der.einstein am 23 September 2017, 11:02:31
@FHEM-Freak: hast du mal gecheckt, was dein TV auf GetDeviceData antwortet? Es gibt ja die LAN und WLAN MAC. Kann sein, dass er die falsche extrahiert. Dann würde das WOL nicht klappen.

Nein das passt schon der TV hängt am LAN und DeviceData liefert die richtige MAC.
Ich arbeite an einen PLEX Client für den Loewe und dabei bring ich den TV des öfteren in komische Betriebszustände.
Werde jetzt hier weitermachen und mein erfolgloses Plex Projekt hinten anstellen  :)

Alles was ich mit FHEM und Loewe wollte klappt ja soweit, Dank euch (System Meldungen von FHEM am TV anzeigen).
Da Ihr hier echt tolle Arbeit leistet werde ich euch hier unterstützen soweit ich es halt Check ???.
Die Loewe App kann sehr viel also müsste da noch einiges Potenzial drin sein zur Weiterentwicklung für FHEM.
Mal schauen was ich mit Wireshark anfangen/abfangen kann.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag 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.

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 23 September 2017, 20:34:00
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.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 24 September 2017, 12:39:06
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)

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 24 September 2017, 12:55:45
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)

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: FHEM-Freak am 24 September 2017, 12:56:28
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.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 24 September 2017, 13:46:37
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
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 24 September 2017, 14:03:56
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.
   
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 24 September 2017, 20:22:03
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?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 24 September 2017, 20:34:42
Perfekt. Danke Dir.
Ja gibt es. Man kann auch beim define die MAC mitgeben. Also direkt nach der IP
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 24 September 2017, 20:58:14
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.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 25 September 2017, 13:17:30
Der Patch ist defekt. Da sind Zeilenumbrüche drin wo keine sein sollten.
Ich versuche mal von Hand das zu richten
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 25 September 2017, 19:50:52
SO, hab den Patch nochmal vom PC hochgeladen, siehe oben.

(es muss doch gehen, auf dem Smartphone ein vernünftiges copy+paste hinzubekommen  ;) )
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 25 September 2017, 19:56:04
Das sieht viel viel besser aus. Hoffe ich komme heute noch dazu ihn ein zu pflegen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 25 September 2017, 20:40:10
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

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 25 September 2017, 20:51:05
@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)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 25 September 2017, 21:24:14
patch habe ich eingeflegt. Version 0.0.40 Hoffe ich habe alles getroffen. Musste doch mit Hand einpflegen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 25 September 2017, 21:49:59
Sehr gut, danke dir.

Hier ist der nächste: Lasse "StreamingUrl" mit aus der CHannellist bzw. GetMediaItem auslesen und in der Channellist ablegen. Anzeige mit showchannellist.

--- off/82_LoeweTV_v4.pm 2017-09-25 19:54:00.017833395 +0200
+++ 82_LoeweTV.pm 2017-09-25 21:18:05.371440385 +0200
@@ -184,6 +184,7 @@ my $LoeweTV_cl_shortinfo = 3;

my $LoeweTV_dr_caption = 2;
my $LoeweTV_cl_shortinfo = 3;
+my $LoeweTV_cl_streamingurl = 4;

#########################
# TYPE routines
@@ -727,7 +728,8 @@ sub LoeweTV_SendRequest($$;$$$) {
                                         {"m:ResultItem" => sub { if ( defined( $actPar2 ) ) {
                                             LoeweTV_ChannelList_AddChannelXML( $hash,
                                                 $_->get_xpath('.//m:uuid', 0), $_->get_xpath('.//m:Locator', 0),
-                                                $_->get_xpath('.//m:Caption', 0), $_->get_xpath('.//m:ShortInfo', 0) );}}}
+                                                $_->get_xpath('.//m:Caption', 0), $_->get_xpath('.//m:ShortInfo', 0),
+                                                $_->get_xpath('.//m:StreamingUrl', 0) );}}}
                                     ],
########## in progress           

@@ -1101,8 +1103,8 @@ sub LoeweTV_ChannelList_Fragment($$$$$)



-sub LoeweTV_ChannelList_AddChannelXML($$$$$) {
-    my ($hash,$uuid, $locator, $caption, $shortinfo)  = @_;
+sub LoeweTV_ChannelList_AddChannelXML($$$$$$) {
+    my ($hash,$uuid, $locator, $caption, $shortinfo, $streamingurl)  = @_;
     
     my $name                    = $hash->{NAME};
 
@@ -1110,17 +1112,18 @@ sub LoeweTV_ChannelList_AddChannelXML($$
     $locator = $locator->text_only() if ( defined( $locator ) );
     $caption = $caption->text_only() if ( defined( $caption ) );
     $shortinfo = $shortinfo->text_only() if ( defined( $shortinfo ) );
+    $streamingurl = $streamingurl->text_only() if ( defined( $streamingurl ) );
     
-    Log3 $name, 5, "LoeweTV_ChannelList_AddChannel $name: UUID: ".$uuid."  shortinfo: ".$shortinfo."   caption: ".$caption."  locator :".$locator.":";
+    Log3 $name, 5, "LoeweTV_ChannelList_AddChannel $name: UUID: ".$uuid."  shortinfo: ".$shortinfo."   caption: ".$caption."  locator :".$locator."  streamingurl: ".$streamingurl.":";
     
     # no channellist ignore
     return undef if ( ! defined( $hash->{helper}{ChannelList} ) );
     
     if ( defined( $hash->{helper}{ChannelList}->{$uuid} ) ) {
-      Log3 $name, 2, "LoeweTV_ChannelList_AddChannel $name: DUPLICATE FOUND UUID: ".$uuid."  shortinfo: ".$shortinfo."   caption: ".$caption."  locator :".$locator.":";
+      Log3 $name, 2, "LoeweTV_ChannelList_AddChannel $name: DUPLICATE FOUND UUID: ".$uuid."  shortinfo: ".$shortinfo."   caption: ".$caption."  locator :".$locator."  streamingurl: ".$streamingurl.":";
     }

-    my @channel = ( $uuid, $locator, $caption, $shortinfo );
+    my @channel = ( $uuid, $locator, $caption, $shortinfo , $streamingurl );
     $hash->{helper}{ChannelList}->{$uuid} = \@channel;
     
     push( $hash->{helper}{ChannelSequence}, $uuid );
@@ -1205,7 +1208,7 @@ sub LoeweTV_ChannelListText($) {
       my $c = $$channel[$LoeweTV_cl_caption];
       $c = sprintf( "%4d", $c ) if ( $c =~ /\d+/ );
       
-      $s .= $c."   ".$$channel[$LoeweTV_cl_shortinfo]." : ".$uuid."\r    ".$$channel[$LoeweTV_cl_locator]."\r";
+      $s .= $c."   ".$$channel[$LoeweTV_cl_shortinfo]." : ".$uuid."\r    ".$$channel[$LoeweTV_cl_locator]."\r    ".$$channel[$LoeweTV_cl_streamingurl]."\r";
       $num++
     }
     $s .= "\r Channel count ".$num."\r";


Vorsichtshalber mal mit der patch Datei im Anhang  8)

Ich würde mich allmählich drüber freuen, wenn wir die Presence Abfrage regelmäßig schalten könnten.
Außerdem eine "set MyLoewe on" "Einschaltroutine", die erst den Präsenz-Wert und den Access-Wert abfragt und dann entsprechend an der richtigen Stelle der folgenden Aufrufe einspringt:
1. WakeUp (WOL)
2. sleep 5 sec
3. RequestAccess
4. remotekey 22

@viegener: Kannst du bei deinem Loewe die Live Kanäle und Aufnahmen übers Netzwerk freigeben? Also über DLNA? Falls das geht müsste es eine Funktion geben, dass er das immer bereit stellt. Das müsste dazu führen, dass der LoeweTV immer per LAN erreichbar ist.

Ach und Drop Down Liste für Befehle fänd ich super, aber ich denke wir sollten jetzt da wo möglich die DevelopmentGuidelineAV umsetzen, dann die Drop Down Listen machen, und dann die wichtigsten Befehle als webcmd verfügbar machen, allen voran ob/Off.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 27 September 2017, 06:19:21
Ich habe soaben Version 0.0.41 mit der.einstein seinem patch hochgeladen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 27 September 2017, 06:46:52
Kann mir einer verraten woran ich definitiv erkennen kann das der Fernsehr an geschalten ist? Geht zum Beispiel ein RequestAccess nur wenn der Fernsehr wirklich an ist oder reicht es wenn er im Standby ist?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 27 September 2017, 12:48:25
Zitat von: CoolTux am 27 September 2017, 06:46:52
Kann mir einer verraten woran ich definitiv erkennen kann das der Fernsehr an geschalten ist? Geht zum Beispiel ein RequestAccess nur wenn der Fernsehr wirklich an ist oder reicht es wenn er im Standby ist?
Also der TV kann mehrere Zustände haben, in denen er auf SOAP Befehle antwortet:
- er ist An (zeigt TV kanal, Radio, Stream, Aufnahme)
- er ist im Standby und bietet die TV Kanäle und Aufnahmen im Netzwerk über DLNA an (dann leuchtet die LED bei mir blau)
- er ist im Standby, nimmt aber grade etwas auf (LED rot bei mir)
- er ist im Standby und ich habe ihm ein WOL geschickt

In allen Fällen, also auch im letzteren, klappt ein RequestAccess und auch alle anderen SOPA Befehle.

Ein reines Stanby reicht nicht, hier ist zwar Strom auf der Netzwerkkarte, aber die Firmware nicht gebootet (falls man das in dem Fall so sagt).

Hilft dir das?

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 27 September 2017, 13:04:27
Weiß ich noch nicht.
Wir brauchen ein Reading power. Dieses Reading soll on oder off gesetzt werden. Hier bei geht es darum um der Fernsehr richtig an ist oder nicht (also mit Bild). Kann mir einer ein Reading verraten an das ich mich da halten kann?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 27 September 2017, 16:17:15
Zitat von: CoolTux am 27 September 2017, 13:04:27
Weiß ich noch nicht.
Wir brauchen ein Reading power. Dieses Reading soll on oder off gesetzt werden. Hier bei geht es darum um der Fernsehr richtig an ist oder nicht (also mit Bild). Kann mir einer ein Reading verraten an das ich mich da halten kann?
Wie wär's mit dem Ergebnis vom Ping?
Wenn er zurück ping't ist er an (genug).
Für Power ist doch die Frage ob er Bild zeigt oder nicht egal?

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 27 September 2017, 16:44:01
Naja wir sollten uns schon an die AV Konventionen vom FHEM Development Guide halten. Da steht drin was in und off für das Reading Power bedeuten. Und wie willst du unterscheiden wann der Fernseher an ist oder auf Standby.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 27 September 2017, 19:52:18
Also ich meine das presence Reading sollte passen, da machen wir ja das Ping'en. Nen anderes passendes Reading haben wir nicht.
Was halt nicht geht ist rauszufinden, ob der TV komplett aus ist oder im Standby, weil er in keinem Fall Rückmeldung ins Netz geben kann.
Nur nachdem ein WOL gesendet wurde, kriegt man was vom TV zurück.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 27 September 2017, 20:05:51
Wenn ich dich aber richtig verstanden habe kann man ihn anpingen auch wenn er im Standby ist. Richtig?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 27 September 2017, 20:35:08
Also normalerweise leider nicht, das trifft nur zu, wenn er in einem der oben genannten "besonderen" Zustände ist. Besonders im Sinne von "auf den ersten Blick aus bzw. im Standby", was er aber nicht ist, erkennbar an der roten bzw. blauen LED, die ist im normalen Standby weiß.

Oder anders ausgedrückt: im Standby kriegst du kein Ping zurück (mit Ausnahmen).
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 27 September 2017, 21:34:35
Zitat von: CoolTux am 27 September 2017, 06:19:21
Ich habe soaben Version 0.0.41 mit der.einstein seinem patch hochgeladen.

Habe gerade Version 42 hochgeladen, mit ein paar Korrekturen und zwei neuen getcalls - feature und settings.
Leider werden wohl beide von meinem Chassis auch nicht unterstützt, deshalb kann ich nur begrenzt testen...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 27 September 2017, 22:43:57
Zitat von: der.einstein am 27 September 2017, 20:35:08
Also normalerweise leider nicht, das trifft nur zu, wenn er in einem der oben genannten "besonderen" Zustände ist. Besonders im Sinne von "auf den ersten Blick aus bzw. im Standby", was er aber nicht ist, erkennbar an der roten bzw. blauen LED, die ist im normalen Standby weiß.

Oder anders ausgedrückt: im Standby kriegst du kein Ping zurück (mit Ausnahmen).

Habe gerade mein TV mal ein wenig traktiert um rauszufinden, ob es etwas gibt, um die Fälle Standy mit Aufzeichnung und wirklich aus unterscheiden kann. Leider habe ich dazu nichts gefunden. Denn im Zustand einer laufenden Aufzeichnung im Standby ist nicht vom aktuellen Betrieb zu unterscheiden (man kann aktuellen Kanal abfragen, umschalten alle normalen Requests machen).

Also würde ich auch sagen - wenn er auf ping antwortet und device daten zurückliefert ist er an.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 28 September 2017, 00:46:18
Zitat von: der.einstein am 25 September 2017, 21:49:59
@viegener: Kannst du bei deinem Loewe die Live Kanäle und Aufnahmen übers Netzwerk freigeben? Also über DLNA? Falls das geht müsste es eine Funktion geben, dass er das immer bereit stellt. Das müsste dazu führen, dass der LoeweTV immer per LAN erreichbar ist.

Dazu habe ich bei mir keine Möglichkeit gefunden - In welchem Menu geht das bei Dir?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 28 September 2017, 00:50:42
und gleich noch eine Version 43 hinterher (fiel mir schwer die 42 nicht länger zu behalten...)

Jetzt wird regelmässig der presence status abgefragt und auch volume und mute und currentEvent

Das Interval bezieht sich auf presence - Die anderen Daten werden nur bei jedem 2. mal abgefragt (und natürlich nur wenn present)

Allerdings sollte das wohl bei Euch auch noch etwas mehr getestet werden.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 28 September 2017, 12:23:30
Zitat von: viegener am 28 September 2017, 00:50:42
und gleich noch eine Version 43 hinterher (fiel mir schwer die 42 nicht länger zu behalten...)

Jetzt wird regelmässig der presence status abgefragt und auch volume und mute und currentEvent

Das Interval bezieht sich auf presence - Die anderen Daten werden nur bei jedem 2. mal abgefragt (und natürlich nur wenn present)

Allerdings sollte das wohl bei Euch auch noch etwas mehr getestet werden.
Coole Sache.
Ich hab gestern auch mal Intervalmäßig abgefragt. Allerdings volles Programm also presence, volume, mute, currentevent, nextevent, playback, devicedata. Ging ne Weile gut (30min?). Danach hat der TV nicht mehr auf Befehle reagiert, auch nicht per Fernbedienung, in FHEM stand Error no response. Musste ihn neu starten (wie beim pc [emoji23]).
Also das currentevent seltener abgefragt wird ist ne gute Idee. [emoji106]
Ich hab daneben noch play, stop, pause, record, ff, es per Text implementiert. Auch Off geht. Ein On hab ich auch geschrieben, das funktioniert so lala. Ich muss es mehrmals ausführen. Ich mache ein WOL, warte 5sec, nochmal WOL, dann RequestAccess und direkt danach InjectRCKey 22 (also hochfahren).

Eventuell kann uns mal FHEM Freak sagen, welche Abfolge bei ihm gut funktioniert, und welche Zeit der TV bei ihm braucht zum Hochfahren?

@viegener:
Ich glaub bei deinem Chassis ist das Menü anders aufgebaut, aber meine Eltern haben auch das ältere Modell, mit dem geht das Streamen über DLNA auch. Hast die einen DR+ Recorder im LoeweTV? Damit sollte es irgendwie gehen. Denke in den Netzwerkeinstellungen. DR+ Streaming müsste das heißen meine ich.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 28 September 2017, 12:40:23
Zitat
Ich mache ein WOL, warte 5sec, nochmal WOL, dann RequestAccess und direkt danach InjectRCKey 22 (also hochfahren).

Wie hast Du das 5s warten realisiert?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 28 September 2017, 12:41:42
Zitat von: CoolTux am 28 September 2017, 12:40:23
Wie hast Du das 5s warten realisiert?
Ich denke sehr, sehr schlecht: sleep 5;
[emoji41] das hat wohl 5 sec lang alles blockiert...

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 28 September 2017, 12:42:39
die Befürchtung hatte ich  :D
Das müsste anders geregelt werden.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 28 September 2017, 22:14:00
Zitat von: der.einstein am 28 September 2017, 12:23:30
Coole Sache.
Ich hab gestern auch mal Intervalmäßig abgefragt. Allerdings volles Programm also presence, volume, mute, currentevent, nextevent, playback, devicedata. Ging ne Weile gut (30min?). Danach hat der TV nicht mehr auf Befehle reagiert, auch nicht per Fernbedienung, in FHEM stand Error no response. Musste ihn neu starten (wie beim pc [emoji23]).
Also das currentevent seltener abgefragt wird ist ne gute Idee. [emoji106]

Wow - das nenne ich interessante Software bei Loewe - meine Kunden würden da sofort eskalieren wenn man nach 100 Aufrufen den Server neustarten müsste  :o
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 28 September 2017, 22:35:54
Tja, vielleicht Lags auch an meinem Code.
Anbei mal eine Version mit meinen Änderungen.
- die HDR Befehle als Text für Set
- regelmäßiger Presence Call
- On und Off

Mit dem On bin ich wie gesagt nicht ganz zufrieden.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 29 September 2017, 00:55:43
Zitat von: der.einstein am 28 September 2017, 22:35:54
Tja, vielleicht Lags auch an meinem Code.
Anbei mal eine Version mit meinen Änderungen.
- die HDR Befehle als Text für Set
- regelmäßiger Presence Call
- On und Off

Mmmh, das basiert aber auf Version 39 - kannst Du Deine Änderungen in die 43 einpflegen, denn das mergen war für mich jetzt nicht ganz simpel.

Das mit dem sleep funktioniert in einem Modul in FHEM nicht, dazu müsste man wohl einen weiteren internalTimer bemühen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 01 Oktober 2017, 23:34:34
Also mit v43 hab ich ein Problem, sowohl mit der jungfräulichen direkt aus dem GitHub als auch der, bei der ich meine Änderungen mit eingepflegt hab.
Und zwar klappt das einholen der ChannelList nicht mehr, genauer gesagt krieg ich (1) die falschen Kanalnummern und (2) keine StreamingUrl.
Ich denke, dass liegt an der Zeile, die "default" als Name für die Channellist verwenet?
Ich habe gesehen, dass es ein Attribut für Channellist gibt, also hab ich das auf die von mir benutzte "favlist0" gesetzt, das hat nichts gebracht.
Hier mal ein Auszug aus meinem "showchannellist":

386   PHOENIX HD : chl0:00-0003f001ffff2719285b
    channel://386:fffca5971e53023ce93
   
400   KiKA HD : chl0:00-0003f001ffff27192b98
    channel://400:fffca5971e53023b156
   
  24   Nick HD : chl0:00-0003f001ffff271ac385
    channel://24:fffca5971e530132965
    http://192.168.0.2:1543/lt0/0/$1$0$23
  25   Nick Jr. HD : chl0:00-0003f001ffff271ac381
    channel://25:fffca5971e530132979
    http://192.168.0.2:1543/lt0/0/$1$0$24

Das ist alles aus einer Liste, also die ersten beiden UND die letzten beiden. Jetzt is es so, dass die letzten beiden die richtige NUmmer haben, und daher auch die korrekte StreamingUrl, diese fehlt bei den ersten beiden komplett. Der Nummer entnehme ich, dass diese aus der globalen "default" Liste gelesen wurden. In der ist auch nicht die StreamingUrl drinnen, da diese Liste nicht "ge-shared" wird.

Jedenfalls war das Channellist Zeug bis v39, v40 und v41 kompatibel. Nun leider nicht mehr.
Können wir das nochmal eruieren?

Nachdem ich rausgefunden hab, dass es jetzt ein Interval per Attribut zu setzen gilt, funktionieren auch die regelmäßigen Updates.

Im Anhang die v44 mit den HD Recorder Tasten als set Befehle. Allerdings eben mit den nicht von mir veränderten und daher nicht funktionierenden Funktionen für Channellist.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 02 Oktober 2017, 00:45:21
Zitat von: der.einstein am 01 Oktober 2017, 23:34:34
Also mit v43 hab ich ein Problem, sowohl mit der jungfräulichen direkt aus dem GitHub als auch der, bei der ich meine Änderungen mit eingepflegt hab.
Und zwar klappt das einholen der ChannelList nicht mehr, genauer gesagt krieg ich (1) die falschen Kanalnummern und (2) keine StreamingUrl.
Ich denke, dass liegt an der Zeile, die "default" als Name für die Channellist verwenet?


Wieso sollte es an der Zeile mit dem default liegen? Diese ist doch schon einige Zeit vorhanden?

Was machst Du denn genau, dass das Einlesen der channellist nicht mehr geht?
Bei mir funktioniert es wenn ich das device neu anlege problem los (auch mit attribut)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 02 Oktober 2017, 15:17:18
Hallo allerseits,
habe den Thread hier durch Zufall entdeckt und bin als Besitzer eines Loewe bild1 darüber hocherfreut.
Ich würde das Modul auch gerne mal testen, allerdings bin ich jetzt nicht so der FHEM-Spezialist...
Habe nur das Modul auf github gefunden aber leider keinerlei Installationsanweisungen/Doku. Hab mal angefangen mich durch den ellenlangen Thread hier durchzuarbeiten, aber das ist doch sehr zäh.
Gibt's für das Modul irgendwo eine Art Zusammenfassung? Wär vielleicht eine Anregung mal eine Seite im FHEM-Wiki zu erstellen ;)

Danke und Gruß, Sascha
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 02 Oktober 2017, 15:29:38
Hallo Sascha,

Da sich das Modul noch in Entwicklung befindet ist das testen auch eher für etwas erfahrene User gedacht. Diese User können auch aussagekräftige Fehlermeldungen geben. Daher würde ich es jetzt noch nicht empfehlen als FHEM Anfänger das Modul zu verwenden.


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 02 Oktober 2017, 15:38:19
Naja, vollkommener Anfänger bin ich auch nicht mehr und mal testen würde ich es schon gerne. Feedback von Neuen kann der Modulentwicklung ja auch nicht schaden ;)
Früher oder später ist eine Doku sowieso notwendig, da wär das doch die Gelegenheit jetzt damit anzufangen...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 02 Oktober 2017, 15:42:04
Das Modul von Github runterladen, das Zip entpacken und dann unter /opt/fhem/FHEM/ installieren. Die Rechte anpassen mit chown fhem:
danach ein reload 82_LoeweTV in der FHEMWEB Kommandozeile eingeben.

Danach ein define myTv LoeweTV IP-ADRESSE



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 02 Oktober 2017, 16:43:20
Nachdem ich noch das PerlModul DataDumperSimple nachinstalliert habe, geht's voran bis zu folgender Fehlermeldung:

Experimental keys on scalar is now forbidden at ./FHEM/82_LoeweTV.pm line 1224.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 02 Oktober 2017, 16:46:42
Welche Perlversion hast Du?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 02 Oktober 2017, 17:09:19
perl 5.24

Ich schaue gerade mal den Perl Code durch. Werde Dir dann ein Pull request über git schicken.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 02 Oktober 2017, 17:27:38
Alles klar. Annahme entscheide ich aber nicht alleine, Johannes Frage ich da auch noch zu. Nur zur Info.

Und danke fürs mit coden.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 02 Oktober 2017, 18:09:34
So, installieren lässt sich das Modul jetzt.
Die Glotze wird aber immer mit Status absent angezeigt. Die IP habe ich kontrolliert, der TV ist eingeschaltet (angebunden über WLAN).

Internals:
   CLIENTID   ?
   DEF        192.168.16.203
   FCID       1234
   HOST       192.168.16.203
   INTERVAL   0
   NAME       myTv
   NR         25
   STATE      off
   TYPE       LoeweTV
   VERSION    0.0.43
   READINGS:
     2017-10-02 17:57:19   presence        absent
     2017-10-02 17:57:17   state           off
   helper:
Attributes:
   room       OG
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 02 Oktober 2017, 18:13:06
Was sagt das Logfile? Mach mal als User pi ein Ping auf den Fernsehr. Wenn das nicht geht musst du Mal im Netz suchen, du musst dann glaube in eine bestimmte Gruppe.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 02 Oktober 2017, 18:15:20
Wenn Ping nur als root oder mit sudo geht dann

https://debianforum.de/forum/viewtopic.php?f=29&t=156254#p1049145
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 02 Oktober 2017, 18:31:47
Eigenartig, jetzt geht's plötzlich.
Rootermenü hatte zwar die ganze Zeit schon den TV als angemeldet angezeigt. Die Internetverbindung über den TV war auch schon vorhanden, aber ping vom raspi zum tv schlug fehl.
Plötzlich ging's dann...
So, jetzt werd ich erstmal ein bischen damit rumspielen.
Pull request habe ich rausgeschickt.

Gruß, Sascha
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 02 Oktober 2017, 18:43:42
Habe ich gesehen und sieht auch gut und schlüssig aus. Vielen Dank für den Beitrag.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 02 Oktober 2017, 21:33:58
Zitat von: CoolTux am 02 Oktober 2017, 18:43:42
Habe ich gesehen und sieht auch gut und schlüssig aus. Vielen Dank für den Beitrag.

Ja, pull request sieht gut aus, bei mir läuft ja immer noch eine steinalte perlversion - Danke für die Anpassungen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 02 Oktober 2017, 21:37:44
Zitat von: cartzilla am 02 Oktober 2017, 15:38:19
Naja, vollkommener Anfänger bin ich auch nicht mehr und mal testen würde ich es schon gerne. Feedback von Neuen kann der Modulentwicklung ja auch nicht schaden ;)
Früher oder später ist eine Doku sowieso notwendig, da wär das doch die Gelegenheit jetzt damit anzufangen...

Ja Doku - leidiges Thema allerorten  ;)

Ein weiterer Tester ist willkommen - ich habe ja nur ein quasi "steinalten" Loewe - wenn ich mir die fehlenden Funktionen bei mir anschaue

Kannst Du mal ein List Deines Loewes posten (bitte in code tags) nachdem Du auch deviceData abgefragt hast?

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 02 Oktober 2017, 21:44:56
Zitat von: viegener am 02 Oktober 2017, 21:33:58
Ja, pull request sieht gut aus, bei mir läuft ja immer noch eine steinalte perlversion - Danke für die Anpassungen
Ich habe den pull Request gemerged.


Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 02 Oktober 2017, 21:51:39

Internals:
   CLIENTID   LRemoteClient-0-1506971108
   DEF        192.168.16.203 c8:3d:d4:2f:a7:40
   FCID       1234
   HOST       192.168.16.203
   INTERVAL   0
   NAME       myTv
   NR         25
   STATE      connected
   TVMAC      c8:3d:d4:2f:a7:40
   TVSTATUS   1
   TYPE       LoeweTV
   VERSION    0.0.43
   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:InjectRCKeyResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1506971108</m:ClientId></m:InjectRCKeyResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
   HU_DO_PARAMS:
     args:
       InjectRCKey
       2
       undef
       1
   HU_SR_PARAMS:
     NAME
     action     InjectRCKey
     addr       http://192.168.16.203:905
     buf
     conn
     displayurl http://192.168.16.203: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: InjectRCKey
     host       192.168.16.203
     httpheader HTTP/1.1 200 OK

Date: Mon, 02 Oct 2017 21:49:21 GMT

Server: Nano HTTPD library

Content-Type: text/xml

Content-Length: 478
     hu_blocking 0
     hu_filecount 1
     hu_port    905
     hu_portSfx :905
     loglevel   4
     method     POST
     path       /loewe_tablet_0001
     protocol   http
     redirects  0
     timeout    30
     url        http://192.168.16.203:905/loewe_tablet_0001
     SR_READINGS:
     handlers:
     hash:
     sslargs:
   READINGS:
     2017-10-02 21:20:39   Chassis         SL302
     2017-10-02 21:20:39   SW_Version      4.3.53.0
     2017-10-02 21:20:02   access          accepted
     2017-10-02 21:05:16   presence        present
     2017-10-02 21:49:27   requestAction   InjectRCKey
     2017-10-02 21:49:27   requestResult   SUCCESS
     2017-10-02 21:20:02   state           connected
   actionQueue:
   helper:
     ChannelListCount 0
     ChannelListView DCY0://2b33d122-1dd2-11b2-97c6-c83dd42fa740
     ChannelList:
     ChannelSequence:
Attributes:
   room       OG
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 02 Oktober 2017, 22:22:47
Nach etwas rumprobieren komme ich jetzt auch langsam mit den Kanallisten klar. Hier im Forum habe ich verschiedentlich "default" und "favlist0" gelesen. Damit hat es bei mi nicht geklappt. Über listofchannellists habe ich dann die passenden Namen extrahiert. So z.B. fastscansld4f1c209-c8d0-4c6e-89c3-f60bc6c69968
Sind die bei Euch auch so gruselig lang?

In der FHEM-Oberfläche ist mir übrigens noch aufgefallen, dass das Formularfeld für den Volume-Wert nicht schreibbar ist. Beim mouseover erscheint zwar ein Cursor-Finger, aber beim Anklicken passiert auch nix...
oops, hab's kapiert. Das ist ein Slider den man mit der Maus verschiebt. Na richtig intuitiv ist das Design ja nicht gerade (oder ich bin nur etwas zu dämlich dafür)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 02:10:23
Zitat von: cartzilla am 02 Oktober 2017, 22:22:47
Nach etwas rumprobieren komme ich jetzt auch langsam mit den Kanallisten klar. Hier im Forum habe ich verschiedentlich "default" und "favlist0" gelesen. Damit hat es bei mi nicht geklappt. Über listofchannellists habe ich dann die passenden Namen extrahiert. So z.B. fastscansld4f1c209-c8d0-4c6e-89c3-f60bc6c69968
Sind die bei Euch auch so gruselig lang?


Nein eigentlich sollte eine Kanalliste default auch bei Dir existieren. Gibt doch mal einfach keinen Parameter bei "get channellist" an. Was passiert dann?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 13:22:48
Hallo wieder,

die Verbindung von FHEM zum TV funktioniert bei mir leider jetzt wieder nicht mehr.
Ein set myTv wakeUp hat zwar bewirkt, dass das Auge blinkt und die angeschlossene Festplatte anläuft, es erscheint aber kein LoeweMeldung. Das Blinken hört dann wieder auf, die Scheibe bleibt schwarz.
Schaltet man dann den TV mit der Fernbedienung manuell ein, erkennt FHEM nicht automatisch den TV, erst durch explizites get myTv presence ändert sich das presence reading von absent zu present. Allerdings funktioniert aber auch dann nicht mehr das Absetzen eines Befehls von FHEM zum TV. Es gibt zwar keine Fehlermeldung, aber es passiert auch nix...

Gruß, Sascha
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 13:37:05
Ohne, dass das Attribut interval gesetzt ist, wird presence nicht regelmässig überwacht, das ist also erstmal genau so wie es sein soll.

Probier mal folgendes:

Schalte den Fernseher ein
rufe im Modul presence auf
Wenn er den Fernseher findet rufe mal GetDeviceData auf

Es gibt keine Fehlermeldung ist vermutlich relativ --> Was steht im Log und was steht in "lastresponse"
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 13:44:02
nach get myTv devicedata gibt's folgende 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>?</m:ClientId><m:Chassis>SL302</m:Chassis><m:SW-Version>4.3.53.0</m:SW-Version><m:MAC-Address>c8:3d:d4:2f:a7:40</m:MAC-Address><m:MAC-Address-LAN>00:09:82:1d:38:c3</m:MAC-Address-LAN><m:MAC-Address-WLAN>c8:3d:d4:2f:a7:40</m:MAC-Address-WLAN><m:Location>Germany</m:Location><m:NetworkHostName>Loewe bild 1.32</m:NetworkHostName><m:NetworkSubnetMask>255.255.255.0</m:NetworkSubnetMask><m:StreamingServerName>Loewe bild 1.32</m:StreamingServerName><m:OwnVolumeId>DCY0://2b33d122-1dd2-11b2-97c6-c83dd42fa740</m:OwnVolumeId><m:MAC-Address-BT>c8:3d:d4:2f:a7:41</m:MAC-Address-BT></m:GetDeviceDataResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>


Client-ID = ?  ist komisch, da stand schon mal was anderes...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 14:11:39
Die Daten sehen an sich gut aus
Die ClientID wird beim "get access" oder "set connect" gefüllt

Mach doch noch ein "get access" und dann versuch mal bei eingeschlaltetem TV einen Fernbeidenungscode an das Gerät zu senden, zum beispiel zum ausschalten oder etwas anderes was Du am gerät bemerkst
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 14:22:29
get access hat funktioniert. Den Befehl kannte ich nicht (hatte ihn aber wohl beim Rumspielen gestern unabsichtlich benutzt). Jedenfalls kann ich jetzt Fernbedienungsbefehle erfolgreich absetzen...

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 14:26:07
Zitat von: viegener am 03 Oktober 2017, 02:10:23
Nein eigentlich sollte eine Kanalliste default auch bei Dir existieren. Gibt doch mal einfach keinen Parameter bei "get channellist" an. Was passiert dann?
So, wenn ich jetzt get channellist eingebe gibt's folgende lastresponse
Zitat
<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:GetChannelListResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet"> <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1507032853</m:ClientId><m:ChannelListView>default</m:ChannelListView><m:ChannelListName></m:ChannelListName><m:AncestorUuid></m:AncestorUuid><m:ItemClass>undefined</m:ItemClass><m:ResultItemFragment sequenceNumber="9076677" totalResults="0" returnedResults="0" startIndex="0" hash="4294967295"></m:ResultItemFragment></m:GetChannelListResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 14:29:28
ein get listofchannellist ergibt übrigens:


<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:GetListOfChannelListsResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet"> <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1507032853</m:ClientId><m:ResultItemChannelLists sequenceNumber="9076678" totalResults="4" returnedResults="4" startIndex="0"><m:ResultItemChannelList><m:View>avlistslf348c1f4-3c48-4fb9-86ca-1bc87cf9c87d</m:View><m:Name>#3051</m:Name><m:TotalResults>7</m:TotalResults><m:Hash>4294967295</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>fastscansld4f1c209-c8d0-4c6e-89c3-f60bc6c69968</m:View><m:Name>DVB-T</m:Name><m:TotalResults>70</m:TotalResults><m:Hash>4294967295</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlistsl1dc3df49-f6e7-4990-8ad7-83b66ae76f23</m:View><m:Name>Persönliche Liste 1</m:Name><m:TotalResults>6</m:TotalResults><m:Hash>4294967295</m:Hash></m:ResultItemChannelList><m:ResultItemChannelList><m:View>favlistslcc4ecdf6-747d-4b7e-bce2-c193c8cc9e02</m:View><m:Name>Aus­ge­wählte Sen­der</m:Name><m:TotalResults>15</m:TotalResults><m:Hash>4294967295</m:Hash></m:ResultItemChannelList></m:ResultItemChannelLists><m:Result>OK</m:Result></m:GetListOfChannelListsResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 14:39:18
Zitat von: cartzilla am 03 Oktober 2017, 14:29:28
ein get listofchannellist ergibt übrigens:

Interessant die default Liste liefert keine Ergebnisse (leer oder nicht definiert ?)

Dann musst Du wohl eine der von listofchannellists zurückgegebenen Listen nehmen (diejenige die ausgewählte Sender heisst ?)

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 14:54:08
Ja so isses:

get myTv channellist fastscansld4f1c209-c8d0-4c6e-89c3-f60bc6c69968

liefert Channelinfos. Danach ist das Pulldown-Menü bei switchToName mit Sendern gefüllt.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 15:19:30
Diesen wert kannst Du ja im attribut channellist hinterlegen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 15:27:53
Ich fasse mal zusammen wie man sich beim Tv von fhem nach meinen Kenntnisstand jetzt am besten anmeldet:

1.) Abfragen, ob reading presence = present
- wenn nein, dann set WakeUp und nach delay erneut abfragen
- wenn ja, dann weiter
2.) set getaccess
3.) Abfragen, ob clientID ungleich ?
- wenn nein, dann blöde
- wenn ja, dann weiter
4.) get listofchannellists
5.) get channellist (mit einem aus der response ausgewählten Channel)
... dann ist endlich alles klar zur Benutzung


Hab ich das so richtig verstanden?

PS: Wie schalte ich den TV eigentlich in Standby (bzw. was hat die Aus-Taste für eine Kennung)?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 15:30:22
Zitat von: viegener am 03 Oktober 2017, 15:19:30
Diesen wert kannst Du ja im attribut channellist hinterlegen.

OK, damit spar ich mir dann also schon mal Schritt 4.) und 5.) -> Hab's gerade ausprobiert, funktioniert aber irgendwie nicht :(
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 03 Oktober 2017, 16:24:48
@cartzilla:
Du kann St zum Einschalten des TV über FHEM folgendeermaßen vorgehen, wenn der TV im STANDBY ist:

1. Sende WOL (wakeUp), das bringt nur das Netzwerk des TV online und er reagiert auf andere Befehle
2. get access
3. RemoteKey 22 (entspricht der TV Taste auf der FB und fährt den TV hoch)
4. Der TV bootet und zeigt ein Programm

Zum Aus schalten kannst du Set Off senden bzw. RemoteKey 12. Der TV geht dann in Standby.

Was es noch zu eruieren gilt ist die Zeit zwischen 1. und 2., manchmal reichen 5 manchmal 10sec.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 16:26:18
Du kannst Dir so zumindest der Plan alles sparen, wenn Du das Attribut interval setzt - wenn das alles dann regelmässig ausgeführt wird
regelmässig:
  - presence
  - deviceData und access
  - mute/volume
einmalig
- wenn channellist nicht da wird auch die geladen (default oder was im attribut steht)

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 16:27:11
Zitat von: cartzilla am 03 Oktober 2017, 15:30:22
OK, damit spar ich mir dann also schon mal Schritt 4.) und 5.) -> Hab's gerade ausprobiert, funktioniert aber irgendwie nicht :(

Das ist eine sehr detaillierte Fehlerbeschreibung - speziell das "irgendwie"  ;)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 16:57:31
Zitat von: viegener am 03 Oktober 2017, 16:27:11
Das ist eine sehr detaillierte Fehlerbeschreibung - speziell das "irgendwie"  ;)
Sorry, irgendwie ist wohl zugegebenemaßen nicht so wahnsinnig aufschlussreich ;)
Er erkennt die explizit angegebene Channellist nach TV-Wiedereinschaltung aber erstmal nicht. Dachte zuerst die Channellist-Bezeichner ändern sich vielleicht jedesmal, ist aber nicht der Fall. Nach rumprobieren (evtl nach get listchannellists) geht's dann oft doch. Ich hab's nur noch nicht richtig reproduzierbar hinbekommen und wollte daher erst noch etwas testen, bevor ich "ausführlicher" werde.

Jetzt hab ich grade keine Zeit mehr, gehe das ganze morgen nochmals an.

PS: Danke für die Tastencodes für EIN/AUS 
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 03 Oktober 2017, 17:17:47
Zitat von: cartzilla am 03 Oktober 2017, 16:57:31
Sorry, irgendwie ist wohl zugegebenemaßen nicht so wahnsinnig aufschlussreich ;)
Er erkennt die explizit angegebene Channellist nach TV-Wiedereinschaltung aber erstmal nicht. Dachte zuerst die Channellist-Bezeichner ändern sich vielleicht jedesmal, ist aber nicht der Fall. Nach rumprobieren (evtl nach get listchannellists) geht's dann oft doch. Ich hab's nur noch nicht richtig reproduzierbar hinbekommen und wollte daher erst noch etwas testen, bevor ich "ausführlicher" werde.

Jetzt hab ich grade keine Zeit mehr, gehe das ganze morgen nochmals an.

PS: Danke für die Tastencodes für EIN/AUS
Achte mal auf die Zeit, die dein TV zwischen wakeUp und get Access benötigt [emoji106]

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 17:44:30
Zitat von: viegener am 03 Oktober 2017, 16:26:18
Du kannst Dir so zumindest der Plan alles sparen, wenn Du das Attribut interval setzt - wenn das alles dann regelmässig ausgeführt wird
regelmässig:
  - presence
  - deviceData und access
  - mute/volume
einmalig
- wenn channellist nicht da wird auch die geladen (default oder was im attribut steht)

Ist das nicht ein Problem mit einer einzigen generellen Intervallangabe?
Nach einem WakeUp sollte der Abfrageintervall doch ziemlich niedrig (alle paar Sekunden) sein, um nicht ewig auf erfolgreichen access zu warten. Setzt man das Intervall dann aber so kurz an, ist das eine ziemliche Rechnerbelastung durch die ständigen Abfragen, wenn der TV im Standby ist.

Wäre es nicht vorteilhaft das Modul so weiterzuentwicklen, dass es den Zustand TV present aber kein access (clientid = ?) gar nicht mehr geben kann, sprich bei einer Änderung der presence auf present automatisch ein get access (durch internen eventhandler) erfolgt ? get access also nur noch eine interne Methode ist!

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 03 Oktober 2017, 17:55:51
Zitat von: der.einstein am 03 Oktober 2017, 17:17:47
Achte mal auf die Zeit, die dein TV zwischen wakeUp und get Access benötigt [emoji106]

Sind nur ein paar Sekunden bis nach einem wakeUp get presence eine presence = present liefert.
Diesmal hat das Modul (mit gesetztem attribut channellist) übrigens die Sendernamen nach dem get access korrekt automatisch eingelesen, komisch...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 19:19:35
Zitat von: cartzilla am 03 Oktober 2017, 17:44:30
Ist das nicht ein Problem mit einer einzigen generellen Intervallangabe?
Nach einem WakeUp sollte der Abfrageintervall doch ziemlich niedrig (alle paar Sekunden) sein, um nicht ewig auf erfolgreichen access zu warten. Setzt man das Intervall dann aber so kurz an, ist das eine ziemliche Rechnerbelastung durch die ständigen Abfragen, wenn der TV im Standby ist.

Wäre es nicht vorteilhaft das Modul so weiterzuentwicklen, dass es den Zustand TV present aber kein access (clientid = ?) gar nicht mehr geben kann, sprich bei einer Änderung der presence auf present automatisch ein get access (durch internen eventhandler) erfolgt ? get access also nur noch eine interne Methode ist!

Ich habe das natürlich verkürzt dargestellt - die wahrheit steht im Code
Wenn der Loewe nicht "present" ist wird natürlich kein access/etc aufgerufen - das wäre ja auch ziemlich sinnfrei und kämme immer mit no route to host oder ähnlichem zurück

Und ja das Modul führt bereits automatisch ein getAccess durch wenn bisher noch nicht gemacht. Das Problem ist ja zu erkennen, wenn das aktuelle Token (access) nicht mehr gültig ist, denn das ist nicht nach festen Regeln der Fall und der Loewe antwortet bei mir dann auch gerne einfach mit leeren Listen und nicht mit einem Fehler
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 03 Oktober 2017, 19:20:31
Hallo CoolTux oder viegener,
Könnt ihr bitte die Änderungen mit ins GitHub mergen?
Steht dem irgendwas entgegen?

Danke.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 19:37:44
Zitat von: der.einstein am 03 Oktober 2017, 19:20:31
Hallo CoolTux oder viegener,
Könnt ihr bitte die Änderungen mit ins GitHub mergen?
Steht dem irgendwas entgegen?

Danke.

Sieht erstmal gut aus, ich mische die Änderungen mal ein  ;)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 03 Oktober 2017, 19:44:49
Version 44 in github eingechecked - habe allerdings nur einen syntaxcheck gemacht - konnte die Befehle nicht wirklich ausprobieren
mit den Änderungen von der.einstein
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 04 Oktober 2017, 10:48:12
Zitat von: viegener am 03 Oktober 2017, 16:26:18
Du kannst Dir so zumindest der Plan alles sparen, wenn Du das Attribut interval setzt - wenn das alles dann regelmässig ausgeführt wird
regelmässig:
  - presence
  - deviceData und access
  - mute/volume
einmalig
- wenn channellist nicht da wird auch die geladen (default oder was im attribut steht)

Habe jetzt mal versucht das Attribut interval in fhem.cfg zu setzen (Versuche mit den Werten 30 und 300) -> FHEM hängt sich komplett auf!
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 04 Oktober 2017, 12:10:56
Zitat von: viegener am 03 Oktober 2017, 19:44:49
Version 44 in github eingechecked - habe allerdings nur einen syntaxcheck gemacht - konnte die Befehle nicht wirklich ausprobieren
mit den Änderungen von der.einstein

Funktioniert bei mir gut. Bin gerade dabei mich in Perl und FHEM-Modulprogrammierung etwas einzuarbeiten und habe daraufhin mir gleich den Code vorgenommen. Für set on folgender Vorschlag mit internalTimer:

Timerfunktion im entsprechenden Bereich deklarieren:

sub LoeweTV_Activate($@);

Die eigentliche Timerfunktion mit Selbstreferenzierung (wenn nach Ablauf der Wartezeit, TV immer noch nicht präsent, dann einfach nochmals warten):

# method to activate tv
sub LoeweTV_Activate($@) {

    my $hash = shift;

    LoeweTV_Presence($hash);
    if(LoeweTV_IsPresent( $hash )) {
      LoeweTV_SendRequest($hash,"RequestAccess" );
      LoeweTV_SendRequest($hash,"InjectRCKey", 22 );
    } else {
      InternalTimer( gettimeofday()+5, "LoeweTV_Activate", $hash, 1 );
    }

}


Das ganze als set on einbinden (entsprechenden Bereich so anpassen):

...
    } elsif( lc $cmd eq 'on' ) {
        return "$cmd does not accept any arguments" if ( ( defined( $args[0] ) ) );
        LoeweTV_WakeUp_Udp($hash,$hash->{TVMAC},'255.255.255.255') if( defined($hash->{TVMAC}) );
        InternalTimer( gettimeofday()+5, "LoeweTV_Activate", $hash, 1 );
...


Bei mir klappt damit das Einschalten der Glotze.
PS: Es wäre wohl noch ganz gut, in LoeweTV_Activate einen Zähler einzubauen und bei einem gesetzten Maximalwert mit Fehler abzubrechen. Falls der WakeUp aus irgendeinem Grunde nicht klappt, gibt's ansonsten eine Endlosreferenzierung.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 04 Oktober 2017, 12:25:08

sub LoeweTV_Activate($);
...


# method to activate tv
sub LoeweTV_Activate($) {

    my $hash = shift;
...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 04 Oktober 2017, 12:33:55
Noch eine Frage zur LoeweTV_TimerStatusRequest:
Am Anfang wird dort mit LoeweTV_IsPresent die presence abgefragt. Die liest doch aber nur die Variable aus und gibt daher nicht unbedingt den aktuellen Status wieder. Erst am Ende der Routine wird mit LoeweTV_Presence($hash) die Statusvariable aktualisiert. Sollte LoeweTV_Presence($hash) nicht besser am Anfang der Routine stehen, damit die Abfrage nicht auf einem veralteten Stand durchgeführt wird?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 04 Oktober 2017, 12:37:16
Zitat von: cartzilla am 04 Oktober 2017, 12:33:55
Noch eine Frage zur LoeweTV_TimerStatusRequest:
Am Anfang wird dort mit LoeweTV_IsPresent die presence abgefragt. Die liest doch aber nur die Variable aus und gibt daher nicht unbedingt den aktuellen Status wieder. Erst am Ende der Routine wird mit LoeweTV_Presence($hash) die Statusvariable aktualisiert. Sollte LoeweTV_Presence($hash) nicht besser am Anfang der Routine stehen, damit die Abfrage nicht auf einem veralteten Stand durchgeführt wird?
Sehe ich auch so. Ich würd's auch lieber am Anfang abfragen.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 04 Oktober 2017, 12:49:08
Zitat von: der.einstein am 04 Oktober 2017, 12:37:16
Sehe ich auch so. Ich würd's auch lieber am Anfang abfragen.

Gesendet von meinem LG-D855 mit Tapatalk


Presence-Abfrage ist asynchron, es am Anfang zu starten macht deshalb keinen Sinn, genau deshalb steht es am Ende.
Die weiteren Abfragen lassen sich aber so auch nicht in den BlockingCall für presence einbinden.

Deshalb prüfe letzten Status am Anfang - führe Operationen durch wenn present - und am Ende neue Präsenzabfrage starten, die hoffentlich vor dem nächsten Durchlauf aktiv ist.

Ich empfehle euch mal im wiki die Developer Infos durchzugehen und auch zu BLocking call zu lesen https://wiki.fhem.de/wiki/Blocking_Call (https://wiki.fhem.de/wiki/Blocking_Call)
FHEM ist inhärent single threaded, damit sind alle blockierenden Operationen asynchron auszuführen (das gilt übrigens auch für die http-Abfragen)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 04 Oktober 2017, 12:54:50
Zitat von: cartzilla am 04 Oktober 2017, 12:10:56
Funktioniert bei mir gut. Bin gerade dabei mich in Perl und FHEM-Modulprogrammierung etwas einzuarbeiten und habe daraufhin mir gleich den Code vorgenommen. Für set on folgender Vorschlag mit internalTimer:

Timerfunktion im entsprechenden Bereich deklarieren:

sub LoeweTV_Activate($@);

Die eigentliche Timerfunktion mit Selbstreferenzierung (wenn nach Ablauf der Wartezeit, TV immer noch nicht präsent, dann einfach nochmals warten):

# method to activate tv
sub LoeweTV_Activate($@) {

    my $hash = shift;

    LoeweTV_Presence($hash);
    if(LoeweTV_IsPresent( $hash )) {
      LoeweTV_SendRequest($hash,"RequestAccess" );
      LoeweTV_SendRequest($hash,"InjectRCKey", 22 );
    } else {
      InternalTimer( gettimeofday()+5, "LoeweTV_Activate", $hash, 1 );
    }

}


Das ganze als set on einbinden (entsprechenden Bereich so anpassen):

...
    } elsif( lc $cmd eq 'on' ) {
        return "$cmd does not accept any arguments" if ( ( defined( $args[0] ) ) );
        LoeweTV_WakeUp_Udp($hash,$hash->{TVMAC},'255.255.255.255') if( defined($hash->{TVMAC}) );
        InternalTimer( gettimeofday()+5, "LoeweTV_Activate", $hash, 1 );
...


Bei mir klappt damit das Einschalten der Glotze.
PS: Es wäre wohl noch ganz gut, in LoeweTV_Activate einen Zähler einzubauen und bei einem gesetzten Maximalwert mit Fehler abzubrechen. Falls der WakeUp aus irgendeinem Grunde nicht klappt, gibt's ansonsten eine Endlosreferenzierung.

Ich würde den activate call nicht so einbauen:
- Hier kommen sich unter Umständen mehrere sendRequest ins Gehege und auch mehrere Datenabfragen, es wäre besser das im aktuellen Timer abzubilden und damit das Polling des Status nicht durchzuführen, wenn gerade ein activate-wakeupEinschalten läuft
- Der RequestAccess sollte besser automatisch eingestreut werden, wenn das aktuelle Token nicht valide ist oder keines vorliegt
- Selbst wenn es keine Grenze gibt, aber ich würde lieber vermeiden viele Timer in einem Modul zu haben, da sich dadurch zusätzliche Fehlerquellen ergeben
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 04 Oktober 2017, 12:58:21
Zitat von: cartzilla am 04 Oktober 2017, 10:48:12
Habe jetzt mal versucht das Attribut interval in fhem.cfg zu setzen (Versuche mit den Werten 30 und 300) -> FHEM hängt sich komplett auf!

Kannst Du das genauer beschreiben, was heisst aufhängen? --> Was steht im Log ? Ist es blockiert? Für wielange? stürzt FHEM ab?

Es würde helfen, wenn DU das verbose level mal auf 4 oder sogar 5 für den Loewe Device setzt und dann den Log-Teil nach aktivieren von interval hier bereitstellst.

Die Loewe Chassis verhalten sind offensichtlich in vielerlei Hinsicht unterschiedlich und fürs debuggen kann ich nur mein Chassis verwenden, cooltux hat sogar gar keine Möglichkeit real zu debuggen (oder hast DU Dir inzwischen einen loewe zugelegt  ;) )

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 04 Oktober 2017, 12:58:48
Zitat von: viegener am 04 Oktober 2017, 12:49:08
FHEM ist inhärent single threaded, damit sind alle blockierenden Operationen asynchron auszuführen (das gilt übrigens auch für die http-Abfragen)
Das habe ich auch schon aus den Developertexten mitbekommen. Ich verstehe jetzt bloss nicht warum der Aufruf von LoeweTV_Presence am Ende der Funktion statt am Anfang einen Unterschied in der "Asynchronität" macht ? Ok, die Zeit zwischen zwei Aufrufen der Funktion soll also genutzt werden für die eigentliche Presence-Abfrage.
Naja, richtig optimal ist das aber auch nicht. Wäre es dann nicht besser in der Funktion LoeweTV_PresenceDone die anstehenden Jobs zu erledigen?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 04 Oktober 2017, 13:13:07
Zitat von: cartzilla am 04 Oktober 2017, 12:58:48
Das habe ich auch schon aus den Developertexten mitbekommen. Ich verstehe jetzt bloss nicht warum der Aufruf von LoeweTV_Presence am Ende der Funktion statt am Anfang einen Unterschied in der "Asynchronität" macht ?

Die These war ja, dass ein Aufruf von Presence am Anfang der Timerfunktion besser ist, damit der access status aktuell ist und genau das ist nicht der Fall, denn am Ende aufgerufen wird es aktueller sein beim nächsten Durchlauf.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 04 Oktober 2017, 13:16:21
Zitat von: viegener am 04 Oktober 2017, 12:58:21
Die Loewe Chassis verhalten sind offensichtlich in vielerlei Hinsicht unterschiedlich und fürs debuggen kann ich nur mein Chassis verwenden, cooltux hat sogar gar keine Möglichkeit real zu debuggen (oder hast DU Dir inzwischen einen loewe zugelegt  ;) )

Ich habe einen LG und bin sehr zufrieden damit  :D
Ich kann also nur beratend zur Seite stehen und allgemeinen Code zum Aufbau dazu steuern.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 04 Oktober 2017, 13:32:26
Zitat von: viegener am 04 Oktober 2017, 12:58:21
Kannst Du das genauer beschreiben, was heisst aufhängen? --> Was steht im Log ? Ist es blockiert? Für wielange? stürzt FHEM ab?

Es würde helfen, wenn DU das verbose level mal auf 4 oder sogar 5 für den Loewe Device setzt und dann den Log-Teil nach aktivieren von interval hier bereitstellst.

Die Loewe Chassis verhalten sind offensichtlich in vielerlei Hinsicht unterschiedlich und fürs debuggen kann ich nur mein Chassis verwenden, cooltux hat sogar gar keine Möglichkeit real zu debuggen (oder hast DU Dir inzwischen einen loewe zugelegt  ;) )

FHEM verabschiedet sich dauerhaft. Erst wenn man über die Console in der fhem.cfg dass intervall attribute auskommentiert und dann rebootet (wahrscheinlich könnte man auch nur FHEM killen und neustarten) funktioniert es wieder. Ich werde aber noch schauen, ob sich im Log was aufschlussreiches finden lässt...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 04 Oktober 2017, 16:44:54
@viegener
Hier mal der seit langem versprochene Link zum Thread mit der Ansicht des aktuellen TV Programms: https://forum.fhem.de/index.php/topic,28123.750.html (https://forum.fhem.de/index.php/topic,28123.750.html)

Funktioniert mit HTTPMOD soweit ich das gesehen habe. Da bräuchte man jetzt noch unter jedem z. B. Senderdymbol einen Link/Knopf der den TV mit dem entsprechenden Sender startet.

Auch super wäre ein Knopf zum Aufnehmen.

Ich suche auch immer noch nach einer Möglichkeit, dass ein Reading bereitgestellt wird, dass die aktuelle Kanalnummer und dessen StreamingUrl bereitstellt (2 Readings).

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 04 Oktober 2017, 17:06:23
Zitat von: viegener am 04 Oktober 2017, 12:54:50
Ich würde den activate call nicht so einbauen:
- Hier kommen sich unter Umständen mehrere sendRequest ins Gehege und auch mehrere Datenabfragen, es wäre besser das im aktuellen Timer abzubilden und damit das Polling des Status nicht durchzuführen, wenn gerade ein activate-wakeupEinschalten läuft
- Der RequestAccess sollte besser automatisch eingestreut werden, wenn das aktuelle Token nicht valide ist oder keines vorliegt
- Selbst wenn es keine Grenze gibt, aber ich würde lieber vermeiden viele Timer in einem Modul zu haben, da sich dadurch zusätzliche Fehlerquellen ergeben

Habe jetzt versucht die Bedenken zu berücksichtigen und das ganze etwas abzuändern. Set on schickt jetzt einfach erst mal alle Requests in den Befehlsstack:

...
    } elsif( lc $cmd eq 'on' ) {
        return "$cmd does not accept any arguments" if ( ( defined( $args[0] ) ) );
        LoeweTV_WakeUp_Udp($hash,$hash->{TVMAC},'255.255.255.255') if( defined($hash->{TVMAC}) );
        LoeweTV_SendRequest($hash,"RequestAccess" );
        LoeweTV_SendRequest($hash,"InjectRCKey", 22 );
        InternalTimer( gettimeofday()+5, "LoeweTV_Activate", $hash, 1 );

    } elsif ...


Die Activate-Routine enthält keine Request mehr und ist auf's mindeste reduziert (möglicherweise könnte man auch ganz auf sie verzichten und stattdessen LoeweTV_TimerStatusRequest mitverwenden :

# method to activate tv
sub LoeweTV_Activate($) {

    my $hash = shift;

    LoeweTV_Presence($hash);
    if( ! LoeweTV_IsPresent( $hash )) {
      InternalTimer( gettimeofday()+5, "LoeweTV_Activate", $hash, 1 );
    }

}



Der eigentlichen Neuerungen sind jetzt eine Änderung in der LoeweTV_SendRequest. Wenn der TV nicht present ist landen die Befehle immer im Stack:

...
   if ( ( ! LoeweTV_IsPresent($hash)  ) ||  ( ( defined( $hash->{doStatus} ) ) && ( $hash->{doStatus} =~ /^WAITING/ ) && (  $retryCount == 0 ) ) ) {
  ...

und zweite Änderung im Callbackhandler der Presence-Routine LoeweTV_PresenceDone:

...
    Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Der Helper ist disabled. Daher wird hier abgebrochen" if($hash->{helper}{DISABLED});
    return if($hash->{helper}{DISABLED});

    if ( ReadingsVal($hash->{NAME},'presence','absent') ne $response ) {
      readingsSingleUpdate($hash,'presence',$response,1);
      Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Reading geaendert!";
      if ( LoeweTV_IsPresent($hash) ) {
        Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Reading ist jetzt present!";
        # start command in queue if available
        if ( ( defined( $hash->{actionQueue} ) ) && ( scalar( @{ $hash->{actionQueue} } ) ) ) {
          my $ref = shift @{ $hash->{actionQueue} };
          Log3 $name, 4, "LoeweTV_PresenceDone $name: handle queued cmd with :@$ref[0]: ";
          LoeweTV_SendRequest( $hash, @$ref[0], @$ref[1], @$ref[2] );
        }
      }
    }

    Log3 $name, 4, "Sub LoeweTV_PresenceDone ($name) - Abschluss!";
    ...


Wenn sich der TV present meldet, wird die Abarbeitung des Befehlsstacks automatisch gestartet.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 05 Oktober 2017, 11:43:33
Zitat von: viegener am 04 Oktober 2017, 12:58:21
Kannst Du das genauer beschreiben, was heisst aufhängen? --> Was steht im Log ? Ist es blockiert? Für wielange? stürzt FHEM ab?

Es würde helfen, wenn DU das verbose level mal auf 4 oder sogar 5 für den Loewe Device setzt und dann den Log-Teil nach aktivieren von interval hier bereitstellst.

Die Loewe Chassis verhalten sind offensichtlich in vielerlei Hinsicht unterschiedlich und fürs debuggen kann ich nur mein Chassis verwenden, cooltux hat sogar gar keine Möglichkeit real zu debuggen (oder hast DU Dir inzwischen einen loewe zugelegt  ;) )
So jetzt ein genauerer Bericht:
Wenn ich fhem starte (mit attr interval 360 für das LoeweModul) ist fhem über die Weboberfläche nicht erreichbar (der Browser zeigt nur immer das Wartesymbol). Über die Konsole habe ich mir jetzt das fhem.log mal angeschaut. Dort werden im interval-Abstand immer Logeinträge generiert, ansonsten aber keine weiteren. Scheint so als ob sich fhem ausschließlich mit der interval-Routine beschäftigt :(

...
2017.10.05 11:18:49 3: hmusb device opened
2017.10.05 11:18:49 3: telnetPort: port 7072 opened
2017.10.05 11:18:49 3: WEB: port 8083 opened
2017.10.05 11:18:49 3: WEBphone: port 8084 opened
2017.10.05 11:18:49 3: WEBtablet: port 8085 opened
2017.10.05 11:18:49 2: eventTypes: loaded 1055 events from ./log/eventTypes.txt
2017.10.05 11:18:49 3: LoeweTV myTv: defined LoeweTV device
2017.10.05 11:18:49 4: LoeweTV (myTv) - set interval: 360
2017.10.05 11:18:49 4: Sub LoeweTV_TimerStatusRequest (myTv) - start requests
2017.10.05 11:18:49 5: Sub LoeweTV_TimerStatusRequest (myTv) - Done - new sequence - 360 s
2017.10.05 11:18:51 5: LoeweTV (myTv) - ping command returned with output:
PING 192.168.16.203 (192.168.16.203) 56(84) bytes of data.

--- 192.168.16.203 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

2017.10.05 11:18:51 4: Sub LoeweTV_PresenceRun (myTv) - Sub finish, Call LoeweTV_PresenceDone
2017.10.05 11:24:49 4: Sub LoeweTV_TimerStatusRequest (myTv) - start requests
2017.10.05 11:24:49 5: Sub LoeweTV_TimerStatusRequest (myTv) - Done - new sequence - 360 s
2017.10.05 11:30:49 4: Sub LoeweTV_TimerStatusRequest (myTv) - start requests
2017.10.05 11:30:49 5: Sub LoeweTV_TimerStatusRequest (myTv) - Done - new sequence - 360 s
2017.10.05 11:36:49 4: Sub LoeweTV_TimerStatusRequest (myTv) - start requests
2017.10.05 11:36:49 5: Sub LoeweTV_TimerStatusRequest (myTv) - Done - new sequence - 360 s
2017.10.05 11:42:49 4: Sub LoeweTV_TimerStatusRequest (myTv) - start requests
2017.10.05 11:42:49 5: Sub LoeweTV_TimerStatusRequest (myTv) - Done - new sequence - 360 s

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 05 Oktober 2017, 12:08:14
@cartzilla: Das scheint mir einfach zu fixen zu sein, das Problem liegt einfach darin, dass beim Starten der timerStatusRequest aufgerufen wird und dort wird ein ReadingsSingleUpdate gemacht FHEM ist aber noch nicht hochgefahren und das löst wohl ein Problem aus.

Requests werden gar nicht ausgeführt, da ja der Loewe nicht present ist.

Ich habe in github mal einen Fix eingebaut.

Hast Du das ganze mal ohne Neustart ausprobiert, denn das sollte schon funktioniert haben

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 05 Oktober 2017, 12:14:27
Johannes, ich glaube das Problem liegt an der 1 am Ende

InternalTimer( gettimeofday()+$hash->{INTERVAL}, "LoeweTV_TimerStatusRequest", $hash, 1 );


Irgendeine Änderung gab es da in letzter Zeit, vorher lief das immer super. Wenn init_done ok war lief es mit 1 am Ende immer, seit einem Update wohl nicht mehr. Es wird eh empfohlen das nicht mehr zu nehmen. Entweder 0 oder gar nicht.
Daher

InternalTimer( gettimeofday()+$hash->{INTERVAL}, "LoeweTV_TimerStatusRequest", $hash);


Musste gerade mein LG Modul auch Ändern weil eine Userin Probleme mit blockierten FHEM hat.



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 05 Oktober 2017, 12:30:06
@CoolTux: Du hast Recht, da steckt doch noch einer mit der 1 am Ende - Sehr Gut! - Danke fürs Finden!

Habe es in github auch noch korrigiert
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 05 Oktober 2017, 12:33:15
Ich würde es in zukünftigen Versionen komplett weg lassen. Ist die Empfehlung.
Aber erstmal schauen ob es so klappt.

Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 05 Oktober 2017, 13:02:23
Zitat von: viegener am 05 Oktober 2017, 12:08:14
@cartzilla: Das scheint mir einfach zu fixen zu sein, das Problem liegt einfach darin, dass beim Starten der timerStatusRequest aufgerufen wird und dort wird ein ReadingsSingleUpdate gemacht FHEM ist aber noch nicht hochgefahren und das löst wohl ein Problem aus.

Requests werden gar nicht ausgeführt, da ja der Loewe nicht present ist.

Ich habe in github mal einen Fix eingebaut.

Hast Du das ganze mal ohne Neustart ausprobiert, denn das sollte schon funktioniert haben

Mit dem Fix klappt's jetzt. Auf https://wiki.fhem.de/wiki/DevelopmentModuleAPI steht übrigens dick geschrieben, dass der entsprechende Parameter nicht verwendet werden sollte (aus eben diesen Gründen) ;)
Na, hab gesehen, dass ich den in meinen geposteten Patches beim InternalTimer auch gesetzt habe. Oops, gehört da natürlich auch nicht hin...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 05 Oktober 2017, 13:05:41
Wenn man weiß was man macht konnte man diesen Parameter früher verwenden.
Da dürfte man ihn halt nicht in der define verwenden aber in den anderen Routinen lief es. Hat sich wohl was geändert.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 05 Oktober 2017, 16:58:57
Habe gerade noch die Version 45 hochgeladen
- mit ein paar Logänderungen
- ausserdem wird der access status zurückgesetzt wenn der Loewe nicht present ist (möglicherweise muss man auch noch die clientid zurücksetzen, dass müsstet ihr ausprobieren.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 06 Oktober 2017, 13:37:12
Musste gestern leider den LoeweTV erstmal aus FHEM löschen, da er immer wiederblockoert hat. Vermutlich nach mehreren Fehlern bei den SOAP Messages.

Gibt's eigentlich was aus den Logs zu holen dazu? In welcher Form soll man das Posten?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 06 Oktober 2017, 14:22:00
Was mir auch aufgefallen ist: das Internal State bleibt bei mir nach einem Einschalten des TV auf Off, bis ich manuell ein Connect Mache. Das sollte aber so nicht sein, oder? Fehlt uns da noch was in einer Routine?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 06 Oktober 2017, 15:08:34
Du musst die Webseite refreshen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 06 Oktober 2017, 18:10:56
Zitat von: der.einstein am 06 Oktober 2017, 13:37:12
Musste gestern leider den LoeweTV erstmal aus FHEM löschen, da er immer wiederblockoert hat. Vermutlich nach mehreren Fehlern bei den SOAP Messages.

Gibt's eigentlich was aus den Logs zu holen dazu? In welcher Form soll man das Posten?

Gesendet von meinem LG-D855 mit Tapatalk

Am besten mit erhöhtem verbose level - den Ausschnitt aus dem fhem-Log hier in cide tags posten.
Was hilfreich ist, eine möglichst detaillierte Beschreibung was Du gemacht und beobachtet und ausprobiert hast. Warum detailliert, weil "blockiert" sich zum Beispiel auf unterschiedliche Weise äussern kann und auch interessant ist ob interval gesetzt war
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 08 Oktober 2017, 21:25:49
Zitat von: viegener am 06 Oktober 2017, 18:10:56
Am besten mit erhöhtem verbose level - den Ausschnitt aus dem fhem-Log hier in cide tags posten.
Was hilfreich ist, eine möglichst detaillierte Beschreibung was Du gemacht und beobachtet und ausprobiert hast. Warum detailliert, weil "blockiert" sich zum Beispiel auf unterschiedliche Weise äussern kann und auch interessant ist ob interval gesetzt war
Ok, hier mal ein Auszug von meinem Log. Ich sehe das so, um ca. 19:15 hab ich die Glotze angemacht, dabei war FHEM und das Modul bzw. das Device defined und FHEM hat fleissig mit Daten abgefragt. Ab ca. 20:15 kommen dann die Fehlermeldungen von jedem Befehl, der durch den Timer gesetzt wird.
Mehr kann man aus dem Log nicht rausholen.
Vielleicht höchstens noch, dass der TV den neugestartet werden musste, um wieder ansprechbar zu sein, nicht nur von FHEM sondern auch per Fernbedienung.

Eventuell kann man (1) einen Counter zum Queuing mit ins Log schreiben? Also wie viele Befehle sind aktuell in der Queue. Und (2) ein Internal oder ein Reading in dem die aktuelle Anzahl Befehle in der Queue stehen.

Was meint ihr?


2017.10.04 19:13:16 3: ZWave set ZWave_SWITCH_MULTILEVEL_2 on
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetDeviceData   code : 200
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetDeviceData   code : 200
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetDeviceData   code : 200
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetVolume   code : 200
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetVolume   code : 200
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetVolume   code : 200
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetMute   code : 200
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetMute   code : 200
2017.10.04 20:10:34 2: LoeweTV_HU_Callback LoeweTV: action: GetMute   code : 200
2017.10.04 20:10:35 2: LoeweTV_HU_Callback LoeweTV: action: GetCurrentEvent   code : 200
2017.10.04 20:10:49 2: LoeweTV_HU_Callback LoeweTV: action: GetDeviceData   code : 200
2017.10.04 20:10:49 2: LoeweTV_HU_Callback LoeweTV: action: GetVolume   code : 200
2017.10.04 20:10:49 2: LoeweTV_HU_Callback LoeweTV: action: GetMute   code : 200
2017.10.04 20:10:49 2: LoeweTV_HU_Callback LoeweTV: action: GetCurrentEvent   code : 200


Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 08 Oktober 2017, 21:42:35
@der.einstein: Alle Einträge im log oben sind aber in Ordnung (Code 200) - was kommen denn für Fehlermeldungen um 20:15
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 09 Oktober 2017, 13:17:55
@viegener: Shee mir das mit den Fehlern heut abend nochmal an

Hier aber mal ein Blogeintrag, der zeigt, wie man das TV-Programm auf Basis von HTTPMOD, einen TV (hier LG) und einen Senderwechsel kombinieren kann: http://www.tatsch.it/controlling-lg-televisions-fhem/ (http://www.tatsch.it/controlling-lg-televisions-fhem/)

Das hießt, es wird ein FHEm Gerät TV installiert (defined), dann eine Funktion zum Umschalten auf bestimmten Kanal (nach Namen) implementiert und ein HTTPMOD Gerät angelegt, um das TV Programm zu zeigen.

Mit einem Dummy Gerät wird das Ganze verknüpft, sodass ich im FHEM Web auf das Programmsymbol klicke und der TV auf den Sender wechselt.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 10 Oktober 2017, 20:29:17
Sagt mal habt ihr die Version 45 in Benutzung?
Habe eben geupdated und folgende Fehlermeldung beim Reload bekommen:


Global symbol "$presence" requires explicit package name (did you forget to declare "my $presence"?) at ./FHEM/82_LoeweTV.pm line 1100. Global symbol "$presence" requires explicit package name (did you forget to declare "my $presence"?) at ./FHEM/82_LoeweTV.pm line 1102.


Tatsächlich wird $presence nicht vorher gesetzt.

Ok, es müsste eigentlich $response lauten. Siehe mein Patch im Anhang.

@viegener/cooltux: Könnt ihr das bitte ins Github hochladen? Danke.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 10 Oktober 2017, 21:51:49
@viegener:
So, konnte jetzt das Problem reproduzieren. Folgendes steht in meinem list des LoeweTV nachdem ich version 46 (siehe letzter Post) reloaded hab, den TV defined hab, ein Interval 15 angegeben hab, die fhemMAC gesetzt hab, meine ChannelList "favist0" gesetzt hab:

Internals:
   CFGFN
   CLIENTID   LRemoteClient-0-1507663551
   DEF        192.168.0.2 00:09:82:19:ab:58
   FCID       1234
   HOST       192.168.0.2
   INTERVAL   15
   NAME       LoeweTV
   NR         46335
   STATE      connected
   TVMAC      00:09:82:19:ab:58
   TVSTATUS   0
   TYPE       LoeweTV
   VERSION    0.0.45
   doStatus   WAITING
   lastresponse Error returned: read from http://192.168.0.2:905 timed out
   Hu_do_params:
     args:
       GetListOfChannelLists
       0
       undef
       1
   Hu_sr_params:
     FD         23
     NAME
     action     GetListOfChannelLists
     addr       http://192.168.0.2:905
     buf
     data       <?xml version='1.0' encoding='UTF-8'?>
<env:Envelope
        xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:ltv="urn:loewe.de:RemoteTV:Tablet">
<env:Body>
<ltv:GetListOfChannelLists>
<ltv:fcid>1234</ltv:fcid>
            <ltv:ClientId>LRemoteClient-0-1507663551</ltv:ClientId>
<ltv:QueryParameters>
                                        <ltv:Range startIndex='0' maxItems='5'/>
                                        </ltv:QueryParameters>
                                        <ltv:AdditionalParameters>
                                          <ltv:Properties isActiveList='0'/>
                                        </ltv:AdditionalParameters>
</ltv:GetListOfChannelLists>
</env:Body></env:Envelope>

     displayurl http://192.168.0.2:905/loewe_tablet_0001
     handlers
     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: GetListOfChannelLists
     host       192.168.0.2
     hu_blocking 0
     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:
     Hash:
     Sslargs:
   Readings:
     2017-10-10 21:44:12   Chassis         SL220
     2017-10-10 21:44:30   CurrentEvent_Info Regie: Matthew Vaughn. Darsteller: Daniel Craig, Jamie Foreman, Sally Hawkins. Genug gearbeitet, genug Geld gescheffelt: Der erfolgreiche Kokainhändler will sich demnächst zur Ruhe setzen. Zunächst aber soll er für seinen Boss, den Gangster-Boss Jimmy Price, zwei letzte Aufträge erledigen: eine verschwundene Frau finden und einen Millionen-Ekstasy-Pillen-Deal durchziehen. Zwei höchst delikate Aufträge, wie sich herausstellt... Überzeugend: Daniel Craigs erste Hauptrolle!
     2017-10-10 21:44:30   CurrentEvent_Locator channel://10:fffca5971e530232973
     2017-10-10 21:44:30   CurrentEvent_Name Layer Cake
     2017-10-10 21:44:12   SW_Version      2.4.55.0
     2017-10-10 21:27:41   access          accepted
     2017-10-10 21:44:12   mute            0
     2017-10-10 21:45:14   presence        present
     2017-10-10 21:45:00   requestAction   GetListOfChannelLists
     2017-10-10 21:45:00   requestResult   Error returned: read from http://192.168.0.2:905 timed out
     2017-10-10 21:27:41   state           connected
     2017-10-10 21:44:12   volume          26
   actionQueue:
     ARRAY(0x6be8bf0)
     ARRAY(0x6bca028)
     ARRAY(0x6bc1358)
     ARRAY(0x6bb7dd0)
     ARRAY(0x6adbc10)
     ARRAY(0x6bed4d8)
     ARRAY(0x6b72830)
     ARRAY(0x6be6680)
     ARRAY(0x6b50798)
   Helper:
     ChannelListCount 0
     ChannelListView
     Channellist:
     ChannelSequence:
Attributes:
   channellist favlist0
   fhemMAC    00:1e:06:33:95:c9
   icon       it_television
   interval   15
   room       Andreas


Zu beachten hier bereits die etwas längere Queue!

Kurz später sieht das list so aus:

Internals:
   CFGFN
   CLIENTID   LRemoteClient-0-1507663551
   DEF        192.168.0.2 00:09:82:19:ab:58
   FCID       1234
   HOST       192.168.0.2
   INTERVAL   15
   NAME       LoeweTV
   NR         46335
   STATE      connected
   TVMAC      00:09:82:19:ab:58
   TVSTATUS   1
   TYPE       LoeweTV
   VERSION    0.0.45
   doStatus
   lastresponse Error returned: 192.168.0.2: Connection refused
   Hu_do_params:
     args:
       GetCurrentEvent
       undef
       undef
       1
   Hu_sr_params:
     NAME
     action     GetCurrentEvent
     addr       http://192.168.0.2:905
     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: GetCurrentEvent
     host       192.168.0.2
     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:
     Handlers:
     Hash:
     Sslargs:
   Readings:
     2017-10-10 21:45:30   Chassis         SL220
     2017-10-10 21:44:30   CurrentEvent_Info Regie: Matthew Vaughn. Darsteller: Daniel Craig, Jamie Foreman, Sally Hawkins. Genug gearbeitet, genug Geld gescheffelt: Der erfolgreiche Kokainhändler will sich demnächst zur Ruhe setzen. Zunächst aber soll er für seinen Boss, den Gangster-Boss Jimmy Price, zwei letzte Aufträge erledigen: eine verschwundene Frau finden und einen Millionen-Ekstasy-Pillen-Deal durchziehen. Zwei höchst delikate Aufträge, wie sich herausstellt... Überzeugend: Daniel Craigs erste Hauptrolle!
     2017-10-10 21:44:30   CurrentEvent_Locator channel://10:fffca5971e530232973
     2017-10-10 21:44:30   CurrentEvent_Name Layer Cake
     2017-10-10 21:45:30   SW_Version      2.4.55.0
     2017-10-10 21:27:41   access          accepted
     2017-10-10 21:45:30   mute            0
     2017-10-10 21:49:00   presence        present
     2017-10-10 21:48:43   requestAction   GetCurrentEvent
     2017-10-10 21:48:43   requestResult   Error returned: 192.168.0.2: Connection refused
     2017-10-10 21:27:41   state           connected
     2017-10-10 21:45:30   volume          26
   actionQueue:
   Helper:
     ChannelListCount 0
     ChannelListView
     Channellist:
     ChannelSequence:
Attributes:
   channellist favlist0
   fhemMAC    00:1e:06:33:95:c9
   icon       it_television
   interval   15
   room       Andreas


Im log sieht alles normal aus bis zu dem Zeitpunkt des "lastresponse Error returned: read from http://192.168.0.2:905 timed out", danach ist Stille - keine Einträge mehr.

An der Stelle kann ich den TV von FHEM aus nicht mehr steuern. Und jetzt kommt das blöde: Auch nicht mit der Fernbedienung.

Auch ein delete und neues define hat nichts gebracht, ich musste den TV neustarten. --> Anscheinend merkt er sich, dass er bei dieser MAC bzw. fcid ein Problem hatte? Oder er ist mit irgendwas komplett blockiert gewesen?

Nach Neustart des TV kann ich wieder Access bekommen und es funzt wieder mit FHEM.

EDIT: Eben nochmal gecheckt, wenn ich get channellist "favlist0" mache, kriege ich ein "lastresponse: Error returned: read from http://192.168.0.2:905 timed out"
EDIT 2: Mir ist auch aufgefallen, dass ich relativ lange bzw. häufig das "doStatus: WAITING" in FHEM lese.
EDIT 3: Es lag definitv an "get channellist" und der "default" gesetzten Channellist an 2 Stellen im Modul. Nach folgender Änderung konnte ich meine Channellist laden, anders nicht:

@@ -530,7 +533,7 @@ sub LoeweTV_Get($@) {
         @actionargs = ( 'GetListOfChannelLists', $args[0] );   
         
     } elsif( lc $cmd eq 'channellist' ) {
-        $args[0] = AttrVal($name,"channellist","default") if ( ( scalar( @args ) < 1 ) );
+        $args[0] = AttrVal($name,"channellist","favlist0") if ( ( scalar( @args ) < 1 ) );
         $args[1] = 0 if ( ( scalar( @args ) < 2 ) || ( $args[1] !~ /^\d+$/ ) );
         @actionargs = ( 'GetChannelList', $args[0], $args[1] );   
         # Need to reset count to ensure calculation of min/max fragments
@@ -615,7 +618,7 @@ sub LoeweTV_TimerStatusRequest($) {

             # if channellist not defined request channels
             if ( ! defined( $hash->{helper}{ChannelList} ) ) {
-              my $cl = AttrVal($name,"channellist","default");
+              my $cl = AttrVal($name,"channellist","favlist0");
               LoeweTV_SendRequest($hash,'GetChannelList',$cl, 0 );
             }
             $hash->{TVSTATUS} = 0;

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 10 Oktober 2017, 23:25:01
Habe noch 3 Readings ergänzt (v47):
- current channel number
- current channel name
- current channel streaming url

ACHTUNG: im Patch unten ist der Name der default channellist geändert nach "favlist0"

@viegenr/cooltux: Bitte ggf. mergen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 12 Oktober 2017, 16:48:27
Zitat von: der.einstein am 10 Oktober 2017, 21:51:49
@viegener:
So, konnte jetzt das Problem reproduzieren. Folgendes steht in meinem list des LoeweTV nachdem ich version 46 (siehe letzter Post) reloaded hab, den TV defined hab, ein Interval 15 angegeben hab, die fhemMAC gesetzt hab, meine ChannelList "favist0" gesetzt hab:

Im log sieht alles normal aus bis zu dem Zeitpunkt des "lastresponse Error returned: read from http://192.168.0.2:905 timed out", danach ist Stille - keine Einträge mehr.

An der Stelle kann ich den TV von FHEM aus nicht mehr steuern. Und jetzt kommt das blöde: Auch nicht mit der Fernbedienung.

Auch ein delete und neues define hat nichts gebracht, ich musste den TV neustarten. --> Anscheinend merkt er sich, dass er bei dieser MAC bzw. fcid ein Problem hatte? Oder er ist mit irgendwas komplett blockiert gewesen?

Nach Neustart des TV kann ich wieder Access bekommen und es funzt wieder mit FHEM.

EDIT: Eben nochmal gecheckt, wenn ich get channellist "favlist0" mache, kriege ich ein "lastresponse: Error returned: read from http://192.168.0.2:905 timed out"
EDIT 2: Mir ist auch aufgefallen, dass ich relativ lange bzw. häufig das "doStatus: WAITING" in FHEM lese.
EDIT 3: Es lag definitv an "get channellist" und der "default" gesetzten Channellist an 2 Stellen im Modul. Nach folgender Änderung konnte ich meine Channellist laden, anders nicht:

Deine Codeänderung ändert nur den default wert der zieht, wenn kein Attribut gesetzt ist. Der Code sollte nicht geändetr werden, sondern das Attribut gesetzt werden, wie schon früher geschrieben. Der bisherige default macht Sinn.

Der waiting status ist normal, denn es werden ja immer gleich mehrere Requests in die Queue abgesetzt bei jedem Durchlauf der timer routine, nur einer gleichzeitit soll ausgeführt werden --> Also wie erwartet. Ein Intervall von 15 sec halte ich bei der Stabilität der Loewe-Software im Fernseher für bedeneklich, da scheint es einiges an Abstürzen - Hängern zu geben.
Ich glaube nicht, dass er sich gemerkt hat,d ass er bei dieser fcid ein Problem hatte (wieso funktioniert sonst die Fernbedienung nicht mehr).


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 12 Oktober 2017, 16:49:07
Zitat von: der.einstein am 10 Oktober 2017, 23:25:01
Habe noch 3 Readings ergänzt (v47):
- current channel number
- current channel name
- current channel streaming url

ACHTUNG: im Patch unten ist der Name der default channellist geändert nach "favlist0"

@viegenr/cooltux: Bitte ggf. mergen

Nein, wie gesagt bitte nicht den default ändern, sondern das Attribut setzen
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 12 Oktober 2017, 16:58:50
Hallo Johannes,

Soll der gesamte Patch verworfen werden oder nur anteilig?
Würde mich heute Abend darum kümmern können. Alternativ wäre ein neuer Patch auch nicht verkehrt.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 12 Oktober 2017, 22:35:08
Kann mir mal jemand den Unterschied zwischen LoeweTV_PrepareReading und readingSingleUpdate erklären?

Ich hab das Gefühl, da pasieren verschiedene Dinge [emoji16] aber ich lass mich gern erleuchten.

Ich hab bei GetCurrentChannel paar Readings dazu gefügt. Wenn ich den Befehl übers FHEM Web ausführe, Krieg ich alle Readings, auch aktuellen Kanal als Name, Kanalnummer und dessen StreamingURL.
Dann passiert aber folgendes. Wenn ich die Website refreshe, verschwinden die eben eingetragenen Readings Name, Kanal, Url, im Gegensatz zu den übrigen Readings , wie Name der Sendung etc. Haben diese Readings eine begrenzte Lifetime? Ich versteh das nicht.

Außerdem ist mir aufgefallen, dass bei einigen  die Streaming nicht die richtige ist. Also er gibt zwar die URL an, die in FHEM/der Channellist steht, aber diese stimmt leider nicht (immer)?

Und habt ihr das oben geschilderte auch schon erlebt? D. H. dass der TV nicht mehr reagiert?

@viegener: Wenn ich den TV define in FHEM, er macht einen Presence Call, RequestAccess und fängt an mit dem Timer. Dabei liest er auch die Kanalliste ein. Wenn ich jetzt etwas träge bin, und nicht sofort "favlist0" eingebe als Attribut, liest er "default" ein. Diese Liste ist Bei mir über 200 Einträge lang und das packt er dann meiner Meinung nicht. Der TV überträgt auch pro SOAP Call Max. 100 Einträge. Für 200 Einträge müsste ich also mehrmals abfragen, passiert das denn?

Ist nicht böse gemeint, ich will's nur verstehen. [emoji106]

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 12 Oktober 2017, 23:25:36
Zitat von: der.einstein am 12 Oktober 2017, 22:35:08
@viegener: Wenn ich den TV define in FHEM, er macht einen Presence Call, RequestAccess und fängt an mit dem Timer. Dabei liest er auch die Kanalliste ein. Wenn ich jetzt etwas träge bin, und nicht sofort "favlist0" eingebe als Attribut, liest er "default" ein. Diese Liste ist Bei mir über 200 Einträge lang und das packt er dann meiner Meinung nicht. Der TV überträgt auch pro SOAP Call Max. 100 Einträge. Für 200 Einträge müsste ich also mehrmals abfragen, passiert das denn?

Nun ja, das Szenario ist ja eigentlich nicht normal, denn Du definierst ja den LoeweTV ja normalerweise einmal und nicht jedesmal neu. Beim Neustart wird ja entsprechend lange gewartet bis die Attribute gesetzt sind.
Ausserdem verstehe ich nicht wieso das passiert, denn normalerweise sollte das erst passieren, wenn Du auch das Attribut Interval setzt, nur dann läuft das ganze timerstatusrequest mehrfach ab. Also beim define sollte die Reihenfolge erst channellist und dann interval eigentlich Dein Problem lösen - wenn nicht ist es ein bug

Laut Loewe sollte default eigentlich überall funktionieren, favlist0 scheint zumindest nicht überall zu gehen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 12 Oktober 2017, 23:33:56
Zitat von: der.einstein am 12 Oktober 2017, 22:35:08
Kann mir mal jemand den Unterschied zwischen LoeweTV_PrepareReading und readingSingleUpdate erklären?

Ich hab das Gefühl, da pasieren verschiedene Dinge [emoji16] aber ich lass mich gern erleuchten.


SingleUpdate macht genau das was es sagt - ein einzelnes Reading updaten
An sich sollte aber Änderungen die zusammengehören in einem Stück (also als bulkupdate)
PrepareReading sammelt die Readings während des parsens auf, damit genau das gemacht werden kann.

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 13 Oktober 2017, 08:00:19
Zitat von: viegener am 12 Oktober 2017, 23:25:36
Nun ja, das Szenario ist ja eigentlich nicht normal, denn Du definierst ja den LoeweTV ja normalerweise einmal und nicht jedesmal neu. Beim Neustart wird ja entsprechend lange gewartet bis die Attribute gesetzt sind.
Ausserdem verstehe ich nicht wieso das passiert, denn normalerweise sollte das erst passieren, wenn Du auch das Attribut Interval setzt, nur dann läuft das ganze timerstatusrequest mehrfach ab. Also beim define sollte die Reihenfolge erst channellist und dann interval eigentlich Dein Problem lösen - wenn nicht ist es ein bug

Laut Loewe sollte default eigentlich überall funktionieren, favlist0 scheint zumindest nicht überall zu gehen.
Die default List gibt's ja auch bei mir. Aber ich glaube, da sie so lang ist gibt es ein Problem. Werden denn bei 100+ Einträgen beim aktuellen Code alle ResultFragments vom TV abgeholt, oder nicht? Wenn das nicht passiert, könnte es eventuell daran liegen, dass er danach blockiert.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 13 Oktober 2017, 08:44:37
Zitat von: der.einstein am 13 Oktober 2017, 08:00:19
Die default List gibt's ja auch bei mir. Aber ich glaube, da sie so lang ist gibt es ein Problem. Werden denn bei 100+ Einträgen beim aktuellen Code alle ResultFragments vom TV abgeholt, oder nicht? Wenn das nicht passiert, könnte es eventuell daran liegen, dass er danach blockiert.


Ja natürlich werden alle Resultfragmente geholt, aber es geht ja nicht nur um die Resultliste - für jeden Channel muss ja ein weiterer Request gemacht werden (getMediaItem) um die Infos abzurufen. Aber wie gesagt, das Problem liegt auf Loewe-Seite wenn er einfriert und das setzen des Attributs sollte bei Dir das Problem lösen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 13 Oktober 2017, 13:41:24
Johannes, kurze Frage

Zeile 1038 ergibt für mich kein Sinn

if ( ( defined( $hash->{actionQueue} ) ) && ( scalar( @{ $hash->{actionQueue} } ) ) ) {


Kann es sein das Du da ein > 0 vergessen hast?

if ( ( defined( $hash->{actionQueue} ) ) && ( scalar( @{ $hash->{actionQueue} } ) > 0 ) ) {





Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 13 Oktober 2017, 14:13:53
Zitat von: CoolTux am 13 Oktober 2017, 13:41:24
Johannes, kurze Frage

Zeile 1038 ergibt für mich kein Sinn

if ( ( defined( $hash->{actionQueue} ) ) && ( scalar( @{ $hash->{actionQueue} } ) ) ) {



Meine Zeile macht schon Sinn, ist aber falsch ;)

Entweder das von Dir vorgeschlagene >0 oder ein ! vor dem scalar wäre korrekt, willst Du fixen, ich kam seit einer Woche nicht wirklich zum testen...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 13 Oktober 2017, 14:15:24
 ;D

Ich fixe es mal mit > 0



Grüße
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 13 Oktober 2017, 20:21:52
Zitat von: CoolTux am 13 Oktober 2017, 14:15:24
;D

Ich fixe es mal mit > 0



Grüße
Darf ich fragen was die Zeile macht, bzw. was die Änderung bewirkt?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 13 Oktober 2017, 20:31:04
Es ist eine Bedingung welche prüft ob die Anzahl der Elemente im Array größer 0 ist.
Also ob sich noch was in der actionQueue befindet.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 14 Oktober 2017, 20:01:21
Hier mal was komisches:
Wenn ich manuell get currentEvent ausführe, was mit meinem Patch auch Kanalnummer und Name als Reading aisgibt, kommen die ins FHEM Web.
Aber komisch nur, wenn ich dann die Seite refreshe, verschwinden genau diese Readings und die restlichen Readings, die ja auch aus get currentEvent sind, bleiben stehen. Anbei mal die Bilder vor und nach dem Refresh.
An was kann das liegen?


Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 14 Oktober 2017, 20:31:46
Wird wohl am nächsten Durchlauf liegen wo alle Readings gelöscht werden die nicht Bestandteil der Response sind.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 15 Oktober 2017, 11:09:18
Zitat von: CoolTux am 14 Oktober 2017, 20:31:46
Wird wohl am nächsten Durchlauf liegen wo alle Readings gelöscht werden die nicht Bestandteil der Response sind.

Ja, das liegt am nächsten Durchlauf, denn die Daten liefern dann wohl undef zurück, ich bin gerade mal dabei die Änderungen zu mergen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 15 Oktober 2017, 11:21:35
OK, habe eine neue Version 48 mit den Änderungen von der.einstein hochgeladen
- habe die Aufrufe für currentEvent in eine getrennte routine ausgelagert, damit die Readings erhalten bleiben
- als Standrd wird weiterhin channellist default angenommen - wenn das Problem macht, könnten wir den timeout für den ersten Start des timers hochsetzen - beim neustarten von FHEM sollte das keine Probleme machen

Achso: Es lässt sich bei mir Laden aber testen konnte ich die FUnktionen nicht, da bräuchte ich Hilfe von jemand mit einem neueren Loewe...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 19 Oktober 2017, 20:50:29
Hallo Leute,
habe mal wieder etwas Zeit gehabt :-)

Ich hab die "Loewe App" für Android installiert, meinen TV verbunden und den mal machen lassen. Das Ganze hab ich per Packet Capture mitgeschnitten und hinterher ausgewertet. Verwendete Software: tPacketCapture und PCAP Reader, Auswertung am Linux PC mit tcpick.
Am Anfang wird ein RequestAccess gemacht.
Der Gute (die App) holt zunächst mit "GetSettings" die Einstellungen ab, dann mit "GetDeviceData" den Rest. Er sendet eine leere "fcid" und "DeviceType" ist "------------". Dann holt er die "GetListOfChannelLists" und danach die einzelnen Listen. Für jede Liste auch nach "GetChannelList" die "GetMediaItem" Anfragen.
Dann holt er alle 10 sec "GetVolume" und "GetMute" ab. Bei Bedarf sendet er "InjectRCKey".
Einmal pro Minute (genau 67 sec) sendet er ein neues "RequestAccess" und kriegt nach 1 mal senden sofort "Accepted" zurück, muss also nicht 3 mal senden.
Bei dem Vorgehen blockiert mein TV nie :-)

Ich hab auch nochmal mein angestaubtes Perl-Script rausgekramt und mit einem Shell-Script ein ähnliches Prozedere abgebildet. Dabei blockierte der TV bei mir auch nicht (lief über 1 Stunde). Vorher hatte er nach max 15 min nicht mehr reagiert.

Könnten wir das Vorgehen mal im FHEM Modul abbilden? Braucht man da einfach einen weiteren Timer, oder sollte man das Alter des letzten Readings für Access auslesen?

@cartzilla: Kannst du mal einen Patch für das Modul schreiben, um deine Einschaltroutine zu bekommen? Ich werd auch nochmal schaun, wie das die Loewe App macht, die kann das scheinbar auch.

Grüße.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 Oktober 2017, 01:34:19
Wenn ich mir das anschaue, erscheint der zentrale unterschied das ständige Neuaufrufen von GetAccess zu sein.. Ausserdem vielleicht das nur einmalige aufrufen von getDeviceData.

Dazu würde kein

Ich vermute  mal die Werte von fcid und Devicetype machen eher keinen Unterschied


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 Oktober 2017, 09:49:57
Zitat von: viegener am 20 Oktober 2017, 01:34:19
Wenn ich mir das anschaue, erscheint der zentrale unterschied das ständige Neuaufrufen von GetAccess zu sein.. Ausserdem vielleicht das nur einmalige aufrufen von getDeviceData.

Dazu würde kein

Ich vermute  mal die Werte von fcid und Devicetype machen eher keinen Unterschied
Naja ständig macht er nicht RequestAccess. Eben 1 mal pro Minute.
Ständig trifft eher auf die Abfragen von Volume und Mute zu.

Ich Stimme dir zu, dass die FCID und der DeviceType wohl keinen Einfluss haben.

Ich hab mal etwas an der Timer Routine geschraubt, sodass er bei jedem 4ten Aufruf (bei 4x15sec=1min) ein RequestAccess absetzt. Damit hat der TV den ganzen Abend durchgehalten.
Scheint also irgendwas zu bringen.

Das regelmäßige Abholen der DeviceData macht auch nicht sooo viel Sinn, da wir da keine aktualisierten Werte erwarten.
Für GetDeviceData und GetChannelList würde es Sinn machen, die abzubolen, nachdem der TV einmal aus war und dann wieder an ist. Also 1 mal pro "Sitzung".

Was meint ihr?

Gesendet von meinem LG-D855 mit Tapatalk
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: cartzilla am 20 Oktober 2017, 10:56:47
Zitat von: der.einstein am 19 Oktober 2017, 20:50:29

@cartzilla: Kannst du mal einen Patch für das Modul schreiben, um deine Einschaltroutine zu bekommen? Ich werd auch nochmal schaun, wie das die Loewe App macht, die kann das scheinbar auch.

Grüße.

Die Änderungen sind in Antwort #304 alle angegeben. Darauf gab's leider bisher kein Feedback. Die Änderungen greifen ja auch in andere Routinen ein. Den Code sollten sich daher erst nochmal cooltux und viegener ansehen...
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 Oktober 2017, 13:05:56
Zitat von: der.einstein am 20 Oktober 2017, 09:49:57
Naja ständig macht er nicht RequestAccess. Eben 1 mal pro Minute.
Ständig trifft eher auf die Abfragen von Volume und Mute zu.

Ich Stimme dir zu, dass die FCID und der DeviceType wohl keinen Einfluss haben.

Ich hab mal etwas an der Timer Routine geschraubt, sodass er bei jedem 4ten Aufruf (bei 4x15sec=1min) ein RequestAccess absetzt. Damit hat der TV den ganzen Abend durchgehalten.
Scheint also irgendwas zu bringen.

Das regelmäßige Abholen der DeviceData macht auch nicht sooo viel Sinn, da wir da keine aktualisierten Werte erwarten.
Für GetDeviceData und GetChannelList würde es Sinn machen, die abzubolen, nachdem der TV einmal aus war und dann wieder an ist. Also 1 mal pro "Sitzung".

Was meint ihr?

Gesendet von meinem LG-D855 mit Tapatalk

Ja, es braucht definitv keine eigene Timerroutine, ich würde aber den RequestAccess-Call gerne vom Alter des letzten Calls abhängig machen und dafür einen Parameter/Attribut spendieren.
Mein Vorschlag - Man stellt auch ein Interval für RequestAccess ein (accessInterval) und die Timerroutine prüft dann ob dieses Alter schon überschritten ist. Dazu muss accessInterval grösser als interval sein (ich brauche nicht alle 15 Sekunden den Mute/Volume-Wert, da diese bei mir sowieso sinnlos sind (Audio läuft über HDMI an einer 5.1-Anlage).

Die Channellist würde ich normalerweise gar nicht regelmässig holen, sondern nur auf Anforderung und wenn keine Daten da sind.

GetDeviceData ebenfalls, ich baue dafür in Module normalerweise ein reset ein, mit dem man dafür sorgen kann, dass alle Daten neu geholt werden.

Also
- accessInterval neues Attribut (> interval)
- deviceData und channellist werden geholt wenn keine passenden Daten vorhanden sind oder nach reset oder auf expllizite Anforderung (set/get)
- access token wird neu angefordert, wenn älter als accessInterval
- Volume und Mute status werden bei jedem Durchlauf timer-Routine abgeholt

Alles natürlich nur wenn "present"
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 20 Oktober 2017, 13:15:10
Zitat von: viegener am 20 Oktober 2017, 13:05:56
Ja, es braucht definitv keine eigene Timerroutine, ich würde aber den RequestAccess-Call gerne vom Alter des letzten Calls abhängig machen und dafür einen Parameter/Attribut spendieren.
Mein Vorschlag - Man stellt auch ein Interval für RequestAccess ein (accessInterval) und die Timerroutine prüft dann ob dieses Alter schon überschritten ist. Dazu muss accessInterval grösser als interval sein (ich brauche nicht alle 15 Sekunden den Mute/Volume-Wert, da diese bei mir sowieso sinnlos sind (Audio läuft über HDMI an einer 5.1-Anlage).

Die Channellist würde ich normalerweise gar nicht regelmässig holen, sondern nur auf Anforderung und wenn keine Daten da sind.

GetDeviceData ebenfalls, ich baue dafür in Module normalerweise ein reset ein, mit dem man dafür sorgen kann, dass alle Daten neu geholt werden.

Also
- accessInterval neues Attribut (> interval)
- deviceData und channellist werden geholt wenn keine passenden Daten vorhanden sind oder nach reset oder auf expllizite Anforderung (set/get)
- access token wird neu angefordert, wenn älter als accessInterval
- Volume und Mute status werden bei jedem Durchlauf timer-Routine abgeholt

Alles natürlich nur wenn "present"
Hört sich nach einem sehr guten Vorschlag an, Danke dafür.

Ich hab gelsen, dass man bei den Readings auch einfach das Alter auslesen kann? Also die Uhrzeit, die im FHEMWEB neben dem Reading steht. Kann man das nicht einfach gegen die aktuelle Zeit vergleichen?

Was ich noch unbedingt in der Timer Routine hätte ist GetCurrentPlayback sowie GetCurrentEvent.

Zusammen mit GetDeviceData und den Kanallisten sollten wir auch einmal alle Settings abholen.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 20 Oktober 2017, 13:46:10
Zitat von: der.einstein am 20 Oktober 2017, 13:15:10
Ich hab gelsen, dass man bei den Readings auch einfach das Alter auslesen kann? Also die Uhrzeit, die im FHEMWEB neben dem Reading steht. Kann man das nicht einfach gegen die aktuelle Zeit vergleichen?

Genau das wäre die Art das in FHEM zu machen, das ReadingAlter als Massgabe für einen neuen RequestAccess zu verwenden
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 22 Oktober 2017, 19:02:06
Hab gerade mal die Version 49 hochgeladen, in der die oben beschriebenen Änderungn der timer-Routine enthalten sind
Einzige Abweichung volume, mute status und current event werden immer noch erst bei jedem 2. Durchlauf geholt.
Also presence bei jedem Durchlauf, loewe infos nur bei jedem 2.Durchlauf

Ausserdem habe ich noch ein paar Korrekturen um die channellist vorgenommen und ein reset set-befehl hinzugefügt, wenn der Device zum Testen mal zurückgesetzt werden soll.

Ein bisschen habe ich es auch bei mir getestet  ;)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 22 Oktober 2017, 19:37:01
Zitat von: viegener am 22 Oktober 2017, 19:02:06
Hab gerade mal die Version 49 hochgeladen, in der die oben beschriebenen Änderungn der timer-Routine enthalten sind
Einzige Abweichung volume, mute status und current event werden immer noch erst bei jedem 2. Durchlauf geholt.
Also presence bei jedem Durchlauf, loewe infos nur bei jedem 2.Durchlauf

Ausserdem habe ich noch ein paar Korrekturen um die channellist vorgenommen und ein reset set-befehl hinzugefügt, wenn der Device zum Testen mal zurückgesetzt werden soll.

Ein bisschen habe ich es auch bei mir getestet  ;)
Geiler Scheiss, Danke.
Kann es leider erst morgen testen, da ich Grad außer Haus bin.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 24 Oktober 2017, 18:17:31
Hat sehr lange funktioniert. Komischerweise hab ich jetzt einen Fehler bekommen, den ich den Readings entnommen habe:
presence

Could not execute ping command


Keine Ahnung woher der kommt.
Jedenfalls Krieg ich ihn nicht wieder weg.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 24 Oktober 2017, 18:26:36
Mach mal als FHEM User ein ping
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 24 Oktober 2017, 18:57:48
Zitat von: CoolTux am 24 Oktober 2017, 18:26:36
Mach mal als FHEM User ein ping
War ne gute Idee eigentlich. Das Ping auf den TV hat aber damit geklappt.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 24 Oktober 2017, 19:02:17
Zitat von: der.einstein am 24 Oktober 2017, 18:57:48
War ne gute Idee eigentlich. Das Ping auf den TV hat aber damit geklappt.

Gesendet von meinem LG-D855 mit Tapatalk

?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 24 Oktober 2017, 19:07:39
Ein delete und neues define hat nicht geholfen.
Er bleibt jetzt bei "presence initialized" stehen.
Im fhem log steht "2017.10.24 18:58:43 1: Cannot fork: Cannot allocate memory".

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: CoolTux am 24 Oktober 2017, 19:14:39
Fhem neu starten oder schlimmer Pi neu starten. Da ist dein RAM am Ende
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 24 Oktober 2017, 19:17:16
Zitat von: CoolTux am 24 Oktober 2017, 19:14:39
Fhem neu starten oder schlimmer Pi neu starten. Da ist dein RAM am Ende
FHEM Neustart ging gut, jetzt klappt alles wieder.
Komisch, dass das ein Problem mit dem RAM gibt bei 2 GB auf einem Single Borad Computer (Odroid64). Hatte ich noch nie, aber einmal ist eben immer das erste mal...

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 25 Oktober 2017, 20:02:51
So, hatte jetzt die Version 0.0.49 gestern und heute laufen.
Ich hab den accessinterval auf 90 sec gestellt.
Das hat super geklappt. Auch kein Problem mit dem Ping, keine Ahnung warum das war.
Allerdings ist mir aufgefallen, dass der TV ja zwischen Frühstück und Abends aus war, FHEM aber fleissig das Presence Reading (was ja so gewollt ist) und das Access Reading (was so nicht gewollt ist) aktualisiert hat, als der TV aus war.
Wie können wir das beheben?

Auf jeden Fall schon mal ne sehr gute Version bis hier [emoji106][emoji106][emoji106]

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 25 Oktober 2017, 21:53:30
Zitat von: der.einstein am 25 Oktober 2017, 20:02:51
Allerdings ist mir aufgefallen, dass der TV ja zwischen Frühstück und Abends aus war, FHEM aber fleissig das Presence Reading (was ja so gewollt ist) und das Access Reading (was so nicht gewollt ist) aktualisiert hat, als der TV aus war.
Wie können wir das beheben?

einfach mal event-on-change-reading .* setzen?

m.a.W. - das reading wird upgedated aber es wird kein access zugriff ausgeführt. Ist das ein Problem?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 25 Oktober 2017, 21:58:20
Zitat von: viegener am 25 Oktober 2017, 21:53:30
einfach mal event-on-change-reading .* setzen?

m.a.W. - das reading wird upgedated aber es wird kein access zugriff ausgeführt. Ist das ein Problem?
Wir könnten doch einfach noch ein LoeweTV_IsPresent() einfügen?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 25 Oktober 2017, 23:06:59
Zitat von: der.einstein am 25 Oktober 2017, 21:58:20
Wir könnten doch einfach noch ein LoeweTV_IsPresent() einfügen?


Ist doch schon da, es geht ja gerade darum access ZURÜCK zu setzen, wenn der Loewe NICHT präsent ist
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 29 Oktober 2017, 15:31:14
So jetzt bin ich aber doch auf das problem gestossen:

Wenn man den Fernseher abschaltet, während Abfragen laufen, so wird ständig probiert diese neu abzusetzen.
Ich baue jetzt mal was ein, dass die Queue dann auch angehalten wird und erst bei present wieder abgearbeitet wird.

Problem ist, das man bei manchen Befehlen nicht will, dass diese nach dem wiedereinschalten abgearbeitet werden, bei anderen aber doch.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 29 Oktober 2017, 15:50:34
Zitat von: viegener am 29 Oktober 2017, 15:31:14
So jetzt bin ich aber doch auf das problem gestossen:

Wenn man den Fernseher abschaltet, während Abfragen laufen, so wird ständig probiert diese neu abzusetzen.
Ich baue jetzt mal was ein, dass die Queue dann auch angehalten wird und erst bei present wieder abgearbeitet wird.

Problem ist, das man bei manchen Befehlen nicht will, dass diese nach dem wiedereinschalten abgearbeitet werden, bei anderen aber doch.
Coole Sache. Das könnte ein Problem gewesen sein.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 29 Oktober 2017, 16:33:07
Zitat von: der.einstein am 29 Oktober 2017, 15:50:34
Coole Sache. Das könnte ein Problem gewesen sein.

Gesendet von meinem LG-D855 mit Tapatalk



Aber leider erfordert das einiges an Umbauten, damit das funktioniert  :o
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 29 Oktober 2017, 16:53:31
Eine erste version 50 findet sich in github
Achtung: Richtig getestet ist die noch nicht, aber vielleicht will ja schonmal jemand  8)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 29 Oktober 2017, 17:12:25
Zitat von: viegener am 29 Oktober 2017, 16:53:31
Eine erste version 50 findet sich in github
Achtung: Richtig getestet ist die noch nicht, aber vielleicht will ja schonmal jemand  8)
Danke, werde es nachher testen.
Was mir aufgefallen ist, ist, dass ich im FHEM Log regelmäßig nur für die Requests/Responses Code 200 lese, um FHEM Web aber Error irgendwas steht. Das müssten wir ändern, dass ich den Fehler auch in Log lesen kann.
Es wäre auch cool, wenn die Queue angehalten oder auf Null gesetzt würde, wenn ein Fehler als Response kommt. Weiß aber nicht, ob das was bringt.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 29 Oktober 2017, 20:52:37
Ok, habe getestet. Dazu hab ich den TV deleted und die v50 Reloaded.

Ging da 1h gut bei 67sec Access Interval und 15 sec Datenintervall.

Dann kam bei einem RequestAccess folgendes im FHEM Web:
lastresponse

Error returned: 192.168.0.2: Connection refused


Im Log konnte ich nichts davon finden.

Nur diese Zeilen nach dem define Befehl:
2017.10.29 18:08:37 1: PERL WARNING: Use of uninitialized v
lue in concatenation (.) or string at ./FHEM/82_LoeweTV.pm
ine 902.
2017.10.29 18:08:38 1: PERL WARNING: Use of uninitialized v
lue in string ne at ./FHEM/82_LoeweTV.pm line 1349.


Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 29 Oktober 2017, 21:18:04
OK Danke!

Der connection refused - kann schon passieren, wenn der Fernseher zwischendurch abgeschaltet wird (oder sonst was passiert).
Frage ist, hat sich das danach wieder normalisiert?

Die beiden uninitialized values sind vermutlich schon vorher dagewesen, ich habe sie jetzt gelöst. Dazu musste ich aber auch die deviceID in requestAccess auf uniqueid umstellen.

=> Version 51 ist in github

Funktioniert denn das updaten ansonsten soweit?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 30 Oktober 2017, 01:26:16
Zitat von: viegener am 29 Oktober 2017, 21:18:04
OK Danke!

Der connection refused - kann schon passieren, wenn der Fernseher zwischendurch abgeschaltet wird (oder sonst was passiert).
Frage ist, hat sich das danach wieder normalisiert?

Die beiden uninitialized values sind vermutlich schon vorher dagewesen, ich habe sie jetzt gelöst. Dazu musste ich aber auch die deviceID in requestAccess auf uniqueid umstellen.

=> Version 51 ist in github

Funktioniert denn das updaten ansonsten soweit?
Ja, Danke. Das Updaten klappt tatsächlich gut.
Allerdings reagiert mein TV nach dem Error auf keine Eingaben mehr.
Ich weiß aber nicht ob dafür mehrere Fehler in einer Reihe auftreten müssen.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 30 Oktober 2017, 09:27:27
Oh je, die Software im Fernseher ist ja ziemlich instabil. Mit ein paar Aufrufen kann man die ja völlig durcheinanderbringen  :o

Gibt es Informationen im FHEM-Logfile zu dem connection refused, dann kann man da vielleicht ansetzen und bei dem Fehler erstmal eine Zeit pausieren oder schon vorher die Abfragen zeitlich strecken?

Es kann auch sein, dass beim define bei Dir wieder erst die default channelliste gelesen wurde (das sind ziemlich viele Abfragen in Folge) und dadurch das Problem ausgelöst wurde.

Bei mir ging es gestern ziemlich problemlos er hat die Channelliste mehrfach ohne Probleme auslesen können und eine regelmässige Abfrage über mehrere Stunden haben kein Problem ausgelöst
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 21 November 2017, 21:35:50
Im Moment hab ich den Eindruck, dass es finktioniert, solange ich nicht irgend einen Stream über DLNA starte.
Wenn FHEM in dem Zustand eine CurrentEvent Anfrage macht, passiert der Fehler.
Ich würde daher versuchen, einen Check einzubauen, ob über DLNA/UPNP etwas am TV läuft. Als zuckerl noch, dass es klappt eine beliebige URL abzuspielen.

Könnt ihr mir dafür bitte sagen, ob der AVtransport eures TV auch auf den Ports 1543 und 1545 horcht?

Das müssten auch die älteren TVS unterstützen.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag 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
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 26 November 2017, 21:20:14
@SNOOPY2000: Versuche doch mal setactionfield - ich habe dazu einen fix eingebaut, der Befehl war über set nicht auswählbar.

Ich kann das bei mir nicht testen, mein Loewe unterstützt das ebenfalls nicht.

Die Version 52 ist in github

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 26 November 2017, 21:21:32
Zitat von: der.einstein am 21 November 2017, 21:35:50
Im Moment hab ich den Eindruck, dass es finktioniert, solange ich nicht irgend einen Stream über DLNA starte.
Wenn FHEM in dem Zustand eine CurrentEvent Anfrage macht, passiert der Fehler.
Ich würde daher versuchen, einen Check einzubauen, ob über DLNA/UPNP etwas am TV läuft. Als zuckerl noch, dass es klappt eine beliebige URL abzuspielen.

Könnt ihr mir dafür bitte sagen, ob der AVtransport eures TV auch auf den Ports 1543 und 1545 horcht?

Das müssten auch die älteren TVS unterstützen.

Gesendet von meinem LG-D855 mit Tapatalk

Ich muss zugeben ich verstehe nicht wirklich was Du gerne geprüft haben möchtest und wann Dein Loewe abstürzt
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 26 November 2017, 21:30:05
Zitat von: viegener am 26 November 2017, 21:21:32
Ich muss zugeben ich verstehe nicht wirklich was Du gerne geprüft haben möchtest und wann Dein Loewe abstürzt
Ich meine die Ports für die DLNA Funktionen meines TVs.
Mit der Android App BubbleUPNP könnte ich die URLs hierfür finden, unter http://192.168.0.2:1545/happy ist die XML Beschreibung des DLNA Renderers, unter http://192.168.0.2:1543/happy die des DLNA Servers (wo die Daten liegen).

Sind das bei euren TVS dieselben Ports?

Meine Eltern haben ein älteres Modell, dort läuft nur der Server aber auf demselben Port.

Grüße.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 26 November 2017, 21:36:29
Zu den Abstürzen:
Ich schaue regelmäßig Filme auf dem TV aus Internet-Live-Streams wie Youttube oder ähnlichrm, auch selbst gefilmte Familienvideos.
Ich nutze dafür DLNA, dass heisst der Video liegt im Internet oder meinem HeimServer. Mit der Android App BubbleUPNP (oder einer anderen, die App ist hier egal) sage ich dem TV Spiele diese Quelle (URL) ab. Das tut der TV auch, er ändert dann aber nicht den Mode, wie ihn bei unserem Modul GetCurrentPlayback liefert. Wenn jetzt z.B. ein GetCurrentEvent eingeholt wird, blockiert die TV Software irgendwie, da er kein TV Programm anzeigt. ich kann aber über DLNA Soap Befehle checken, ob über DLNA etwas läuft, die Quelle und den Namen der Mediendatei abfragen.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 26 November 2017, 21:38:18
@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.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag 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)
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 27 November 2017, 19:55:58
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.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 27 November 2017, 20:45:01
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?


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 27 November 2017, 21:16:00
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?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 27 November 2017, 21:41:53
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
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 27 November 2017, 21:53:17
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?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: SNOOPY2000 am 29 November 2017, 20:27:27
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ß







Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: SNOOPY2000 am 29 November 2017, 21:31:26
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ß
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 30 November 2017, 22:22:11
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.



Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 30 November 2017, 22:46:26
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
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 17 Januar 2018, 08:25:51
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 (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
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: philip10 am 06 Februar 2018, 21:59:01
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
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 07 Februar 2018, 08:00:58
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

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: philip10 am 09 Februar 2018, 00:06:47
Perfekt hat geklappt. Vielen Dank!
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 09 Februar 2018, 09:07:42
Sehr gut.
Berichte mal bitte deine Erfahrungen bei Gelegenheit.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: philip10 am 11 Februar 2018, 17:22:40
Leider kommt bei jedem set, welches ich abschicken möchte, die Meldung: "Error returned: 192.168.178.65: Verbindungsaufbau abgelehnt".

Zudem ist mir aufgefallen, dass der TV nach manchen Kommandos nicht mehr reagiert und das Bild schwarz wird. Das Auge ist zwar noch grün und der Ton ist noch da, allerdings reagiert er selbst auf die Fernbedienung nicht mehr und ich muss den Stecker ziehen.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 11 Februar 2018, 17:55:25
Zitat von: philip10 am 11 Februar 2018, 17:22:40
Leider kommt bei jedem set, welches ich abschicken möchte, die Meldung: "Error returned: 192.168.178.65: Verbindungsaufbau abgelehnt".

Zudem ist mir aufgefallen, dass der TV nach manchen Kommandos nicht mehr reagiert und das Bild schwarz wird. Das Auge ist zwar noch grün und der Ton ist noch da, allerdings reagiert er selbst auf die Fernbedienung nicht mehr und ich muss den Stecker ziehen.
Kannst du uns sagen, aus welchem Jahr der TV ist und welches Chassis und Firmware Version?

Hast du in dem Moment, wenn er nicht mehr reagiert, etwas über DLNA oder aus der Mediathek laufen? Oder vielleicht kurz vorher?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: philip10 am 11 Februar 2018, 18:43:23
Zitat von: der.einstein am 11 Februar 2018, 17:55:25
Kannst du uns sagen, aus welchem Jahr der TV ist und welches Chassis und Firmware Version?

Hast du in dem Moment, wenn er nicht mehr reagiert, etwas über DLNA oder aus der Mediathek laufen? Oder vielleicht kurz vorher?

Jahr: 2015 , Chassis: SL220 , SW-Version: 2.4.55.0

Nein es lief über längere Zeit ein ganz normales Fernsehprogramm und es wurde auch nichts aufgenommen oder ähnliches.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 11 Februar 2018, 19:10:39
Zitat von: philip10 am 11 Februar 2018, 18:43:23
Jahr: 2015 , Chassis: SL220 , SW-Version: 2.4.55.0

Nein es lief über längere Zeit ein ganz normales Fernsehprogramm und es wurde auch nichts aufgenommen oder ähnliches.
Danke.

Du schreibst, dass der TV nach bestimmten Kommandos nicht mehr reagiert. Welche Kommandos sind das? Wie lange danach dauert es, bis er nicht mehr reagiert?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: philip10 am 11 Februar 2018, 19:37:40
Zitat von: der.einstein am 11 Februar 2018, 19:10:39
Danke.

Du schreibst, dass der TV nach bestimmten Kommandos nicht mehr reagiert. Welche Kommandos sind das? Wie lange danach dauert es, bis er nicht mehr reagiert?

Ich glaube es war switchToNumber und es hat dann bestimmt 10 sek. gedauert, bis er auf einmal schwarz wurde und nicht mehr reagiert hat.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 11 Februar 2018, 20:13:10
Zitat von: philip10 am 11 Februar 2018, 19:37:40
Ich glaube es war switchToNumber und es hat dann bestimmt 10 sek. gedauert, bis er auf einmal schwarz wurde und nicht mehr reagiert hat.
Könntest du mit showChannelList die Channellist anzeigen, in der der entsprechende Kanal auch drin war?

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: philip10 am 11 Februar 2018, 21:10:49
Zitat von: der.einstein am 11 Februar 2018, 20:13:10
Könntest du mit showChannelList die Channellist anzeigen, in der der entsprechende Kanal auch drin war?
Ich habe damit gar keinen Output erhalten (in den Readings)
Allerdings wusste ich auch nicht ganz, was korrekterweise passieren sollte.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: refi am 17 Februar 2018, 12:28:21
Hallo,
ich habe einen ART40-UHD.  Danke für das Modul!
Wenn ich einen Befehl absetze, obwohl der Fernseher aus ist, bekomme ich:
2018-02-17 12:08:14 LoeweTV ART40UHD presence: absent
2018-02-17 12:08:14 LoeweTV ART40UHD access: -reset-


Danach versucht das Modul allerdings den Fernseher in Endlosschleife (alle 3 Sek.) zu erreichen:
2018-02-17 12:08:17 LoeweTV ART40UHD requestAction: RequestAccess
2018-02-17 12:08:17 LoeweTV ART40UHD requestResult: Error returned: 1.1.1.1: No route to host


Ich habe schon das Attribut "maxRetries" versucht – ändert aber nichts. Erst wenn der Fernseher wieder erreichbar ist, komme ich da raus.

Kann ich diese Anfragen unterbinden? (Version: 0.0.53)

Danke! Gruß René
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 17 Februar 2018, 12:31:50
Zitat von: refi am 17 Februar 2018, 12:28:21
Hallo,
ich habe einen ART40-UHD.  Danke für das Modul!
Wenn ich einen Befehl absetze, obwohl der Fernseher aus ist, bekomme ich:
2018-02-17 12:08:14 LoeweTV ART40UHD presence: absent
2018-02-17 12:08:14 LoeweTV ART40UHD access: -reset-


Danach versucht das Modul allerdings den Fernseher in Endlosschleife (alle 3 Sek.) zu erreichen:
2018-02-17 12:08:17 LoeweTV ART40UHD requestAction: RequestAccess
2018-02-17 12:08:17 LoeweTV ART40UHD requestResult: Error returned: 1.1.1.1: No route to host


Ich habe schon das Attribut "maxRetries" versucht – ändert aber nichts. Erst wenn der Fernseher wieder erreichbar ist, komme ich da raus.

Kann ich diese Anfragen unterbinden? (Version: 0.0.53)

Danke! Gruß René
Normalerweise sollte das Modul, wenn der Fernseher off ist (d.h. nicht per Ping erreichbar ist), keine Anfragen an den TV senden.

Gesendet von meinem LG-D855 mit Tapatalk

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: refi am 17 Februar 2018, 12:47:07
egal, ob ich den Fernseher über das Modul oder die FB ausschalte - das Verhalten ist gleich
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 17 Februar 2018, 19:38:54
Zitat von: refi am 17 Februar 2018, 12:47:07
egal, ob ich den Fernseher über das Modul oder die FB ausschalte - das Verhalten ist gleich

Kannst Du mal ein list des device machen, vielleicht kann ich das bei mir nachstellen?
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: refi am 18 Februar 2018, 09:53:15
Internals:
   CLIENTID   LRemoteClient-0-1518868062
   DEF        1.1.1.1 00:00:00:00:00:00
   FCID       1234
   HOST       1.1.1.1
   INTERVAL   0
   NAME       ART40UHD
   NR         563
   STATE      connected
   TVMAC      00:00:00:00:00:00
   TYPE       LoeweTV
   VERSION    0.0.53
   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:SetVolumeResponse xmlns:m="urn:loewe.de:RemoteTV:Tablet">  <m:fcid>1234</m:fcid><m:ClientId>LRemoteClient-0-1518868062</m:ClientId><m:Value>100000</m:Value></m:SetVolumeResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>
   HU_DO_PARAMS:
     args:
       SetVolume
       10
       undef
       1
   HU_SR_PARAMS:
     NAME       
     action     SetVolume
     addr       http://1.1.1.1:905
     auth       0
     buf       
     compress   1
     conn       
     displayurl http://1.1.1.1: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: SetVolume
     host       1.1.1.1
     httpheader HTTP/1.1 200 OK
Date: Sat, 17 Feb 2018 12:47:43 GMT
Server: Nano HTTPD library
Content-Type: text/xml
Content-Length: 499
     hu_blocking 0
     hu_filecount 1
     hu_port    905
     hu_portSfx :905
     loglevel   4
     method     POST
     path       /loewe_tablet_0001
     protocol   http
     redirects  0
     timeout    30
     url        http://1.1.1.1:905/loewe_tablet_0001
     SR_READINGS:
       volume     10
     handlers:
     hash:
     sslargs:
   READINGS:
     2018-02-17 12:09:40   Chassis         0
     2018-01-29 13:13:46   SW_Version      4.4.36.0
     2018-02-17 12:47:45   access          accepted
     2018-01-29 13:14:03   feature_        Disabled
     2018-01-29 16:25:30   mute            0
     2018-02-17 12:43:22   presence        absent
     2018-02-17 12:47:45   requestAction   SetVolume
     2018-02-17 12:47:45   requestResult   SUCCESS
     2018-02-17 12:47:45   state           connected
     2018-02-17 12:47:45   volume          10
   actionQueue:
   helper:
     ChannelListCount 0
     ChannelListView
Attributes:
   maxRetries 2
   room       Loewe


Gruß René
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 18 Februar 2018, 11:59:14
Eigentlich sollte der set-Befehl gar nicht durchgeführt werden, wenn der loewe nicht erreichbar ist. Das kann ich bei mir also nicht nachstellen.

Ich habe aber eine Korrektur gemacht, dass der requestaccess-Lauf nicht mehr immer wieder durchgeführt wird.

Du findest eine Version 54 in github

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: refi am 18 Februar 2018, 19:51:19
Ich habe die 54 installiert. Die Endlosschleife tritt nicht mehr auf.
Es kommt nur noch einmal "No route to host"
Vielen Dank !!
Gruß René
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: Damu am 14 April 2018, 09:53:40
Hallo

Geht das auch mit Chassis SL150/151?
Oder fehlt da zu viel?
Finde ich eine sehr gute Ide.


Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: Damu am 15 April 2018, 20:15:18
Kann das Modul aber leider nicht laden:
Zitat2018.04.15 20:12:24 0: Can't locate Data/Dumper/Simple.pm in @INC (you may need to install the Data::Dumper::Simple module) (@INC contains: . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base ./FHEM) at ./FHEM/82_LoeweTV.pm line 186.
BEGIN failed--compilation aborted at ./FHEM/82_LoeweTV.pm line 186.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 16 April 2018, 07:46:52
@Damu: Ja geht auch mit SL150 auch wenn ganz viele Funktionen dort nicht vorhanden sind. Aber generell sollte es laufen.

Dir fehlt das Dumper-package - ich habe gerade keine Link zur Hand weil unterwegs, aber Du musst das noch nachinstallieren in perl. Dazu findet sich hier im Thread/Forum auch Info

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: Damu am 25 Dezember 2019, 17:12:29
Hallo

Habe schon vor einigerzeit den Fernseher gegen einen SL320 getauscht.
Geht das Modul auch mit SL320?
Hab das Loewe Device gelöscht und wieder neu erstellt.
Der Fernseher SL320 wird zwar erkannt.
Senderliste DR+ Archiv etc diese geht leider nicht.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: viegener am 25 Dezember 2019, 23:00:06
@Damu: Ich muss zugeben, ich kann das nicht sagen. Inzwischen bin ich auch auf einen andere Fernsehermarke umgestiegen.

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: Damu am 01 Januar 2020, 12:20:37
Danke.
Hab einen Weg gefunden das ganze mit dem Modul für meinen SL320 wieder lauffähig zu machen.
Mann muss im Modul alle "ltv" durch "m" ersetzen.
(Einfach mit Wordpad Textersetzen ltv zu m)
Beispiel:
Orginal "[sub {$content='<ltv:DeviceType>Homeautomation</ltv:DeviceType>"
Neu"[sub {$content='<m:DeviceType>Homeautomation</m:DeviceType>"

WOL funktioniert so schon mal wieder halbwegs.

Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: Damu am 04 Januar 2020, 21:25:31
Hallo

Bin ich der Einzige der noch Interesse an dem Modul hat?

Hab eine neue Dock im Internet gefunden.

Mein Interesse ist eigentlich nur:
Kanalliste Anzeigen und eine Aufnahme über FHEM Programmieren.
Die Aufnahmen auf DR+ und laufende Sender können auch über VLC angewält werden.

Die Loewe App geht bei mir noch sehr gut, geht aber leider nicht per VPN.
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 05 Mai 2020, 22:42:45
Hi Damu,
du hast eine neue Doku im Netz gefunden? Kannst du die hier reinstellen?
Würde mich sehr interessieren.

Danke dir!
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: sprudelverduenner am 26 September 2020, 11:05:57
Hallo,

ich habe noch Chassis SL121 und würde gerne das Modul nutzen wollen.

Wo finde ich denn bitte die letzte Version bzw. wie muss das DEFINE aussehen??

Vielen Dank für eine Antwort.
MfG Sprudelverduenner
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: sprudelverduenner am 31 Januar 2021, 15:46:26
Hallo in die Runde,

ich habe zwischenzeitlich einen neuen LOEWE OLED mit Chassis SL520 erworben.
Das Modul läuft grundsätzlich.

Wenn ich mit set oled SetActionField eine Textnachricht auf dem LOEWE darstellen möchte dann geht diese nur solange es nur EIN Wort ist.
Sobald ich ein Leerzeichen mit einem 2. Wort verwende kommt die FehlermeldungSetActionField needs text to show innerhalb von FHEM und der Fernseher macht keinerlei Nachricht.

Wie könnte ich das evtl. lösen ??

LG, Sprudelverduenner
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: der.einstein am 18 Mai 2021, 23:19:33
hast du single und/oder double quotes probiert?
Also 'text mit leerzeichen' oder "text mit leerzeichen"
Titel: Antw:[Q] Hilfe gesucht: Loewe Connect ID DR+ Smart-TV mit FHEM steuern
Beitrag von: sprudelverduenner am 19 Mai 2021, 07:51:14
Danke für Deine Antwort.

Ich habe alle 3 Varianten probiert:

Text mit Leerzeichen
'Text mit Leerzeichen'
"Text mit Leerzeichen"

Alles führt zu der Fehlermeldung SetActionField needs text to show.