Zugriff von Fritzbox 7270 mit FHEM auf 7390 per Telnet

Begonnen von frankyaye, 27 Juli 2013, 12:31:28

Vorheriges Thema - Nächstes Thema

frankyaye

Hallo ich habe eine 7270 mit laufenden FHEM als Wlan und DECT Repeater und möchte vom FHEM einen Anruf von der 7390 absetzen. Beide Boxen sind im Heimnetzwerk und dem selben subnetz 192.168.168.
Getestet vom PC aus per putty auf der 7390 wählen mit ATDT ging
nun versuche ich in die 99_Utils.pm ein perl script zu integrieren und kriege die Funktion fsockopen nicht hin.

sub callfritz()
{
use strict;
use socket;

my $fritzIP  = "192.168.168.11";
my $pass     = "3361202";
my $number   = "**622";
my $sleep    = 10;
 
if (my $fp = fsockopen($fritzIP, 23)) {
  my $buffer = '';
  while (!feof($fp) && !preg_match('/password/', $buffer)) {
    $buffer .= fread($fp, 1);
  }
   
  fputs($fp, $pass . "\r\n");
  sleep(3);
  fputs($fp, 'echo "ATDT' . $number . '" | nc 127.0.0.1 1011' . "\r\n");
  sleep($sleep);
  fputs($fp, 'echo "ATH" | nc 127.0.0.1 1011' . "\r\n");
  sleep(3);
   
   
} else {
  #echo hier könnte ne Fehlermeldung hin ' . $fritzIP;
}
}
in der fhem.cfg ein unbenutzter Fernbedienknopf zum probieren:
define Testn8 notify FS20_339902 {callfritz()}
ich bekomme nun die Meldung im LOG:
Testn8 return value: Undefined subroutine &main::fsockopen called at ./FHEM/99_Utils.pm line 160.

rudolfkoenig

Ich weiss zwar auch nicht, was fsockopen ist, aber ich wuerde das Ganze als shellscript schreiben, und aus FHEM per "" (statt {} fuer perl) starten.

Shellscripte werden mAn in diesem Forum viel zu wenig empfohlen, obwohl es vermutlich fuer viele Perl-Anfaenger einfacher zu schreiben/testen/etc sind. Weiterhin blockieren sie FHEM nicht, was in diesem Beispiel mit 16+ Sekunden nicht unerheblich ist.