Anrufmonitor auf TV anzeigen

Für Freetz-USER

Hallo ,
ich verfolge mit großem Interesse die Erfolge hier im Thread.
Allerdings besitze ich kein NAS oder ähnliches, sondern nur die Fritzbox 7270 mit 16MB und Freetz.
Bin allerdings NUR Freetz Nutzer ohne große Kenntnisse.
Ich brauche daher immer sehr einfache Anleitungen !! :)
Callmonitor kenne ich ebenfalls.

Wo/wie müßte ich denn ein Script installieren, dass von Callmontor aufgerufen wird?

Sollte man den Thread nun eventuell unterteilen in Lösungen für Freetz/Callmonitor und NAS-Lösungen?

Auf jeden Fall vielen Dank für das, was bisher hier schon veröffentlich ist !!
 
Mit Callmonitor hat das erst einmal nichts zu tun. Du musst das Skript in einen beliebigen Ordner kopieren (z.B. auf einem USB-Stick), den Startaufruf in einem weiteren Skript speichern (while do-schleife, diese Zeile...) und dann auf der Freetz-Oberfläche einen Eintrag in die Datei rc.local machen (Pfad des Aufruf-Skriptes und einem & dahinter). Im Skript selbst musst du natürlich noch den Pfad zu netcat anpassen (bei Freetz-Nutzung: /usr/bin/nc).

Da muss noch eine benutzerfreundliche Lösung her, aber erstmal richtig fertig machen.
 
ein einfaches TV-Message-Interface

Das Problem habe ich doch erklärt. dasoertliche.de ändert seinen HTML-Code öfters. Jedes Reverse-Skript, das darauf basiert ist nicht für die Ewigkeit, sondern für ein paar Monate brauchbar. Anders ist das z.B. bei der Bahnauskunft, wo man weiterhin auf alte Versionen mit alter URL zugreifen kann. Die Lösung wäre etwas, das einen anderen Telefonbuchanbieter nutzt.
Wir haben mit anderen Telefonbuchanbieter doch das gleiche Problem, dass deren HTML interfaces sich ändern können.
Man brauchte einen standartisierten web-service, der eine Verzeichnisauskunft liefert. Anscheinend hat die Bundesnetzagentur bisher verpasst, von allen Telefonanbieter auch eine standartisierte Verzeichnisauskunft per Internet zu verlangen. (Werbeanrufer dürfen zwar nicht mehr ihre Rufnummernanzeige unterdrücken, aber trotzdem kann ich nicht den Namen dieses Anrufers herausfinden.)

Callmonitor braucht man trotzdem nicht - zuviel Overhead wenn man den garnicht nutzen möchte. Es gibt viele kleine Shellskripte, die das machen und nicht erwarten, ein Haufen Zeug auf der FB installiert zu haben. Wir haben das schon diskutiert und es bestand der Wunsch, das Samsung-Skript auch ohne Freetz und so nutzen zu können.
Ja, richtig! Ich persönlich möchte es ohne Freetz nutzen können und auch ohne Callmonitor. Natürlich sollte der Callmonitor es auch nutzen können.
In meinen ersten Beitrag habe ich meinen Haupteinsatzzweck schon skizziert:
MartinH@IP schrieb:
Neben einer Anrufer-Anzeige möchte ich nach und nach auch noch viel mehr anzeigen: (z.B. "es klingelt an der Haustür", "neue EMail mit Titel <...> ist angekommen", "aktuelle Sturmwarnung ..") [Die Fritzbox besorgt die Info lokal, aus dem Internet oder vom Haustechnik-Bus z.B. LCN]
Je nach meiner Wunscheinstellung soll mein Haus wissen, ob es mich am TV mit Nachrichten informieren darf, oder ob nur kritische/familiäre Meldungen erlaubt sind, damit der Fernsehabend möglichst ungestört ablaufen kann.

Somit brauche ich persönlich nur ein einfaches TV-Message-Interface, das ich aus anderen Logikschichten aufrufen kann.

Gruß, Martin - der sich schon fast garnicht mehr an einen ungestörten TV-Abend erinnern kann ;)
 
SuMiHe: Ich habe deine Änderungen noch einmal vereinfacht. So braucht man keine temporäre Datei mehr:

Code:
SUCHZEILE=$(wget -qO- --tries=3 --timeout=5 "http://www1.dasoertliche.de/?form_name=search_inv&ph=$CALLER" | grep "nachname")
TMP1=${SUCHZEILE#*nachname=}
IFS="&"
set -- $TMP1
name=$1
street=$2
nr=$3
plz=$4

Martin: Was Layout-Änderungen betrifft, sind die Seiten da recht unterschiedlich. reiseauskunft.bahn.de erhält bei Änderungen immer eine neue URL, wobei die alten Versionen weiterhin abrufbar sind, falls man direkt darauf zugreift. Und das wird bewusst so gemacht. Für Telefon-Nummern gibt es ja z.B. auch noch http://www.dastelefonbuch.de oder ausländische Anbieter. Vielleicht sollte man eh mehrere Quellen nutzbar machen und den Benutzer eine auswählen lassen - zumindest wenn das Ding in Freetz reinkommt eben in das Web-Interface. Wer aus Österreich kommt, bräuchte dann eh eine österreichische Quelle, damit Nummern ohne internationale Vorwahl auch als österreichische Nummern verarbeitet werden.
 
Zuletzt bearbeitet:
.. zu einem "sauberen" Unix sh script

Ja, so erging es mir auch. Deshalb habe ich erstmal die unschöne Variante genutzt und per Editor (nodepad++ auf Win) alle string-Enden <LF> durch <CR><LF> ersetzt: also \l durch \r\l ersetzt.
So sind sie auch in obigen Anhang erfolgreich eingebaut. :) Der sollte funktionieren.

Aber es muss auch schöner/einfacher im Script gehen.
Ansonsten vielleicht die strings in sed nachbehandeln.

So, jetzt habe ich ein "sauberes" Unix sh script. :)
Ich habe das CR Problem noch mal genauer angeschaut und die CR Einschübe sind anscheinend nur im SOAP header nötig.
Der XML Teil braucht keine CR Einschübe.
Somit habe ich alle CR Zeichen wieder aus dem Script entfernt, so dass es wieder wie ein ordentliches Unix script nur LF Zeilenumbrüche hat.
Und für den SOAP header habe ich - wo nötig - ein CR als Zeichen CRchar am Zeilenende eingefügt. So ist diese neue Version des Code-Abschnitts entstanden:
Code:
# BUILD HTTP
CRchar=$(echo -e "\r")
message="POST /PMR/control/MessageBoxService HTTP/1.0 $CRchar
Content-Type: text/xml; charset=\"utf-8\" $CRchar
HOST: $DESTINATION $CRchar
Content-Length: $((${#soap}+0)) $CRchar
SOAPACTION: \"urn:samsung.com:service:MessageBoxService:1#AddMessage\" 
Connection: close $CRchar
$CRchar
$soap"
Dies ersetzt den entsprechenden Teil in meinem obigen makeSoap2.

Gruß, Martin - der erstmal die echo Optionen wieder nachlesen musste ;)
 
Wie auch immer Ihr die Rückwärtssuche realisieren bzw. verbessern wollt, ein Blick in die entsprechenden CM-Sektionen zu den einzelnen Reverse-Anbietern schadet sicherlich nicht. Für folgende Dienste gibt es den Quellcode:
Code:
[FONT=Courier New]R    dasoertliche    49    www.dasoertliche.de
R    telefonbuch     49    www.dastelefonbuch.de
R    goyellow        49    www.goyellow.de
R    11880           49    www.11880.com
R    telefonbuch_at  43    www.das-telefonbuch.at
R    search_ch       41    www.search.ch
R    anywho           1    www.anywho.com
A    google           *    www.google.de[/FONT]
R: Rückwärtssuche
A: nur Anzeige des Ortes anhand der Vorwahl, wenn die Nr. sonst unbekannt ist
 
Hallo,

jemand eine Idee, wie man den Skriptaufruf in die FB geschickt einbinden kann?

Das Prinzip "Schleifenaufruf in Startskript und dann Startskript in die rc.custom über die Freetz-Oberfläche eintragen" funktioniert nicht zuverlässig. Dann wird das Skript zwar gestartet, aber die ganze Schachtelung bricht nach einiger Zeit kommentarlos ab.
 
Skriptaufruf in die FB geschickt einbinden? - Ich habs so gelöst:

Das freetz Modul Callmonitor zur Firmware hinzugefügt und als
"Listeners" folgendes eingetragen:

in:request ^ ^ samsungMessage "$TIMESTAMP;RING;1;$SOURCE_NAME;$DEST_DISP;$PROVIDER" 192.168.xx.yy

"samsungMessage" ist das script von MartinH@IP
Ich habe es in der Build Umgebung unter root/usr/lib/sbin/samsungMessage abgelegt, so dass es mit in die zu erstellende Firmware eingebaut wird.

Es funktioniert prima! *froi*
 
Hallo,

macht Spaß hier zu lesen, dass Ihr habt es endlich geschafft, den Fernseher zu überreden die Anrufe anzuzeigen.

Könnte jemand eine Schritt für Schritt Anleitung für Anfänger anfertigen und online stellen, damit auch wir versuchen es hinzukriegen.
Das wäre toll und dafür vielen vielen Dank im Voraus.

Gruß
prima

PS
@robot_rap
Kann man hoffen, dass auch JFritz diese Feature irgendwann beherrscht und steuert?
 
Zuletzt bearbeitet:
bei einem Aufruf durch den Messagestring des FritzboxCallmonitor wird der Telefonbucheintrag aber nicht gefunden ???
Ist es dann nicht eher CM-spezifisch? Vielleicht hat Andreas dort eine Idee?
 
So jetzt hab ich es gefunden, war eine einfache Pfadangabe welche fehlte !

so hab ich es hin bekommen:

mit einem analogen Telefon FB Callmonitor aktivieren:
#96*5*

mein Script liegt bei mir auf einem Linkstation Live NAS im Verzeichnis /etc
(nicht vergessen mit zB. "chmod +x makeSoap.sh" ausführbar machen)

Code:
[SIZE="1"]#! /bin/sh
# usage: ./makeSoap2 "06.05.10 19:19:50;RING;1;1234;4567;SIP1;" 192.168.178.3

# ENTER NETCAT PATH HERE
########################
NETCAT="nc"
# ENTER PATH Telefonbuch
########################
TBOOK="/etc/telefonbuch"

# TEST IF MESSAGE TYPE IS RING, OTHERWISE QUIT
case $1 in
*RING*)
# SPLIT MESSAGE STRING
DESTINATION=$2
IFS=";"
set -- $1
DATETIME=$1
CALLEE=$5
CALLER=$4

#Anrufer nach Nummer im Telefonbuch suchen
TMP1=`grep -i $CALLER $TBOOK`
name=${TMP1#*;}
if [ "$name" = "" ]
	then

	#wenn kein Telefonbucheintrag dann online reverssuche starten
	SUCHZEILE=$(wget -qO- --tries=3 --timeout=5  "http://www1.dasoertliche.de/?form_name=search_inv&ph=$CALLER" | grep "nachname")
	TMP1=${SUCHZEILE#*nachname=}

	IFS="&"
	set -- $TMP1
	name=$1
	street=$2
	nr=$3
	plz=$4
fi

IFS=" "
set -- $DATETIME
CALLDATE=$1
CALLTIME=$2

# BUILD XML
soap="<?xml version=\"1.0\" encoding=\"utf-8\"?>
<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" >
<s:Body>
<u:AddMessage xmlns:u=\"urn:samsung.com:service:MessageBoxService:1\\\">
<MessageType>text/xml</MessageType>
<MessageID>'$(date +%H%M%S)'</MessageID>
<Message>
&lt;Category&gt;Incoming Call&lt;/Category&gt;
&lt;DisplayType&gt;Maximum&lt;/DisplayType&gt;
&lt;CallTime&gt;
&lt;Date&gt;$CALLDATE&lt;/Date&gt;
&lt;Time&gt;$CALLTIME&lt;/Time&gt;
&lt;/CallTime&gt;
&lt;Callee&gt;
&lt;Number&gt;$CALLEE&lt;/Number&gt;
&lt;Name&gt;$CALLER&lt;/Name&gt;
&lt;/Callee&gt;
&lt;Caller&gt;
&lt;Number&gt;$CALLER&lt;/Number&gt;
&lt;Name&gt;$name&lt;/Name&gt;
&lt;/Caller&gt;
</Message>
</u:AddMessage>
</s:Body>
</s:Envelope>
"

# BUILD HTTP
message="POST /PMR/control/MessageBoxService HTTP/1.0
Content-Type: text/xml; charset=\"utf-8\"
HOST: $DESTINATION
Content-Length: $((${#soap}+0))
SOAPACTION: \"urn:samsung.com:service:MessageBoxService:1#AddMessage\"
Connection: close

$soap"

echo "CallMessage send"

# SEND MESSAGE TO TV
echo $message | $NETCAT -n -w 1 $DESTINATION 52235
;;

*)
;;

esac[/SIZE]
mit folgenden Befehlen "lauscht" das NAS auf dem Port 1012 der FritzBox, und ruft das Script makeSoap.sh auf:
Code:
nc 192.168.178.1 1012 | while read CALLSTR; do sh /etc/makeSoap.sh "$CALLSTR" 192.168.178.50; done &

wird bei mir beim Start durch die "rcS" ausgeführt. (Achtung das "&" am Ende nicht vergessen damit alles im Hintergrund läuft.

Das Telefonbuch ist ein einfaches Textfile in der Art
Code:
12345 ; Paul
23222 ; Frank ist doof
...
...
wird in diesem File die Telefonnummer nicht gefunden, wird dasörtliche.de per Rückwärtssuche versucht, wenn nichts gefunden wird wird lediglich die Telefonnummer des Anrufers gezeigt.
Eigentlich sollte das angepasste script mit den entsp. Änderungen auch auf der FritzBox oder dem Samy laufen...

Gruß Mirko
:)
 
richtige Quotes ?

hab mit meinem Script ein großes Problem:
wie wäre es mit:
Code:
#FritzBox Anrufmonitor abfragen
nc 192.168.178.1 1012 | while read str; do sh /etc/makeSoap.sh \"$str \" 192.168.178.50; done &
Dein erstes Argument $str ist ja sehr lang und beinhaltet auch Leerzeichen ' '.

Im manuellen Aufruf hast Du ja die " double quotes " schon in Deinem Post korrigiert eingetragen:
Code:
./makeSoap.sh "12.05.10 21:34:47;RING;0;12345;4233963;POTS;" 192.168.178.10
In solchen Fällen hilft es immer mal trace Ausgaben ins script zu bauen und die Argumente auszugeben.

---
EDIT: ich sehe gerade, Du hast den richtigen Fehler selber schon gefunden ..
 
@ao @MartinH@IP Danke für Eure Hilfe, Fehler wurde durch die fehlende Pfadangabe beim - telefonbuch verursacht. Jetzt funktioniert alles prima.
... aber was mache ich jetzt ? ;)
 
Hallo Martin,

könntest Du bitte Dein Skript einmal komplett, aktualisiert zur Verfügung stellen?
Auf meiner Fritzbox 7170 gibt es Probleme mit den wget-Optionen --tries und --timeout, d.h. sie sind unbekannt.
Außerdem ist die nc-Option -n auf meiner FB unbekannt.
Welche wget- bzw. nc-Versionen laufen bei Dir?

Der Aufruf unter Weglassung der o.g. Optionen schlägt bei mir fehl, wenn ich makeSoap2 mit Werten wie u.g. aufrufe:
Code:
root@fb1 /var/media/ftp/uStor01/external/usr/share $ ./makeSoap2 "15.05.10 21:47:00;RING;1;von;an;Provider" tv
CallMessage send
HTTP/1.1 401 Unauthorized
Connection: close
Content-Length: 0
Server: DMRND/0.5
Wenn ich es so aufrufe, klappt es:
Code:
root@fb1 /var/media/ftp/uStor01/external/usr/share $ ./makeSoap "$TIMESTAMP;RING;1;$SOURCE_NAME;$DEST_DISP;$PROVIDER" tv
CallMessage send
HTTP/1.1 200 OK
CONTENT-LENGTH: 255
CONTENT-TYPE: text/xml; charset="utf-8"
DATE: Thu, 01 Jan 1970 01:33:08 GMT
EXT:
SERVER: Linux/9.0 UPnP/1.0 PROTOTYPE/1.0

<s:Envelope xmlns:s="[URL]http://schemas.xmlsoap.org/soap/envelope/[/URL]" s:encodingStyle="[URL]http://schemas.xmlsoap.org/soap/encoding/[/URL]"><s:Body><u:AddMessageResponse xmlns:u="urn:samsung.com:service:MessageBoxService:1"></u:AddMessageResponse></s:Body></s:Envelope>
Könntest Du ggf. den Teil mit der Tel.Nr. und Rückwärtssuche in einem "makeSoap3" weglassen, so dass man einen x-beliebigen String an makeSoap3 übergeben und am TV anzeigen lassen kann?

Herzlichen Dank!
 
Zuletzt bearbeitet:
Hallo Martin,

könntest Du bitte Dein Skript einmal komplett, aktualisiert zur Verfügung stellen?
hier - ohne Gewähr - meine letzte makeSoap2 Version, die ich aber nicht mehr benutze.
Code:
#! /bin/sh
# usage: ./makeSoap2 "06.05.10 19:19:50;RING;1;1234;4567;SIP1;" 192.168.178.38

DESTINATION=$2
IFS=";"
set -- $1
DATETIME=$1
CALLEE=$4
CALLER=$5
IFS=" "

set -- $DATETIME
CALLDATE=$1
CALLTIME=$2

# BUILD XML
soap="<?xml version=\"1.0\" encoding=\"utf-8\"?>
<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" >
<s:Body>
<u:AddMessage xmlns:u=\"urn:samsung.com:service:MessageBoxService:1\\\">
<MessageType>text/xml</MessageType>
<MessageID>'$(date +%H%M%S)'</MessageID>
<Message>
&lt;Category&gt;Incoming Call&lt;/Category&gt;
&lt;DisplayType&gt;Maximum&lt;/DisplayType&gt;
&lt;CallTime&gt;
&lt;Date&gt;$CALLDATE&lt;/Date&gt;
&lt;Time&gt;$CALLTIME&lt;/Time&gt;
&lt;/CallTime&gt;
&lt;Callee&gt;
&lt;Number&gt;$CALLEE&lt;/Number&gt;
&lt;Name&gt;$CALLEE&lt;/Name&gt;
&lt;/Callee&gt;
&lt;Caller&gt;
&lt;Number&gt;$CALLER&lt;/Number&gt;
&lt;Name&gt;$CALLER&lt;/Name&gt;
&lt;/Caller&gt;
</Message>
</u:AddMessage>
</s:Body>
</s:Envelope>
"

# echo $soap
# echo length: ${#soap}


# BUILD HTTP
CRchar=$(echo -e "\r")
message="POST /PMR/control/MessageBoxService HTTP/1.0 $CRchar
Content-Type: text/xml; charset=\"utf-8\" $CRchar
HOST: $DESTINATION $CRchar
Content-Length: $((${#soap}+0)) $CRchar
SOAPACTION: \"urn:samsung.com:service:MessageBoxService:1#AddMessage\" 
Connection: close $CRchar
$CRchar
$soap"

echo $message >soapTV
# SEND MESSAGE TO TV
echo $message | ./netcat -n -w 1 $DESTINATION 52235

Auf meiner Fritzbox 7170 gibt es Probleme mit den wget-Optionen --tries und --timeout, d.h. sie sind unbekannt.
Ich benutze bisher keine Rückwärtssuche und somit da auch kein wget.

Außerdem ist die nc-Option -n auf meiner FB unbekannt.
Welche wget- bzw. nc-Versionen laufen bei Dir?

Ich benutze das "nc" der Fritzbox 7270 auch nicht (und habe es auch nicht probiert) - sondern ich gebrauche eine "netcat" Version, die bei LinHK mitausgeliefert wird.

Könntest Du ggf. den Teil mit der Tel.Nr. und Rückwärtssuche in einem "makeSoap3" weglassen, so dass man einen x-beliebigen String an makeSoap3 übergeben und am TV anzeigen lassen kann?
Genau daran arbeite ich gerade und bin da bei makeSoap4.
Ich möchte ein einfaches script interface für SMS2TV und INCOMINGCALL2TV und SCHEDULE2TV. Die Parameter der scripte geben die konkreten Anzeigewerte mit.
Vor das INCOMINGCALL2TV script kann man noch eine Rückwärtssuche einbauen. Und das ganze vom passenden FB port aus füttern.
Ich baue mir gerade aber erst ein cgi-script, das dann SMS2TV aufruft, um kleine Texte, die ich an einem Mini-Webserver auf der FB schicke als "SMS" auf TV zusenden. - Wann ich damit fertig bin, weiss ich noch nicht. (Im Prinzip klappt das schon, wie ich heute(!) getestet habe.)
 
Vielen Dank, Martin, für das Skript!

Damit wird bei mir auf dem TV sogar der Name des Anrufers angezeigt, so wie er im Adressbuch steht.
Ich habe nur die letzte Zeile angepasst, weil netcat auf meiner FB "nc" heißt und die Option -n nicht kennt (ist aber nicht nötig):
Code:
echo  $message | nc -w 1 $DESTINATION 52235
Das Resultat sieht nun so aus:
Peter [mobil]

Anruf

Anruf erhalten
551234
551234
Die angerufene Nummer (551234) wird bei mir 2x untereinander angezeigt, weil $DEST_DISP und $PROVIDER identisch sind.

Wenn ich dann auf OK gehe, kommt folgende Info:
Peter [mobil]

Anruf : 1/2
551234
551234
0 (Do) 10:56
"1/2" bedeutet, dass Peter schon 2x angerufen hat.
Das Datum (0) wird nicht korrekt angezeigt. Mal sehen, ob ich das beheben kann.

Aber das sieht doch schon einmal prima aus. :)

Habe ich Dich richtig verstanden, dass man verschiedene "Sorten" von Soap-Meldungen verwenden kann (SMS, IncomingCall etc.)?
D.h. die sehen dann auf dem TV unterschiedlich aus und haben auch unterschiedliche Parameter?
 
Hallo,

mir ist gerade aufgefallen, dass die Nachricht bei der Verwendung von Callmonitor doppelt abgesetzt wird - einmal beim Klingeln und einmal beim Auflegen.
 
Habe ich Dich richtig verstanden, dass man verschiedene "Sorten" von Soap-Meldungen verwenden kann (SMS, IncomingCall etc.)?
D.h. die sehen dann auf dem TV unterschiedlich aus und haben auch unterschiedliche Parameter?
Ja, genau. Die Varianten sind inzwischem im SamyGo Wiki dokumentiert. :)

Gruß, Martin - der sich mehr für SMS und schedule reminder interessiert ..
 
Kennt jemand ein Tool für die Kommandozeile, um Google Kalender abzufragen, das keine besonderen Abhängigkeiten hat oder als statisch gelinktes Binärprogramm laufen kann?

Ich habe nur GCALCLI gefunden, aber das fällt für einen Benachrichtigungsdienst flach. Auf dem Fernseher Python und dazu noch ein Haufen Module zum Laufen zu bekommen gäbe ein Riesen Chaos.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.