Fritz.Box Fhem: Notify > CMD Telefon anrufen.... sh und nc nicht gefunden

Begonnen von Licht2002, 17 Januar 2014, 00:08:57

Vorheriges Thema - Nächstes Thema

Licht2002

Hallo Experten,

habe jetzt 3 Stunden in Google gewühlt und doch keine Lösung gefunden.....

Ich möchte mein Fritz.Fon klingeln lassen, wenn ein Schaltbefehl erfolgt.

Meine Hardware: Fritz.Box 7490
FHEM 5.5
CUL V3


Der FS20 Befehl kommt an, laut Log wird auch der Echo-Befehl ausgelöst.... aber es klingelt nicht.

Über Putty mit echo ATDT**610 | nc 127.0.0.1 1011 geht es....

Wo muss ich den Fehler suchen.... ist das ein Problem in der Fritzbox?

Auszug aus der fhem.cfg
define Anruf notify SD1  "echo ATDT**610 | nc 127.0.0.1 1011"

damit bekomme ich folgende Log:
2014.01.16 23:55:48 4: HTTP FHEMWEB:192.168.178.20:52824 GET /fhem?cmd.SD1=set%20SD1%20off&room=FS20
2014.01.16 23:55:48 5: Cmd: >set SD1 off<
2014.01.16 23:55:48 3: FS20 set SD1 off
2014.01.16 23:55:48 5: CUL_0 sending F00001000
2014.01.16 23:55:48 5: SW: F00001000
2014.01.16 23:55:48 5: Triggering SD1 (1 changes)
2014.01.16 23:55:48 5: Notify loop for SD1 off
2014.01.16 23:55:48 5: Triggering Anruf
2014.01.16 23:55:48 5: Cmd: >"echo ATDT**610 | nc 127.0.0.1 1011"<
sh: nc: not found

Danke für Eure Hilfe!

VG Tom

Invers

Ich habe auch vor, so etwas zu machen. Würdest du deinen Code hier einstellen? vielleicht kann dir ja dann auch jemand besser helfen.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

strauch

Also ich lasse mein Telefon klingeln wenn die Tür klingelt

in meiner 99_myUtils.pm steht:

###################################################################
#                für Raspberry Pi
# Telefone der FB klingeln beim Betätigen der Türklingel
#
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,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;
}
#
###################################################################


Mein Notify sieht dann so aus:
define notify_Klingel notify ha_Klingel:on {FBCallr(1,"**610",12,"192.168.1.1","password")}

noch als Erklräung:
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

Weiteres und Quellenangabe dazu hab ich mal in einen Blog gepostet: http://webmanufactur.net/node/19

Wichtig ist noch das Telnet an der Fritzbox aktiv ist, das kann man per Telefoncodes an einem angeschlossenen Telefon machen:
Telnet
aktivieren: #96*7*
deaktivieren: #96*8*
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

betateilchen

Zitat von: Licht2002 am 17 Januar 2014, 00:08:57
Der FS20 Befehl kommt an, laut Log wird auch der Echo-Befehl ausgelöst.... aber es klingelt nicht.

define Anruf notify SD1  "echo ATDT**610 | nc 127.0.0.1 1011"

damit bekomme ich folgende Log:
2014.01.16 23:55:48 5: Cmd: >"echo ATDT**610 | nc 127.0.0.1 1011"<
sh: nc: not found

Richtig. Das "echo" wird ausgeführt, aber das "nc" nicht. "nc" ist ein Programm, das gestartet werden soll. Gib einfach den Pfad mit an, wo nc auf Deiner Fritzkotz liegt.

define Anruf notify SD1  "echo ATDT**610 | /usr/bin/nc 127.0.0.1 1011"

und prüfe vorher, ob nc auf Deiner Kiste überhaupt vorhanden ist:

Mit putty which nc ausführen, dann wird Dir angezeigt, ob und wo es die Datei gibt. Das "wo" ist dann genau das, was Du in Dein notify einbauen musst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!