2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-21 14:04:15 +00:00

70_BRAVIA.pm: utf-8 character handling; WOL only if absent; tv uri for input switching

git-svn-id: https://svn.fhem.de/fhem/trunk@13341 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
vuffiraa 2017-02-05 18:53:40 +00:00
parent b4d3d94a57
commit 93c0125753
2 changed files with 26 additions and 7 deletions

View File

@ -1,5 +1,8 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it. # Do not insert empty lines here, update check depends on it.
- bugfix: 70_BRAVIA: utf-8 character handling
use WOL only if device is absent (exception 2013 model)
respect channel uri for tv input selection
- changed: 93_DbRep: V4.10.3, rename reading "diff-overrun_limit-" - changed: 93_DbRep: V4.10.3, rename reading "diff-overrun_limit-"
to "diff_overrun_limit_" to "diff_overrun_limit_"
- changed: 57_Calendar: avoid some warnings - changed: 57_Calendar: avoid some warnings

View File

@ -233,7 +233,8 @@ sub BRAVIA_Set($@) {
readingsSingleUpdate($hash, "state", "set_on", 1); readingsSingleUpdate($hash, "state", "set_on", 1);
my $macAddr = AttrVal( $name, "macaddr", "" ); my $macAddr = AttrVal( $name, "macaddr", "" );
$macAddr = ReadingsVal( $name, "macAddr", "") if ($macAddr eq ""); $macAddr = ReadingsVal( $name, "macAddr", "") if ($macAddr eq "");
if ( $macAddr ne "" && $macAddr ne "-" ) { if ( $macAddr ne "" && $macAddr ne "-" &&
($presence eq "absent" || ReadingVal($name, "generation", "") eq "1.0.5") ) {
$result = BRAVIA_wake( $name, $macAddr ); $result = BRAVIA_wake( $name, $macAddr );
return "wake-up command sent"; return "wake-up command sent";
} else { } else {
@ -923,7 +924,7 @@ sub BRAVIA_ReceiveCommand($$$) {
readingsSingleUpdate( $hash, "requestFormat", "xml", 1 ) readingsSingleUpdate( $hash, "requestFormat", "xml", 1 )
if ( $service eq "getStatus" && ReadingsVal($name , "requestFormat", "") eq "" ); if ( $service eq "getStatus" && ReadingsVal($name , "requestFormat", "") eq "" );
$return = $parser->XMLin( Encode::encode_utf8($data), KeyAttr => [ ] ); $return = $parser->XMLin( encode_utf8($data), KeyAttr => [ ] );
} }
elsif ( $data =~ /^{/ || $data =~ /^\[/ ) { elsif ( $data =~ /^{/ || $data =~ /^\[/ ) {
@ -938,7 +939,7 @@ sub BRAVIA_ReceiveCommand($$$) {
readingsSingleUpdate( $hash, "requestFormat", "json", 1 ) readingsSingleUpdate( $hash, "requestFormat", "json", 1 )
if ( $service eq "getStatus" && ReadingsVal($name , "requestFormat", "") eq "" ); if ( $service eq "getStatus" && ReadingsVal($name , "requestFormat", "") eq "" );
$return = decode_json( Encode::encode_utf8($data) ); $return = decode_json( encode_utf8($data) );
} }
elsif ( $data eq "<html><head><title>not found</title></head><body>not found</body></html>" ) { elsif ( $data eq "<html><head><title>not found</title></head><body>not found</body></html>" ) {
@ -1259,7 +1260,7 @@ sub BRAVIA_ProcessCommandData ($$) {
} elsif ( $_->{field} eq "serviceName" ) { } elsif ( $_->{field} eq "serviceName" ) {
$channelName = BRAVIA_GetNormalizedName($_->{value}); $channelName = BRAVIA_GetNormalizedName($_->{value});
} elsif ( $_->{field} eq "title" ) { } elsif ( $_->{field} eq "title" ) {
$currentTitle = Encode::decode_utf8($_->{value}); $currentTitle = $_->{value};
} else { } else {
readingsBulkUpdate( $hash, "ci_".$_->{field}, $_->{value} ) readingsBulkUpdate( $hash, "ci_".$_->{field}, $_->{value} )
if ( ReadingsVal($name, "ci_".$_->{field}, "") ne $_->{value} ); if ( ReadingsVal($name, "ci_".$_->{field}, "") ne $_->{value} );
@ -1286,10 +1287,16 @@ sub BRAVIA_ProcessCommandData ($$) {
} elsif ( $_ eq "title" ) { } elsif ( $_ eq "title" ) {
$channelName = BRAVIA_GetNormalizedName($return->{result}[0]{$_}); $channelName = BRAVIA_GetNormalizedName($return->{result}[0]{$_});
} elsif ( $_ eq "programTitle" ) { } elsif ( $_ eq "programTitle" ) {
$currentTitle = Encode::decode_utf8($return->{result}[0]{$_}); $currentTitle = $return->{result}[0]{$_};
} elsif ( $_ eq "source" ) { } elsif ( $_ eq "source" ) {
readingsBulkUpdate( $hash, "input", $return->{result}[0]{$_} ) readingsBulkUpdate( $hash, "input", $return->{result}[0]{$_} )
if ( ReadingsVal($name, "input", "") ne $return->{result}[0]{$_} ); if ( ReadingsVal($name, "input", "") ne $return->{result}[0]{$_} );
} elsif ( $_ eq "uri" ) {
readingsBulkUpdate( $hash, "uri", $return->{result}[0]{$_} )
if ( ReadingsVal($name, "uri", "") ne $return->{result}[0]{$_} );
# set TV input uri to last tv-norm (tv:dvbt, tv:dvbs)
$hash->{helper}{device}{inputPreset}{TV}{uri} = $return->{result}[0]{$_}
if (defined($hash->{helper}{device}{inputPreset}) && $return->{result}[0]{$_} =~ /tv:.*/);
} else { } else {
readingsBulkUpdate( $hash, "ci_".$_, $return->{result}[0]{$_} ) readingsBulkUpdate( $hash, "ci_".$_, $return->{result}[0]{$_} )
if ( ReadingsVal($name, "ci_".$_, "") ne $return->{result}[0]{$_} ); if ( ReadingsVal($name, "ci_".$_, "") ne $return->{result}[0]{$_} );
@ -1380,7 +1387,7 @@ sub BRAVIA_ProcessCommandData ($$) {
} elsif ( $key eq "channelName" ) { } elsif ( $key eq "channelName" ) {
$channelName = BRAVIA_GetNormalizedName($_->{$key}); $channelName = BRAVIA_GetNormalizedName($_->{$key});
} elsif ( $key eq "title" ) { } elsif ( $key eq "title" ) {
$currentTitle = Encode::decode_utf8($_->{$key}); $currentTitle = $_->{$key};
} else { } else {
readingsBulkUpdate( $hash, "ci_".$key, $_->{$key} ) readingsBulkUpdate( $hash, "ci_".$key, $_->{$key} )
if ( ReadingsVal($name, "ci_".$key, "") ne $_->{$key} ); if ( ReadingsVal($name, "ci_".$key, "") ne $_->{$key} );
@ -1465,11 +1472,18 @@ sub BRAVIA_ProcessCommandData ($$) {
$hash->{helper}{device}{inputPreset}{$inputName}{uri} = $inputUri; $hash->{helper}{device}{inputPreset}{$inputName}{uri} = $inputUri;
} }
} }
$hash->{helper}{device}{inputPreset}{TV}{uri} = "tv"; my $tvUri = ReadingsVal($name, "uri", "tv");
$tvUri = "tv" if ($tvUri !~ /tv.*/);
$hash->{helper}{device}{inputPreset}{TV}{uri} = $tvUri;
} }
} }
} }
# setPlayContent
elsif ( $service eq "setPlayContent" ) {
# nothing to do
}
# register # register
elsif ( $service eq "register" ) { elsif ( $service eq "register" ) {
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
@ -1780,7 +1794,9 @@ sub BRAVIA_GetModelYear($) {
'1.0' => "2011", '1.0' => "2011",
'1.1' => "2012", '1.1' => "2012",
'1.0.4' => "2013", '1.0.4' => "2013",
'1.0.5' => "2013", #KDL42-W655A
'2.4.0' => "2014", '2.4.0' => "2014",
'3.8.0' => "2016", #KD-55XD8505
}; };
if (defined( $commands->{$command})) { if (defined( $commands->{$command})) {