FritzBox: Rufumleitung automatisieren
Die Funktion FB_RULswitch
automatisiert die Rufumleitung (RUL) der Fritz!Box. In Anlehnung an die WLAN EIN/AUS Funktion FB_WLANswitch, die seit der FHEM Version 5.3 Bestandteil von FritzBoxUtils.pm ist, ist eine Funktion entstanden, die eine Rufumleitung durch FHEM ein- oder ausschalten, das Rufumleitungsziel verändern oder gar eine neue RUL anlegen kann. Sie unterstützt die Funktion von "WhoIsAtHome" [1] mit den Stati "Anwesend" und "Abwesend". Damit kann zum Beispiel bei "Abwesenheit" einer Person, eine Rufumleitung auf eine beliebige Rufnummer gelegt und diese bei "Anwesenheit" wieder automatisch deaktiviert werden. In Anhängigkeit von beliebigen Ereignissen kann so eine Rufumleitung aktiviert, deaktiviert oder angelegt werden. Unterstützt werden alle Merkmale wie "sofort", "verzögert", " bei Besetzt", "parallel" und "bei Klingelsperre".
Der einfache Aufruf zum Ein- oder Ausschalten der RUL erfolgt z. Bsp. aus der fhem.cfg (oder der FhemWeb-Komandozeile) heraus mit der Funktion {FB_RULswitch("%")}. Gültige Werte für "%" sind on, ON, off, OFF, Anwesend, Abwesend, 0 oder 1. "Anwesend" und "Abwesend" sind Rückgabewerte aus der WerIstZuHause Funktion. Daher wird bei "Abwesend" ein RUL "on" und bei "Anwesend" ein RUL "off" generiert.
Der Aufruf kann aber auch mit {FB_RULswitch('Rufumleitungsart','Nebenstelle',"Zielrufnummer")} erfolgen. Damit eröffnen sich noch mehr Möglichkeiten.
Sub z.B. 99 MyUtils.pm
######## Switch FB Rufumleitung on/off ############################################################################ # # Aufruf mit {FB_RULswitch("%")} oder {FB_RULswitch('Rufumleitungsart','Nebenstelle',"Zielrufnummer")} # mögliche Kommandos für "%" zum Deaktivieren der Rufumleitung: 0,oFF,AUS,ANwesend (Groß-/Kleinschreibung egal) # zum Aktivieren der Rufumleitung: z.Bsp. 1,On,Ein,Abwesend # define RUL FS20 # attr RUL dummy 1 # define RULeinaus notify RUL {FB_RULswitch("%")} sub FB_RULswitch($@) { my $out = ""; my $ret = ""; #### Hier erfolgt die Standardvorgabe der 3 Parameter Art,Nebenstelle,Zielrufnummer my $cmd = ""; # RUL deaktivieren: off,aus,anwesend; RUL aktivieren: z.Bsp. 1,on,ein,abwesend my $art = "1"; # Art: 1=sofort 2=verzögert 3=besetzt 4=2oder3 5=Parallelruf 6=bei Klingelsperre(0=Aus) my $nst = "1"; # Nebenstelle, die umgeleitet werden soll 1=FON1 2=FON2 3=FON3 my $ziel = "0123456789"; # ZielRufnummer, auf die umgeleitet wird my $laenge = @_; return "Anzahl Parameter nicht korrekt. Erlaubt sind 1 oder 3, nicht aber $laenge!" if (($laenge ne 1)and($laenge ne 3)); if ($laenge eq 3){ $art = $_[0]; $nst = $_[1]; $ziel = $_[2]; return "Ungueltiges Datenformat!" if (($art !~/^[0-6]$/)|($nst !~/^[123]$/)|($ziel =~/\D/)); } $cmd = $_[0]; ############################################################################# if (($cmd =~ /Off/i)|($cmd =~ /Anwesend/i)|($cmd =~ /Aus/i)|($cmd eq 0)) { # Schreibweise ignorieren $art = "0"; # RUL Aus } # sonst RUL ein $out = "ATD#4" . "$art$nst" . "*" . "$ziel" . "*"; # Wählstring zusammensetzen $ret .= "ATD: " . `echo "$out" | nc 127.0.0.1 1011`; # wählen sleep 1 ; # $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ; # auflegen $ret =~ s,[\r\n]*,,g; # remove CR from return-string Log 1, "FB_RULswitch($cmd) send: $out returned: $ret"; # Ergebnis in Logdatei } # #############################################################################
Testaufruf
Eingabe im fhem Frontend: {FB_RULswitch("Anwesend")} oder {FB_RULswitch("Abwesend")}
Beispiel in fhem.cfg
# Definition vom mein_Handy define mein_Handy dummy attr mein_Handy room WerIstZuHause attr mein_Handy setList Anwesend Abwesend # # Definition von RUL als Dummy, um den Status anzeigen zu können. Für die eigentliche Funktion wird er nicht gebraucht. define RUL dummy attr RUL alias Rufumleitung attr RUL eventMap Anwesend:Aus Abwesend:Ein # übersetzen der Ergebnisse aus FB_WLANswitch in Ein und Aus attr RUL icon RUL.Ein attr RUL room WerIstZuHause # # Bekannte Ermittlung des WerIstZuHause-Status via ping (wiki) define WerDa notify WerDa {FhemLanStat("192.168.xxx.xxx","mein_Handy")} # xxx.xxx = IP vom Handy (aus FB auslesen) # # Nun der eigentliche "Akt" und Setzen des dummy-Status. define RULeinaus notify mein_Handy {FB_RULswitch("%")}{fhem "set RUL %"}
Hinweise
Getestet auf einer Fritzbox 7390 (FHEM-Image-5.3) und freiem FON1-Port. RUL in der FB eingerichtet.
Icon
und