[ds-mod] Callmonitor

Status
Für weitere Antworten geschlossen.

futurama

Neuer User
Mitglied seit
25 Feb 2006
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
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 &
 

kay1234

Mitglied
Mitglied seit
25 Jan 2006
Beiträge
262
Punkte für Reaktionen
0
Punkte
16
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.
 

buehmann

Aktives Mitglied
Mitglied seit
11 Jun 2005
Beiträge
1,810
Punkte für Reaktionen
0
Punkte
0
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
 

kay1234

Mitglied
Mitglied seit
25 Jan 2006
Beiträge
262
Punkte für Reaktionen
0
Punkte
16
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:

buehmann

Aktives Mitglied
Mitglied seit
11 Jun 2005
Beiträge
1,810
Punkte für Reaktionen
0
Punkte
0
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
 

kay1234

Mitglied
Mitglied seit
25 Jan 2006
Beiträge
262
Punkte für Reaktionen
0
Punkte
16
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.
 

buehmann

Aktives Mitglied
Mitglied seit
11 Jun 2005
Beiträge
1,810
Punkte für Reaktionen
0
Punkte
0
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.
 

kay1234

Mitglied
Mitglied seit
25 Jan 2006
Beiträge
262
Punkte für Reaktionen
0
Punkte
16
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.
 

buehmann

Aktives Mitglied
Mitglied seit
11 Jun 2005
Beiträge
1,810
Punkte für Reaktionen
0
Punkte
0
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
 

kay1234

Mitglied
Mitglied seit
25 Jan 2006
Beiträge
262
Punkte für Reaktionen
0
Punkte
16

futurama

Neuer User
Mitglied seit
25 Feb 2006
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
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.
 

buehmann

Aktives Mitglied
Mitglied seit
11 Jun 2005
Beiträge
1,810
Punkte für Reaktionen
0
Punkte
0
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
 

futurama

Neuer User
Mitglied seit
25 Feb 2006
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
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

futurama

Neuer User
Mitglied seit
25 Feb 2006
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
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.
 

buehmann

Aktives Mitglied
Mitglied seit
11 Jun 2005
Beiträge
1,810
Punkte für Reaktionen
0
Punkte
0
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
 

futurama

Neuer User
Mitglied seit
25 Feb 2006
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
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.
 

futurama

Neuer User
Mitglied seit
25 Feb 2006
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
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:

buehmann

Aktives Mitglied
Mitglied seit
11 Jun 2005
Beiträge
1,810
Punkte für Reaktionen
0
Punkte
0
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:

futurama

Neuer User
Mitglied seit
25 Feb 2006
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
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 "[email protected]"

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 "[email protected]"

... 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.

Zurzeit aktive Besucher

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
231,810
Beiträge
2,015,500
Mitglieder
348,857
Neuestes Mitglied
galegro