From 3f2e98979ba44ab3286708edc51a4cd85be34c8f Mon Sep 17 00:00:00 2001 From: jpawlowski Date: Sun, 12 Feb 2017 12:30:28 +0000 Subject: [PATCH] 70_PHTV: fix Use of uninitialized value $cmd git-svn-id: https://svn.fhem.de/fhem/trunk@13398 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/70_PHTV.pm | 115 +++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 63 deletions(-) diff --git a/fhem/FHEM/70_PHTV.pm b/fhem/FHEM/70_PHTV.pm index bdb7f5a92..68b0fec81 100644 --- a/fhem/FHEM/70_PHTV.pm +++ b/fhem/FHEM/70_PHTV.pm @@ -446,9 +446,9 @@ sub PHTV_Set($@) { return "No configuration found. Please set ambiHue attributes first." unless ( AttrVal( $name, "ambiHueLeft", undef ) - && AttrVal( $name, "ambiHueRight", undef ) - && AttrVal( $name, "ambiHueTop", undef ) - && AttrVal( $name, "ambiHueBottom", undef ) ); + || AttrVal( $name, "ambiHueRight", undef ) + || AttrVal( $name, "ambiHueTop", undef ) + || AttrVal( $name, "ambiHueBottom", undef ) ); # enable internal Ambilight color PHTV_SendCommand( $hash, "ambilight/mode", @@ -1596,70 +1596,48 @@ sub PHTV_ReceiveCommand($$$) { Log3 $name, 4, "PHTV $name: RCV $service/" . urlDecode($cmd); } - if ( $data ne "" ) { - if ( $data =~ /^{/ || $data =~ /^\[/ ) { - if ( !defined($cmd) || ref($cmd) eq "HASH" || $cmd eq "" ) { - Log3 $name, 5, "PHTV $name: RES $service\n" . $data; - } - else { - Log3 $name, 5, - "PHTV $name: RES $service/" - . urlDecode($cmd) . "\n" - . $data; - } + if ( $data =~ +m/^\s*(([{\[].*)|(\s*\s*\s*Ok\s*<\/title>\s*<\/head>\s*<body>\s*Ok\s*<\/body>\s*<\/html>))\s*$/i + ) + { - $hash->{helper}{supportedAPIcmds}{$service} = 1 - unless ( - defined( $hash->{helper}{supportedAPIcmds}{$service} ) - && $service =~ /^channels\/.*/ - && $service =~ /^channellists\/.*/ ); + $return = decode_json( Encode::encode_utf8($2) ) if ($2); + $return = "ok" if ($3); - $return = decode_json( Encode::encode_utf8($data) ); + if ( !defined($cmd) || ref($cmd) eq "HASH" || $cmd eq "" ) { + Log3 $name, 5, "PHTV $name: RES $service\n" . $data; } - - elsif ( $data eq - "<html><head><title>OkOk" ) - { - if ( !defined($cmd) || ref($cmd) eq "HASH" || $cmd eq "" ) { - Log3 $name, 4, "PHTV $name: RES $service - ok"; - } - else { - Log3 $name, 4, - "PHTV $name: RES $service/" . urlDecode($cmd) . " - ok"; - } - - $hash->{helper}{supportedAPIcmds}{$service} = 1 - unless ( - defined( $hash->{helper}{supportedAPIcmds}{$service} ) - && $service =~ /^channels\/.*/ - && $service =~ /^channellists\/.*/ ); - - $return = "ok"; - } - else { - if ( !defined($cmd) || ref($cmd) eq "HASH" || $cmd eq "" ) { - Log3 $name, 5, "PHTV $name: RES ERROR $service\n" . $data; - } - else { - Log3 $name, 5, - "PHTV $name: RES ERROR $service/" - . urlDecode($cmd) . "\n" - . $data; - } - - unless ( - defined( $hash->{helper}{supportedAPIcmds}{$service} ) ) - { - $hash->{helper}{supportedAPIcmds}{$service} = 0; - Log3 $name, 4, - "PHTV $name: API command '" - . $service - . "' not supported by device."; - } - - return undef; + Log3 $name, 5, + "PHTV $name: RES $service/" . urlDecode($cmd) . "\n" . $data; } + + $hash->{helper}{supportedAPIcmds}{$service} = 1 + unless ( defined( $hash->{helper}{supportedAPIcmds}{$service} ) + || $service =~ /^channels\/.*/ + || $service =~ /^channellists\/.*/ ); + } + + elsif ( $data ne "" ) { + if ( !defined($cmd) || ref($cmd) eq "HASH" || $cmd eq "" ) { + Log3 $name, 5, "PHTV $name: RES ERROR $service\n" . $data; + } + else { + Log3 $name, 5, + "PHTV $name: RES ERROR $service/" + . urlDecode($cmd) . "\n" + . $data; + } + + unless ( defined( $hash->{helper}{supportedAPIcmds}{$service} ) ) { + $hash->{helper}{supportedAPIcmds}{$service} = 0; + Log3 $name, 4, + "PHTV $name: API command '" + . $service + . "' not supported by device."; + } + + return undef; } ####################### @@ -1824,7 +1802,18 @@ sub PHTV_ReceiveCommand($$$) { # sources/current elsif ( $service eq "sources/current" ) { if ( ref($return) eq "HASH" ) { - $cmd = $hash->{helper}{device}{sourceName}{ $return->{id} }; + if ( defined( $return->{id} ) ) { + $return->{id} =~ s/^\s+//; + $return->{id} =~ s/\s+$//; + $cmd = ( + $hash->{helper}{device}{sourceName}{ $return->{id} } + ? $hash->{helper}{device}{sourceName}{ $return->{id} } + : "-" + ); + } + else { + $cmd = "-"; + } # Alias handling $cmd = $hash->{helper}{device}{inputAliases}{$cmd}