FritzBox als Klingel

Begonnen von cornelius fillmore, 12 Juni 2013, 09:25:01

Vorheriges Thema - Nächstes Thema

Ralph

Probiere doch mal unter Telnet auf deiner Fritzbox dies aus:

Lege eine Datei namens rundruf im Verzeichnis /var/flash/ an.

# Inhalt der Datei rundruf
#!/bin/sh
echo "ATP2 ATD**9" | nc 127.0.0.1 1011
sleep 15
echo "ATP2 ATH" | nc 127.0.0.1 1011
# End of file rundruf

Starte diese am Prompt # mit sh rundruf
Es sollte auf allen Telefonen ca. 15 Sekunden klingeln.
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

Harald

Hallo blueberry63,

wie der Callmonitor aktiviert wird und wie ich meine Klingel mittels 99_myUtils.pm realisierte, habe ich weiter oben beschrieben.

Das Problem war(hoffentlich), dass die Initialisierung des CallMonitors im Laufe der Zeit verloren ging, sodass das nach einiger Zeit nicht mehr funktionierte.

Deshalb habe ich in der fhem.cfg noch folgendes eingebaut,define CallMonAT at +*01:00:00 {CallMonOn();;} mit dem ich z.Z. noch experimentiere, welche Zeit ich verwenden muss. In der 99_myUtils.pm steht die zugehörige Subsub CallMonOn ()
{
qx (echo '#96*5*' | nc 127.0.0.1 1011);
}
Vllt genügt es ja, das nur 1x/Tag zu machen.

Vielleicht hilft Dir das weiter.

Viele Grüße

HArald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

blueberry63

Hurra!

Zitatecho "ATP2 ATH" | nc 127.0.0.1 1011

funktioniert - wenn ich das so auf der FB absetze.

Schicke ich exakt denselben Befehl von meinem Raspberry PI ab, wobei ich natürlich die IP-Adresse der FB nehme, passiert nichts. Hat jemand dafür eine Erklärung?

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

blueberry63

Hallo,

ich habe noch eine interessante Lösung gefunden, um den Wähl-Befehl von "remote" (Raspberry PI) zur FB zu schicken, aber mangels Perl-Kenntnisse gebe ich nach 2 Stunden zuerst mal auf:

http://www.perlfect.com/articles/telnet.shtml

Dabei wird das Perl-Modul "Net::Telnet" benutzt. Folgende Sub-Routine habe ich in die 99_myUtils.pm eingebaut, aber ich bekomme beim Aufruf die Meldung "Undefined subroutine &main::FBCallr called at (eval 25) line 1.":

Zitatsub
FBCallr ()
{
 use Net::Telnet;
  $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'die');
 $telnet->open('192.168.99.11');
 $telnet->waitfor('/password: $/i');
 $telnet->print('xxxxxxx');
 $telnet->waitfor('/\$ $/i');
 $telnet->print('echo ATP2 ATD**620 | nc 127.0.0.1 1011');
 $output = $telnet->waitfor('/\$ $/i'); print $output;
 $telnet->print('exit');
 InternalTimer(gettimeofday()+8, "FBHangOnr", "", 0);
 return;
}

Erklärung:
- "192.168.99.11" ist die IP meiner FB
- 620 ist die Kurzwahl zu meiner 2. FB (VOIP), an der das Telefon klingeln soll
- die Sub-Routine fürs Auflegen habe ich noch nicht eingebaut; wollte zuerst mal das Klingeln testen


Könnte mir jemand mittels Net::Telnet eine FHEM Subroutine basteln, die funktioniert? Kann man überhaupt dieses Telnet-Modul in FHEM verwenden?

Danke
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Harald

Hallo zusammen,

es scheint zu klappen! Seit 3 Tg. läuft meine Klingel, ohne dass ich (wie früher) den CallMonitor per Telefon aktivieren musste. Ich habe das so wie im Beitrag #86903 beschrieben gelöst. Lediglich define CallMonAT at +*01:00:00 {CallMonOn();;} habe ich zu define CallMonAT at *00:10:00 {CallMonOn();;}- also nur 1x täglich - geändert.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

JoWiemann

Hallo Blueberry63,

ich habe Deine Sub etwas ergänzt. Bei mir läuft Sie auf dem RPi nach dem ich mit:

sudo apt-get install libnet-telnet-perl

das fehlende Perl-Modul nachinstalliert habe.


sub
FBCallr($$$$$)
{
 use Net::Telnet;
 my $name = "FBCallr";
 my ($Fon,$CallNr,$Duration,$Port,$Password)= @_;
 my $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'die');
 Log GetLogLevel($name,4), "$name: Connecting to FritzBox:$Port...";
 $telnet->open($Port);
 $telnet->waitfor('/password: $/i');
 $telnet->print($Password);
 $telnet->waitfor('/# $/i');
 Log GetLogLevel($name,4), "$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,4), "$name: Dialing:$Duration seconds...";
 sleep($Duration);
 Log GetLogLevel($name,4), "$name: HangOn to FritzBox...";
 $telnet->print('echo "ATH0" | nc 127.0.0.1 1011');
 my $output = $telnet->waitfor('/# $/i'); print $output;
 Log GetLogLevel($name,4), "$name: Disconnecting...";
 $telnet->print('exit');
 return;
}


Der Aufruf erfolgt mit:

FBCallr(Fon,Nummer,Zeit,IP,Passwort)

Fon = Anrufendes Telefon
Nummer = anzurufende Nummer
Zeit: Sekunden bis zum Auflegen
IP: IP der Fritzbox
Passwort: Passwort der Fritzbox

Beispiel:
FBCallr(1,610,10,"192.168.0.1","MyPssW")

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

blueberry63

Hallo Jörg,

genial! So funktioniert es auch, wenn FHEM nicht direkt auf der FB installiert ist.

Die Übergabe-Parameter in Deinem Beispiel stimmen zwar nicht ganz, aber der Programm-Code ist voll in Ordnung. So hat es bei mir funktioniert:

Zitat{ FBCallr(1,620,6,'192.168.99.11');; }


Vielen Dank
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

blueberry63

Hallo Jörg,

noch eine Frage: wie sollte denn das Logging funktionieren. Bei mir erscheint kein Eintrag in der fhem.log?!

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

JoWiemann

Hallo Blueberry63,

habe den Loglevel auf 4 gesetzt, dass heist Du musst in der fhem.cfg verbose auf 4 (siehe auch command.ref) setzen.


attr global verbose 4


Wenn Du das ändern möchtest, dann bitte in den Zeilen mit

Log GetLogLevel($name,4),...

die 4 durch einen anderen Loglevel ersetzen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Harald

Hallo Jörg,

vielleicht kannst Du mir einen Tipp geben. Bisher lief FHEM auf  einer 7170. Die Telefone sind an der 6360 angeschlossen. Die Telefone klingelten, wenn der Klingeltaster betätigt wurde.

Nun bin ich mit FHEM auf einen Raspberry umgezogen und möchte Dein Script (s.o.) verwenden. Leider klappt das bei mir nicht. Die Telefone klingeln nicht. Folgende Umgebung habe ich:

UM-Kabelnetz----FB6360-----FB7170-----Raspberry
.......................Telefone......Netzwerk.......FHEM

FHEM soll über Raspberry die FB7170 **701 anrufen, die eine SIP-Nr. xxxxx4677 anruft. In der FB6360 reagiern die Telefone auf den Internetanruf auf xxxx4677 und klingeln.

Die IP der FB7170 wird zwar geöffnet, aber der Ruf wird nicht übertragen. Im Logfile steht:2013.10.01 16:12:42 3: FS20 set Klingel1 on
2013.10.01 16:12:42 1: fbcallr: Connecting to FritzBox:192.168.0.2
2013.10.01 16:12:53 3: Klingel1_on return value: pattern match timed-out at ./FHEM/99_myUtils.pm line 64

Dort steht:
 63 $telnet->open($Port);
 64 $telnet->waitfor('/password: $/i');
 65 $telnet->print($Password);
 66 $telnet->waitfor('/# $/i');

Hast Du eine Idee, warum FHEM offensichtlich keine Antwort bekommt?

Der Aufruf in der FHEM.cfg lautet übrigens:  
define Klingel1_on notify Klingel1:on {FBCallr(3,"**701",5,"192.168.0.2","Password")}

Ich würde mich sehr freuen, wenn Du mir helfen könntest. Übrigens libnet-telnet-perl habe ich installiert.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

bsl02

>UM-Kabelnetz----FB6360-----FB7170-----Raspberry

Vorschlag bis es mit der großen Lösung klappt:
FHEM auf der FB7170 in einer Mini-Konfiguration weiterlaufen lassen nur für Türklingel auf Telefone, das klappte ja bisher. Das Haupt FHEM (RPi) bei Bedarf mit FHEM2FHEM mit der FB7170 verbinden.
Ähnlich habe ich es noch.

Gruß, Stefan
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter

Harald

Danke Stefan für die Anregung.

Das wäre eine Möglichkeit. Aber ich habe nur einen CUL, der am RPi angeschlossen ist. Ich muss mich mal mit FHEM2FHEM auseinander setzen. Vieleicht ist das ja ein Weg.
Eigentlich hatte ich gedacht, auf die 7170 verzichten zu können, aber auf die 6360 kann man ja nicht via Telnet o.ä. zugreifen :-((

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Harald

Hallo Jörg,

vielleicht liest Du hier ja mit und kannst mit helfen.

Es scheint so, als ob diese Befehle nicht abgearbeitet werden. Bei $telnet->waitfor() kommt es zum Timeout.

$telnet->open($Port);
$telnet->waitfor('/password: $/i');
$telnet->print($Password);

Was muss ich ändern, damit es klappt?

Viele Grüße

Harald

Nachtrag: Ich hab's geschafft! :-) Im Link von blueberry
http://www.perlfect.com/articles/telnet.shtml fand ich die nötigen Hinweise. So geht es jetzt.###################################################################
#                für Raspberry Pi
# Telefone der FB klingeln beim Betätigen der Türklingel
#
sub
FBCallr($$$$$$)
{
 use Net::Telnet;
 fhem("sudo bash");
 my $name = "fbcallr";
 my ($Fon,$CallNr,$Duration,$Port,$User,$Password)= @_;
 my $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'die');
 Log GetLogLevel($name,1), "$name: Connecting to FritzBox:$Port";
 $telnet->open($Port);
 $telnet->waitfor('/login: $/i');
 $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;
}
#
###################################################################

und in der FHEM.cfg steht############################################################################
#
# Klingel1
#
define Klingel1 FS20 7e7e 01
attr Klingel1 room MAX
define FileLog_Klingel1 FileLog ./log/Klingel1-%m-%d-%w.log Klingel1:.*
attr FileLog_Klingel1 alias Klingel1
attr FileLog_Klingel1 logtype text
attr FileLog_Klingel1 room Diagramm.log
define Klingel1_on notify Klingel1:on {FBCallr(3,"**701",12,"192.168.0.2","user","password")}
#
######################################################################
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

JoWiemann

Hallo Harald,

sorry, aber war erst im Urlaub und dann ziemlich beschäftigt. Die Änderungen waren wohl notwendig weil AVM mit den neuen Firmwares User eingeführt hat. Somit ist das Einloggen nur per Passwort wohl nicht mehr möglich.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

MC_Fhem

Hallo zusammen,

bin noch recht neu hier. Möchte auch gerne im Notfall telefonisch informiert werden. Habe FBCallr in 99_myUtils.pm kopiert. Versuche mit der Direkteingabe: {FBCallr(3,"**610",12,"192.168.178.11","Ich","Test")} das Telefon klingeln zu lassen.

Leider erhalte ich folgende Fehlermeldung:
pattern match timed-out at ./FHEM/99_myUtils.pm line 224

Im Logfile habe ich folgende Meldung:
2014.06.16 15:20:42 3: sudo bash : Unknown command sudo, try help.
2014.06.16 15:20:42 1: fbcallr: Connecting to FritzBox:192.168.178.11


Fhem ist auf Raspberry installiert und meine Fritzbox ist die 7390.

Kann mir jemand helfen? Oder mir einen Tip gegen wonach ich suchen soll?

Freue mich auf Antwort.

Grüße Toni