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://www.fhemwiki.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.