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
Up
Sent from my Nexus 7 using Tapatalk
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 :-)
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 );
}
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 :-)
@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 };
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:
- Die Rufnummer ist nun ein Link in der Form "tel:...". Das hat den Vorteil, das z.B. ein Handy Browser diese Nummer direkt wählen kann. Ebenso in der Regel eine Cti Software oder der Lync auf dem PC
- Bugfix: Der Ringbuffer hat die Meldungen im dupliziert und sie wurden ständig länger
- Die Uhrzeit des jeweiligen Events ging als Datensatz verloren und stand dann nur noch im Text. Der Timestamp des Readings ist ja nach dem ersten kopieren schon falsch. Daher habe ich ein extra Reading <timestamp> eingebaut
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 );
}
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
Zitat von: Roaster am 22 August 2014, 19:17:13
... jemand ein komplettes Beispiel einstellen?
Tat ich in Antwort #2 oben.
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