FritzBox: Weckzeit einstellen
Die Funktion stellt die Weckzeiten auf der FritzBox ein. Alternativ kann eine Weckzeit aktiviert oder deaktiviert werden.
fhem.cfg (Beispiel)
define FBWeckzeit dummy
attr FBWeckzeit setList state:time
define n_FBWeckzeit_In_FHEM_verstellt notify FBWeckzeit {\
{FB_WeckerStellen(3,Value("FBWeckzeit"),"FritzFon",3)}\
{Log 3, (' n_FBWeckzeit_In_FHEM_verstellt: $EVENT')}\
}
Sub (z.B. 99_myutils.pm)
######## FB_WeckerStellen ##############################################################################
## Einstellen der Weckzeiten auf der Fritzbox (7390) Erstellt: LaLeLu, 16.12.2012
## What : Set Alarm or Switches Alarm on or off
## Call : { FB_WeckerStellen(WeckrufNr,Weckzeit,Telefon,Wiederholung) }
##
## Folgende Parameter sind zu übergeben:
## 1. $pWeckNr: 1-3 (Default: 3)
## 2. $pZeit: "hh:mm","On","An","Off","Aus"
## 3. $pTelefon: "FritzFon","Siemens","Alle" (Default: Alle) (Optional)
## 4. $pWiederholung: 0-3 (Default: 3) (Optional)
##
## Beispiele: {FB_WeckerStellen(3,"12:34","FritzFon",3)}
## {FB_WeckerStellen(2,"Aus")}
## {FB_WeckerStellen(1,"On")}
##
## Tastencode Funktion
## #88w*hhmmd*ns* Weckruf konfigurieren und aktivieren
## #88w** Weckruf aktivieren
## #88w# Weckruf deaktivieren
## w: Wecker 1-3
## hh: Stunde 00-23
## mm: Minute 00-59
## d: Wiederholung: 0=MO-FR, 1=SA-SO, 2=MO-SO, 3=keine Wdh.
## ns: Interne Nummer der Nebenstelle
##
## angelehnt an: http://wiki.fhem.de/wiki/Fritzbox:_WLAN_ein/ausschalten
## siehe auch: http://www.wehavemorefun.de/fritzbox/Weckruf
########################################################################################################
sub
FB_WeckerStellen($$;$$) {
my $pWeckNr = shift;
my $pZeit = shift;
my $pTelefon = shift;
my $pWiederholung = shift;
my $ret = "";
my $info = "Weckruf: $pWeckNr";
if ($pWeckNr < 1 or $pWeckNr > 3 or length($pWeckNr)==0) {$pWeckNr = 3; $info .= '? => 3'};
$info .= ", Telefon: $pTelefon";
if ($pTelefon =~ /FritzFon/i) { $pTelefon = 60 }
elsif ($pTelefon =~ /Siemens/i) { $pTelefon = 61 }
elsif ($pTelefon =~ /Alle/i) { $pTelefon = 9 }
else { $pTelefon = 9; $info .= '? => Alle'};
if ($pWiederholung == 0 and length($pWiederholung) == 1) {$info .= ', Wiederholung: 0=MO-FR'}
elsif ($pWiederholung == 1) {$info .= ', Wiederholung: 1=SA-SO'}
elsif ($pWiederholung == 2) {$info .= ', Wiederholung: 2=MO-SO'}
elsif ($pWiederholung == 3) {$info .= ', Wiederholung: 3=Einmal wecken (keine Wiederholung)'}
else {$pWiederholung = 3; $info .= ', Wiederholung: ? => 3=Einmal wecken (keine Wiederholung)'};
if ($pZeit =~ /An/i or $pZeit =~ /On/i) {
$info = "Weckruf: $pWeckNr $pZeit";
my $atd = '"ATD#88'.$pWeckNr.'**"';
$ret = "ATD: " . `echo $atd | nc 127.0.0.1 1011` ;
sleep 1 ;
$ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 3, "FB_WeckerStellen($info) ($atd) returned: $ret";
}
elsif ($pZeit =~ /Aus/i or $pZeit =~ /Off/i) {
$info = "Weckruf: $pWeckNr $pZeit";
my $atd = '"ATD#88'.$pWeckNr.'#"';
$ret = "ATD: " . `echo $atd | nc 127.0.0.1 1011` ;
sleep 1 ;
$ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 3, "FB_WeckerStellen($info) ($atd) returned: $ret";
}
elsif ($pZeit =~ /[0-2][0-9]:[0-5][0-9]/) {
$info .= ", Zeit: $pZeit";
$pZeit =~ s/://;
my $atd = '"ATD#88'.$pWeckNr.'*'.$pZeit.$pWiederholung.'*'.$pTelefon.'*"';
$ret = "ATD: " . `echo $atd | nc 127.0.0.1 1011` ;
sleep 1 ;
$ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ;
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 3, "FB_WeckerStellen($info) ($atd) returned: $ret";
}
else {
$info .= "? => Uhrzeit ist falsch!" ;
Log 3, "FB_WeckerStellen($info) returned: $ret";
};
my $ReturnText = $info;
}
Bemerkungen
Diese Funktion ist getestet auf einer FritzBox 7390.