70_Viera: new commands
git-svn-id: https://svn.fhem.de/fhem/trunk@20914 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -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.
|
||||||
|
- feature: 70_VIERA: new commands, direct access to apps, commands had
|
||||||
|
to be changed, if necessary reload RC layout
|
||||||
|
- bugfix: 70_VIERA: patch by nestor
|
||||||
- new: 98_MAX_Temperature.pm: new modul
|
- new: 98_MAX_Temperature.pm: new modul
|
||||||
- bugfix: 73_AutoShuttersControl: fix SelfDefense then drive day open
|
- bugfix: 73_AutoShuttersControl: fix SelfDefense then drive day open
|
||||||
- bugfix: 73_AutoShuttersControl: fix adv icon for devStateIcon
|
- bugfix: 73_AutoShuttersControl: fix adv icon for devStateIcon
|
||||||
|
|||||||
@@ -9,9 +9,13 @@
|
|||||||
# since version 1.25 modified by mabula
|
# since version 1.25 modified by mabula
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Version = 1.28
|
# Version = 1.30
|
||||||
#
|
#
|
||||||
# Version History:
|
# Version History:
|
||||||
|
# - 1.30 - 2020-01-10 Dr. H-J Breymayer
|
||||||
|
# -- implemented additional commands, changed definition of commands
|
||||||
|
# -- bugfix patch from Nestor
|
||||||
|
#
|
||||||
# - 1.28 - 2019-12-14 Dr. H-J Breymayer
|
# - 1.28 - 2019-12-14 Dr. H-J Breymayer
|
||||||
# -- correction of "Rolling Key" in case of bad command
|
# -- correction of "Rolling Key" in case of bad command
|
||||||
# -- GetStatus call after on_off command
|
# -- GetStatus call after on_off command
|
||||||
@@ -87,66 +91,93 @@ sub VIERA_RClayout_TV();
|
|||||||
sub VIERA_RClayout_TV_SVG();
|
sub VIERA_RClayout_TV_SVG();
|
||||||
|
|
||||||
my %VIERA_remoteControl_args = (
|
my %VIERA_remoteControl_args = (
|
||||||
"NRC_CH_DOWN-ONOFF" => "Channel down",
|
channel_down => "CH_DOWN",
|
||||||
"NRC_CH_UP-ONOFF" => "Channel up",
|
channel_up => "CH_UP",
|
||||||
"NRC_VOLUP-ONOFF" => "Volume up",
|
volume_up => "VOLUP",
|
||||||
"NRC_VOLDOWN-ONOFF" => "Volume down",
|
volume_down => "VOLDOWN",
|
||||||
"NRC_MUTE-ONOFF" => "Mute",
|
mute => "MUTE",
|
||||||
"NRC_TV-ONOFF" => "TV",
|
TV => "TV",
|
||||||
"NRC_CHG_INPUT-ONOFF" => "AV",
|
AV => "CHG_INPUT",
|
||||||
"NRC_RED-ONOFF" => "Red",
|
red_button => "RED",
|
||||||
"NRC_GREEN-ONOFF" => "Green",
|
green_button => "GREEN",
|
||||||
"NRC_YELLOW-ONOFF" => "Yellow",
|
yellow_button => "YELLOW",
|
||||||
"NRC_BLUE-ONOFF" => "Blue",
|
blue_button => "BLUE",
|
||||||
"NRC_VTOOLS-ONOFF" => "VIERA tools",
|
VIERA_tools => "VTOOLS",
|
||||||
"NRC_CANCEL-ONOFF" => "Cancel / Exit",
|
cancel => "CANCEL",
|
||||||
"NRC_SUBMENU-ONOFF" => "Option",
|
exit => "CANCEL",
|
||||||
"NRC_RETURN-ONOFF" => "Return",
|
option => "SUBMENU",
|
||||||
"NRC_ENTER-ONOFF" => "Control Center click / enter",
|
return => "RETURN",
|
||||||
"NRC_RIGHT-ONOFF" => "Control RIGHT",
|
home => "HOME",
|
||||||
"NRC_LEFT-ONOFF" => "Control LEFT",
|
program => "PROG",
|
||||||
"NRC_UP-ONOFF" => "Control UP",
|
enter => "ENTER",
|
||||||
"NRC_DOWN-ONOFF" => "Control DOWN",
|
right => "RIGHT",
|
||||||
"NRC_3D-ONOFF" => "3D button",
|
left => "LEFT",
|
||||||
"NRC_SD_CARD-ONOFF" => "SD-card",
|
up => "UP",
|
||||||
"NRC_DISP_MODE-ONOFF" => "Display mode / Aspect ratio",
|
down => "DOWN",
|
||||||
"NRC_MENU-ONOFF" => "Menu",
|
"3D_button" => "3D",
|
||||||
"NRC_INTERNET-ONOFF" => "VIERA connect",
|
SD_card => "SD_CARD",
|
||||||
"NRC_VIERA_LINK-ONOFF"=> "VIERA link",
|
display_mode => "DISP_MODE",
|
||||||
"NRC_EPG-ONOFF" => "Guide / EPG",
|
menu => "MENU",
|
||||||
"NRC_TEXT-ONOFF" => "Text / TTV",
|
VIERA_connect => "INTERNET",
|
||||||
"NRC_STTL-ONOFF" => "STTL / Subtitles",
|
VIERA_link => "VIERA_LINK",
|
||||||
"NRC_INFO-ONOFF" => "Info",
|
EPG => "EPG",
|
||||||
"NRC_INDEX-ONOFF" => "TTV index",
|
guide => "GUIDE",
|
||||||
"NRC_HOLD-ONOFF" => "TTV hold / image freeze",
|
videotext => "TEXT",
|
||||||
"NRC_R_TUNE-ONOFF" => "Last view",
|
subtitle => "STTL",
|
||||||
"NRC_POWER-ONOFF" => "Power off",
|
info => "INFO",
|
||||||
"NRC_REW-ONOFF" => "Rewind",
|
index => "INDEX",
|
||||||
"NRC_PLAY-ONOFF" => "Play",
|
hold => "HOLD",
|
||||||
"NRC_FF-ONOFF" => "Fast forward",
|
last_view => "R_TUNE",
|
||||||
"NRC_SKIP_PREV-ONOFF" => "Skip previous",
|
on_off => "POWER",
|
||||||
"NRC_PAUSE-ONOFF" => "Pause",
|
rewind => "REW",
|
||||||
"NRC_SKIP_NEXT-ONOFF" => "Skip next",
|
play => "PLAY",
|
||||||
"NRC_STOP-ONOFF" => "Stop",
|
fast_forward => "FF",
|
||||||
"NRC_REC-ONOFF" => "Record",
|
skip_previous => "SKIP_PREV",
|
||||||
"NRC_D1-ONOFF" => "Digit 1",
|
pause => "PAUSE",
|
||||||
"NRC_D2-ONOFF" => "Digit 2",
|
skip_next => "SKIP_NEXT",
|
||||||
"NRC_D3-ONOFF" => "Digit 3",
|
stop => "STOP",
|
||||||
"NRC_D4-ONOFF" => "Digit 4",
|
record => "REC",
|
||||||
"NRC_D5-ONOFF" => "Digit 5",
|
apps => "APPS",
|
||||||
"NRC_D6-ONOFF" => "Digit 6",
|
aspect => "ASPECT",
|
||||||
"NRC_D7-ONOFF" => "Digit 7",
|
favorite => "FAVORITE",
|
||||||
"NRC_D8-ONOFF" => "Digit 8",
|
game => "GAME",
|
||||||
"NRC_D9-ONOFF" => "Digit 9",
|
digit_1 => "D1",
|
||||||
"NRC_D0-ONOFF" => "Digit 0",
|
digit_2 => "D2",
|
||||||
"NRC_P_NR-ONOFF" => "P-NR (Noise reduction)",
|
digit_3 => "D3",
|
||||||
"NRC_R_TUNE-ONOFF" => "Seems to do the same as INFO",
|
digit_4 => "D4",
|
||||||
"NRC_HDMI1" => "Switch to HDMI input 1",
|
digit_5 => "D5",
|
||||||
"NRC_HDMI2" => "Switch to HDMI input 2",
|
digit_6 => "D6",
|
||||||
"NRC_HDMI3" => "Switch to HDMI input 3",
|
digit_7 => "D7",
|
||||||
"NRC_HDMI4" => "Switch to HDMI input 4",
|
digit_8 => "D8",
|
||||||
|
digit_9 => "D9",
|
||||||
|
digit_0 => "D0",
|
||||||
|
noise_reduction => "P_NR",
|
||||||
|
tune => "R_TUNE",
|
||||||
|
HDMI_1 => "HDMI1",
|
||||||
|
HDMI_2 => "HDMI2",
|
||||||
|
HDMI_3 => "HDMI3",
|
||||||
|
HDMI_4 => "HDMI4",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
my %VIERA_remoteControl_apps = (
|
||||||
|
netflix => "0010000200000001",
|
||||||
|
youtube => "0070000200180001",
|
||||||
|
shoutcast => "0070000400000001",
|
||||||
|
calendar => "0387878700150020",
|
||||||
|
browser => "0077777700160002",
|
||||||
|
amazonprime => "0010000100180001",
|
||||||
|
iplayer => "0020000A00000010",
|
||||||
|
bbc_iplayer => "0020000A00000010",
|
||||||
|
itv => "0387878700000124",
|
||||||
|
all_4 => "0387878700000125",
|
||||||
|
demand_5 => "0387878700000125",
|
||||||
|
recorded_tv => "0387878700000013",
|
||||||
|
multi_window => "0387878700000050",
|
||||||
|
bbc_news => "0020000A00000006",
|
||||||
|
bbc_sport => "0020000A00000007",
|
||||||
|
weather => "0070000C00000001",
|
||||||
|
developer => "0077777777777778",
|
||||||
|
);
|
||||||
|
|
||||||
# Initialize the module and tell FHEM name of additional functions
|
# Initialize the module and tell FHEM name of additional functions
|
||||||
# Param1: Hash of FHEM-Device
|
# Param1: Hash of FHEM-Device
|
||||||
@@ -278,14 +309,16 @@ sub VIERA_Set($@) {
|
|||||||
"volume:slider,0,1,100 ".
|
"volume:slider,0,1,100 ".
|
||||||
"channel ".
|
"channel ".
|
||||||
"remoteControl:" . join(",", sort keys %VIERA_remoteControl_args) . " " .
|
"remoteControl:" . join(",", sort keys %VIERA_remoteControl_args) . " " .
|
||||||
"input:hdmi1,hdmi2,hdmi3,hdmi4,sdCard,tv";
|
"remoteControlApp:" . join(",", sort keys %VIERA_remoteControl_apps) . " " .
|
||||||
|
"input:HDMI_1,HDMI_2,HDMI_3,HDMI_4,SD_card,TV ".
|
||||||
|
"statusRequest:noArg ";
|
||||||
$usage =~ s/(NRC_|-ONOFF)//g;
|
$usage =~ s/(NRC_|-ONOFF)//g;
|
||||||
|
|
||||||
my $what = lc($a[0]);
|
my $what = $a[0];
|
||||||
return "\"set $name\" needs at least one argument" if(!defined($a[0]));
|
return "\"set $name\" needs at least one argument" if(!defined($a[0]));
|
||||||
return "Unknown value $a[0] Device is not present or reachable (power on or check ethernet connection)" if(ReadingsVal($name,"state","off") eq "off" && $what ne "?");
|
return "Unknown value $a[0] Device is not present or reachable (power on or check ethernet connection)" if(ReadingsVal($name,"state","off") eq "off" && $what ne "?");
|
||||||
return "Unknown value $a[0] use set $name on_off, choose one of on_off ?" if(ReadingsVal($name,"state","off") eq "dormant" && $what ne "on_off");
|
return "Unknown value $a[0] use set $name on_off, choose one of on_off ?" if(ReadingsVal($name,"state","off") eq "dormant" && $what ne "on_off");
|
||||||
my $state = lc($a[1]) if(defined($a[1]));
|
my $state = $a[1] if(defined($a[1]));
|
||||||
|
|
||||||
if ($what eq "mute"){
|
if ($what eq "mute"){
|
||||||
Log3 $name, 3, "$name: Set mute $state";
|
Log3 $name, 3, "$name: Set mute $state";
|
||||||
@@ -301,7 +334,7 @@ sub VIERA_Set($@) {
|
|||||||
}
|
}
|
||||||
elsif ($what eq "on_off"){
|
elsif ($what eq "on_off"){
|
||||||
Log3 $name, 3, "$name: Set on_off";
|
Log3 $name, 3, "$name: Set on_off";
|
||||||
VIERA_Encrypted_Command($hash, "POWER");
|
VIERA_Encrypted_Command($hash, "POWER", "key");
|
||||||
VIERA_Encrypt_Answer($hash);
|
VIERA_Encrypt_Answer($hash);
|
||||||
sleep 0.6;
|
sleep 0.6;
|
||||||
VIERA_GetStatus($hash, 1);
|
VIERA_GetStatus($hash, 1);
|
||||||
@@ -310,39 +343,49 @@ sub VIERA_Set($@) {
|
|||||||
return "$name: Channel is too high or low!" if($state < 1 || $state > 9999);
|
return "$name: Channel is too high or low!" if($state < 1 || $state > 9999);
|
||||||
Log3 $name, 3, "$name: Set channel $state";
|
Log3 $name, 3, "$name: Set channel $state";
|
||||||
for(my $i = 0; $i <= length($state)-1; $i++) {
|
for(my $i = 0; $i <= length($state)-1; $i++) {
|
||||||
VIERA_Encrypted_Command($hash, "D".substr($state, $i, 1));
|
VIERA_Encrypted_Command($hash, "D".substr($state, $i, 1), "key");
|
||||||
sleep 0.1;
|
sleep 0.1;
|
||||||
VIERA_Encrypt_Answer($hash);
|
VIERA_Encrypt_Answer($hash);
|
||||||
}
|
}
|
||||||
VIERA_Encrypted_Command($hash, "ENTER");
|
VIERA_Encrypted_Command($hash, "ENTER", "key");
|
||||||
VIERA_Encrypt_Answer($hash);
|
VIERA_Encrypt_Answer($hash);
|
||||||
}
|
}
|
||||||
elsif ($what eq "remotecontrol"){
|
elsif ($what eq "remoteControl"){
|
||||||
if($state eq "?"){
|
Log3 $name, 3, "$name: Set remoteControl $state";
|
||||||
$usage = "choose one of the states:\n";
|
|
||||||
foreach $key (sort keys %VIERA_remoteControl_args){
|
if( defined($VIERA_remoteControl_args{$state}) ) {
|
||||||
if(length($key) < 17){ $tab = "\t\t"; }else{ $tab = "\t"; }
|
$state = $VIERA_remoteControl_args{$state};
|
||||||
$usage .= "$key $tab=> $VIERA_remoteControl_args{$key}\n";
|
Log3 $name, 4, "$name: Set remoteControl $state";
|
||||||
}
|
}
|
||||||
$usage =~ s/(NRC_|-ONOFF)//g;
|
else {return "Unknown argument $what, $usage"}
|
||||||
return $usage;
|
|
||||||
}
|
VIERA_Encrypted_Command($hash, $state, "key");
|
||||||
else{
|
|
||||||
$state = uc($state);
|
|
||||||
Log3 $name, 3, "$name: Set remoteControl $state";
|
|
||||||
VIERA_Encrypted_Command($hash, $state);
|
|
||||||
VIERA_Encrypt_Answer($hash);
|
VIERA_Encrypt_Answer($hash);
|
||||||
|
}
|
||||||
|
elsif ($what eq "remoteControlApp"){
|
||||||
|
Log3 $name, 3, "$name: Set remoteControlApp $state";
|
||||||
|
|
||||||
|
if( defined($VIERA_remoteControl_apps{$state}) ) {
|
||||||
|
$state = $VIERA_remoteControl_apps{$state};
|
||||||
|
Log3 $name, 4, "$name: Set remoteControlApp $state";
|
||||||
}
|
}
|
||||||
|
else {return "Unknown argument $what, $usage"}
|
||||||
|
|
||||||
|
VIERA_Encrypted_Command($hash, $state, "app");
|
||||||
|
VIERA_Encrypt_Answer($hash);
|
||||||
}
|
}
|
||||||
elsif ($what eq "input"){
|
elsif ($what eq "input"){
|
||||||
$state = uc($state);
|
Log3 $name, 3, "$name: Set input $state";
|
||||||
return "$name: Input $state isn't available." if($state ne "HDMI1" && $state ne "HDMI2" && $state ne "HDMI3" && $state ne "HDMI4" && $state ne "SDCARD" && $state ne "TV");
|
if( defined($VIERA_remoteControl_args{$state}) ) {
|
||||||
$state = "SD_CARD" if ($state eq "SDCARD");
|
$state = $VIERA_remoteControl_args{$state};
|
||||||
Log3 $name, 3, "$name: Set input $state";
|
Log3 $name, 4, "$name: Set remoteControl $state";
|
||||||
VIERA_Encrypted_Command($hash, $state);
|
}
|
||||||
|
else {return "Unknown argument $what, $usage"}
|
||||||
|
|
||||||
|
VIERA_Encrypted_Command($hash, $state, "key");
|
||||||
VIERA_Encrypt_Answer($hash);
|
VIERA_Encrypt_Answer($hash);
|
||||||
}
|
}
|
||||||
elsif ($what eq "statusrequest"){
|
elsif ($what eq "statusRequest"){
|
||||||
Log3 $name, 3, "$name: Set statusRequest";
|
Log3 $name, 3, "$name: Set statusRequest";
|
||||||
VIERA_GetStatus($hash, 1);
|
VIERA_GetStatus($hash, 1);
|
||||||
}
|
}
|
||||||
@@ -369,7 +412,7 @@ sub VIERA_Get($@) {
|
|||||||
|
|
||||||
return "$name: No argument given, $usage" if(int(@a) != 2);
|
return "$name: No argument given, $usage" if(int(@a) != 2);
|
||||||
|
|
||||||
$what = lc($a[1]);
|
$what = $a[1];
|
||||||
|
|
||||||
if($what =~ /^(volume|mute|presence)$/) {
|
if($what =~ /^(volume|mute|presence)$/) {
|
||||||
if (defined($hash->{READINGS}{$what})) {
|
if (defined($hash->{READINGS}{$what})) {
|
||||||
@@ -540,7 +583,9 @@ sub VIERA_connection($$) {
|
|||||||
Log3 $name, 5, "$name [$blocking]: Send Data to $hash->{helper}{HOST}:$hash->{helper}{PORT}:\n$data";
|
Log3 $name, 5, "$name [$blocking]: Send Data to $hash->{helper}{HOST}:$hash->{helper}{PORT}:\n$data";
|
||||||
print $sock $data;
|
print $sock $data;
|
||||||
|
|
||||||
while ((read $sock, $buff, 1024) > 0){
|
while (1){
|
||||||
|
my $res = read $sock, $buff, 1024;
|
||||||
|
last if (not defined($res) or $res == 0);
|
||||||
$buffer .= $buff;
|
$buffer .= $buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,48 +601,6 @@ sub VIERA_connection($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Create RAW Data to sent pressed keys of remoteControl to device.
|
|
||||||
# Param1: Hash of FHEM-Device
|
|
||||||
# Param2: Name of key to send
|
|
||||||
# Return: RAW html request for xml soap
|
|
||||||
sub VIERA_BuildXML_NetCtrl($$) {
|
|
||||||
my ($hash, $command) = @_;
|
|
||||||
|
|
||||||
my $host = $hash->{helper}{HOST};
|
|
||||||
my $port = $hash->{helper}{PORT};
|
|
||||||
|
|
||||||
my $callsoap = "";
|
|
||||||
my $message = "";
|
|
||||||
my $head = "";
|
|
||||||
my $blen = "";
|
|
||||||
|
|
||||||
$callsoap .= "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
|
|
||||||
$callsoap .= "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"";
|
|
||||||
$callsoap .= " s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\r\n";
|
|
||||||
|
|
||||||
$callsoap .= "<s:Body>\r\n";
|
|
||||||
$callsoap .= "<u:X_SendKey xmlns:u=\"urn:panasonic-com:service:p00NetworkControl:1\">\r\n";
|
|
||||||
$callsoap .= "<X_KeyEvent>NRC_$command-ONOFF</X_KeyEvent>\r\n";
|
|
||||||
$callsoap .= "</u:X_SendKey>\r\n";
|
|
||||||
$callsoap .= "</s:Body>\r\n";
|
|
||||||
$callsoap .= "</s:Envelope>\r\n";
|
|
||||||
|
|
||||||
$blen = length($callsoap);
|
|
||||||
|
|
||||||
$head .= "POST /nrc/control_0 HTTP/1.1\r\n";
|
|
||||||
$head .= "Host: $host:$port\r\n";
|
|
||||||
$head .= "Content-Type: text/xml; charset=\"utf-8\"\r\n";
|
|
||||||
$head .= "SOAPAction: \"urn:panasonic-com:service:p00NetworkControl:1#X_SendKey\"\r\n";
|
|
||||||
$head .= "Content-Length: $blen\r\n";
|
|
||||||
$head .= "\r\n";
|
|
||||||
|
|
||||||
$message .= $head;
|
|
||||||
$message .= $callsoap;
|
|
||||||
# Log3 $name, 5, "$name: Building XML SOAP (NetworkControl) for command $command to host $host:\n$message";
|
|
||||||
return $message;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Create RAW Data to send or get volume/mute state
|
# Create RAW Data to send or get volume/mute state
|
||||||
# Param1: Hash of FHEM-Device
|
# Param1: Hash of FHEM-Device
|
||||||
# Param2: get|set
|
# Param2: get|set
|
||||||
@@ -887,11 +890,13 @@ sub VIERA_GetAbortFn($) {
|
|||||||
######################################################################################################################
|
######################################################################################################################
|
||||||
|
|
||||||
|
|
||||||
sub VIERA_Encrypted_Command($$) {
|
sub VIERA_Encrypted_Command($$$) {
|
||||||
my ($hash, $command) = @_;
|
my ($hash, $command, $type) = @_;
|
||||||
|
|
||||||
my $i = 0;
|
my $i = 0;
|
||||||
my $message = "";
|
my $message = "";
|
||||||
|
my $params = "";
|
||||||
|
my $task = "";
|
||||||
|
|
||||||
if ($hash->{helper}{ENCRYPTION} eq "yes") {
|
if ($hash->{helper}{ENCRYPTION} eq "yes") {
|
||||||
|
|
||||||
@@ -900,26 +905,27 @@ sub VIERA_Encrypted_Command($$) {
|
|||||||
if ($hash->{helper}{stop} eq "yes") {return 0 if (!VIERA_authorize_pin_code($hash))};
|
if ($hash->{helper}{stop} eq "yes") {return 0 if (!VIERA_authorize_pin_code($hash))};
|
||||||
|
|
||||||
if ($hash->{helper}{session_seq_num} eq "None") {return 0 if (!VIERA_request_session_id($hash))};
|
if ($hash->{helper}{session_seq_num} eq "None") {return 0 if (!VIERA_request_session_id($hash))};
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $type eq "key" ) {
|
||||||
my $params = "<X_KeyEvent>NRC_$command-ONOFF</X_KeyEvent>";
|
$params = "<X_KeyEvent>NRC_$command-ONOFF</X_KeyEvent>";
|
||||||
$message = VIERA_Build_soap_message_Encrypt($hash, "X_SendKey", $params, "u");
|
$task = "X_SendKey";
|
||||||
$hash->{helper}{BUFFER} = "";
|
}
|
||||||
if (exists($hash->{helper}{RUNNING_PID_GET}) and $i < 5) {
|
elsif ( $type eq "app" ) {
|
||||||
sleep (0.1);
|
$params = "<X_AppType>vc_app</X_AppType><X_LaunchKeyword>";
|
||||||
$i += 1;
|
$params .= "product_id=$command</X_LaunchKeyword>";
|
||||||
}
|
$task = "X_LaunchApp";
|
||||||
VIERA_connection($hash, $message);
|
}
|
||||||
}
|
else {return};
|
||||||
else {
|
|
||||||
$message = VIERA_BuildXML_NetCtrl($hash, $command);
|
$message = VIERA_Build_soap_message_Encrypt($hash, $task, $params, "u");
|
||||||
$hash->{helper}{BUFFER} = "";
|
$hash->{helper}{BUFFER} = "";
|
||||||
if (exists($hash->{helper}{RUNNING_PID_GET}) and $i < 5) {
|
if (exists($hash->{helper}{RUNNING_PID_GET}) and $i < 5) {
|
||||||
sleep (0.1);
|
sleep (0.1);
|
||||||
$i += 1;
|
$i += 1;
|
||||||
}
|
|
||||||
VIERA_connection($hash, $message);
|
|
||||||
}
|
}
|
||||||
|
VIERA_connection($hash, $message);
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -937,8 +943,15 @@ sub VIERA_Encrypt_Answer($) {
|
|||||||
if (index($answer, "Bad Request") != -1) {
|
if (index($answer, "Bad Request") != -1) {
|
||||||
if ($hash->{helper}{session_seq_num} ne "None") {
|
if ($hash->{helper}{session_seq_num} ne "None") {
|
||||||
$hash->{helper}{session_seq_num} -= 1;
|
$hash->{helper}{session_seq_num} -= 1;
|
||||||
|
readingsSingleUpdate($hash, "Sequence", $hash->{helper}{session_seq_num},1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elsif (index($answer, "Internal Server Error") != -1) {
|
||||||
|
$hash->{helper}{session_seq_num} = "None";
|
||||||
|
readingsSingleUpdate($hash, "Sequence", $hash->{helper}{session_seq_num},1);
|
||||||
|
Log3 $name, 4, "$name reset of Rolling Key";
|
||||||
|
}
|
||||||
|
|
||||||
Log3 $name, 3, "$name wrong encrypted VIERA command: \r\n\"$answer\"";
|
Log3 $name, 3, "$name wrong encrypted VIERA command: \r\n\"$answer\"";
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@@ -966,9 +979,8 @@ sub VIERA_CeckEncryption($) {
|
|||||||
|
|
||||||
|
|
||||||
$hash->{helper}{BUFFER} = "";
|
$hash->{helper}{BUFFER} = "";
|
||||||
VIERA_connection($hash, VIERA_BuildXML_NetCtrl($hash, "INFO"));
|
VIERA_Encrypted_Command($hash, "INFO", "key");
|
||||||
|
|
||||||
|
|
||||||
if ($hash->{helper}{BUFFER} ne "") {
|
if ($hash->{helper}{BUFFER} ne "") {
|
||||||
$answer = $hash->{helper}{BUFFER} ;
|
$answer = $hash->{helper}{BUFFER} ;
|
||||||
$iS = index($answer, "<errorCode>401</errorCode>");
|
$iS = index($answer, "<errorCode>401</errorCode>");
|
||||||
@@ -1296,26 +1308,26 @@ sub VIERA_RClayout_TV() {
|
|||||||
my @row;
|
my @row;
|
||||||
my $i = 0;
|
my $i = 0;
|
||||||
|
|
||||||
$row[$i++]="power:POWEROFF2, TV, CHG_INPUT:HDMI";
|
$row[$i++]="on_off:POWEROFF2, TV:TV, AV:HDMI";
|
||||||
$row[$i++]="MENU, disp_mode:ASPECT, epg:GUIDE";
|
$row[$i++]="menu:MENU, display_mode:ASPECT, EPG:GUIDE";
|
||||||
$row[$i++]="VIERA_LINK, VTOOLS, INTERNET";
|
$row[$i++]="VIERA_link:VIERA_LINK, VIERA_tools:VTOOLS, VIERA_connect:INTERNET";
|
||||||
$row[$i++]=":blank, :blank, :blank";
|
$row[$i++]=":blank, :blank, :blank";
|
||||||
$row[$i++]="INFO:INFO2, UP, cancel:EXIT";
|
$row[$i++]="info:INFO2, up:UP, cancel:EXIT";
|
||||||
$row[$i++]="LEFT, ENTER, RIGHT";
|
$row[$i++]="left:LEFT, enter:ENTER, right:RIGHT";
|
||||||
$row[$i++]="SUBMENU, DOWN, RETURN";
|
$row[$i++]="option:SUBMENU, down:DOWN, return:RETURN";
|
||||||
$row[$i++]="red:RED, :blank, green:GREEN";
|
$row[$i++]="red:RED, :blank, green:GREEN";
|
||||||
$row[$i++]="yellow:YELLOW, :blank, blue:BLUE";
|
$row[$i++]="yellow:YELLOW, :blank, blue:BLUE";
|
||||||
$row[$i++]="d1:1, d2:2, d3:3";
|
$row[$i++]="digit_1:1, digit_2:2, digit_3:3";
|
||||||
$row[$i++]="d4:4, d5:5, d6:6";
|
$row[$i++]="digit_4:4, digit_5:5, digit_6:6";
|
||||||
$row[$i++]="d7:7, d8:8, d9:9";
|
$row[$i++]="digit_7:7, digit_8:8, digit_9:9";
|
||||||
$row[$i++]="MUTE, d0:0, r_tune:PRECH";
|
$row[$i++]="mute:MUTE, digit_0:0, tune:PRECH";
|
||||||
$row[$i++]=":blank, :blank, :blank";
|
$row[$i++]=":blank, :blank, :blank";
|
||||||
$row[$i++]="VOLUP, :blank, ch_up:CHUP";
|
$row[$i++]="volume_up:VOLUP, :blank, channel_up:CHUP";
|
||||||
$row[$i++]=":VOL, :blank, :PROG";
|
$row[$i++]=":VOL, :blank, :PROG";
|
||||||
$row[$i++]="VOLDOWN, :blank, ch_down:CHDOWN";
|
$row[$i++]="volume_down:VOLDOWN, :blank, channel_down:CHDOWN";
|
||||||
$row[$i++]=":blank, :blank, :blank";
|
$row[$i++]=":blank, :blank, :blank";
|
||||||
$row[$i++]="rew:REWIND, PLAY, FF";
|
$row[$i++]="rewind:REWIND, play:PLAY, fast_foreward:FF";
|
||||||
$row[$i++]="STOP, PAUSE, REC";
|
$row[$i++]="stop:STOP, pause:PAUSE, record:REC";
|
||||||
|
|
||||||
# Replace spaces with no space
|
# Replace spaces with no space
|
||||||
for (@row) {tr/ //d}
|
for (@row) {tr/ //d}
|
||||||
@@ -1331,29 +1343,30 @@ sub VIERA_RClayout_TV_SVG() {
|
|||||||
my @row;
|
my @row;
|
||||||
my $i = 0;
|
my $i = 0;
|
||||||
|
|
||||||
$row[$i++]="power:rc_POWER.svg, TV:rc_TV2.svg, CHG_INPUT:rc_AV.svg";
|
$row[$i++]="on_off:rc_POWER.svg, TV:rc_TV2.svg, AV:rc_AV.svg";
|
||||||
$row[$i++]="MENU:rc_MENU.svg, disp_mode:rc_ASPECT.svg, epg:rc_EPG.svg";
|
$row[$i++]="menu:rc_MENU.svg, display_mode:rc_ASPECT.svg, EPG:rc_EPG.svg";
|
||||||
$row[$i++]="VIERA_LINK:rc_VIERA_LINK.svg, VTOOLS:rc_VIERA_TOOLS.svg, INTERNET:rc_WEB.svg";
|
$row[$i++]="VIERA_link:rc_VIERA_LINK.svg, VIERA_tools:rc_VIERA_TOOLS.svg, VIERA_connect:rc_WEB.svg";
|
||||||
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
|
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
|
||||||
$row[$i++]="INFO:rc_INFO2.svg, UP:rc_UP.svg, cancel:rc_EXIT.svg";
|
$row[$i++]="info:rc_INFO2.svg, up:rc_UP.svg, cancel:rc_EXIT.svg";
|
||||||
$row[$i++]="LEFT:rc_LEFT.svg, ENTER:rc_dot.svg, RIGHT:rc_RIGHT.svg";
|
$row[$i++]="left:rc_LEFT.svg, enter:rc_dot.svg, right:rc_RIGHT.svg";
|
||||||
$row[$i++]="SUBMENU:rc_OPTIONS.svg, DOWN:rc_DOWN.svg, RETURN:rc_BACK.svg";
|
$row[$i++]="option:rc_OPTIONS.svg, down:rc_DOWN.svg, return:rc_BACK.svg";
|
||||||
$row[$i++]="red:rc_RED.svg, :rc_BLANK.svg, green:rc_GREEN.svg";
|
$row[$i++]="red:rc_RED.svg, :rc_BLANK.svg, green:rc_GREEN.svg";
|
||||||
$row[$i++]="yellow:rc_YELLOW.svg, :rc_BLANK.svg, blue:rc_BLUE.svg";
|
$row[$i++]="yellow:rc_YELLOW.svg, :rc_BLANK.svg, blue:rc_BLUE.svg";
|
||||||
$row[$i++]="d1:rc_1.svg, d2:rc_2.svg, d3:rc_3.svg";
|
$row[$i++]="digit_1:rc_1.svg, digit_2:rc_2.svg, digit_3:rc_3.svg";
|
||||||
$row[$i++]="d4:rc_4.svg, d5:rc_5.svg, d6:rc_6.svg";
|
$row[$i++]="digit_4:rc_4.svg, digit_5:rc_5.svg, digit_6:rc_6.svg";
|
||||||
$row[$i++]="d7:rc_7.svg, d8:rc_8.svg, d9:rc_9.svg";
|
$row[$i++]="digit_7:rc_7.svg, digit_8:rc_8.svg, digit_9:rc_9.svg";
|
||||||
$row[$i++]="MUTE:rc_MUTE.svg, d0:rc_0.svg, r_tune:rc_BACK.svg";
|
$row[$i++]="mute:rc_MUTE.svg, digit_0:rc_0.svg, tune:rc_BACK.svg";
|
||||||
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
|
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
|
||||||
$row[$i++]="VOLUP:rc_UP.svg, :rc_BLANK.svg, ch_up:rc_UP.svg";
|
$row[$i++]="volume_up:rc_UP.svg, :rc_BLANK.svg, channel_up:rc_UP.svg";
|
||||||
$row[$i++]=":rc_VOL.svg, :rc_BLANK.svg, :rc_PROG.svg";
|
$row[$i++]=":rc_VOL.svg, :rc_BLANK.svg, :rc_PROG.svg";
|
||||||
$row[$i++]="VOLDOWN:rc_DOWN.svg, :rc_BLANK.svg, ch_down:rc_DOWN.svg";
|
$row[$i++]="volume_down:rc_DOWN.svg, :rc_BLANK.svg, channel_down:rc_DOWN.svg";
|
||||||
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
|
$row[$i++]=":rc_BLANK.svg, :rc_BLANK.svg, :rc_BLANK.svg";
|
||||||
$row[$i++]="rew:rc_REW.svg, PLAY:rc_PLAY.svg, FF:rc_FF.svg";
|
$row[$i++]="rewind:rc_REW.svg, play:rc_PLAY.svg, fast_foreward:rc_FF.svg";
|
||||||
$row[$i++]="STOP:rc_STOP.svg, PAUSE:rc_PAUSE.svg, REC:rc_REC.svg";
|
$row[$i++]="stop:rc_STOP.svg, pause:rc_PAUSE.svg, record:rc_REC.svg";
|
||||||
|
|
||||||
# Replace spaces with no space
|
# Replace spaces with no space
|
||||||
for (@row) {tr/ //d}
|
for (@row) {tr/ //d}
|
||||||
|
|
||||||
|
|
||||||
return @row;
|
return @row;
|
||||||
}
|
}
|
||||||
@@ -1431,61 +1444,100 @@ sub VIERA_RClayout_TV_SVG() {
|
|||||||
<ul>
|
<ul>
|
||||||
<br>
|
<br>
|
||||||
Remote control commands, depending on your TV<br>
|
Remote control commands, depending on your TV<br>
|
||||||
For this application the following commands are available:<br>
|
For this application the following commands are available:<br><br>
|
||||||
|
|
||||||
|
set <name> remoteControl .........<br><br>
|
||||||
|
|
||||||
<ul><code>
|
<ul><code>
|
||||||
3D => 3D button<br>
|
3D_button => switch to 3D mode<br>
|
||||||
BLUE => Blue<br>
|
apps => show apps<br>
|
||||||
CANCEL => Cancel / Exit<br>
|
aspect => change aspect<br>
|
||||||
CHG_INPUT => AV<br>
|
AV => switch input to AV<br>
|
||||||
CH_DOWN => Channel down<br>
|
blue_button => blue button<br>
|
||||||
CH_UP => Channel up<br>
|
cancel => cancel or clear<br>
|
||||||
D0 => Digit 0<br>
|
channel_down => one channel down<br>
|
||||||
D1 => Digit 1<br>
|
channel_up => one channel up<br>
|
||||||
D2 => Digit 2<br>
|
digit_0 => Digit 0<br>
|
||||||
D3 => Digit 3<br>
|
digit_1 => Digit 1<br>
|
||||||
D4 => Digit 4<br>
|
digit_2 => Digit 2<br>
|
||||||
D5 => Digit 5<br>
|
digit_3 => Digit 3<br>
|
||||||
D6 => Digit 6<br>
|
digit_4 => Digit 4<br>
|
||||||
D7 => Digit 7<br>
|
digit_5 => Digit 5<br>
|
||||||
D8 => Digit 8<br>
|
digit_6 => Digit 6<br>
|
||||||
D9 => Digit 9<br>
|
digit_7 => Digit 7<br>
|
||||||
DISP_MODE => Display mode / Aspect ratio<br>
|
digit_8 => Digit 8<br>
|
||||||
DOWN => Control DOWN<br>
|
digit_9 => Digit 9<br>
|
||||||
ENTER => Control Center click / enter<br>
|
display_mode <br>
|
||||||
EPG => Guide / EPG<br>
|
down => cursor down<br>
|
||||||
FF => Fast forward<br>
|
enter => enter<br>
|
||||||
GREEN => Green<br>
|
EPG => program guide<br>
|
||||||
HOLD => TTV hold / image freeze<br>
|
exit => exit<br>
|
||||||
INDEX => TTV index<br>
|
fast_forward => fast foreward<br>
|
||||||
INFO => Info<br>
|
favorite => favorites<br>
|
||||||
INTERNET => VIERA connect<br>
|
game <br>
|
||||||
LEFT => Control LEFT<br>
|
green_button => green button<br>
|
||||||
MENU => Menu<br>
|
guide => guide<br>
|
||||||
MUTE => Mute<br>
|
HDMI_1 => input HDMI 1<br>
|
||||||
PAUSE => Pause<br>
|
HDMI_2 => input HDMI 2<br>
|
||||||
PLAY => Play<br>
|
HDMI_3 => input HDMI 3<br>
|
||||||
POWER => Power off<br>
|
HDMI_4 => input HDMI 4<br>
|
||||||
P_NR => P-NR (Noise reduction)<br>
|
hold => hold<br>
|
||||||
REC => Record<br>
|
home => home<br>
|
||||||
RED => Red<br>
|
index => index<br>
|
||||||
RETURN => Return<br>
|
info => info<br>
|
||||||
REW => Rewind<br>
|
last_view => last view<br>
|
||||||
RIGHT => Control RIGHT<br>
|
left => cursor left<br>
|
||||||
R_TUNE => Seems to do the same as INFO<br>
|
menu => menu<br>
|
||||||
SD_CARD => SD-card<br>
|
mute => mute<br>
|
||||||
SKIP_NEXT => Skip next<br>
|
noise_reduction => noise reduction<br>
|
||||||
SKIP_PREV => Skip previous<br>
|
on_off => on off switch<br>
|
||||||
STOP => Stop<br>
|
option => option<br>
|
||||||
STTL => STTL / Subtitles<br>
|
pause => pause<br>
|
||||||
SUBMENU => Option<br>
|
play => play<br>
|
||||||
TEXT => Text / TTV<br>
|
program => program<br>
|
||||||
TV => TV<br>
|
record => record<br>
|
||||||
UP => Control UP<br>
|
red_button => red button<br>
|
||||||
VIERA_LINK => VIERA link<br>
|
return => return<br>
|
||||||
VOLDOWN => Volume down<br>
|
rewind => rewind<br>
|
||||||
VOLUP => Volume up<br>
|
right => cursor right<br>
|
||||||
VTOOLS => VIERA tools<br>
|
SD_card => SD card<br>
|
||||||
YELLOW => Yellow<br>
|
skip_next => skip to next<br>
|
||||||
|
skip_previous => skip to previous<br>
|
||||||
|
stop => stop<br>
|
||||||
|
subtitle => subtitle<br>
|
||||||
|
tune => tune<br>
|
||||||
|
TV => TV<br>
|
||||||
|
up => cursor up<br>
|
||||||
|
videotext => videotext<br>
|
||||||
|
VIERA_connect <br>
|
||||||
|
VIERA_link <br>
|
||||||
|
VIERA_tools <br>
|
||||||
|
volume_down => volume down<br>
|
||||||
|
volume_up => volume up<br>
|
||||||
|
yellow_button => yellow button<br>
|
||||||
|
</code></ul>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
set <name> remoteControlApp ......<br><br>
|
||||||
|
|
||||||
|
<ul><code>
|
||||||
|
netflix <br>
|
||||||
|
youtube <br>
|
||||||
|
shoutcast <br>
|
||||||
|
calendar <br>
|
||||||
|
browser <br>
|
||||||
|
amazonprime <br>
|
||||||
|
iplayer <br>
|
||||||
|
bbc_iplayer <br>
|
||||||
|
itv <br>
|
||||||
|
all_4 <br>
|
||||||
|
demand_5 <br>
|
||||||
|
recorded_tv <br>
|
||||||
|
multi_window <br>
|
||||||
|
bbc_news <br>
|
||||||
|
bbc_sport <br>
|
||||||
|
weather <br>
|
||||||
|
developer <br>
|
||||||
</code></ul>
|
</code></ul>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@@ -1595,61 +1647,101 @@ sub VIERA_RClayout_TV_SVG() {
|
|||||||
<ul>
|
<ul>
|
||||||
<br>
|
<br>
|
||||||
Fernbedienung (Kann vielleicht nach Modell variieren).<br>
|
Fernbedienung (Kann vielleicht nach Modell variieren).<br>
|
||||||
Das Modul hat die folgenden Fernbedienbefehle implementiert:<br>
|
Das Modul hat die folgenden Fernbedienbefehle implementiert:<br><br>
|
||||||
|
|
||||||
|
set <name> remoteControl .........<br><br>
|
||||||
|
|
||||||
<ul><code>
|
<ul><code>
|
||||||
3D => 3D Knopf<br>
|
3D_button => in 3D Modus schalten<br>
|
||||||
BLUE => Blau<br>
|
apps => apps anzeigen<br>
|
||||||
CANCEL => Cancel / Exit<br>
|
aspect => Aspekt aendern<br>
|
||||||
CHG_INPUT => AV<br>
|
AV => Eingang auf AV umschalten<br>
|
||||||
CH_DOWN => Kanal runter<br>
|
blue_button => blaue Taste<br>
|
||||||
CH_UP => Kanal hoch<br>
|
cancel => loeschen<br>
|
||||||
D0 => Ziffer 0<br>
|
channel_down => Kanal nach unten schalten<br>
|
||||||
D1 => Ziffer 1<br>
|
channel_up => Kanal nach oben schalten<br>
|
||||||
D2 => Ziffer 2<br>
|
digit_0 => Zahl 0<br>
|
||||||
D3 => Ziffer 3<br>
|
digit_1 => Zahl 1<br>
|
||||||
D4 => Ziffer 4<br>
|
digit_2 => Zahl 2<br>
|
||||||
D5 => Ziffer 5<br>
|
digit_3 => Zahl 3<br>
|
||||||
D6 => Ziffer 6<br>
|
digit_4 => Zahl 4<br>
|
||||||
D7 => Ziffer 7<br>
|
digit_5 => Zahl 5<br>
|
||||||
D8 => Ziffer 8<br>
|
digit_6 => Zahl 6<br>
|
||||||
D9 => Ziffer 9<br>
|
digit_7 => Zahl 7<br>
|
||||||
DISP_MODE => Anzeigemodus / Seitenverhältnis<br>
|
digit_8 => Zahl 8<br>
|
||||||
DOWN => Navigieren runter<br>
|
digit_9 => Zahl 9<br>
|
||||||
ENTER => Navigieren enter<br>
|
display_mode <br>
|
||||||
EPG => Guide / EPG<br>
|
down => Pfeil nach unten<br>
|
||||||
FF => Vorspulen<br>
|
enter => Eingabe<br>
|
||||||
GREEN => Grün<br>
|
EPG => elektronische Programmzeitschrift<br>
|
||||||
HOLD => Bild einfrieren<br>
|
exit => beenden<br>
|
||||||
INDEX => TTV index<br>
|
fast_forward => vorspulen<br>
|
||||||
INFO => Info<br>
|
favorite => Favoriten<br>
|
||||||
INTERNET => VIERA connect<br>
|
game <br>
|
||||||
LEFT => Navigieren links<br>
|
green_button => gruene Taste<br>
|
||||||
MENU => Menü<br>
|
guide => Programmzeitschrift<br>
|
||||||
MUTE => Mute<br>
|
HDMI_1 => Eingang HDMI 1<br>
|
||||||
PAUSE => Pause<br>
|
HDMI_2 => Eingang HDMI 2<br>
|
||||||
PLAY => Play<br>
|
HDMI_3 => Eingang HDMI 3<br>
|
||||||
POWER => Power off<br>
|
HDMI_4 => Eingang HDMI 4<br>
|
||||||
P_NR => P-NR (Geräuschreduzierung)<br>
|
hold => <br>
|
||||||
REC => Aufnehmen<br>
|
home => Startbildschirm<br>
|
||||||
RED => Rot<br>
|
index => Index<br>
|
||||||
RETURN => Enter<br>
|
info => Info<br>
|
||||||
REW => Zurückspulen<br>
|
last_view => letzte Ansicht<br>
|
||||||
RIGHT => Navigieren Rechts<br>
|
left => Pfeil nach unten<br>
|
||||||
R_TUNE => Vermutlich die selbe Funktion wie INFO<br>
|
menu => Menue<br>
|
||||||
SD_CARD => SD-card<br>
|
mute => Ton aus<br>
|
||||||
SKIP_NEXT => Skip next<br>
|
noise_reduction => Rauschreduzierung<br>
|
||||||
SKIP_PREV => Skip previous<br>
|
on_off => Ein- / Ausschalter<br>
|
||||||
STOP => Stop<br>
|
option => Option<br>
|
||||||
STTL => Untertitel<br>
|
pause => Pause<br>
|
||||||
SUBMENU => Option<br>
|
play => Abspielen<br>
|
||||||
TEXT => TeleText<br>
|
program => Programm<br>
|
||||||
TV => TV<br>
|
record => Aufnahme<br>
|
||||||
UP => Navigieren Hoch<br>
|
red_button => rote Taste<br>
|
||||||
VIERA_LINK => VIERA link<br>
|
return => zurueck<br>
|
||||||
VOLDOWN => Lauter<br>
|
rewind => zurueckspulen<br>
|
||||||
VOLUP => Leiser<br>
|
right => Pfeil nach rechts<br>
|
||||||
VTOOLS => VIERA tools<br>
|
SD_card => => SD Karte<br>
|
||||||
YELLOW => Gelb<br>
|
skip_next => springe vorwaerts<br>
|
||||||
|
skip_previous => springe zurueck<br>
|
||||||
|
stop => Stop<br>
|
||||||
|
subtitle => Untertitel<br>
|
||||||
|
tune => Suchlauf<br>
|
||||||
|
TV => TV<br>
|
||||||
|
up => Pfeil nach oben<br>
|
||||||
|
videotext => Videotext<br>
|
||||||
|
VIERA_connect <br>
|
||||||
|
VIERA_link <br>
|
||||||
|
VIERA_tools <br>
|
||||||
|
volume_down => Lautstaerke leiser<br>
|
||||||
|
volume_up => Lautstaerke lauter<br>
|
||||||
|
yellow_button => gelbe Taste<br>
|
||||||
|
</code></ul>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
set <name> remoteControlApp ......<br><br>
|
||||||
|
|
||||||
|
<ul><code>
|
||||||
|
netflix <br>
|
||||||
|
youtube <br>
|
||||||
|
shoutcast <br>
|
||||||
|
calendar <br>
|
||||||
|
browser <br>
|
||||||
|
amazonprime <br>
|
||||||
|
iplayer <br>
|
||||||
|
bbc_iplayer <br>
|
||||||
|
itv <br>
|
||||||
|
all_4 <br>
|
||||||
|
demand_5 <br>
|
||||||
|
recorded_tv <br>
|
||||||
|
multi_window <br>
|
||||||
|
bbc_news <br>
|
||||||
|
bbc_sport <br>
|
||||||
|
weather <br>
|
||||||
|
developer <br>
|
||||||
|
|
||||||
</code></ul>
|
</code></ul>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|||||||
Reference in New Issue
Block a user