[ds-mod] Callmonitor

Status
Für weitere Antworten geschlossen.
buehmann schrieb:
Hi, wie ist das mit den Parametern von XBMC.Notification? Kann man dort auch Zeilenumbrüche und Kommas (wie?) verwenden?

Andreas

erlich gesagt weiss ich nicht. Da ich DS-Mod drauf habe kann ich es auch nicht testen. Aber schicke die zeilen von den alten debug.cfg.


#init var theline
theline=""

#read lines list
while read thelines
do
case ${thelines} in
${called}*)
theline=${thelines#*:}
theline=${theline%%\;*}
break
;;
esac
done < /var/tmp/lines

# line not found?
if [ -z "${theline}" ]
then
theline=${called}
fi
httptheline=`echo "${theline}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;}'`

# Send information to all DHCP clients
while read x x IP x
do
wget -O /dev/null "http://${IP}:23232/?caller=${caller}&called=${called}&name=${name}&line=${theline}" >/dev/null 2>&1 &
done < /var/flash/multid.leases

# send information to XBoxes
wget -O /dev/null "http://benutzer:p[email protected]/xbmcCmds/xbmcHttp?command=ExecBuiltIn&parameter=XBMC.Notification(Eingehender%20Anruf,Anrufer%3A%20${httpname}%0ALeitung%3A%20${httptheline})" >/dev/null 2>&1 &

# send information to DBoxes -> TV screen
wget -O /dev/null "http://benutzer:p[email protected]/control/message?nmsg=Eingehender%20Anruf%0AAnrufer%3A%20${httpname}%0ALeitung%3A%20${httptheline}" >/dev/null 2>&1 &

# send information to DBoxes -> LCD
wget -O /dev/null "http://benutzer:p[email protected]/control/lcd?lock=1&clear=1&xpos=5&ypos=20&size=18&font=2&text=${httpname}&update=1" >/dev/null 2>&1 &
sleep 1
wget -O /dev/null "http://benutzer:p[email protected]/control/lcd?lock=1&clear=0&xpos=5&ypos=42&size=18&font=2&text=an%20${httptheline}&update=1" >/dev/null 2>&1 &
sleep 10
wget -O /dev/null "http://benutzer:p[email protected]/control/lcd?lock=0" >/dev/null 2>&1 &
 
buehmann schrieb:
Hi, wie ist das mit den Parametern von XBMC.Notification? Kann man dort auch Zeilenumbrüche und Kommas (wie?) verwenden?
Andreas

Leider schweigt sich die XBMC-Doku dazu aus... da hilft nur probieren. Ich denke, da es ein http-Aufruf ist, müssen Sonderzeichen URL-codiert angegeben werden. Also z.B. %0D%0A wäre für einen Zeilenumbruch in Windows. Linux begnügt sich glaube ich mit %0A. Es gibt dann auch Codes für alle anderen Sonderzeichen. Ob die Box (also XBMC) das wieder korrekt zurückwandelt oder %xx als Text ausgibt, musst Du probieren.

Falls es nicht umgewandelt wird, sollten wir die Frage im XBMC-Forum stellen. Vielleicht kann das dann ja auch in einer neuen Version geändert werden.
 
kay1234 schrieb:
Leider schweigt sich die XBMC-Doku dazu aus... da hilft nur probieren.
Ich habe mal direkt in den Code geschaut: Kommas kann man nicht in den Werten verwenden; die werden immer als Trenner benutzt. Alles andere wird einfach durchgereicht bis zur Darstellung auf dem Bildschirm (ob Zeilenumbrüche erlaubt sind, konnte ich nicht herausfinden).

Ich denke, da es ein http-Aufruf ist, müssen Sonderzeichen URL-codiert angegeben werden.
Klar, mache ich sowieso immer. Sonst entstehen ja evtl. ungültige URLs.
Ob die Box (also XBMC) das wieder korrekt zurückwandelt oder %xx als Text ausgibt, musst Du probieren.
Falls sie das nicht tun sollte, wäre das meines Erachtens ein Fehler.

Andreas
 
buehmann schrieb:
Ich habe mal direkt in den Code geschaut: Kommas kann man nicht in den Werten verwenden; die werden immer als Trenner benutzt. Alles andere wird einfach durchgereicht bis zur Darstellung auf dem Bildschirm (ob Zeilenumbrüche erlaubt sind, konnte ich nicht herausfinden).
Ja, soweit war ich da auch gerade. Leider konnte ich nirgendwo die Implementierung der Funktion g_application.m_guiDialogKaiToast.QueueNotification finden. Ist vielleicht eine Standard-Funktion. Da würde man vielleicht sehen, was passiert. Also müssen wir wohl doch probieren. Meine Xbox ist leider noch nicht am LAN (weil räumlich weit davon weg) und ich habe gerade kein ds-mod, weil das mit dem LCR Auto-Updater kollidiert. Aber vielleicht kann ich das ja mal zum Testen einrichten.

buehmann schrieb:
Falls sie das nicht tun sollte, wäre das meines Erachtens ein Fehler.
Andreas
Allerdings. Gibt es eigentlich eine HTML-Codierung für das Komma? Evtl. könnte man das so auch auf der Box darstellen lassen... vorausgesetzt, die decodierung erfolgt nach der Trennung der Parameter.
 
Zuletzt bearbeitet:
kay1234 schrieb:
Ja, soweit war ich da auch gerade. Leider konnte ich nirgendwo die Implementierung der Funktion g_application.m_guiDialogKaiToast.QueueNotification finden.
http://cvs.sourceforge.net/viewcvs.py/xbmc/XBMC/xbmc/GUIDialogKaiToast.cpp; die eigentliche Arbeit nach der Warteschlange passiert dann in DoWork(); weiter als bis zu SET_CONTROL_LABEL habe ich den Weg der Strings nicht verfolgt.

Aber vielleicht kann ich das ja mal zum Testen einrichten.
Ein Webbrowser oder irgendein anderer HTTP-Client reicht ja erst einmal zum Testen. Wäre toll, wenn du das ausprobieren könntest.

Allerdings. Gibt es eigentlich eine HTML-Codierung für das Komma? Evtl. könnte man das so auch auf der Box darstellen lassen...
Klar, zumindest in der numerischen Form &#...; gibt es immer eine. Die Frage ist nur, ob die Argumente für Titel und Beschreibung von der Box als HTML interpretiert werden. Dazu habe ich noch überhaupt nichts gelesen.

Andreas
 
So wie das aussieht, wird das dann wohl schon vom Webserver decodiert (was schlecht ist für das Komma). Sobald ich meine XBox am LAN habe, probiere ich das aus. Wieso nehmen die gerade ein Komma als Trennzeichen... es gibt soviel Murks auf der Tastatur.
 
kay1234 schrieb:
Wieso nehmen die gerade ein Komma als Trennzeichen... es gibt soviel Murks auf der Tastatur.
:) Irgendein Zeichen müssen sie ja nehmen und fast jeder Programmierer erwartet das Komma; es wäre ja auch egal, wenn sie nur eine Escape-Möglichkeit in den Argumenten anbieten würden.
 
Also, ich hab gestern einmal kurz probieren können. Meine Meinung: das kann man total vergessen. Ich habe die URL von hier versucht. Die Box zeigt das auch an, mit korrekten Umbrüchen. Umlaute hab ich noch nicht probiert. Allerdings ist das - zumindest bei mir - kaum lesbar. Es gehen max. 2 Zeilen, ab der dritten schreibt die Box den Text auf den Rahmen des Infofensters. Die Zeilenabstände sind auch zu niedrig. Und es wird viel zu kurz angezeigt (keine Einstellmöglichkeit).

Es gibt allerdings einen Script für XBMC, das yac-Meldungen entgegennehmen können soll. Lässt sich direkt über die Box runterladen. Das scheitert bei mir bisher daran, dass ich keinen yac hab. Ich denke, da habe ich heute Zeit zu, dann teste ich es mal mit yac.
 
kay1234 schrieb:
Allerdings ist das - zumindest bei mir - kaum lesbar. Es gehen max. 2 Zeilen, ab der dritten schreibt die Box den Text auf den Rahmen des Infofensters. Die Zeilenabstände sind auch zu niedrig. Und es wird viel zu kurz angezeigt (keine Einstellmöglichkeit).
Hmm, das ist ja nicht sehr erfreulich. @futurama: Ist das bei dir auch so?

Das scheitert bei mir bisher daran, dass ich keinen yac hab.
Inwiefern? Wenn du einen YAC-Server für die xbox heruntergeladen hast, dann reicht das doch. Der Callmonitor spielt dann den Client (Funktion "yac").

Andreas
 
buehmann schrieb:
Hmm, das ist ja nicht sehr erfreulich. @futurama: Ist das bei dir auch so?


Inwiefern? Wenn du einen YAC-Server für die xbox heruntergeladen hast, dann reicht das doch. Der Callmonitor spielt dann den Client (Funktion "yac").

Andreas

also mit dem alten Callmonitor, die über debug.cfg lief, gab es keine probleme. Weil es die Name und die Telefonnummer angezeigt hat, haben zwei zeilen gereicht. Aber mit deiner Callmonitor kann es sein, das es die ganze Daten anzeigen will (Name,TelNr.,Anschrift,BLZ,Stadt). Wie es dann anzeigen wird weiss ich es nicht. Übrigens habe ich mit YAC schohn probiert. So bald ich eine test anruf mache stürzt der CallerID ab.
 
futurama schrieb:
Weil es die Name und die Telefonnummer angezeigt hat, haben zwei zeilen gereicht.
Danke für die Informationen. Und wie sieht es bei dir mit der Länge der Einblendung und dem Zeilenabstand aus?

Andreas
 
buehmann schrieb:
Danke für die Informationen. Und wie sieht es bei dir mit der Länge der Einblendung und dem Zeilenabstand aus?

Andreas

ich kann momentan es nicht testen, weil ich die Danisahne mod drauf habe. Um es zu testen zu können muss ich wider die alte image flashen.

class caller(xbmcgui.WindowDialog):
def __init__(self):

w = self.getWidth()
h = self.getHeight()
self.bg = xbmcgui.ControlImage(w - 282, h - 138, 222, 103, 'q:\\scripts\\CallerID\\dialog.png')
self.addControl(self.bg)
self.callerid = xbmcgui.ControlLabel(w - 275, h - 95, 151, 64, data, 'font13', '0xff000000')
self.addControl(self.callerid)
if not DOIMAGE:
self.title = xbmcgui.ControlLabel(w - 277, h - 133, 100, 10, 'Caller ID', 'font13', '0xffffffff')
self.addControl(self.title)
else:
self.frame = xbmcgui.ControlImage(w - 359, h - 138, 77, 103, 'q:\\scripts\\CallerID\\frame.png')
self.addControl(self.frame)
self.title = xbmcgui.ControlLabel(w - 354, h - 133, 100, 10, 'Caller ID', 'font13', '0xffffffff')
self.addControl(self.title)
filename = replace(number, '(', '')
filename = replace(filename, ')', '')
filename = replace(filename, ' ', '')
filename = replace(filename, '-', '')
filename = 'q:\\scripts\\CallerID\\' + filename + '.jpg'
if not fileExists(filename): filename = 'q:\\scripts\\CallerID\\default.jpg'
self.tn = xbmcgui.ControlImage(w - 359, h - 112, 77, 77, filename)
self.addControl(self.tn)

self.a = -1
self.shown = 1

subThread = threading.Thread(target=self.SubthreadProc, args=())
subThread.start()
 

Anhänge

  • CallerID.zip
    35.2 KB · Aufrufe: 2
Test Ergebniss

Hi,

Heute konnte ich es testen. Beim X-Box kommt ein kleines Fenster, die mann 2 zeilen benutzen kann. Wenn die Informationen mehr als zeilen werden, zeigt es trotzdem an, aber die schriften kommen von der Fenster raus.

z.b.
Eingehender Anruf
0999112233 an
Mustermann

Also Mustermann kommt von der Fenster raus.

Und was mich noch bewundert hat, das es ohne CallerID script läuft. Ich habe den CallerID script, nach dem downgrade auf Danisahne Mod gelöscht, weil es immer abgestürzt hat. Also kurz gefast; Ich habe das neue XBMC (ohne CallerID Script) und in debug.cfg ist dieses eintrag;

wget -O /dev/null "http://benutzer:p[email protected]/xbmcCmds/xbmcHttp?command=ExecBuiltIn&parameter=XBMC.Notification(Eingehender%20Anruf,Anrufer%3A%20${httpname}%0ALeitung%3A%20${httptheline})" >/dev/null 2>&1 &

Wo mann den Fentergrösse ändern kann weiss ich es nicht. Wenn da mal jemand was weiß, soll sich melden.
 
Hi,
futurama schrieb:
Heute konnte ich es testen. Beim X-Box kommt ein kleines Fenster, die mann 2 zeilen benutzen kann.
ok, in der nächsten Version (wahrscheinlich am Sonntag) gibt es eine Funktion "xboxmessage" mit einer zweizeiligen Standardnachricht
Code:
Anruf an <Nummer oder Name>
von <Nummer oder Name>
(Wie lang können die Zeilen eigentlich sein?)

Andreas
 
buehmann schrieb:
Hi,

ok, in der nächsten Version (wahrscheinlich am Sonntag) gibt es eine Funktion "xboxmessage" mit einer zweizeiligen Standardnachricht
Code:
Anruf an <Nummer oder Name>
von <Nummer oder Name>
(Wie lang können die Zeilen eigentlich sein?)

Andreas

ok. "lcdmessage" für die D-Box2 wird dann auch integriert sein.
 
buehmann schrieb:
Hi,

ok, in der nächsten Version (wahrscheinlich am Sonntag) gibt es eine Funktion "xboxmessage" mit einer zweizeiligen Standardnachricht
Code:
Anruf an <Nummer oder Name>
von <Nummer oder Name>
(Wie lang können die Zeilen eigentlich sein?)

Andreas

Es ist egal wie lang die Zeilen sind. Also du kannst die ganze informationen bei diesen 2 zeilen rein machen.Es tut automatisch scrollen.

wget -O /dev/null "http://benutzer:p[email protected]/xbmcCmds/xbmcHttp?command=ExecBuiltIn&parameter=XBMC.Notifi cation(Das ist die erste Zeile1111111111111333333333333333335555555555555555,das ist die zweite Zeile 222222222222444444444444666666666666)" >/dev/null 2>&1 &


XBMC.Notification(Header,Message)
so habe ich es über telnet getestet.

Das Fenster bleit aber 5 sec. an das Fernsehen stehen. Ich muss kukken wie mann solche meldungen länger anzeigen lässt.
 
Zuletzt bearbeitet:
Version 0.8 und Vorschau

Guten Morgen,

Version 0.8 des Callmonitors ist fertig; neu sind vor allem die Funktionen "xboxmessage" und "dboxlcd":
  • dboxlcd zeigt eine bis zu vier Zeilen lange Meldung auf dem LCD der Dbox an (da dazu bis zu vier separate HTTP-Requests von Nöten sind, dauert die vollständige Anzeige ein kleines bisschen länger). Das LCD wird nach 10 Sekunden wieder freigegeben; diese Zeit lässt sich über DBOX_TIMEOUT einstellen. Beispiele:
    Code:
    dboxlcd box-a # Standard-Nachricht
    dboxlcd --port=8080 --username=aladin --password=sesam box-b "Zeile 1" "Zeile 2" "Zeile 3" "Zeile 4"
    DBOX_TIMEOUT=15 dboxlcd box-c
  • xboxmessage zeigt eine bis zu zweizeilige Nachricht auf der X-Box an. (Die Nachricht hat den Titel "Telefonanruf", kann aber über XBOX_CAPTION geändert werden.) xboxmessage versteht dieselben Argumente wie z.B. dreammessage oder dboxmessage.

Für die nächste Version habe ich mir die Umstellung des Callmonitor auf die telefon-Schnittstelle vorgenommen, die mit den Firmwareversionen x.99 bzw. (x+1).01 für JFritz geschaffen wurde. Das bedeutet, das der Callmonitor dann auch mit den aktuellen Beta-Versionen der Firmwares funktionieren wird.

Die Umstellung wird eine Erweiterung des Listeners-Format mit sich bringen, weil dann auf bis zu acht verschiedene Ereignisse unterschiedlich reagiert werden kann: Anruf kommt an (es klingelt); Anruf wurde abgebrochen, bevor eine Verbindung zustande kam (so kann man direkt auf "verpasste Anrufe" reagieren); Verbindung beginnt; Verbindung wurde beendet. Dazu kommt die Unterscheidung eingehender oder ausgehender Anruf. Momentan haben diese Ereignisse bei mir folgende Namen:
Code:
in:request    out:request
in:cancel     out:cancel
in:connect    out:connect
in:disconnect out:disconnect
Dazu passend plane ich eine zusätzliche erste Spalte in den Listeners, in der mit Wildcards und Abkürzungen das gewünschte Ereignis angegeben werden kann, auf das die betreffende Regel reagieren soll:
Code:
in:request  ^       ^SIP0$  xboxmessage xbox
out:cancel  ^SIP1$  ^0123   dboxpopup dbox-a "${DEST} geht nicht ran"
*:dis       ^       ^       echo "Anruf beendet: ${DURATION} Sekunden" >> log

Gruß,
Andreas
 
Zuletzt bearbeitet:
da bei mir "xbmcmessage" nicht ging, habe ich beim message.sh reingekukt.

xboxmessage() {
getmsg -t "/xbmcCmds/xbmcHttp?command=ExecBuiltIn&parameter=Notification(${XBOX_CAPTION:-Telefonanruf},%s)" -d default_xboxmessage "$@"

ich habe es so geändert und nochmal geflascht;

xboxmessage() {
getmsg -t "/xbmcCmds/xbmcHttp?command=ExecBuiltIn&parameter=XBMC.Notification(${XBOX_CAPTION:-Telefonanruf},%s)" -d default_xboxmessage "$@"

... und jetzt geht es. Aber ich habe noch nicht gefunden, wie man den Meldung länger auf dem Fernseher anzeigen läst. Es zeigt zwar an,wer da gerade anruft, aber bis es die ganze informationen zeigt geht die Fenster weg (ungefähr 4-5 sec.). Die Fenster und die Schrifte sind auch so klein. Mann kann kaum was lessen. Ich weiss es nicht ob man es von der X-Box einstellen kann oder ist es mit deiner script möglich ?

beim "dboxlcd"; wenn die informationen von das Örtliche kommen, werden die Name und die Anschrift als eine Variable erhalten. Wenn diese Variablelänge grösser als 17 wird, zeigt es den Rest nicht an. Also da sollte der script; zeile 1 -> Anruf an 1122334 | zeile 2 -> von 09991122334 | zeile 3 "wenn länger als 17" -> (erhaltene variable),(von 1 - bis 17) | zeile 4 -> (erhaltene variable),(von 18 - bis rest) anzeigen.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
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.