Hier nun die überarbeitete Rufumleitungsfunktion. Neu ist die Möglichkeit, die Art der Rufumleitung (verzögert oder Parallelruf o.ä), die Nummer der Nebenstelle und die Zielrufnummer als Argument mit zu übergeben. Damit könnte man, bei Bedarf, das Umleitungsziel in Abhängigkeit von irgendwas wechseln. Hinzugekommen ist auch eine Fehlerbehandlung. Der Aufruf kann entweder mit
einem Argument wie "Anwesend" oder "abwesend", ein oder AUS mit {FB_RULswitch("%")} oder direkt durch die "WerIstZuHause"-Funktion oder ähnliches erfolgen. Wobei "anwesend" bedeutet, dass die RUL deaktiviert wird. Alternativ über die FHEM-Weboberfläche manuell mit dummy oder durch die "RUL-Anlege-Funktion" {FB_RULswitch('Rufumleitungsart','Nebenstelle',"Zielrufnummer")}. Hab im Script versucht, möglichst viel zu kommentieren. Vielleicht kann es jemand gebrauchen. Die FritzBox Weboberfläche muss also zum Anlegen einer RUL nicht mehr benutzt werden. An den Einschränkungen "arbeite" ich noch.
Freue mich auch über Hinweise und Anregungen. Besser geht immer.
Und dran denken: Anfänger!!!
VG Heinz
######## 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 = "";
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
} #
#############################################################################
1;