[Info] Fritz!Box zeigt eingehende Anrufe auf XBMC an

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
14,210
Punkte für Reaktionen
590
Punkte
113
Hallo Allerseits

Nachdem ich meinen Raspberry Pi mit OpenELEC (XBMC) installiert habe, kam mir folgender Gedanke:
Ist es möglich, eingehende Anrufe der Fritz!Box, sich auf dem XBMC des Raspberrys anzeigen zu lassen?

Also gegooglet und recherchiert.
Die einhellige Antwort auf meine Frage lautet: 42 JSON-RPC API
Nun, kannte ich noch nicht, also weiter schlau machen...gogledigoogledei...

Aktiveren der JSON-RPC API
1. In XBMC Einstellungen --> Dienste --> Webserver aktivieren.
2. Im Browser testen obs läuft: http://openelec_IP/jsonrpc (Sollte ein Klassenbaum aller unterstützten Kommandos liefern)
3. Dann funktioniert auch das hier
Code:
http://[B][COLOR="#FF0000"]USER:PASSWORD@openelec_IP[/COLOR][/B]/jsonrpc?request={"id":1,"jsonrpc":"2.0","method":"GUI.ShowNotification","params":{"title":"Update Available","message":"Please Reboot When Ready To Update","displaytime":8000}}
XBMC Notify Fenster: XBMC_Notify_Fenster.png Wobei message auf höchstens zwei Zeilen ausgegeben werden kann. Beispiel: "message":"Zeile1: Please Reboot\nZeile2: When Ready To Update"
4. Funktioniert, eingeloggt auf dem XBMC via ssh auch dies...
Code:
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":1,"jsonrpc":"2.0","method":"GUI.ShowNotification","params":{"title":"Update Available","message":"Please Reboot When Ready To Update","displaytime":8000}}' http://USER:PASSWORD@localhost:80/jsonrpc
5. Braucht man sich nur noch darum zu kümmern, auf der Fritz!Box, /var/calllog ein angepasstes Skript ausführen zu lassen.
6. curl braucht die Fritz!Box natürlich auch, in der MIPS*Anhang anzeigen curl.zip/MIPSEL Version passend zur Box.
7. /var/tmp/calllog.sh erstellen, mit folgenden Inhalt:
Code:
#!/bin/sh
# Variablen
METHOD='gui.shownotification'
TITLE="$1"
MESSAGE="$3"
# Pfad (auf XBMC Seite) zu einem Icon, welches zusammen mit der Nachricht angezeigt wird.
[COLOR="#FF0000"]IMAGE='/storage/.xbmc/addons/script.xbmc-pbx-addon/icon.png'[/COLOR]
# Anzeigedauer
DISPLAYTIME=15000
PARAMS='{"title":"'${TITLE}'","message":"'${MESSAGE}'","image":"'${IMAGE}'","displaytime":'$DISPLAYTIME'}'
DATA='{"jsonrpc":"2.0","method":"'$METHOD'","params":'$PARAMS',"id":1}'
URL='http://[COLOR="#FF0000"][B]USER:PASSWORD[/B][/COLOR]@openelec:80/jsonrpc'
# Kommando
TRY_IT=$([COLOR="#FF0000"]/var/media/NEW_LINK/curl[/COLOR] -s -X POST -H "Accept: application/json" -H "Content-type: application/json" -d $DATA $URL)
#DEBUG
echo -e  $0":"$$"<-PID->"$! $#" Argumente\n1="$1"\n2="$2"\n3="$3"\n4="$4"\n5="$5"\n6="$6"\n7="$7"\n8="$8"\n9="$9"\nJSON:"$TRY_IT >> [COLOR="#FF0000"]/var/tmp/calllog.log[/COLOR]
8. Einen Softlink erstellen: ln -sf /var/tmp/calllog.sh /var/calllog
9. Eventuell /var/flash/calllog aktivieren: echo "" > /var/flash/calllog
10. Fertig, testen indem man sich selber anruft und dabei auf den XBMC Screen schaut.
(Zum Debuggen mal cat /var/tmp/calllog.log eintippen)

Bekannte Ein/Beschränkung: Das calllog.sh Skript verträgt keine Leerzeichen im title/message Parameter.
Hier wäre jeder Tip zur Lösung dieses Problems sehr willkommen.

Anhang anzeigen curl.zip
*MIPS Version curl.zip in curl umbenennen und ausführbar machen (chmod +x curl).
 
Zuletzt bearbeitet:
Hi, kann ich das nicht auch irgendwie mit dem callmonitor der Fritzbox verbinden... Also über einen Listener Eintrag?
 
Mit CallMonitor (freetz)

Moin

Ja, sollte sogar fast 1:1 gehen.
Anstatt /var/calllog nennst du das Skript wie du möchtest (z.B. callmonitor_xbmc_notify.sh)
und übergibst einfach nur die richtigen Parameter.
Die Parameter $1 und $3 werden ausgewertet. Kannst du im Skript ändern von...
Code:
TITLE="$1"
MESSAGE="$3"
..in..
Code:
TITLE="$1"
MESSAGE="$2"
Dann musst du keinen leeren String angeben um den dritten Parameter angeben zu können.
Testen kannst du es indem mal händisch aufgerufen wird: sh callmonitor_xbmc_notify.sh "Hallo" "Welt"
Limitierung/Bug: Der Ausgabestring darf kein Whitespace (Leerzeichen/Tabstops) enthalten.

Beispielregel
Code:
in,req,out:* ^ ^ sh /var/media/NEW_LINK/callmonitor_xbmc_notify.sh ${SOURCE_DISP} ${DEST_DISP}
 
Zuletzt bearbeitet:
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.