mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 18:59:33 +00:00
FRITZBOX: set alarm with time and weekdays
git-svn-id: https://svn.fhem.de/fhem/trunk@7598 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
eb102f2bea
commit
00d12bc7cb
@ -267,18 +267,15 @@ sub FRITZBOX_Set($$@)
|
|||||||
. " wlan:on,off";
|
. " wlan:on,off";
|
||||||
# . " convertMOH"
|
# . " convertMOH"
|
||||||
# . " convertRingTone"
|
# . " convertRingTone"
|
||||||
if ( lc $cmd eq 'alarm')
|
|
||||||
{
|
# set alarm
|
||||||
if ( int @val == 2 && $val[0] =~ /^(1|2|3)$/ && $val[1] =~ /^(on|off)$/ )
|
if ( lc $cmd eq 'alarm') {
|
||||||
|
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);
|
||||||
my $state = $val[1];
|
return FRITZBOX_Set_Alarm ($hash, @val);
|
||||||
$state =~ s/on/1/;
|
|
||||||
$state =~ s/off/0/;
|
|
||||||
FRITZBOX_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".( $val[0] - 1 )."/Active ".$state );
|
|
||||||
readingsSingleUpdate($hash,"alarm".$val[0]."_state",$val[1], 1);
|
|
||||||
return undef;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# set call
|
# set call
|
||||||
} elsif ( lc $cmd eq 'call') {
|
} elsif ( lc $cmd eq 'call') {
|
||||||
if (int @val > 0)
|
if (int @val > 0)
|
||||||
@ -436,7 +433,81 @@ sub FRITZBOX_Get($@)
|
|||||||
return "Unknown argument $cmd, choose one of $list";
|
return "Unknown argument $cmd, choose one of $list";
|
||||||
} # end FRITZBOX_Get
|
} # end FRITZBOX_Get
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
sub FRITZBOX_Set_Alarm($@)
|
||||||
|
{
|
||||||
|
my ($hash, @val) = @_;
|
||||||
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
|
my $alarm = $val[0];
|
||||||
|
shift @val;
|
||||||
|
|
||||||
|
my $para = " ".join(" ", @val);
|
||||||
|
|
||||||
|
my $state = 1;
|
||||||
|
my $stateTxt = "on";
|
||||||
|
if ($para =~ /off/i)
|
||||||
|
{
|
||||||
|
$state = 0;
|
||||||
|
$stateTxt = "off";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $time;
|
||||||
|
my $timeTxt;
|
||||||
|
if ($para =~ /([0-2]?\d):([0-5]\d)/ )
|
||||||
|
{
|
||||||
|
if ($1<10)
|
||||||
|
{
|
||||||
|
$time = 0;
|
||||||
|
$timeTxt = "0";
|
||||||
|
}
|
||||||
|
$time .= $1.$2;
|
||||||
|
$timeTxt .= $1.":".$2;
|
||||||
|
$time = undef if $time > 2359;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $day; my $dayTxt;
|
||||||
|
my %alDayValues = %alarmDays;
|
||||||
|
$alDayValues{0} = "once";
|
||||||
|
$alDayValues{127} = "daily";
|
||||||
|
while (my ($key, $value) = each(%alDayValues) )
|
||||||
|
{
|
||||||
|
if ($para =~ /$value/i)
|
||||||
|
{
|
||||||
|
$day += $key ;
|
||||||
|
$dayTxt .= $value." ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $result = FRITZBOX_Open_Connection( $hash );
|
||||||
|
return "$name|Error|$result"
|
||||||
|
if $result;
|
||||||
|
|
||||||
|
readingsBeginUpdate($hash);
|
||||||
|
|
||||||
|
FRITZBOX_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Active ".$state );
|
||||||
|
readingsBulkUpdate($hash,"alarm".$alarm."_state",$stateTxt);
|
||||||
|
|
||||||
|
if (defined $time)
|
||||||
|
{
|
||||||
|
FRITZBOX_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Time ".$time );
|
||||||
|
readingsBulkUpdate($hash,"alarm".$alarm."_time",$timeTxt);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined $day)
|
||||||
|
{
|
||||||
|
FRITZBOX_Exec( $hash, "ctlmgr_ctl w telcfg settings/AlarmClock".($alarm-1)."/Weekdays ".$day );
|
||||||
|
chop $dayTxt;
|
||||||
|
readingsBulkUpdate($hash,"alarm".$alarm."_wdays",$dayTxt);
|
||||||
|
}
|
||||||
|
|
||||||
|
readingsEndUpdate($hash, 1);
|
||||||
|
|
||||||
|
FRITZBOX_Close_Connection( $hash );
|
||||||
|
|
||||||
|
return undef;
|
||||||
|
} # end FRITZBOX_Set_Alarm
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# checks and stores FritzBox password used for telnet connection
|
# checks and stores FritzBox password used for telnet connection
|
||||||
sub FRITZBOX_storePassword($$)
|
sub FRITZBOX_storePassword($$)
|
||||||
@ -1991,6 +2062,10 @@ sub FRITZBOX_Open_Connection($)
|
|||||||
|
|
||||||
unless (defined $pwd)
|
unless (defined $pwd)
|
||||||
{
|
{
|
||||||
|
$msg = "Error: No password set. Please define it with 'set $name password YourPassword'";
|
||||||
|
FRITZBOX_Log $hash, 2, $msg;
|
||||||
|
# return $msg;
|
||||||
|
|
||||||
my $pwdFile = AttrVal( $name, "pwdFile", "fb_pwd.txt");
|
my $pwdFile = AttrVal( $name, "pwdFile", "fb_pwd.txt");
|
||||||
FRITZBOX_Log $hash, 5, "Open password file '$pwdFile' to extract password";
|
FRITZBOX_Log $hash, 5, "Open password file '$pwdFile' to extract password";
|
||||||
if (open(IN, "<" . $pwdFile)) {
|
if (open(IN, "<" . $pwdFile)) {
|
||||||
@ -1998,7 +2073,6 @@ sub FRITZBOX_Open_Connection($)
|
|||||||
close(IN);
|
close(IN);
|
||||||
FRITZBOX_Log $hash, 5, "Close password file";
|
FRITZBOX_Log $hash, 5, "Close password file";
|
||||||
} else {
|
} else {
|
||||||
$msg = "Error: Cannot open password file '$pwdFile': $!";
|
|
||||||
FRITZBOX_Log $hash, 2, $msg;
|
FRITZBOX_Log $hash, 2, $msg;
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
@ -2484,9 +2558,14 @@ sub FRITZBOX_fritztris($)
|
|||||||
<b>Set</b>
|
<b>Set</b>
|
||||||
<ul>
|
<ul>
|
||||||
<br>
|
<br>
|
||||||
<li><code>set <name> alarm <number> <on|off></code>
|
<li><code>set <name> alarm <number> [on|off] [time] [once|daily|Mo|Tu|We|Th|Fr|Sa|So]</code>
|
||||||
<br>
|
<br>
|
||||||
Switches the alarm number (1, 2 or 3) on or off.
|
Switches the alarm number (1, 2 or 3) on or off (default is on). Sets the time and weekday. If no state is given it is switched on.
|
||||||
|
</li><br>
|
||||||
|
|
||||||
|
<li><code>set <name> call <number> [duration] [say:text|play:MP3URL]</code>
|
||||||
|
<br>
|
||||||
|
Calls for 'duration' seconds (default 60) the given number from an internal port (default 1 or attribute 'ringWithIntern'). If the call is taken a text or sound can be played as music on hold (moh). The internal port will also ring.
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li><code>set <name> customerRingTone <internalNumber> <fullFilePath></code>
|
<li><code>set <name> customerRingTone <internalNumber> <fullFilePath></code>
|
||||||
@ -2531,7 +2610,7 @@ sub FRITZBOX_fritztris($)
|
|||||||
Stores the password for remote telnet access.
|
Stores the password for remote telnet access.
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li><code>set <name> ring <intNumbers> [duration [ringTone]] [show:Text] [say:Text | play:Link]</code>
|
<li><code>set <name> ring <intNumbers> [duration [ringTone]] [show:Text] [say:Text | play:MP3URL]</code>
|
||||||
<br>
|
<br>
|
||||||
Example:
|
Example:
|
||||||
<br>
|
<br>
|
||||||
@ -2745,9 +2824,15 @@ sub FRITZBOX_fritztris($)
|
|||||||
<b>Set</b>
|
<b>Set</b>
|
||||||
<ul>
|
<ul>
|
||||||
<br>
|
<br>
|
||||||
<li><code>set <name> alarm <number> <on|off></code>
|
<li><code>set <name> alarm <Nummer> [on|off] [time] [once|daily|Mo|Tu|We|Th|Fr|Sa|So]</code>
|
||||||
<br>
|
<br>
|
||||||
Schaltet den Weckruf Nummer 1, 2 oder 3 an oder aus.
|
Schaltet den Weckruf Nummer 1, 2 oder 3 an oder aus (Standard ist on). Setzt die Zeit und den Wochentag.
|
||||||
|
</li><br>
|
||||||
|
|
||||||
|
<li><code>set <name> call <number> [Dauer] [say:Text|play:MP3URL]</code>
|
||||||
|
<br>
|
||||||
|
Ruf für 'Dauer' Sekunden (Standard 60 s) die angegebene Telefonnummer von einem internen Telefonanschluss an (Standard ist 1 oder das Attribut 'ringWithIntern'). Wenn der Angerufene abnimmt härt er die Wartemusik oder den angegebenen Text oder Klang.
|
||||||
|
Der interne Telefonanschluss klingelt ebenfalls.
|
||||||
</li><br>
|
</li><br>
|
||||||
|
|
||||||
<li><code>set <name> customerRingTone <internalNumber> <MP3DateiInklusivePfad></code>
|
<li><code>set <name> customerRingTone <internalNumber> <MP3DateiInklusivePfad></code>
|
||||||
|
Loading…
Reference in New Issue
Block a user