FHEM Forum

FHEM - Hardware => FRITZ!Box => Thema gestartet von: Will am 11 November 2013, 07:33:37

Titel: Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: Will am 11 November 2013, 07:33:37
Hallo zusammen,
Wurde gerne folgendes realisieren:

Ich komme nach Hause und sehe, dass anrufe in meiner Abwesenheit eingegangen sind (zB notify auf Lampe)
FHEM zeigt mir eine Anruferliste und wer eine Nachricht hinterlassen hat
Aus FHEM starte ich dann die direkt die wavs (bei mir über sonos) um die Nachrichten abzuhören


Fhem läuft auf einem raspberry pi, neuen fritznbox ist eine 7270v2

Hat dies jemand schon in der Form realisiert (oder teilweise)? Ideen?

Vielen dank schon mal.

W

Sent from my Nexus 7 using Tapatalk

Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: Will am 01 Dezember 2013, 07:52:44
Up

Sent from my Nexus 7 using Tapatalk

Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: Ralph am 01 Dezember 2013, 13:01:53
Ich mache das ohne FHEM.

AnrufbeanworterAufsprachen sendet mit die FB direkt.

AnruferDaten lasse ich mir per Push-EMail zusenden, und zwar so:


in /var/flash/calllog steht:if [ ! -z "$1" ]
  then
    /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/anruf $1 $2
fi



in /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/anruf stehttx_mail()
{
/sbin/mailer \
-s "$2 $3 $4 $5 $6" \
-f "L $1 <absender@mail.com>" \
-m smtp.mail.com \
-t "$RUF <empfänger@mail.com>" \
-a absender@mail.com \
-w "passwort" \
-l \
-i /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt \
}
}

rm /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/ip.htm
rm /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oert.htm
rm /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt
rm /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/tmp.htm

if test -r /var/log/printer_status
  then
#    cat /var/log/printer_status
    if grep 2 /var/log/printer_status >/dev/null 2>&1
      then
        STA="OK"
    fi
    if grep 0 /var/log/printer_status >/dev/null 2>&1
      then
        STA="AUSFALL"
    fi
  else
    STA="UNKLAR"
fi

RUF=$1
CID=$1
CED=$2

wget -q -O /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/ip.htm http://sputnicks.de/tools/ip.php
# ip=$(cat /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/ip.htm | grep '<b>' | sed 's/<[^<]*>/\ /g')
ip=$(cat /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/ip.htm)

# Die 0Dhex in den lists müssen raus sein

echo $1>/var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/tmp.txt
nix=$(grep -e 0180 /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/tmp.txt);
if [ -z "$nix" ]
  then
    nix=$(grep -e 0900 /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/tmp.txt);
    if [ -z "$nix" ]
      then
        nix=$(grep -e 000000000 /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/tmp.txt);
        if [ -z "$nix" ]
          then
            black=$(grep -e $1 /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/blacklist.txt);
            if [ -z "$black" ]
      then
        CID=$(grep -e $1 /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/known.txt);
        if [ -z "$CID" ]
  then
    url="http://mobil.dasoertliche.de/oe/go_rueckwaertssuche?number=$1"
    wget -q -O /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oert.htm $url
    oetname=$(cat /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oert.htm | grep '"nofollow" class' | sed 's/<[^<]*>/\ /g')
    oetadr=$(cat /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oert.htm | grep '</div><br>' | sed 's/<[^<]*>/\ /g')
    echo $oetname>/var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt
    echo $oetadr>>/var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt

    url="http://www.klicktel.de/inverssuche/index/search?method=searchSimple&_dvform_posted=1&phoneNumber=$1"
    wget -q -O /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/tmp.htm $url
    name=$(cat /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/tmp.htm | grep "namelink" | sed 's/<[^<]*>/\ /g;s/  //;s/ /, /')
    if [ ! -z "$name" ]
      then
        num=$(cat /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/tmp.htm | grep "phoneNumber" | sed 's/"phoneNumber" value="/ #/;s/.*\#//;s/"/ # /;/^#/d;s/#.*$//g;s/ //g')
CID=" $1 $num $name $STA"
      else
CID=" $1 - $STA"
    fi
         fi

echo >>/var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt
echo >>/var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt
echo >>/var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt
echo $ip>>/var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt

case "$2" in
  . | MSN1 | MSN2 | MSN3 )
tx_mail $CED "$CID" ;;
esac
# cat /var/media/ftp/TOSHIBA-TransMemory-01/FRITZ/awork/oetb.txt

     fi
fi
     fi
fi


Das "TOSHIBA-TransMemory-01" muss durch den Namen Deines USB-Sticks ersetzt werden.

Anonyme Anrufer werden ignoriert.

0180, 0900 und eine beliebige ( hier: 000000000 ) werden von Haus aus ignoriert (Teilnummernfunktion).

In die blacklist.txt kann man weitere VOLLSTÄNDIGE Nummern eintragen, die ignoriert werden sollen.

In die known.txt trägst Du händisch alle die ein, die Du schon kennst und die per Invers-Suche nicht findbar sind nach dem Muster:
0038649425052 Vorsicht - Slovenische Werbeanrufe
08001721212 Vodaföhn HeisseLuftHotline usw.

Die Mail bringt dann auch gleich das Ergebnis der Inverssuche mit, falls was gefunden wurde.

Und Deine eigene IP-Adresse wird mit zugesandt.

Viel Spass und Erfolg damit :-)
Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: bugster_de am 03 Dezember 2013, 20:59:20
Hi,

siehe hier: http://forum.fhem.de/index.php/topic,16893.msg110277.html#msg110277 (http://forum.fhem.de/index.php/topic,16893.msg110277.html#msg110277)
noch nicht ganz fertig.

Die Anruferliste mache ich mit dem FB_CALLMONITOR, 5 Dummy Variablen und einem FIFO Puffer.

in der fhem.cfg:
# ----------------------------------------------------------------------------
#  Callmonitor
# ----------------------------------------------------------------------------
define FB_Anruftrigger FB_CALLMONITOR 127.0.0.1:1012
attr FB_Anruftrigger event-on-change-reading missed_call
attr FB_Anruftrigger group Fritzbox
attr FB_Anruftrigger reverse-search all
attr FB_Anruftrigger room _Server
attr FB_Anruftrigger sortby A02
attr FB_Anruftrigger unique-call-ids 1

define FB_Anruftrigger_not notify FB_Anruftrigger:missed_call.* { FB_TU_CB_Call( );; }
attr FB_Anruftrigger_not group Fritzbox,notifies
attr FB_Anruftrigger_not room _Server


# ----------------------------------------------------------------------------
# Callmonitor Liste
# ----------------------------------------------------------------------------
define FB_TEL_Anruf_01 dummy
attr FB_TEL_Anruf_01 alias Letzter_Anruf
attr FB_TEL_Anruf_01 fp_Erdgeschoss 601,723,0,
attr FB_TEL_Anruf_01 fp_Garten 18,353,1,
attr FB_TEL_Anruf_01 group Anrufliste
attr FB_TEL_Anruf_01 room Telefon
attr FB_TEL_Anruf_01 sortby B01
attr FB_TEL_Anruf_01 webCmd none

define FB_TEL_Anruf_02 dummy
attr FB_TEL_Anruf_02 alias Vorletzter_Anruf
attr FB_TEL_Anruf_02 group Anrufliste
attr FB_TEL_Anruf_02 room Telefon
attr FB_TEL_Anruf_02 sortby B02
attr FB_TEL_Anruf_02 webCmd none

define FB_TEL_Anruf_03 dummy
attr FB_TEL_Anruf_03 alias Dritter_Anruf
attr FB_TEL_Anruf_03 group Anrufliste
attr FB_TEL_Anruf_03 room Telefon
attr FB_TEL_Anruf_03 sortby B03
attr FB_TEL_Anruf_03 webCmd none

define FB_TEL_Anruf_04 dummy
attr FB_TEL_Anruf_04 alias Vierter_Anruf
attr FB_TEL_Anruf_04 group Anrufliste
attr FB_TEL_Anruf_04 room Telefon
attr FB_TEL_Anruf_04 sortby B04
attr FB_TEL_Anruf_04 webCmd none

define FB_TEL_Anruf_05 dummy
attr FB_TEL_Anruf_05 alias Fuenfter_Anruf
attr FB_TEL_Anruf_05 group Anrufliste
attr FB_TEL_Anruf_05 room Telefon
attr FB_TEL_Anruf_05 sortby B05
attr FB_TEL_Anruf_05 webCmd none


in der 99_myUtils.pm:
# ------------------------------------------------------------------------
#  Function to be called from the Callmonitor upon missed call
#  Usage: ($success) = FB_TU_CB_Call( );
# ------------------------------------------------------------------------
sub FB_TU_CB_Call( ) {

    # this is a ringbuffer

    my $val = ReadingsVal( "FB_TEL_Anruf_04", "STATE", "none" );
    my $ts_buf = ReadingsTimestamp( "FB_TEL_Anruf_04", "STATE", "none" );
    fhem( "set FB_TEL_Anruf_05 " . $val . " um " . $ts_buf );

    $val = ReadingsVal( "FB_TEL_Anruf_03", "STATE", "none" );
    $ts_buf = ReadingsTimestamp( "FB_TEL_Anruf_03", "STATE", "none" );
    fhem( "set FB_TEL_Anruf_04 " . $val . " um " . $ts_buf );

    $val = ReadingsVal( "FB_TEL_Anruf_02", "STATE", "none" );
    $ts_buf = ReadingsTimestamp( "FB_TEL_Anruf_02", "STATE", "none" );
    fhem( "set FB_TEL_Anruf_03 " . $val . " um " . $ts_buf );

    $val = ReadingsVal( "FB_TEL_Anruf_01", "STATE", "none" );
    $ts_buf = ReadingsTimestamp( "FB_TEL_Anruf_01", "STATE", "none" );
    fhem( "set FB_TEL_Anruf_02 " . $val . " um " . $ts_buf );

    $val = ReadingsVal( "FB_Anruftrigger", "missed_call", "none" );
    $ts_buf = ReadingsTimestamp( "FB_Anruftrigger",
    "missed_call",
    "none" );
    fhem( "set FB_TEL_Anruf_01 " . $val . " um " . $ts_buf );
   
    return( true );
}
Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: Ralph am 05 Dezember 2013, 09:14:17
Bareword "true" not allowed while "strict subs" in use at ./FHEM/99_UtilRalph.pm line 142.
2013.12.05 09:13:18 1: reload: Error:Modul 99_UtilRalph deactivated:

Meines funktioniert wenigstens :-)
Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: bugster_de am 09 Dezember 2013, 15:36:39
@Ralph: na dann  gratuliere ich Dir mal, falles es das war, was du mit deinem Post ausdrücken wolltest

Ansonsten:
use constant { true => 1, false => 0 };
use constant { TRUE => 1, FALSE => 0 };
Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: gemx am 10 Dezember 2013, 10:48:08
Vielen Dank an bugster_de,

habe das mal aufgegriffen und bei der Benutzung sind mir diverse Problemchen aufgefallen.
Anbei meine angepasste "FB_TU_CB_CALL()" function
Was ich dabei geändert/angepasst habe:

Ansonsten aber dennoch vielen Dank an bugster_de für die Vorarbeit :-)
[/list]

# ------------------------------------------------------------------------
#  Function to be called from the Callmonitor upon missed call
#  Usage: ($success) = FB_TU_CB_Call( );
# ------------------------------------------------------------------------
sub FB_TU_CB_Call( ) {

    # this is a ringbuffer

my $val = ReadingsVal( "FB_TEL_Anruf_04", "state", "none" );
fhem( "set FB_TEL_Anruf_05 ".$val);
    my $ts_buf = ReadingsTimestamp( "FB_TEL_Anruf_04", "state", "none" );
fhem( "setreading FB_TEL_Anruf_05 timestamp $ts_buf");

$val = ReadingsVal( "FB_TEL_Anruf_03", "state", "none" );
fhem( "set FB_TEL_Anruf_04 ".$val);
    $ts_buf = ReadingsTimestamp( "FB_TEL_Anruf_03", "state", "none" );
fhem( "setreading FB_TEL_Anruf_04 timestamp $ts_buf");

$val = ReadingsVal( "FB_TEL_Anruf_02", "state", "none" );
fhem( "set FB_TEL_Anruf_03 ".$val);
    $ts_buf = ReadingsTimestamp( "FB_TEL_Anruf_02", "state", "none" );
fhem( "setreading FB_TEL_Anruf_03 timestamp $ts_buf");

    $val = ReadingsVal( "FB_TEL_Anruf_01", "state", "none" );
fhem( "set FB_TEL_Anruf_02 ".$val);
    $ts_buf = ReadingsTimestamp( "FB_TEL_Anruf_01", "state", "none" );
fhem( "setreading FB_TEL_Anruf_02 timestamp $ts_buf");
   

    $val = ReadingsVal( "FB_CallMon", "missed_call", "none" );
    $ts_buf = ReadingsTimestamp( "FB_CallMon", "missed_call", "none" );
    fhem( "set FB_TEL_Anruf_01 <a href='tel:" . $val . "'>".$val."</a> um ".$ts_buf );
   
    return( true );
}
Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: Roaster am 22 August 2014, 19:17:13
Hi,

kann von euch mal jemand ein komplettes Beispiel einstellen? Die Funktion zuletzt gepostet wurde ist ja klar, das ist jetzt nicht das Problem, aber von wo aus wird diese aufgerufen, bzw. woher stammen die Daten, dass ein Anrufe auf dem AB liegt?

Edit: Ach ja, ich habe den Callmonitor am Laufen: Ich stelle mir vor, dass der Callmonitor auch AB-Aufzeichnungen dort anzeigt, ich glaube das ist so (ungeprüft), ICH auf den entsprechenden Eintrag klicken kann und die Aufzeichnung wird abgespielt. Wäre dies ein mögliches Szenario?

Danke,
Michael
Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: Ralph am 23 August 2014, 13:26:19
Zitat von: Roaster am 22 August 2014, 19:17:13
... jemand ein komplettes Beispiel einstellen?
Tat ich in Antwort #2 oben.
Titel: Antw:Fritzbox Anrufbeantworter und Anruferliste
Beitrag von: Roaster am 23 August 2014, 15:52:54
Danke Ralph für diene Antwort!

Ich dachte eher an eine Möglichkeit die AB Aufzeichnungen bereits im Callmonitor neben/innerhalb den normalen Anrufen zu sehen. Deine Lösung, per Push E-Mail, kann die Fritzbox ja ohnehin schon ist aber nicht zielführend, wenn ich fhem verwende und dort plane eine Panel für so ziehmlich alle Statusanzeigen zu realisieren.

Grüße,
Michael