2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-21 07:56:03 +00:00

FRITZBOX: clean up

git-svn-id: https://svn.fhem.de/fhem/trunk@8843 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
tpoitzsch 2015-06-27 08:16:35 +00:00
parent ba62018312
commit a8407456c0

View File

@ -60,13 +60,13 @@ eval "use Data::Dumper;1" or $missingModulTR064 .= "Data::Dumper ";
sub FRITZBOX_Log($$$); sub FRITZBOX_Log($$$);
sub FRITZBOX_Init($); sub FRITZBOX_Init($);
sub FRITZBOX_Set_Cmd_Start($); sub FRITZBOX_Set_Cmd_Start($);
sub FRITZBOX_Exec($$); sub FRITZBOX_Shell_Exec($$);
sub FRITZBOX_Readout_Add_Reading ($$$$@); sub FRITZBOX_Readout_Add_Reading ($$$$@);
sub FRITZBOX_Readout_Process($$); sub FRITZBOX_Readout_Process($$);
sub FRITZBOX_SendMail($@); sub FRITZBOX_SendMail_Shell($@);
sub FRITZBOX_SetCustomerRingTone($@); sub FRITZBOX_SetCustomerRingTone($@);
sub FRITZBOX_SetMOH($@); sub FRITZBOX_SetMOH($@);
sub FRITZBOX_StartRadio_Telnet($@); sub FRITZBOX_StartRadio_Shell($@);
sub FRITZBOX_Wlan_Run($); sub FRITZBOX_Wlan_Run($);
sub FRITZBOX_Web_Query($$@); sub FRITZBOX_Web_Query($$@);
@ -333,15 +333,15 @@ sub FRITZBOX_Set($$@)
# . " convertMOH" # . " convertMOH"
# . " convertRingTone" # . " convertRingTone"
my $forceTelnet = AttrVal( $name, "forceTelnetConnection", 0 ); my $forceShell = (AttrVal( $name, "forceTelnetConnection", 0 ) == 1 || $hash->{REMOTE} == 0);
# set alarm # set alarm
if ( lc $cmd eq 'alarm') { if ( lc $cmd eq 'alarm') {
if ( int @val > 0 && $val[0] =~ /^(1|2|3)$/ ) { if ( int @val > 0 && $val[0] =~ /^(1|2|3)$/ ) {
Log3 $name, 3, "FRITZBOX: set $name $cmd ".join(" ", @val); Log3 $name, 3, "FRITZBOX: set $name $cmd ".join(" ", @val);
return FRITZBOX_Set_Alarm_Web ($hash, @val) return FRITZBOX_Set_Alarm_Web ($hash, @val)
unless $forceTelnet || $hash->{REMOTE} == 0; unless $forceShell;
return FRITZBOX_Set_Alarm_Telnet ($hash, @val); return FRITZBOX_Set_Alarm_Shell ($hash, @val);
} }
} }
@ -381,8 +381,8 @@ sub FRITZBOX_Set($$@)
my $state = $val[0]; my $state = $val[0];
$state =~ s/on/1/; $state =~ s/on/1/;
$state =~ s/off/0/; $state =~ s/off/0/;
if ($forceTelnet || $hash->{REMOTE} == 0) { # Telnet if ($forceShell) { # Shell
FRITZBOX_Exec( $hash, "ctlmgr_ctl w dect settings/enabled $state"); FRITZBOX_Shell_Exec( $hash, "ctlmgr_ctl w dect settings/enabled $state");
} }
else { #webcm else { #webcm
my @webCmdArray = ( ["dect:settings/enabled" => $state] ); my @webCmdArray = ( ["dect:settings/enabled" => $state] );
@ -399,8 +399,8 @@ sub FRITZBOX_Set($$@)
my $state = $val[1]; my $state = $val[1];
$state =~ s/on/1/; $state =~ s/on/1/;
$state =~ s/off/0/; $state =~ s/off/0/;
if ($forceTelnet || $hash->{REMOTE} == 0) { # Telnet if ($forceShell) { # Shell
FRITZBOX_Exec( $hash, "ctlmgr_ctl w telcfg settings/Diversity".( $val[0] - 1 )."/Active ".$state ); FRITZBOX_Shell_Exec( $hash, "ctlmgr_ctl w telcfg settings/Diversity".( $val[0] - 1 )."/Active ".$state );
} }
else { #webcm else { #webcm
my @webCmdArray = ( ["telcfg:settings/Diversity".( $val[0] - 1 )."/Active " => $state] ); my @webCmdArray = ( ["telcfg:settings/Diversity".( $val[0] - 1 )."/Active " => $state] );
@ -452,7 +452,7 @@ sub FRITZBOX_Set($$@)
} }
elsif ( lc $cmd eq 'sendmail') { elsif ( lc $cmd eq 'sendmail') {
Log3 $name, 3, "FRITZBOX: set $name $cmd ".join(" ", @val); Log3 $name, 3, "FRITZBOX: set $name $cmd ".join(" ", @val);
FRITZBOX_SendMail $hash, @val; FRITZBOX_SendMail_Shell $hash, @val;
return undef; return undef;
} }
elsif ( lc $cmd eq 'startradio') { elsif ( lc $cmd eq 'startradio') {
@ -460,8 +460,8 @@ sub FRITZBOX_Set($$@)
{ {
Log3 $name, 3, "FRITZBOX: set $name $cmd ".join(" ", @val); Log3 $name, 3, "FRITZBOX: set $name $cmd ".join(" ", @val);
return FRITZBOX_StartRadio_Web $hash, @val return FRITZBOX_StartRadio_Web $hash, @val
unless $forceTelnet || $hash->{REMOTE} == 0; unless $forceShell;
return FRITZBOX_StartRadio_Telnet $hash, @val; return FRITZBOX_StartRadio_Shell $hash, @val;
} }
} }
@ -471,8 +471,8 @@ sub FRITZBOX_Set($$@)
my $state = $val[1]; my $state = $val[1];
$state =~ s/on/1/; $state =~ s/on/1/;
$state =~ s/off/0/; $state =~ s/off/0/;
if ($forceTelnet || $hash->{REMOTE} == 0) { # Telnet if ($forceShell) { # Shell
FRITZBOX_Exec( $hash, "ctlmgr_ctl w tam settings/TAM".( $val[0] - 1 )."/Active ".$state ); FRITZBOX_Shell_Exec( $hash, "ctlmgr_ctl w tam settings/TAM".( $val[0] - 1 )."/Active ".$state );
} }
elsif ($hash->{SECPORT}) { #TR-064 elsif ($hash->{SECPORT}) { #TR-064
my @tr064CmdArray = (["X_AVM-DE_TAM:1", "x_tam", "SetEnable", "NewIndex", $val[0] - 1 , "NewEnable", $state]); my @tr064CmdArray = (["X_AVM-DE_TAM:1", "x_tam", "SetEnable", "NewIndex", $val[0] - 1 , "NewEnable", $state]);
@ -543,7 +543,7 @@ sub FRITZBOX_Get($@)
elsif( lc $cmd eq "shellcommand" && int @val && AttrVal( $name, "allowShellCommand", 0 ) ) { elsif( lc $cmd eq "shellcommand" && int @val && AttrVal( $name, "allowShellCommand", 0 ) ) {
Log3 $name, 3, "FRITZBOX: get $name $cmd ".join(" ", @val); Log3 $name, 3, "FRITZBOX: get $name $cmd ".join(" ", @val);
my $shCmd = join " ", @val; my $shCmd = join " ", @val;
return FRITZBOX_Exec( $hash, $shCmd ); return FRITZBOX_Shell_Exec( $hash, $shCmd );
} }
elsif( lc $cmd eq "tr064command" && AttrVal( $name, "allowTR064Command", 0 ) ) { elsif( lc $cmd eq "tr064command" && AttrVal( $name, "allowTR064Command", 0 ) ) {
# http://fritz.box:49000/tr64desc.xml # http://fritz.box:49000/tr64desc.xml
@ -589,7 +589,7 @@ sub FRITZBOX_Get($@)
} # end FRITZBOX_Get } # end FRITZBOX_Get
####################################################################### #######################################################################
sub FRITZBOX_Set_Alarm_Telnet($@) sub FRITZBOX_Set_Alarm_Shell($@)
{ {
my ($hash, @val) = @_; my ($hash, @val) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
@ -640,18 +640,18 @@ sub FRITZBOX_Set_Alarm_Telnet($@)
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
FRITZBOX_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Active ".$state ); FRITZBOX_Shell_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Active ".$state );
readingsBulkUpdate($hash,"alarm".$alarm."_state",$stateTxt); readingsBulkUpdate($hash,"alarm".$alarm."_state",$stateTxt);
if (defined $time) if (defined $time)
{ {
FRITZBOX_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Time ".$time ); FRITZBOX_Shell_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Time ".$time );
readingsBulkUpdate($hash,"alarm".$alarm."_time",$timeTxt); readingsBulkUpdate($hash,"alarm".$alarm."_time",$timeTxt);
} }
if (defined $day) if (defined $day)
{ {
FRITZBOX_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Weekdays ".$day ); FRITZBOX_Shell_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Weekdays ".$day );
chop $dayTxt; chop $dayTxt;
readingsBulkUpdate($hash,"alarm".$alarm."_wdays",$dayTxt); readingsBulkUpdate($hash,"alarm".$alarm."_wdays",$dayTxt);
} }
@ -661,7 +661,7 @@ sub FRITZBOX_Set_Alarm_Telnet($@)
FRITZBOX_Telnet_CloseCon( $hash ); FRITZBOX_Telnet_CloseCon( $hash );
return undef; return undef;
} # end FRITZBOX_Set_Alarm_Telnet } # end FRITZBOX_Set_Alarm_Shell
####################################################################### #######################################################################
sub FRITZBOX_Set_Alarm_Web($@) sub FRITZBOX_Set_Alarm_Web($@)
@ -764,8 +764,8 @@ sub FRITZBOX_Readout_Start($)
} }
my $runFn = "FRITZBOX_Readout_Run_Web"; my $runFn = "FRITZBOX_Readout_Run_Web";
$runFn = "FRITZBOX_Readout_Run_Telnet" $runFn = "FRITZBOX_Readout_Run_Shell"
if AttrVal( $name, "forceTelnetConnection", 0 ) == 1; if AttrVal( $name, "forceTelnetConnection", 0 ) == 1 || $hash->{REMOTE} == 0;
$hash->{helper}{READOUT_RUNNING_PID} = BlockingCall($runFn, $name, $hash->{helper}{READOUT_RUNNING_PID} = BlockingCall($runFn, $name,
"FRITZBOX_Readout_Done", 55, "FRITZBOX_Readout_Done", 55,
@ -776,7 +776,7 @@ sub FRITZBOX_Readout_Start($)
# Starts the data capturing via Telnet and sets the new timer # Starts the data capturing via Telnet and sets the new timer
####################################################################### #######################################################################
sub FRITZBOX_Readout_Run_Telnet($) sub FRITZBOX_Readout_Run_Shell($)
{ {
my ($name) = @_; my ($name) = @_;
my $hash = $defs{$name}; my $hash = $defs{$name};
@ -836,7 +836,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
# Execute commands # Execute commands
$resultArray = FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings); $resultArray = FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings);
return $name."|".encode_base64("Error|No STDOUT from shell command.","") return $name."|".encode_base64("Error|No STDOUT from shell command.","")
unless defined $resultArray; unless defined $resultArray;
@ -866,7 +866,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
$rName = sprintf ("radio%02d",$i); $rName = sprintf ("radio%02d",$i);
} }
$resultArray = FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings ); $resultArray = FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings );
my @radio = (); my @radio = ();
for (0..$radioCount-1) for (0..$radioCount-1)
@ -886,7 +886,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
push @readoutCmdArray, [ "", "ctlmgr_ctl r landevice settings/landevice".$_."/ip" ]; push @readoutCmdArray, [ "", "ctlmgr_ctl r landevice settings/landevice".$_."/ip" ];
push @readoutCmdArray, [ "", "ctlmgr_ctl r landevice settings/landevice".$_."/name" ]; push @readoutCmdArray, [ "", "ctlmgr_ctl r landevice settings/landevice".$_."/name" ];
} }
$resultArray = FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings ); $resultArray = FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings );
%landevice = (); %landevice = ();
for (0..$lanDeviceCount-1) for (0..$lanDeviceCount-1)
@ -921,7 +921,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
# 8 UserID # 8 UserID
push @readoutCmdArray, [ "", "ctlmgr_ctl r telcfg settings/Foncontrol/User".$_."/Id" ]; push @readoutCmdArray, [ "", "ctlmgr_ctl r telcfg settings/Foncontrol/User".$_."/Id" ];
} }
$resultArray = FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings ); $resultArray = FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings );
for (1..$dectCount) for (1..$dectCount)
{ {
@ -948,7 +948,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
# 3 Firmware Version # 3 Firmware Version
push @readoutCmdArray, [ "", "ctlmgr_ctl r dect settings/Handset".$_."/FWVersion" ]; push @readoutCmdArray, [ "", "ctlmgr_ctl r dect settings/Handset".$_."/FWVersion" ];
} }
$resultArray = FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings ); $resultArray = FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings );
# Handset and DECT user can be in different orders # Handset and DECT user can be in different orders
for (0..$handsetCount) for (0..$handsetCount)
@ -976,7 +976,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
push @readoutCmdArray, ["fon".$_, "ctlmgr_ctl r telcfg settings/MSN/Port".($_-1)."/Name" ]; push @readoutCmdArray, ["fon".$_, "ctlmgr_ctl r telcfg settings/MSN/Port".($_-1)."/Name" ];
push @readoutCmdArray, ["fon".$_."_out", "ctlmgr_ctl r telcfg settings/MSN/Port".($_-1)."/MSN" ]; push @readoutCmdArray, ["fon".$_."_out", "ctlmgr_ctl r telcfg settings/MSN/Port".($_-1)."/MSN" ];
} }
$resultArray = FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings ); $resultArray = FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings );
# Number of analog Fons # Number of analog Fons
for (1..$fonCount) for (1..$fonCount)
@ -997,7 +997,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
push @readoutCmdArray, ["", "ctlmgr_ctl r user settings/user".$_."/filter_profile_UID" ]; push @readoutCmdArray, ["", "ctlmgr_ctl r user settings/user".$_."/filter_profile_UID" ];
} }
#!!! Execute commands !!! #!!! Execute commands !!!
$resultArray = FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings ); $resultArray = FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings );
# Prepare new command array # Prepare new command array
@ -1048,7 +1048,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
} }
# !!! Execute commands !!! # !!! Execute commands !!!
FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings ); FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings );
} }
# WLAN # WLAN
@ -1080,7 +1080,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
push @readoutCmdArray, ["alarm".($_+1)."_wdays", "ctlmgr_ctl r telcfg settings/AlarmClock".$_."/Weekdays", "aldays" ]; push @readoutCmdArray, ["alarm".($_+1)."_wdays", "ctlmgr_ctl r telcfg settings/AlarmClock".$_."/Weekdays", "aldays" ];
} }
FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings ); FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings );
push @roReadings, "readoutTime|" . sprintf( "%.2f", time()-$startTime); push @roReadings, "readoutTime|" . sprintf( "%.2f", time()-$startTime);
$returnStr .= join('|', @roReadings ); $returnStr .= join('|', @roReadings );
@ -1091,7 +1091,7 @@ sub FRITZBOX_Readout_Run_Telnet($)
FRITZBOX_Log $hash, 5, "Handover (".length ($returnStr)."): ".$returnStr; FRITZBOX_Log $hash, 5, "Handover (".length ($returnStr)."): ".$returnStr;
return $name."|".encode_base64($returnStr,""); return $name."|".encode_base64($returnStr,"");
} # End FRITZBOX_Readout_Run_Telnet } # End FRITZBOX_Readout_Run_Shell
# http://fritz.box/cgi-bin/webcm?wlan:settings/guest_ap_enabled=1&sid= # http://fritz.box/cgi-bin/webcm?wlan:settings/guest_ap_enabled=1&sid=
#http://fritz.box/query.lua?sid=<enter_your_sid_here>&network=landevice:settings/landevice/list(name,ip,mac,UID,dhcp,wlan,ethernet,active,static_dhcp,manu_name,wakeup,deleteable,source,online,speed,wlan_UIDs,auto_wakeup,guest,url,wlan_station_type,vendorname,parentname,parentuid,ethernet_port,wlan_show_in_monitor,plc,ipv6_ifid,parental_control_abuse) #http://fritz.box/query.lua?sid=<enter_your_sid_here>&network=landevice:settings/landevice/list(name,ip,mac,UID,dhcp,wlan,ethernet,active,static_dhcp,manu_name,wakeup,deleteable,source,online,speed,wlan_UIDs,auto_wakeup,guest,url,wlan_station_type,vendorname,parentname,parentuid,ethernet_port,wlan_show_in_monitor,plc,ipv6_ifid,parental_control_abuse)
@ -1496,44 +1496,6 @@ sub FRITZBOX_Readout_Aborted($)
FRITZBOX_Log $hash, 1, $msg; FRITZBOX_Log $hash, 1, $msg;
} }
#######################################################################
sub FRITZBOX_Readout_Query($$$)
{
my ($hash, $readoutCmdArray, $roReadings) = @_;
my @cmdArray;
my $rValue;
my $rName;
my $rFormat;
my $count = int @{$readoutCmdArray} - 1;
for (0..$count)
{
push @cmdArray, $readoutCmdArray->[$_][1];
}
my $resultArray = FRITZBOX_Exec( $hash, \@cmdArray);
if (defined ($resultArray))
{
$count = int @{$resultArray} -1;
for (0..$count)
{
$rValue = $resultArray->[$_];
$rFormat = $readoutCmdArray->[$_][2];
$rFormat = "" unless defined $rFormat;
$rValue = FRITZBOX_Readout_Format ($hash, $rFormat, $rValue);
$rName = $readoutCmdArray->[$_][0];
if ($rName ne "")
{
FRITZBOX_Log $hash, 5, "$rName: $rValue";
push @{$roReadings}, $rName."|".$rValue;
}
}
}
@{$readoutCmdArray} = ();
return $resultArray;
}
####################################################################### #######################################################################
sub FRITZBOX_Readout_Format($$$) sub FRITZBOX_Readout_Format($$$)
{ {
@ -1673,7 +1635,7 @@ sub FRITZBOX_Set_Cmd_Start($)
return if exists $hash->{helper}{CMD_RUNNING_PID}; return if exists $hash->{helper}{CMD_RUNNING_PID};
my @val = split / /, $cmdBuffer[0]; my @val = split / /, $cmdBuffer[0];
my $forceTelnet = AttrVal( $name, "forceTelnetConnection", 0 ); my $forceShell = (AttrVal( $name, "forceTelnetConnection", 0 ) == 1 || $hash->{REMOTE} == 0);
# Preparing SET Call # Preparing SET Call
if ($val[0] eq "call") { if ($val[0] eq "call") {
@ -1684,7 +1646,7 @@ sub FRITZBOX_Set_Cmd_Start($)
$cmdBufferTimeout = time() + $timeout; $cmdBufferTimeout = time() + $timeout;
$handover = $name . "|" . join( "|", @val ); $handover = $name . "|" . join( "|", @val );
$cmdFunction = "FRITZBOX_Call_Run_Web"; $cmdFunction = "FRITZBOX_Call_Run_Web";
$cmdFunction = "FRITZBOX_Call_Run_Telnet" if $forceTelnet || $hash->{REMOTE} == 0; $cmdFunction = "FRITZBOX_Call_Run_Shell" if $forceShell;
} }
# Preparing SET guestWLAN # Preparing SET guestWLAN
elsif ($val[0] eq "guestwlan") { elsif ($val[0] eq "guestwlan") {
@ -1693,7 +1655,7 @@ sub FRITZBOX_Set_Cmd_Start($)
$cmdBufferTimeout = time() + $timeout; $cmdBufferTimeout = time() + $timeout;
$handover = $name . "|" . join( "|", @val ); $handover = $name . "|" . join( "|", @val );
$cmdFunction = "FRITZBOX_GuestWlan_Run_Web"; $cmdFunction = "FRITZBOX_GuestWlan_Run_Web";
$cmdFunction = "FRITZBOX_GuestWlan_Run_Telnet" if $forceTelnet || $hash->{REMOTE} == 0; $cmdFunction = "FRITZBOX_GuestWlan_Run_Shell" if $forceShell;
} }
# Preparing SET RING # Preparing SET RING
elsif ($val[0] eq "ring") { elsif ($val[0] eq "ring") {
@ -1706,7 +1668,7 @@ sub FRITZBOX_Set_Cmd_Start($)
$cmdBufferTimeout = time() + $timeout; $cmdBufferTimeout = time() + $timeout;
$handover = $name . "|" . join( "|", @val ); $handover = $name . "|" . join( "|", @val );
$cmdFunction = "FRITZBOX_Ring_Run_Web"; $cmdFunction = "FRITZBOX_Ring_Run_Web";
$cmdFunction = "FRITZBOX_Ring_Run_Telnet" if $forceTelnet || $hash->{REMOTE} == 0; $cmdFunction = "FRITZBOX_Ring_Run_Shell" if $forceShell;
} }
# Preparing SET WLAN # Preparing SET WLAN
elsif ($val[0] eq "wlan") { elsif ($val[0] eq "wlan") {
@ -1715,7 +1677,7 @@ sub FRITZBOX_Set_Cmd_Start($)
$cmdBufferTimeout = time() + $timeout; $cmdBufferTimeout = time() + $timeout;
$handover = $name . "|" . join( "|", @val ); $handover = $name . "|" . join( "|", @val );
$cmdFunction = "FRITZBOX_Wlan_Run_Web"; $cmdFunction = "FRITZBOX_Wlan_Run_Web";
$cmdFunction = "FRITZBOX_Wlan_Run_Telnet" if $forceTelnet || $hash->{REMOTE} == 0; $cmdFunction = "FRITZBOX_Wlan_Run_Shell" if $forceShell;
} }
# No valid set operation # No valid set operation
else { else {
@ -1774,7 +1736,7 @@ sub FRITZBOX_Set_Cmd_Aborted($)
} }
####################################################################### #######################################################################
sub FRITZBOX_Call_Run_Telnet($) sub FRITZBOX_Call_Run_Shell($)
{ {
my ($string) = @_; my ($string) = @_;
my ($name, @val) = split "\\|", $string; my ($name, @val) = split "\\|", $string;
@ -1881,7 +1843,7 @@ sub FRITZBOX_Call_Run_Telnet($)
push @cmdArray, '[ -f "'.$mohUpload.'" ] && echo 1 || echo 0'; push @cmdArray, '[ -f "'.$mohUpload.'" ] && echo 1 || echo 0';
push @cmdArray, '[ -e /var/flash/fx_moh ] && echo 1 || echo 0'; push @cmdArray, '[ -e /var/flash/fx_moh ] && echo 1 || echo 0';
# Execute 1st command array # Execute 1st command array
$result = FRITZBOX_Exec ( $hash, \@cmdArray ); $result = FRITZBOX_Shell_Exec ( $hash, \@cmdArray );
return "$name|0|Could not access '$ttsLink'" return "$name|0|Could not access '$ttsLink'"
unless $result->[4] eq "1"; unless $result->[4] eq "1";
return "$name|0|Could locate '/var/flash/fx_moh'" return "$name|0|Could locate '/var/flash/fx_moh'"
@ -1892,12 +1854,12 @@ sub FRITZBOX_Call_Run_Telnet($)
push @cmdArray, 'ffmpegconv -i "'.$mohUpload.'" -o "'.$mohNew.'" --limit 32 --type 6'; push @cmdArray, 'ffmpegconv -i "'.$mohUpload.'" -o "'.$mohNew.'" --limit 32 --type 6';
push @cmdArray, '[ -f "'.$mohNew.'" ] && echo 1 || echo 0'; push @cmdArray, '[ -f "'.$mohNew.'" ] && echo 1 || echo 0';
# Execute 2nd command array # Execute 2nd command array
$result = FRITZBOX_Exec ( $hash, \@cmdArray ); $result = FRITZBOX_Shell_Exec ( $hash, \@cmdArray );
return "Could not convert '$ttsLink'" return "Could not convert '$ttsLink'"
unless $result->[2] eq "1"; unless $result->[2] eq "1";
#Execute 3rd command array #Execute 3rd command array
FRITZBOX_Exec( $hash, \@cmdArray ); FRITZBOX_Shell_Exec( $hash, \@cmdArray );
#Prepare 4th command array #Prepare 4th command array
push @cmdArray, 'cat /var/flash/fx_moh >"'.$mohOld.'"'; push @cmdArray, 'cat /var/flash/fx_moh >"'.$mohOld.'"';
@ -1906,7 +1868,7 @@ sub FRITZBOX_Call_Run_Telnet($)
push @cmdArray, 'rm "'.$mohUpload.'"'; push @cmdArray, 'rm "'.$mohUpload.'"';
push @cmdArray, 'rm "'.$mohNew.'"'; push @cmdArray, 'rm "'.$mohNew.'"';
# Execute 4th command array # Execute 4th command array
FRITZBOX_Exec ( $hash, \@cmdArray ); FRITZBOX_Shell_Exec ( $hash, \@cmdArray );
} }
#Preparing 4th command array #Preparing 4th command array
@ -1929,13 +1891,13 @@ sub FRITZBOX_Call_Run_Telnet($)
} }
# Execute command array # Execute command array
FRITZBOX_Exec( $hash, \@cmdArray ); FRITZBOX_Shell_Exec( $hash, \@cmdArray );
FRITZBOX_Telnet_CloseCon( $hash ); FRITZBOX_Telnet_CloseCon( $hash );
return $name."|1|Calling done"; return $name."|1|Calling done";
} # End FRITZBOX_Call_Run_Telnet } # End FRITZBOX_Call_Run_Shell
####################################################################### #######################################################################
sub FRITZBOX_Call_Run_Web($) sub FRITZBOX_Call_Run_Web($)
@ -1948,7 +1910,7 @@ sub FRITZBOX_Call_Run_Web($)
unless int @val; unless int @val;
my $result; my $result;
my @telnetCmdArray; my @shellCmdArray;
my @webCmdArray; my @webCmdArray;
my @tr064CmdArray; my @tr064CmdArray;
my $duration = 60; my $duration = 60;
@ -2021,44 +1983,44 @@ sub FRITZBOX_Call_Run_Web($)
return "$name|0|$result" return "$name|0|$result"
if $result; if $result;
@telnetCmdArray = (); @shellCmdArray = ();
# Creation fhemRadioStation for ttsLink # Creation fhemRadioStation for ttsLink
if ($ttsLink) { if ($ttsLink) {
#Preparing 1st command array #Preparing 1st command array
push @telnetCmdArray, '[ -f "'.$mohUpload.'" ] && rm "'.$mohUpload.'"'; push @shellCmdArray, '[ -f "'.$mohUpload.'" ] && rm "'.$mohUpload.'"';
push @telnetCmdArray, '[ -f "'.$mohOld.'" ] && rm "'.$mohOld.'"'; push @shellCmdArray, '[ -f "'.$mohOld.'" ] && rm "'.$mohOld.'"';
push @telnetCmdArray, '[ -f "'.$mohNew.'" ] && rm "'.$mohNew.'"'; push @shellCmdArray, '[ -f "'.$mohNew.'" ] && rm "'.$mohNew.'"';
push @telnetCmdArray, 'wget -U Mozilla -O "'.$mohUpload.'" "'.$ttsLink.'"'; push @shellCmdArray, 'wget -U Mozilla -O "'.$mohUpload.'" "'.$ttsLink.'"';
push @telnetCmdArray, '[ -f "'.$mohUpload.'" ] && echo 1 || echo 0'; push @shellCmdArray, '[ -f "'.$mohUpload.'" ] && echo 1 || echo 0';
push @telnetCmdArray, '[ -e /var/flash/fx_moh ] && echo 1 || echo 0'; push @shellCmdArray, '[ -e /var/flash/fx_moh ] && echo 1 || echo 0';
# Execute 1st command array # Execute 1st command array
$result = FRITZBOX_Exec ( $hash, \@telnetCmdArray ); $result = FRITZBOX_Shell_Exec ( $hash, \@shellCmdArray );
return "$name|0|Could not access '$ttsLink'" return "$name|0|Could not access '$ttsLink'"
unless $result->[4] eq "1"; unless $result->[4] eq "1";
return "$name|0|Could locate '/var/flash/fx_moh'" return "$name|0|Could locate '/var/flash/fx_moh'"
unless $result->[5] eq "1"; unless $result->[5] eq "1";
#Prepare 2nd command array #Prepare 2nd command array
push @telnetCmdArray, 'if [ ! -f "/var/tmp/ffmpeg_mp3.tables" ]; then playerd_tables; fi'; push @shellCmdArray, 'if [ ! -f "/var/tmp/ffmpeg_mp3.tables" ]; then playerd_tables; fi';
push @telnetCmdArray, 'ffmpegconv -i "'.$mohUpload.'" -o "'.$mohNew.'" --limit 32 --type 6'; push @shellCmdArray, 'ffmpegconv -i "'.$mohUpload.'" -o "'.$mohNew.'" --limit 32 --type 6';
push @telnetCmdArray, '[ -f "'.$mohNew.'" ] && echo 1 || echo 0'; push @shellCmdArray, '[ -f "'.$mohNew.'" ] && echo 1 || echo 0';
# Execute 2nd command array # Execute 2nd command array
$result = FRITZBOX_Exec ( $hash, \@telnetCmdArray ); $result = FRITZBOX_Shell_Exec ( $hash, \@shellCmdArray );
return "Could not convert '$ttsLink'" return "Could not convert '$ttsLink'"
unless $result->[2] eq "1"; unless $result->[2] eq "1";
#Execute 3rd command array #Execute 3rd command array
FRITZBOX_Exec( $hash, \@telnetCmdArray ); FRITZBOX_Shell_Exec( $hash, \@shellCmdArray );
#Prepare 4th command array #Prepare 4th command array
push @telnetCmdArray, 'cat /var/flash/fx_moh >"'.$mohOld.'"'; push @shellCmdArray, 'cat /var/flash/fx_moh >"'.$mohOld.'"';
push @telnetCmdArray, 'cat "'.$mohNew.'" >/var/flash/fx_moh'; push @shellCmdArray, 'cat "'.$mohNew.'" >/var/flash/fx_moh';
push @telnetCmdArray, 'killall -sigusr1 telefon'; push @shellCmdArray, 'killall -sigusr1 telefon';
push @telnetCmdArray, 'rm "'.$mohUpload.'"'; push @shellCmdArray, 'rm "'.$mohUpload.'"';
push @telnetCmdArray, 'rm "'.$mohNew.'"'; push @shellCmdArray, 'rm "'.$mohNew.'"';
# Execute 4th command array # Execute 4th command array
FRITZBOX_Exec ( $hash, \@telnetCmdArray ); FRITZBOX_Shell_Exec ( $hash, \@shellCmdArray );
} }
@ -2092,13 +2054,13 @@ sub FRITZBOX_Call_Run_Web($)
#Preparing 7th command array to reset everything #Preparing 7th command array to reset everything
if ($ttsLink) { if ($ttsLink) {
push @telnetCmdArray, 'cat "'.$mohOld.'" >/var/flash/fx_moh'; push @shellCmdArray, 'cat "'.$mohOld.'" >/var/flash/fx_moh';
push @telnetCmdArray, 'killall -sigusr1 telefon'; push @shellCmdArray, 'killall -sigusr1 telefon';
push @telnetCmdArray, 'rm "'.$mohOld.'"'; push @shellCmdArray, 'rm "'.$mohOld.'"';
} }
# Execute command array # Execute command array
FRITZBOX_Exec( $hash, \@telnetCmdArray ); FRITZBOX_Shell_Exec( $hash, \@shellCmdArray );
FRITZBOX_Telnet_CloseCon( $hash ); FRITZBOX_Telnet_CloseCon( $hash );
@ -2107,7 +2069,7 @@ sub FRITZBOX_Call_Run_Web($)
} # End FRITZBOX_Call_Run_Web } # End FRITZBOX_Call_Run_Web
####################################################################### #######################################################################
sub FRITZBOX_GuestWlan_Run_Telnet($) sub FRITZBOX_GuestWlan_Run_Shell($)
{ {
my ($string) = @_; my ($string) = @_;
my ($name, @val) = split "\\|", $string; my ($name, @val) = split "\\|", $string;
@ -2127,7 +2089,7 @@ sub FRITZBOX_GuestWlan_Run_Telnet($)
my $returnStr; my $returnStr;
$result = FRITZBOX_Exec $hash, "[ -n `ctlmgr_ctl r wlan settings/guest_pskvalue` ] && echo 1 || echo 0"; $result = FRITZBOX_Shell_Exec $hash, "[ -n `ctlmgr_ctl r wlan settings/guest_pskvalue` ] && echo 1 || echo 0";
return "$name|0|Error: No password defined for guest WLAN." return "$name|0|Error: No password defined for guest WLAN."
unless $result; unless $result;
@ -2147,7 +2109,7 @@ sub FRITZBOX_GuestWlan_Run_Telnet($)
push @readoutCmdArray, [ "box_guestWlanRemain", "ctlmgr_ctl r wlan settings/guest_time_remain", ]; push @readoutCmdArray, [ "box_guestWlanRemain", "ctlmgr_ctl r wlan settings/guest_time_remain", ];
# Execute commands # Execute commands
FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings); FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings);
FRITZBOX_Telnet_CloseCon ( $hash ); FRITZBOX_Telnet_CloseCon ( $hash );
@ -2156,7 +2118,7 @@ sub FRITZBOX_GuestWlan_Run_Telnet($)
FRITZBOX_Log $hash, 5, "Handover: ".$returnStr; FRITZBOX_Log $hash, 5, "Handover: ".$returnStr;
return $name."|2|".encode_base64($returnStr,""); return $name."|2|".encode_base64($returnStr,"");
} # end FRITZBOX_GuestWlan_Run_Telnet } # end FRITZBOX_GuestWlan_Run_Shell
####################################################################### #######################################################################
sub FRITZBOX_GuestWlan_Run_Web($) sub FRITZBOX_GuestWlan_Run_Web($)
@ -2174,7 +2136,7 @@ sub FRITZBOX_GuestWlan_Run_Web($)
$state =~ s/on/1/; $state =~ s/on/1/;
$state =~ s/off/0/; $state =~ s/off/0/;
# $result = FRITZBOX_Exec $hash, "[ -n `ctlmgr_ctl r wlan settings/guest_pskvalue` ] && echo 1 || echo 0"; # $result = FRITZBOX_Shell_Exec $hash, "[ -n `ctlmgr_ctl r wlan settings/guest_pskvalue` ] && echo 1 || echo 0";
# return "$name|0|Error: No password defined for guest WLAN." # return "$name|0|Error: No password defined for guest WLAN."
# unless $result; # unless $result;
@ -2229,7 +2191,7 @@ sub FRITZBOX_GuestWlan_Run_Web($)
} # end FRITZBOX_GuestWlan_Run_Web } # end FRITZBOX_GuestWlan_Run_Web
####################################################################### #######################################################################
sub FRITZBOX_Wlan_Run_Telnet($) sub FRITZBOX_Wlan_Run_Shell($)
{ {
my ($string) = @_; my ($string) = @_;
my ($name, @val) = split "\\|", $string; my ($name, @val) = split "\\|", $string;
@ -2260,7 +2222,7 @@ sub FRITZBOX_Wlan_Run_Telnet($)
push @readoutCmdArray, [ "box_guestWlanRemain", "ctlmgr_ctl r wlan settings/guest_time_remain", ]; push @readoutCmdArray, [ "box_guestWlanRemain", "ctlmgr_ctl r wlan settings/guest_time_remain", ];
# Execute commands # Execute commands
FRITZBOX_Readout_Query( $hash, \@readoutCmdArray, \@roReadings); FRITZBOX_Shell_Query( $hash, \@readoutCmdArray, \@roReadings);
FRITZBOX_Telnet_CloseCon ( $hash ); FRITZBOX_Telnet_CloseCon ( $hash );
@ -2269,7 +2231,7 @@ sub FRITZBOX_Wlan_Run_Telnet($)
FRITZBOX_Log $hash, 5, "Handover: ".$returnStr; FRITZBOX_Log $hash, 5, "Handover: ".$returnStr;
return $name."|2|".encode_base64($returnStr,""); return $name."|2|".encode_base64($returnStr,"");
} # end FRITZBOX_Wlan_Run_Telnet } # end FRITZBOX_Wlan_Run_Shell
####################################################################### #######################################################################
sub FRITZBOX_Wlan_Run_Web($) sub FRITZBOX_Wlan_Run_Web($)
@ -2325,7 +2287,7 @@ sub FRITZBOX_Wlan_Run_Web($)
} # end FRITZBOX_Wlan_Run_Web } # end FRITZBOX_Wlan_Run_Web
####################################################################### #######################################################################
sub FRITZBOX_Ring_Run_Telnet($) sub FRITZBOX_Ring_Run_Shell($)
{ {
my ($string) = @_; my ($string) = @_;
my ($name, @val) = split "\\|", $string; my ($name, @val) = split "\\|", $string;
@ -2489,7 +2451,7 @@ sub FRITZBOX_Ring_Run_Telnet($)
push @cmdArray, "ctlmgr_ctl w configd settings/WEBRADIO".$fhemRadioStation."/Name FHEM"; push @cmdArray, "ctlmgr_ctl w configd settings/WEBRADIO".$fhemRadioStation."/Name FHEM";
push @cmdArray, "ctlmgr_ctl w configd settings/WEBRADIO".$fhemRadioStation."/Bitmap 1023"; push @cmdArray, "ctlmgr_ctl w configd settings/WEBRADIO".$fhemRadioStation."/Bitmap 1023";
#Execute command array #Execute command array
FRITZBOX_Exec( $hash, \@cmdArray ) FRITZBOX_Shell_Exec( $hash, \@cmdArray )
} }
#Preparing 2nd command array #Preparing 2nd command array
@ -2531,7 +2493,7 @@ sub FRITZBOX_Ring_Run_Telnet($)
if $ttsLink; if $ttsLink;
#Execute command array #Execute command array
$result = FRITZBOX_Exec( $hash, \@cmdArray ) $result = FRITZBOX_Shell_Exec( $hash, \@cmdArray )
if int( @cmdArray ) > 0; if int( @cmdArray ) > 0;
$intNo =~ s/,/#/g; $intNo =~ s/,/#/g;
@ -2571,12 +2533,12 @@ sub FRITZBOX_Ring_Run_Telnet($)
} }
# Execute command array # Execute command array
FRITZBOX_Exec( $hash, \@cmdArray ); FRITZBOX_Shell_Exec( $hash, \@cmdArray );
FRITZBOX_Telnet_CloseCon( $hash ); FRITZBOX_Telnet_CloseCon( $hash );
return $name."|1|Ringing done"; return $name."|1|Ringing done";
} # End FRITZBOX_Ring_Run_Telnet } # End FRITZBOX_Ring_Run_Shell
####################################################################### #######################################################################
sub FRITZBOX_Ring_Run_Web($) sub FRITZBOX_Ring_Run_Web($)
@ -2873,12 +2835,12 @@ sub FRITZBOX_SetMOH($@)
if (lc $type eq lc $mohtype[0] || $type eq "0") if (lc $type eq lc $mohtype[0] || $type eq "0")
{ {
FRITZBOX_Exec ($hash, 'ctlmgr_ctl w telcfg settings/MOHType 0'); FRITZBOX_Shell_Exec ($hash, 'ctlmgr_ctl w telcfg settings/MOHType 0');
return 0; return 0;
} }
elsif (lc $type eq lc $mohtype[1] || $type eq "1") elsif (lc $type eq lc $mohtype[1] || $type eq "1")
{ {
FRITZBOX_Exec ($hash, 'ctlmgr_ctl w telcfg settings/MOHType 1'); FRITZBOX_Shell_Exec ($hash, 'ctlmgr_ctl w telcfg settings/MOHType 1');
return 1; return 1;
} }
return "Error: Unvalid parameter '$type'" unless lc $type eq lc $mohtype[2] || $type eq "2"; return "Error: Unvalid parameter '$type'" unless lc $type eq lc $mohtype[2] || $type eq "2";
@ -2937,7 +2899,7 @@ sub FRITZBOX_SetMOH($@)
} }
push @cmdArray, '[ -f "'.$uploadFile.'" ] && echo 1 || echo 0'; push @cmdArray, '[ -f "'.$uploadFile.'" ] && echo 1 || echo 0';
# Execute command array # Execute command array
$result = FRITZBOX_Exec ( $hash, \@cmdArray ); $result = FRITZBOX_Shell_Exec ( $hash, \@cmdArray );
return "Could not access '$inFile'" return "Could not access '$inFile'"
unless $result->[3] eq "1"; unless $result->[3] eq "1";
@ -2946,7 +2908,7 @@ sub FRITZBOX_SetMOH($@)
push @cmdArray, 'ffmpegconv -i "'.$uploadFile.'" -o "'.$mohFile.'" --limit 32 --type 6'; push @cmdArray, 'ffmpegconv -i "'.$uploadFile.'" -o "'.$mohFile.'" --limit 32 --type 6';
push @cmdArray, '[ -f "'.$mohFile.'" ] && echo 1 || echo 0'; push @cmdArray, '[ -f "'.$mohFile.'" ] && echo 1 || echo 0';
# Execute 2nd command array # Execute 2nd command array
$result = FRITZBOX_Exec ( $hash, \@cmdArray ); $result = FRITZBOX_Shell_Exec ( $hash, \@cmdArray );
return "Could not convert '$inFile'" return "Could not convert '$inFile'"
unless $result->[2] eq "1"; unless $result->[2] eq "1";
@ -2956,7 +2918,7 @@ sub FRITZBOX_SetMOH($@)
push @cmdArray, 'rm "'.$uploadFile.'"'; push @cmdArray, 'rm "'.$uploadFile.'"';
push @cmdArray, 'rm "'.$mohFile.'"'; push @cmdArray, 'rm "'.$mohFile.'"';
# Execute 3rd command array # Execute 3rd command array
$result = FRITZBOX_Exec ( $hash, \@cmdArray ); $result = FRITZBOX_Shell_Exec ( $hash, \@cmdArray );
FRITZBOX_Telnet_CloseCon( $hash ); FRITZBOX_Telnet_CloseCon( $hash );
return 2; return 2;
@ -3008,7 +2970,7 @@ sub FRITZBOX_SetCustomerRingTone($@)
$result = FRITZBOX_Telnet_OpenCon( $hash ); $result = FRITZBOX_Telnet_OpenCon( $hash );
return $result if $result; return $result if $result;
FRITZBOX_Exec ($hash, \@cmdArray); FRITZBOX_Shell_Exec ($hash, \@cmdArray);
FRITZBOX_Telnet_CloseCon( $hash ); FRITZBOX_Telnet_CloseCon( $hash );
@ -3041,7 +3003,7 @@ sub FRITZBOX_ConvertMOH ($@)
my $outFile = $inFile; my $outFile = $inFile;
$outFile = substr($inFile,0,-4) $outFile = substr($inFile,0,-4)
if ($inFile =~ /\.(mp3|wav)$/i); if ($inFile =~ /\.(mp3|wav)$/i);
my $returnStr = FRITZBOX_Exec ($hash my $returnStr = FRITZBOX_Shell_Exec ($hash
, 'ffmpegconv -i "'.$inFile.'" -o "'.$outFile.'.moh" --limit 32 --type 6'); , 'ffmpegconv -i "'.$inFile.'" -o "'.$outFile.'.moh" --limit 32 --type 6');
return $returnStr; return $returnStr;
} # end FRITZBOX_ConvertMOH } # end FRITZBOX_ConvertMOH
@ -3072,13 +3034,13 @@ sub FRITZBOX_ConvertRingTone ($@)
my $outFile = $inFile; my $outFile = $inFile;
$outFile = substr($inFile,0,-4) $outFile = substr($inFile,0,-4)
if ($inFile =~ /\.(mp3|wav)$/i); if ($inFile =~ /\.(mp3|wav)$/i);
my $returnStr = FRITZBOX_Exec ($hash my $returnStr = FRITZBOX_Shell_Exec ($hash
, 'picconv.sh "file://'.$inFile.'" "'.$outFile.'.g722" ringtonemp3'); , 'picconv.sh "file://'.$inFile.'" "'.$outFile.'.g722" ringtonemp3');
return $returnStr; return $returnStr;
} # end FRITZBOX_ConvertRingTone } # end FRITZBOX_ConvertRingTone
####################################################################### #######################################################################
sub FRITZBOX_SendMail($@) sub FRITZBOX_SendMail_Shell($@)
{ {
my ($hash,@val) = @_; my ($hash,@val) = @_;
my $lastField; my $lastField;
@ -3127,13 +3089,13 @@ sub FRITZBOX_SendMail($@)
push @cmdArray, "rm /var/tmp/fhem_nachricht.txt" push @cmdArray, "rm /var/tmp/fhem_nachricht.txt"
if $field{body}; if $field{body};
FRITZBOX_Exec( $hash, \@cmdArray ); FRITZBOX_Shell_Exec( $hash, \@cmdArray );
return undef; return undef;
} }
####################################################################### #######################################################################
sub FRITZBOX_StartRadio_Telnet($@) sub FRITZBOX_StartRadio_Shell($@)
{ {
my ($hash, @val) = @_; my ($hash, @val) = @_;
my @cmdArray; my @cmdArray;
@ -3181,7 +3143,7 @@ sub FRITZBOX_StartRadio_Telnet($@)
my $userNo = $intNo-609; my $userNo = $intNo-609;
push @cmdArray, "ctlmgr_ctl r telcfg settings/Foncontrol/User".$userNo."/IntRingTone"; push @cmdArray, "ctlmgr_ctl r telcfg settings/Foncontrol/User".$userNo."/IntRingTone";
push @cmdArray, "ctlmgr_ctl r telcfg settings/Foncontrol/User".$userNo."/RadioRingID"; push @cmdArray, "ctlmgr_ctl r telcfg settings/Foncontrol/User".$userNo."/RadioRingID";
$result = FRITZBOX_Exec( $hash, \@cmdArray ); $result = FRITZBOX_Shell_Exec( $hash, \@cmdArray );
my $curRingTone = $result->[0]; my $curRingTone = $result->[0];
my $curRadioStation = $result->[1]; my $curRadioStation = $result->[1];
@ -3196,7 +3158,7 @@ sub FRITZBOX_StartRadio_Telnet($@)
if defined $radioStation; if defined $radioStation;
# Execute command array # Execute command array
FRITZBOX_Exec( $hash, \@cmdArray ); FRITZBOX_Shell_Exec( $hash, \@cmdArray );
FRITZBOX_Telnet_CloseCon( $hash ); FRITZBOX_Telnet_CloseCon( $hash );
@ -3289,9 +3251,47 @@ sub FRITZBOX_StartRadio_Web($@)
#/usr/bin/pbd --set-ringtone-url --book="255" --id="612" --url="file:///var/InternerSpeicher/claydermann.g722" --name="Claydermann" #/usr/bin/pbd --set-ringtone-url --book="255" --id="612" --url="file:///var/InternerSpeicher/claydermann.g722" --name="Claydermann"
# /usr/bin/moh_upload # /usr/bin/moh_upload
#######################################################################
sub FRITZBOX_Shell_Query($$$)
{
my ($hash, $readoutCmdArray, $roReadings) = @_;
my @cmdArray;
my $rValue;
my $rName;
my $rFormat;
my $count = int @{$readoutCmdArray} - 1;
for (0..$count)
{
push @cmdArray, $readoutCmdArray->[$_][1];
}
my $resultArray = FRITZBOX_Shell_Exec( $hash, \@cmdArray);
if (defined ($resultArray))
{
$count = int @{$resultArray} -1;
for (0..$count)
{
$rValue = $resultArray->[$_];
$rFormat = $readoutCmdArray->[$_][2];
$rFormat = "" unless defined $rFormat;
$rValue = FRITZBOX_Readout_Format ($hash, $rFormat, $rValue);
$rName = $readoutCmdArray->[$_][0];
if ($rName ne "")
{
FRITZBOX_Log $hash, 5, "$rName: $rValue";
push @{$roReadings}, $rName."|".$rValue;
}
}
}
@{$readoutCmdArray} = ();
return $resultArray;
}
# Executed the command on the FritzBox Shell (remote or local) # Executed the command on the FritzBox Shell (remote or local)
############################################ ############################################
sub FRITZBOX_Exec($$) sub FRITZBOX_Shell_Exec($$)
{ {
my ($hash, $cmd) = @_; my ($hash, $cmd) = @_;
my $openedTelnet = 0; my $openedTelnet = 0;
@ -3302,33 +3302,30 @@ sub FRITZBOX_Exec($$)
if (FRITZBOX_Telnet_OpenCon($hash)); if (FRITZBOX_Telnet_OpenCon($hash));
$openedTelnet = 1; $openedTelnet = 1;
} }
my $retVal = FRITZBOX_Telnet_Exec($hash, $cmd); my $retVal = FRITZBOX_Shell_Exec_Telnet($hash, $cmd);
FRITZBOX_Telnet_CloseCon ( $hash ) if $openedTelnet; FRITZBOX_Telnet_CloseCon ( $hash ) if $openedTelnet;
return $retVal; return $retVal;
} }
else { else {
return FRITZBOX_Exec_Local($hash, $cmd); return FRITZBOX_Shell_Exec_Local($hash, $cmd);
} }
} }
# Executed the command on the fhem server (on the FritzBox Shell) # Executed the command on the fhem server (on the FritzBox Shell)
############################################ ############################################
sub FRITZBOX_Exec_Local($$) sub FRITZBOX_Shell_Exec_Local($$)
{ {
my ($hash, $cmd) = @_; my ($hash, $cmd) = @_;
if (ref \$cmd eq "SCALAR") {
if (ref \$cmd eq "SCALAR")
{
FRITZBOX_Log $hash, 5, "Execute '".$cmd."'"; FRITZBOX_Log $hash, 5, "Execute '".$cmd."'";
my $result = qx($cmd); my $result = qx($cmd);
chomp $result; chomp $result;
FRITZBOX_Log $hash, 5, "Result '$result'"; FRITZBOX_Log $hash, 5, "Result '$result'";
return $result; return $result;
} }
elsif (ref \$cmd eq "REF") elsif (ref \$cmd eq "REF") {
{
if ( int (@{$cmd}) > 0 ) if ( int (@{$cmd}) > 0 )
{ {
FRITZBOX_Log $hash, 4, "Execute " . int ( @{$cmd} ) . " command(s)"; FRITZBOX_Log $hash, 4, "Execute " . int ( @{$cmd} ) . " command(s)";
@ -3357,23 +3354,21 @@ sub FRITZBOX_Exec_Local($$)
FRITZBOX_Log $hash, 4, "No shell command to execute."; FRITZBOX_Log $hash, 4, "No shell command to execute.";
} }
} }
else else {
{
FRITZBOX_Log $hash, 1, "Error: wrong perl parameter"; FRITZBOX_Log $hash, 1, "Error: wrong perl parameter";
} }
} }
# Executed a command via Telnet # Executed a command via Telnet
############################################ ############################################
sub FRITZBOX_Telnet_Exec($$) sub FRITZBOX_Shell_Exec_Telnet($$)
{ {
my ($hash, $cmd) = @_; my ($hash, $cmd) = @_;
my @output; my @output;
my $result; my $result;
if (ref \$cmd eq "SCALAR") if (ref \$cmd eq "SCALAR") {
{
FRITZBOX_Log $hash, 4, "Execute '".$cmd."'"; FRITZBOX_Log $hash, 4, "Execute '".$cmd."'";
@output=$telnet->cmd($cmd); @output=$telnet->cmd($cmd);
$result = $output[0]; $result = $output[0];
@ -3383,8 +3378,7 @@ sub FRITZBOX_Telnet_Exec($$)
FRITZBOX_Log $hash, 4, "Result '$log'"; FRITZBOX_Log $hash, 4, "Result '$log'";
return $result; return $result;
} }
elsif (ref \$cmd eq "REF") elsif (ref \$cmd eq "REF") {
{
my @resultArray = (); my @resultArray = ();
if ( int (@{$cmd}) > 0 ) if ( int (@{$cmd}) > 0 )
{ {
@ -3419,8 +3413,7 @@ sub FRITZBOX_Telnet_Exec($$)
} }
return \@resultArray; return \@resultArray;
} }
else else {
{
FRITZBOX_Log $hash, 1, "Error: wrong perl parameter"; FRITZBOX_Log $hash, 1, "Error: wrong perl parameter";
return undef; return undef;
} }