24_TPLinkHS110: Added checks for increased stability

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@12588 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
vsauer 2016-11-15 19:14:18 +00:00
parent 7365b53477
commit 1e602e595f

View File

@ -101,8 +101,9 @@ sub TPLinkHS110_Get($$)
or return "Couldn't connect to $remote_host:$remote_port: $@\n"; or return "Couldn't connect to $remote_host:$remote_port: $@\n";
$socket->send($c); $socket->send($c);
my $data; my $data;
$socket->recv($data,1024); my $retval = $socket->recv($data,8192);
$socket->close(); $socket->close();
unless( defined $retval) { return undef; }
$data = decrypt(substr($data,4)); $data = decrypt(substr($data,4));
my $json = decode_json($data); my $json = decode_json($data);
@ -129,8 +130,9 @@ sub TPLinkHS110_Get($$)
or return "Couldn't connect to $remote_host:$remote_port: $@\n"; or return "Couldn't connect to $remote_host:$remote_port: $@\n";
$socket->send($rc); $socket->send($rc);
my $rdata; my $rdata;
$socket->recv($rdata,1024); $retval = $socket->recv($rdata,8192);
$socket->close(); $socket->close();
unless( defined $retval) { return undef; }
$rdata = decrypt(substr($rdata,4)); $rdata = decrypt(substr($rdata,4));
my $realtimejson = decode_json($rdata); my $realtimejson = decode_json($rdata);
foreach my $key2 (sort keys %{$realtimejson->{'emeter'}->{'get_realtime'}}) { foreach my $key2 (sort keys %{$realtimejson->{'emeter'}->{'get_realtime'}}) {
@ -148,8 +150,9 @@ sub TPLinkHS110_Get($$)
or return "Couldn't connect to $remote_host:$remote_port: $@\n"; or return "Couldn't connect to $remote_host:$remote_port: $@\n";
$socket->send($c); $socket->send($c);
my $data; my $data;
$socket->recv($data,8192); $retval = $socket->recv($data,8192);
$socket->close(); $socket->close();
unless( defined $retval) { return undef; }
$data = decrypt(substr($data,4)); $data = decrypt(substr($data,4));
eval { eval {
my $json = decode_json($data); my $json = decode_json($data);
@ -200,8 +203,9 @@ sub TPLinkHS110_Set($$)
or return "Couldn't connect to $remote_host:$remote_port: $@\n"; or return "Couldn't connect to $remote_host:$remote_port: $@\n";
$socket->send($c); $socket->send($c);
my $data; my $data;
$socket->recv($data,1024); my $retval = $socket->recv($data,8192);
$socket->close(); $socket->close();
unless( defined $retval) { return undef; }
$data = decrypt(substr($data,4)); $data = decrypt(substr($data,4));
my $json = decode_json($data); my $json = decode_json($data);
if ($json->{'system'}->{'set_relay_state'}->{'err_code'} eq "0") { if ($json->{'system'}->{'set_relay_state'}->{'err_code'} eq "0") {
@ -281,8 +285,9 @@ sub TPLinkHS110_Attr {
or return "Couldn't connect to $remote_host:$remote_port: $@\n"; or return "Couldn't connect to $remote_host:$remote_port: $@\n";
$socket->send($c); $socket->send($c);
my $data; my $data;
$socket->recv($data,1024); my $retval = $socket->recv($data,8192);
$socket->close(); $socket->close();
unless( defined $retval) { return undef; }
$data = decrypt(substr($data,4)); $data = decrypt(substr($data,4));
my $json = decode_json($data); my $json = decode_json($data);
} }