FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Muk.s am 01 Mai 2014, 18:44:37

Titel: Automatische Rufumleitung
Beitrag von: Muk.s am 01 Mai 2014, 18:44:37
Hallo Zusammen,
Nachdem ich hier schon einige Zeit mitlese und die eine oder andere Anregung bzw Problemlösung gefunden habe, hier mal ein kleiner Beitrag meinerseits.

Aus diversen Codeschnipsel hier habe ich mir eine eigene Version für das automatische Ein-Ausschalten der Rufumleitung auf der Fritzbox gebastelt (ohne Fhem Installation auf der Fritzbox). Grundlage ist eine eingerichtete Rufumleitung, die ich mittels Kurzwahl aktivierte bzw deaktivierte.

Über eine Anwesenheitsprüfung meines iPhone (mittels Bluetooth) steuere ich den Wert eines dummy (Rufumleitung). Über das folgende notify wird dann ein script in der 99_myUtils aufgerufen.

define RULeinaus notify Rufumleitung {MyFB_RULSwitch("%")}


Inhalt der 99_myUtils.pm

#
# MyFB_RULSwitch
# schaltet Rufumleitung ein/aus
#

sub
MyFB_RULSwitch($@) {
use Net::Telnet;
# fhem("sudo bash");
my $name = "MyFB_RULSwitch";
my $Cmd = "$_[0]";
my $Fon = "1";
my $CallNr = "**710"; # eingerichtete Kurzwahl auf der FB zum Einschalten der Rufumleitung
my $Duration = "5";
my $Port = "192.168.xxx.yyy";
my $User = "mein-fb-User";
my $Pass = "mein-fb-Passwort";
if (($Cmd =~ /off/i)|($Cmd =~ /Abwesend/i)|($Cmd =~ /aus/i)|($Cmd =~ /inaktiv/i)|($Cmd eq 0)) { 
   $CallNr = "**711";    # eingerichtete Kurzwahl auf der FB zum Ausschalten der Rufumleitung
}
my $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'die');
Log GetLogLevel($name,1), "$name: Connecting to FritzBox:$Port";
$telnet->open($Port);
$telnet->waitfor('/user: $/i');
$telnet->print($User);
$telnet->waitfor('/password: $/i');
$telnet->print($Pass);
$telnet->waitfor('/# $/i');
Log GetLogLevel($name,1), "$name: Dialing to FritzBox: from:$Fon to:$CallNr...";
$telnet->print('echo "ATP'.$Fon.'2 ATD'.$CallNr.'" | nc 127.0.0.1 1011');
my $output = $telnet->waitfor('/# $/i'); print $output;
Log GetLogLevel($name,1), "$name: Dialing:$Duration seconds...";
sleep($Duration);
Log GetLogLevel($name,1), "$name: HangOn to FritzBox...";
$telnet->print('echo "ATH0" | nc 127.0.0.1 1011');
$output = $telnet->waitfor('/# $/i'); print $output;
Log GetLogLevel($name,1), "$name: Disconnecting...";
$telnet->print('exit');
return;
}
# end of MyFB_RULSwitch

Das ganze läuft jetzt schon einige Wochen ohne Probleme.
Vielleicht kann es ja jemand gebrauchen.

Grüße
Michael
Titel: Antw:Automatische Rufumleitung
Beitrag von: Gisbert am 26 Dezember 2015, 09:46:22
Hallo Michael,

ich suche genau nach dieser Möglichkeit.
Dazu habe ich noch ein paar Fragen:

Wo ist in deinem Code der dummy für die Anwesenheitskennung zu finden? Wie heißt er?
Port: ist das die Fritzbox oder ist etwas anderes damit gemeint?
Nur um sicher zu sein: mein-fb-User und mein-fb-Passwort sind die, die in der Fritzbox eingerichtet sind. Was macht man, wenn man nur ein Passwort, aber keinen User eingerichtet hat?

LG
Gisbert