Hallo FHEMler,
ich habe nach langem stöbern hier im Forum FHEM2FHEM auf meiner FB 7270 V2 zum laufen bekommen.
Hauptserver ist mein Raspi.
Grund ist das ich einen Anruf über mein Haustelefon (nicht DECT) möchte wenn u.g. Sender (Endschalter am Garagentor, dieser gibt Signal an
einen Intertechno ITS-2000) auf "Offen" schaltet.
Ich habe das zuvor mit Tasker und andFHEM probiert. Funktioniert auch, nur braucht Tasker ca. 5 min um den Anruf auszulösen.
Ich finde hier im Forum irgendwie nichts passendes, oder ich suche vielleicht auch falsch :-\
Kann mir jemand helfen das zu realisieren, falls es überhaupt möglich ist ?
Hier ein Auszug aus der .cfg:
define garage_Tor TRX_LIGHT AC 00a243be02 light
attr garage_Tor eventMap on:Zu off:Offen
attr garage_Tor onOffDevice true
attr garage_Tor room Garage
define FileLog_garage_Tor FileLog ./log/garage_Tor-%Y.log garage_Tor
attr FileLog_garage_Tor logtype text
attr FileLog_garage_Tor room Garage
define garage_TorAuf notify garage_Tor.*|schlazi_AlarmGarage.*|garage_Fenster.* {\
my $hm = sprintf("%%02d:%%02d", $hour, $min);;\
if ( $hm gt "00:00" && $hm lt "06:00" || $hm gt "22:30" && $hm lt "23:59" &&\
$value{garage_Tor} eq "Offen" &&\
$value{garage_Fenster} eq "Zu" &&\
$value{schlazi_AlarmGarage} eq "Aus") {\
fhem ("set schlazi_AlarmGarage Ein");;\
DebianMail('xxxxxxx@@online.de','Meldung Tor Garage Auf','Garagentor ist offen !!!');;\
}\
}
Danke.
Gruß
Patrick
Schau mal hier: http://forum.fhem.de/index.php/topic,9952.0.html
Okay, danke. Habe folgendes eingegeben (anderer Aktor da die Kinder schon schlafen :D )
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.* {`echo "ATD**1" | nc 127.0.0.1 1011`}
Die **1 ist lt. FB mein Telefon, aber es rührt sich nichts...?
Zitat von: schnun am 07 Februar 2014, 22:57:50
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.* {`echo "ATD**1" | nc 127.0.0.1 1011`}
Die **1 ist lt. FB mein Telefon, aber es rührt sich nichts...?
da kann ich Dir nicht helfen. Ich nutze die Variante, über ein SIP-Programm eine Telefonanlage an der Fritzbox anzurufen. Diese Variante oben scheint nur zu gehen, wenn FHEM auf der Fritzbox selbst läuft.
Hier findest Du die Lösung:
http://forum.fhem.de/index.php/topic,13305.msg97321.html#msg97321 (http://forum.fhem.de/index.php/topic,13305.msg97321.html#msg97321)
erst die 99_myUtils.pm ergänzen
dann mit FBCALLr ansprechen
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.*{FBCallr(1,"**TELEFON_DAS_KLINGELN_SOLL",20,"xxx.xxx.xxx.xxx","FRITZBOXBENUTZERNAME","PASSWORT")};
}
Viel erfolg
cheers
mi.ke
Danke mi.ke, aber ich krieg's leider nicht gebacken was ich in der 99_myUtils.pm genau eintragen muss.
Habe schon etliches probiert aber es will nicht. Kannst Du mir nochmals helfen ?
Hier mein vorheriger Versuch. Die User-Zeilen habe ich gelöscht da ich ohne Benutzername, nur mit Passwort auf die FB gehe.
Mir ist klar das ich einiges falsch gemacht habe, aber ich bin immer noch Newbie... ::)
sub
FBCallr($$$$$$)
{
use Net::Telnet;
fhem("sudo bash");
my $name = "fbcallr";
my ($**1,$0172...,$20,$192.168.xxx.x,$xxx)= @_;
my $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'die');
Log GetLogLevel($name,1), "$name: Connecting to FritzBox:$192.168.xxx.x";
$telnet->open($Port);
$telnet->waitfor('/login: xxx/i');
$telnet->waitfor('/Password:xxx/i');
$telnet->print($xxx);
$telnet->waitfor('/# $/i');
Log GetLogLevel($name,1), "$name: Dialing to FritzBox: from:$**1 to:$0172...";
$telnet->print('echo "ATP'.$**1.'2 ATD**'.$0172...'" | 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;
}
Danke
Patrick
Hallo zusammen,
kann mir evtl. jemand helfen ?
Ich schaffe es einfach nicht.
Danke.
Gruß
Patrick
nee, versuch mal so . . .
unverändert in die 99_myUtils.pm
###################################################################
sub
FBCallrpi($$$$$$)
{
use Net::Telnet;
my $name = "fbcallr";
my ($Fon,$CallNr,$Duration,$Port,$Password)= @_;
my $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'die');
Log GetLogLevel($name,1), "$name: Connecting to FritzBox:$Port";
$telnet->open($Port);
$telnet->waitfor('/password: $/i');
$telnet->print($Password);
$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;
}
###################################################################
dann in der cfg
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.*{FBCallrpi(1,"**1",20,"xxx.xxx.xxx.xxx","PASSWORT")};
}
hier Deine Fritzbox-IP-Adresse eintragen => xxx.xxx.xxx.xxx
hier Dein Fritzboxpasswort => PASSWORT
sicherstellen das Telnet auf der Fritte aktiviert ist.
Cheers
Danke vielmals für die Hilfe, aber es tut sich leider immer noch nichts.
Telnet ist aktiviert und connected. Sub ist unverändert in die 99_myUtils übernommen.
Der Code:
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.*{FBCallrpi(1,"**620",20,"192.xxx.xxx.xxx","meinFBPW")};
}
bringt mir eine Syntax-Fehlermeldung nach dem speichern der .cfg. Habe auch da noch rumgebastelt (geschweifte Klammer am Ende weg etc.).
Fehlermeldung zwar weg, aber sonst nix, nada, nullinger.
Folgendes über Telnet auf der Fritzbox Konsole lässt meine Telefone klingeln:
echo "ATP2 ATD**9" | nc 127.0.0.1 1011
sleep 15
echo "ATP2 ATH" | nc 127.0.0.1 1011
Wenigsten das.
Ich glaub ich geb das mit dem FB_Callmonitor hier auf und steige wieder auf Tasker und andFHEM um.... :'(
Danke trotzdem für die tolle Unterstützung mi.ke !!!
na, nu gib ma nich auf.....
Tasker und andFHEM sind toll, nutze ich auch. Aber via VPN von unterwegs.
und der Callmonitor funktioniert sehr gut (sogar via FHEM2FHEM), der ist auch nicht schuld.
Wenn, dann liegt es an uns Beiden (ich hab schlußendlich auch keine Ahnung, aber...bei mir läuft es)
Also gehen wir sportlich an die Sache ran und finden den Fehler....
Ausgangsbasis:
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.*
{
FBCallrpi(1,"**620",20,"192.xxx.xxx.xxx","meinFBPW");
}
Funktioniert denn?
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.* set IRGENDEINELAMPE on
wenn ja....
Zitat von: schnun am 17 Februar 2014, 21:19:20
Folgendes über Telnet auf der Fritzbox Konsole lässt meine Telefone klingeln:
echo "ATP2 ATD**9" | nc 127.0.0.1 1011
sleep 15
echo "ATP2 ATH" | nc 127.0.0.1 1011
ist **620 Dein angeschlossenes Telefon (DECT) ?
ATD**9" bedeuten ALLE Telefone, das hat bei mir auch nicht funktioniert)
Probier auch mal **1 -> FON 1 oder **2 -> FON 2 (bei mir ist DECT 612, klingelt aber an **1)
PS.
Vielleicht liegt der Fehler ja auch bei mir:
Ich hab den 99_myUtils.pm Code für Dich angepasst, da ich die Fritte mit USERNAME und PASSWORT fahre.
Aber versuch erstmal die o.g. Lösungsansätze
und nu komm.....ein bischen Ehrgeiz ! ! ! 8)
Okay, überredet ;)
zu
Ausgangsbasis:
Code: [Auswählen]
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.*
{
FBCallrpi(1,"**620",20,"192.xxx.xxx.xxx","meinFBPW");
}
kommt nach speichern der FEHLER:
ERROR:
Usage: define notify Unknown command {, try help. Unknown command FBCallrpi(1,"**620",20,"192.xxx.x","meinFBPW"), try help. Unknown command }, try help.
Zu:
Funktioniert denn?
Code: [Auswählen]
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.* set IRGENDEINELAMPE on
Ja, tadellos.
Zu:
Folgendes über Telnet auf der Fritzbox Konsole lässt meine Telefone klingeln:
echo "ATP2 ATD**9" | nc 127.0.0.1 1011
sleep 15
echo "ATP2 ATH" | nc 127.0.0.1 1011
ist **620 Dein angeschlossenes Telefon (DECT) ?
ATD**9" bedeuten ALLE Telefone, das hat bei mir auch nicht funktioniert)
Probier auch mal **1 -> FON 1 oder **2 -> FON 2 (bei mir ist DECT 612, klingelt aber an **1)
Weder **1 noch **2 funktionieren. **620 ist mein Handy, habe ich einfach mal als "Festnetz" in der FB angelegt. Geht auch nicht.
Nur bei allen, oder in dem Fall **9, das ringelts. DECT habe ich keines, habe noch "old style" Analog.
Ich habe nur das eine analoge Telefon angeschlossen.
Und ich gebe jetzt nicht auf.... >:(
Okay erst mal der ERROR
Versuch mal alles in eine Zeile zu schreiben
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.*{FBCallrpi(1,"**620",20,"192.xxx.xxx.xxx","meinFBPW")};
Nachdem speichern kommt....
ERROR:
Usage: define notify
Wenn ich nach ...Ein.* ein Leerzeichen lasse wird der Code akzeptiert, aber das Fon reagiert nicht.
Nochmal in der Konsole auf der FB getestet funktioniert auch **1, also nicht nur alle **9 .
Muss ich evtl. doch noch etwas in der 99_myUtilis oder .cfg auf der http://fritz.box:8083/fhem eintragen ?
In der Logfile meines Raspi-FHEM ist auch keinerlei Bewegung bzgl. Fritzbox, ausser die Statusanzeige "connected".
na also...
Teil 1 scheint ja schon mal zu funktionieren . . .
(bis auf mein copy'n'paste fehler - klar Leerzeichen muss sein)
jetzt mal auf Deinem Rpi in der FHEM Befehlszeile
{FBCallrpi(1,"**620",20,"192.xxx.xxx.xxx","meinFBPW")}
und / oder
{FBCallrpi(1,"**1",20,"192.xxx.xxx.xxx","meinFBPW")}
Den Teil, den Du unverändert in die 99_myUtils.pm eingetragen hast, baut eine Telnet Verbindung zu Deiner Fritte auf, und "schreibt" quasi automatisch für Dich die Befehle und "ergänz" dabei die Parameter aus der Zeile oben.
Also Telefonnummer, Klingelzeit, IP, Passwort.
Und weiter geht's...
{FBCallrpi(1,"**1",20,"192.xxx.xxx.xxx","meinFBPW")}
eingegeben in der Befehlszeile bringt:
Undefined subroutine &main::FBCallrpi called at (eval 16) line 1.
Fon **620 habe ich gelöscht somit habe ich nur noch ein Fon (**1) an der Fritte.
Habe nochmals eine reload der 99_MyUtils gemacht und bekomme jetzt (auch nach save as...)
ERROR:
Undefined subroutine &main::MyUtils_Initialize called at fhem.pl line 1839.
Auch ein update fhem und shutdown restart bringt weiterhin diese Fehlermeldung.
Line 1839 befindet sich nach meiner Recherche in der fhem.pl "sub CommandReload($$)" und die Zeile
lautet: &{ "${fnname}_Initialize" }(\%hash);
Sagt Dir das was ? Kann das eine Fehlerquelle sein ? Kann ich sonst noch irgendwelche Infos liefern die weiterhelfen
könnten ?
Jetzt klingelt es endlich ;)
Zu meiner Lösung, falls jemand auch so zu kämpfen hat wie ich:
1. Auf der Fritzbox habe ich nun einen Benutzer angelegt.
2. Meine 99_myUtils habe ich mal ordentlich gesäubert, anschließend die folgende Sub aus einem anderen Beitrag (siehe link unten)
reinkopiert. Musste jedoch zwei Zeilen daraus entfernen:
###################################################################
# für Raspberry Pi
#
#
sub
FBCallr($$$$$$)
{
use Net::Telnet;
my $name = "fbcallr";
my ($Fon,$CallNr,$Duration,$Port,$User,$Password)= @_;
my $telnet = new Net::Telnet ( Timeout=>12, Errmode=>'die');
Log GetLogLevel($name,1), "$name: Connecting to FritzBox:$Port";
$telnet->open($Port);
$telnet->print($User);
$telnet->waitfor('/Password: $/i');
$telnet->print($Password);
$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;
}
#
Das folgende hat in der .cfg schließlich funktioniert:
define kue_NordWestLuefterAlarm notify kue_NordWestLuefter:Ein.* {FBCallr(2,"**9",12,"192.168.xxx.x","FBBenutzer","FBKennwort")}
Danke nochmals an mi.ke für die Hilfe und die Motivation nicht aufzugeben ;)