FritzBox: Weckzeit einstellen

Aus FHEMWiki
Wechseln zu: Navigation, Suche

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.

Links

FritzBox Offset-Uhrzeit aus Weckzeit berechnen