mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 06:39:11 +00:00
70_BRAVIA.pm: new set command openUrl - loads URL and displays it on the screen
git-svn-id: https://svn.fhem.de/fhem/trunk@18324 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
fae36c4786
commit
9a2a5aa302
@ -1,5 +1,6 @@
|
|||||||
# 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.
|
||||||
|
- feature: 70_BRAVIA: new set command openUrl
|
||||||
- bugfix: 59_Weather: fix change attribut model
|
- bugfix: 59_Weather: fix change attribut model
|
||||||
- bugfix: 98_livetracking: fixed initial Life360 data availability
|
- bugfix: 98_livetracking: fixed initial Life360 data availability
|
||||||
- feature: 73_PRESENCE: new set command active/inactive to temporarily
|
- feature: 73_PRESENCE: new set command active/inactive to temporarily
|
||||||
|
@ -208,7 +208,7 @@ sub BRAVIA_Set($@) {
|
|||||||
$usage .= " mute:" . $mutes;
|
$usage .= " mute:" . $mutes;
|
||||||
$usage .= " input:" . $inputs if ( $inputs ne "" );
|
$usage .= " input:" . $inputs if ( $inputs ne "" );
|
||||||
$usage .= " channel:$channels" if ( $channels ne "" );
|
$usage .= " channel:$channels" if ( $channels ne "" );
|
||||||
$usage .= " application:" . $apps if ( $apps ne "" );
|
$usage .= " openUrl application:" . $apps if ( $apps ne "" );
|
||||||
$usage .= " text" if (ReadingsVal($name, "requestFormat", "") eq "json");
|
$usage .= " text" if (ReadingsVal($name, "requestFormat", "") eq "json");
|
||||||
|
|
||||||
my $cmd = '';
|
my $cmd = '';
|
||||||
@ -440,10 +440,10 @@ sub BRAVIA_Set($@) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( $channelName =~ /^(\d)(\d?)(\d?)(\d?).*$/ ) {
|
if ( $channelName =~ /^(\d)(\d?)(\d?)(\d?).*$/ ) {
|
||||||
BRAVIA_SendCommand( $hash, "ircc", $1, "blocking" );
|
BRAVIA_SendCommand( $hash, "ircc", $1, undef, "blocking" );
|
||||||
BRAVIA_SendCommand( $hash, "ircc", $2, "blocking" ) if (defined($2));
|
BRAVIA_SendCommand( $hash, "ircc", $2, undef, "blocking" ) if (defined($2));
|
||||||
BRAVIA_SendCommand( $hash, "ircc", $3, "blocking" ) if (defined($3));
|
BRAVIA_SendCommand( $hash, "ircc", $3, undef, "blocking" ) if (defined($3));
|
||||||
BRAVIA_SendCommand( $hash, "ircc", $4, "blocking" ) if (defined($4));
|
BRAVIA_SendCommand( $hash, "ircc", $4, undef, "blocking" ) if (defined($4));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return "Argument " . $channelName . " is not a valid channel name";
|
return "Argument " . $channelName . " is not a valid channel name";
|
||||||
@ -514,20 +514,58 @@ sub BRAVIA_Set($@) {
|
|||||||
|
|
||||||
return "No 2nd argument given" if ( !defined( $a[2] ) );
|
return "No 2nd argument given" if ( !defined( $a[2] ) );
|
||||||
|
|
||||||
shift(@a); shift(@a);
|
shift(@a); shift(@a);
|
||||||
my $appStr = join("#", @a);
|
my $appStr;
|
||||||
Log3 $name, 2, "BRAVIA set $name " . $a[1] . " " . $appStr;
|
|
||||||
|
|
||||||
# Resolve app uri
|
# Resolve app uri + data
|
||||||
|
my $app_name;
|
||||||
my $app_uri;
|
my $app_uri;
|
||||||
if ( defined( $hash->{helper}{device}{appPreset}{ $appStr } ) ) {
|
my $app_data;
|
||||||
$app_uri = $hash->{helper}{device}{appPreset}{ $appStr }{uri};
|
while (@a) {
|
||||||
} else {
|
my $arg = shift(@a);
|
||||||
return "Unknown app '" . $appStr . "' on that device.";
|
if (defined($appStr)) {
|
||||||
}
|
$appStr .= "#";
|
||||||
|
$appStr .= $arg;
|
||||||
|
} else {
|
||||||
|
$appStr = $arg;
|
||||||
|
}
|
||||||
|
if ( defined( $hash->{helper}{device}{appPreset}{ $appStr } ) ) {
|
||||||
|
$app_name = $appStr;
|
||||||
|
$app_uri = $hash->{helper}{device}{appPreset}{ $appStr }{uri};
|
||||||
|
$app_data = join(" ", @a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Unknown app '" . $appStr . "' on that device." unless defined($app_uri);
|
||||||
|
|
||||||
if ( $presence eq "present" ) {
|
if ( $presence eq "present" ) {
|
||||||
BRAVIA_SendCommand( $hash, "setActiveApp", $app_uri );
|
Log3 $name, 2, "BRAVIA set $name " . $app_name . ($app_data ? " " . $app_data : "");
|
||||||
|
BRAVIA_SendCommand( $hash, "setActiveApp", $app_uri, $app_data );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "Device needs to be reachable to start an app.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# openUrl
|
||||||
|
elsif ( $a[1] eq "openUrl") {
|
||||||
|
if (defined($a[2]) && $presence eq "present" && $power ne "on" ) {
|
||||||
|
Log3 $name, 4, "BRAVIA $name: indirect switching request to ON";
|
||||||
|
BRAVIA_Set( $hash, $name, "on" );
|
||||||
|
}
|
||||||
|
|
||||||
|
return "No 2nd argument given" if ( !defined( $a[2] ) );
|
||||||
|
|
||||||
|
if ( $presence eq "present" ) {
|
||||||
|
Log3 $name, 2, "BRAVIA set $name " . $a[1] . " " . $a[2];
|
||||||
|
my $url = lc($a[2]);
|
||||||
|
if ($url !~ /^https?:\/\/.*/) {
|
||||||
|
$url = "http://$url";
|
||||||
|
}
|
||||||
|
$url =~ s/([\x2F \x3A])/sprintf("%%%02X",ord($1))/eg;
|
||||||
|
$url = "localapp://webappruntime?url=$url";
|
||||||
|
Log3 $name, 2, "BRAVIA set $name " . $a[1] . " " . $url;
|
||||||
|
BRAVIA_SendCommand( $hash, "setActiveApp", $url );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return "Device needs to be reachable to start an app.";
|
return "Device needs to be reachable to start an app.";
|
||||||
@ -703,8 +741,8 @@ sub BRAVIA_Define($$) {
|
|||||||
############################################################################################################
|
############################################################################################################
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
sub BRAVIA_SendCommand($$;$$) {
|
sub BRAVIA_SendCommand($$;$$$) {
|
||||||
my ( $hash, $service, $cmd, $type ) = @_;
|
my ( $hash, $service, $cmd, $param, $type ) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $address = $hash->{helper}{ADDRESS};
|
my $address = $hash->{helper}{ADDRESS};
|
||||||
my $port = $hash->{helper}{PORT};
|
my $port = $hash->{helper}{PORT};
|
||||||
@ -861,7 +899,9 @@ sub BRAVIA_SendCommand($$;$$) {
|
|||||||
$URL .= $port->{SERVICE};
|
$URL .= $port->{SERVICE};
|
||||||
if ($requestFormat eq "json") {
|
if ($requestFormat eq "json") {
|
||||||
$URL .= "/sony/appControl";
|
$URL .= "/sony/appControl";
|
||||||
$data = "{\"id\":2,\"method\":\"setActiveApp\",\"version\":\"1.0\",\"params\":[{\"uri\":\"".$cmd."\"}]}";
|
$data = "{\"id\":2,\"method\":\"setActiveApp\",\"version\":\"1.0\",\"params\":[{\"uri\":\"".$cmd."\"";
|
||||||
|
$data .= ",\"data\":\"".$param."\"" if (defined($param));
|
||||||
|
$data .= "}]}";
|
||||||
}
|
}
|
||||||
} elsif ($service eq "text") {
|
} elsif ($service eq "text") {
|
||||||
$URL .= $port->{SERVICE};
|
$URL .= $port->{SERVICE};
|
||||||
@ -2120,10 +2160,10 @@ sub BRAVIA_GetNormalizedName($) {
|
|||||||
<ul>
|
<ul>
|
||||||
<li><i>application</i><br>
|
<li><i>application</i><br>
|
||||||
List of applications.
|
List of applications.
|
||||||
Applications are available with modells from 2013 and newer.</li>
|
Applications are available with models from 2013 and newer.</li>
|
||||||
<li><i>channel</i><br>
|
<li><i>channel</i><br>
|
||||||
List of all known channels. The module collects all visited channels.
|
List of all known channels. The module collects all visited channels.
|
||||||
Channels can be loaded automtically with modells from 2013 and newer.
|
Channels can be loaded automtically with models from 2013 and newer.
|
||||||
(number of channels, see <a href=#BRAVIAchannelsMax>channelsMax</a>).</li>
|
(number of channels, see <a href=#BRAVIAchannelsMax>channelsMax</a>).</li>
|
||||||
<li><i>channelDown</i><br>
|
<li><i>channelDown</i><br>
|
||||||
Switches a channel back.</li>
|
Switches a channel back.</li>
|
||||||
@ -2131,13 +2171,16 @@ sub BRAVIA_GetNormalizedName($) {
|
|||||||
Switches a channel forward.</li>
|
Switches a channel forward.</li>
|
||||||
<li><i>input</i><br>
|
<li><i>input</i><br>
|
||||||
List of input channels.
|
List of input channels.
|
||||||
Imputs are available with modells from 2013 and newer.</li>
|
Imputs are available with models from 2013 and newer.</li>
|
||||||
<li><i>mute</i><br>
|
<li><i>mute</i><br>
|
||||||
Set mute if <a href=#BRAVIAupnp>Upnp</a> is activated.</li>
|
Set mute if <a href=#BRAVIAupnp>Upnp</a> is activated.</li>
|
||||||
<li><i>off</i><br>
|
<li><i>off</i><br>
|
||||||
Switches TV to off. State of device will have been set to "set_off" for 60 seconds or until off-status is pulled from TV.</li>
|
Switches TV to off. State of device will have been set to "set_off" for 60 seconds or until off-status is pulled from TV.</li>
|
||||||
<li><a name="BRAVIAon"></a><i>on</i><br>
|
<li><a name="BRAVIAon"></a><i>on</i><br>
|
||||||
Switches TV to on, with modells from 2013 using WOL. State of device will have been set to "set_on" for 60 seconds or until on-status is pulled from TV.</li>
|
Switches TV to on, with models from 2013 using WOL. State of device will have been set to "set_on" for 60 seconds or until on-status is pulled from TV.</li>
|
||||||
|
<li><i>openUrl</i><br>
|
||||||
|
Opens an URL on the screen.
|
||||||
|
This Feature is available on models from 2013 and newer.</li>
|
||||||
<li><i>pause</i><br>
|
<li><i>pause</i><br>
|
||||||
Pauses a playing of a recording, of an internal App, etc.</li>
|
Pauses a playing of a recording, of an internal App, etc.</li>
|
||||||
<li><i>play</i><br>
|
<li><i>play</i><br>
|
||||||
@ -2153,8 +2196,8 @@ sub BRAVIA_GetNormalizedName($) {
|
|||||||
<li>Call with empty input. A PIN for registration has to be shown on the TV.</li>
|
<li>Call with empty input. A PIN for registration has to be shown on the TV.</li>
|
||||||
<li>Insert PIN into input field and register again.</li></ol></li>
|
<li>Insert PIN into input field and register again.</li></ol></li>
|
||||||
<li><a name="BRAVIArequestFormat"></a><i>requestFormat</i><br>
|
<li><a name="BRAVIArequestFormat"></a><i>requestFormat</i><br>
|
||||||
"xml" for xml based communication (modells from 2011 and 2012)<br>
|
"xml" for xml based communication (models from 2011 and 2012)<br>
|
||||||
"json" for communication with modells from 2013 and newer</li>
|
"json" for communication with models from 2013 and newer</li>
|
||||||
<li><i>remoteControl</i><br>
|
<li><i>remoteControl</i><br>
|
||||||
Sends command directly to TV.</li>
|
Sends command directly to TV.</li>
|
||||||
<li><i>statusRequest</i><br>
|
<li><i>statusRequest</i><br>
|
||||||
@ -2252,6 +2295,9 @@ sub BRAVIA_GetNormalizedName($) {
|
|||||||
Schaltet den TV aus. Der State des Gerätes wird auf "set_off" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "off" meldet.</li>
|
Schaltet den TV aus. Der State des Gerätes wird auf "set_off" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "off" meldet.</li>
|
||||||
<li><a name="BRAVIAon"></a><i>on</i><br>
|
<li><a name="BRAVIAon"></a><i>on</i><br>
|
||||||
Einschalten des TV, ab Modelljahr 2013 per WOL. Der State des Gerätes wird auf "set_on" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "on" meldet.</li>
|
Einschalten des TV, ab Modelljahr 2013 per WOL. Der State des Gerätes wird auf "set_on" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "on" meldet.</li>
|
||||||
|
<li><i>openUrl</i><br>
|
||||||
|
Öffnet eine URL auf dem Bildschirm.
|
||||||
|
Diese Funktion ist ab Modelljahr 2013 verfügbar.</li>
|
||||||
<li><i>pause</i><br>
|
<li><i>pause</i><br>
|
||||||
Pausiert die Wiedergabe einer Aufnahme, einer internen App, etc.</li>
|
Pausiert die Wiedergabe einer Aufnahme, einer internen App, etc.</li>
|
||||||
<li><i>play</i><br>
|
<li><i>play</i><br>
|
||||||
|
Loading…
Reference in New Issue
Block a user