Anrufe mit Callmonitorauf Roku (Pinnacle) Soundbridge anzeigen lassen

miwu

Neuer User
Mitglied seit
25 Jun 2005
Beiträge
81
Punkte für Reaktionen
8
Punkte
8
Hallo,

ich suche gerade nach einer Lösung, mittels Callmonitor eingehende Anrufe auf einer Pinnacle Soundbridge anzeigen zu lassen. Alle nötigen Infos liefert der Callmonitor ja perfekt durch Variablen, ich stehe nur bei der Herstellung der Verbindung der Fritz-Box 7050 mit der Pinnacle Soundbridge etwas auf dem Schlauch, ich weiß nicht genau, welche Zugangsart ich beim Listener verwenden sollte.

Grundsätzlich kann die Soundbridge beliebige Zeichen auf das Display der Soundbridge schreiben wenn ich mich dort per Telnet über Port 4444 einwähle und einen Befehl sketch -c "Text" oder so ähnlich eingebe (die genaue Syntax habe ich gerade nicht hier).

Mein Problem ist: Was muß ich nutzen, um einen entsprechenden Befehl zur Soundbridge zu schicken.

Manuell läuft es so:

> telnet <IP> 4444

Ohne Paßwortabfrage bekomme ich sofort einen Prompt:

> Soundbridge>

dort kann ich dann u.a. den Befehl eingeben

> Soundbridge> sketch -c "Hallo Welt"

bis zum folgenden Befehl steht dann "Hallo Welt" im Display:

> Soundbridge> sketch -c quit

Dann muß ich noch mit Exit die Telnet-Session trennen.

Ich habe im Wiki nun verschiedene Verbidnungsarten gelesen, jedoch nichts gefunden, was ich nutzen könnte. Ich bin mir aber auch nicht sicher, alles genau verstanden zu haben.

Ein richtungsweisenden Tip wäre super!

Viele Grüße

Miwu
 
Hallo Andreas,

danke für den Tip, alles funktioniert bei mir nun wirklich perfekt, auch wenn meine Listener-Einträge wegen der Besonderheit, dass das Display der Soundbridge per Befehl wieder geleert werden muß etwas länger geworden sind.

Für alle, die sich auf der Soundbridge Anrufe anzeigen lassen möchten, hier die Einträge:

Anruf in Abwesenheit (wird für 20 Minuten angezeigt):

in:cancel ^ ^ rawmsg -p 4444 192.168.142.31 'sketch -c quit \n';rawmsg -p 4444 192.168.142.31 'sketch -c text c c "Verpaßter Anruf von '$SOURCE' an '$DEST'!"\n';sleep 1200;rawmsg -p 4444 192.168.142.31 'sketch -c quit \n'

Ankommender Anruf (wird für 10 Sekunden angezeigt):

in:request ^ ^ rawmsg -p 4444 192.168.142.31 'sketch -c quit \n';rawmsg -p 4444 192.168.142.31 'sketch -c text c c "Es ruft '$SOURCE' an für '$DEST'!"\n';sleep 10;rawmsg -p 4444 192.168.142.31 'sketch -c quit \n'

Laufender Anruf (Wird bis zu 3h angezeigt):

in:connect ^ ^ rawmsg -p 4444 192.168.142.31 'sketch -c quit \n';rawmsg -p 4444 192.168.142.31 'sketch -c text c c "Laufendes Telefonat von '$SOURCE' mit '$DEST'!"\n';sleep 10000;rawmsg -p 4444 192.168.142.31 'sketch -c quit \n'

Getrennter Anruf (wird eine Minute lang angezeigt):

in:disconnect ^ ^ rawmsg -p 4444 192.168.142.31 'sketch -c quit \n';rawmsg -p 4444 192.168.142.31 'sketch -c text c c "Telefonat von '$SOURCE' mit '$DEST' beendet!"\n';sleep 60;rawmsg -p 4444 192.168.142.31 'sketch -c quit \n'

Vielen Dank für Deinen Stoß in die richtige Richtung!

Viele Grüße

Miwu
 
Gern geschehen. Was die langen Einträge angeht: Man könnte die quit-text-sleep-quit-Logik ja in eine Funktion verpacken und einfach die aufrufen (so wie die anderen *message-Funktionen). Das könnte ich machen. Damit das aber wirklich nützlich wird, hätte ich noch ein paar Fragen, bei denen du mir vielleicht (durch Ausprobieren) helfen könntest:
  • Wieviel Platz ist auf dem Display? Wieviele Zeichen passen bei "text c c" ungefähr in eine Zeile? Gibt es nur eine Zeile oder mehrere? (Wie steuert man die an? Was bedeutet das "c c" bei text?)
  • (ggf. sinnvoll für längere Texte (mit dem Namen des Anrufers)): Wie funktioniert die marquee-Funktion bei sketch? Läuft der Text einmal vorbei oder solange, bis man quit sagt?
  • Können Umlaute dargestellt werden? Wie müssen die kodiert sein (Latin1, UTF8, ...?)

Andreas
 
Hallo Andreas,

so eine Funktion wäre echt super, sie würde die Einrichtung der Listenereinträge sicher erheblich erleichtern und wirkt sicher auch nicht so abschreckend und fehleranfällig wie meine Einträge, die seit meinem letzten Post auch noch länger geworden sind, da ich noch eine displayfüllende Schriftart mit angeben kann. Ich bin für jeden Test zu haben und mache gern mit. In die Befehlskette muss noch ein weiterer Befehl an Platz 2 rein: sketch -c font 2 (Die Nummer bestimmt die Schriftart und damit die Anzeigegröße).

Kurz zur Logik des Soundbridge-Displays. Mittels sketch -c <Befehlskette> kann man die verschiedensten Sachen auf dem Soundbridge-Display darstellen, auch Kreise und sowas (erfreulicherweise auch, wenn die Soundbridge an sich ausgeschaltet ist).
Mein Befehl sketch -c text c c "Blafasel" bewirkt, dass der Text im Display angezeigt wird, dummerweise wechselt die Anzeige aber nicht automatisch zum Ursprungszustand zurück und während mein Text angezeigt wird ist die Soundbridge nicht per Fernbedienung bedienbar (wohl aber mit so feinen Programmen wie: http://tl-it.de/media/pages/visualmr.php?lang=d . Naja, deshalb das wait und anschließend das sketch -c quit zum Zurückschalten des Displays auf den ursprungszustand. Das erste sketch -c quit ist deshalb notwendig, weil nicht auszuschließen ist, dass ein längerer Text als der darzustellende gerade auf dem Display angezeigt wird, von dem sonst noch Teile vorn und hinten bei der Darstellung übrig bleiben würden.
Die Pausenzeiten für die einzelnen Ereignisse sind wie schonmal geschrieben wegen der Nicht-Bedienbbarkeit der Soundbridge während der Fremdtextdarstellung nötig, die führen aber auch zu unschönen (aber im meinen Augen tolerierbare) Überschneidungen:
Eingehender Anruf -löst Soundbridge-Anzeige für 10 Sekunden für in:request aus
Anrufer legt nach 5 Sekunden auf - löst Soundbridge-Anzeige für 20 Minuten für in:cancel aus
Die in:cancel-Anzeige wird aber nur für 5 Sekunden dargestellt, weil das wait der oberen 10 Sekunden ja noch läuft und dann mit sketch -c quit das Display abräumt. Aber wie gesagt - damit kann man (zumindest ich) leben.

Nun aber endlich zu Deinen Fragen:

"Wieviel Platz ist auf dem Display? Wieviele Zeichen passen bei "text c c" ungefähr in eine Zeile? Gibt es nur eine Zeile oder mehrere? (Wie steuert man die an? Was bedeutet das "c c" bei text?)"

das kann man nicht pauschal beaantworten, da man die Auswahl zwischen verschiedenen Fonts hat, die verschiedene Größen haben. Ich nutze einen Font, der die Höhe des Displays vollständig ausnutzt und schätze, dass so ca 25-30 Zeichen dargestellt werden (läßt sich aber nie genau sagen, da ein "i" auf dem Display schmaler ist als ein "o". Wenn man eine kleinere Schriftart wählt hat man 2 Zeilen mit ja ca. 40-50 Zeichen zur Verfügung, um das lesen zu können muß man aber schon auf 3 Meteran der Soundbridge nähern. Wie man die Zeilen genau ansteuert probiere ich heute Abend mal aus (auch die Ansteuerung), vielleicht macht die Soundbridge ja einen automatischen Umbruch bei kleinen Fonts. Übrigens: Wenn der Displayplatz nicht ausreicht werden immer die letzten Zeichen abgeschnitten.
Das "c c" sind Parameter für die Platzierung des Texts. Man kann jeweils horizontal (1.Wert) und vertikal (2.Wert) eine Zahl eingeben (in Pixeln), die festlegt, wo der Text beginnen soll. Wenn man 'c' als Wert nimmt wird zentriert, also bedeutet "c c", dass der text horizontal und vertikal zentriert dargestellt werden soll.

"(ggf. sinnvoll für längere Texte (mit dem Namen des Anrufers)): Wie funktioniert die marquee-Funktion bei sketch? Läuft der Text einmal vorbei oder solange, bis man quit sagt?"

Marquee hätte ich auch schöner gefunden, leider läuft der Text nur genau einmal von rechts nach links übers Display und ist dann weg.

"Können Umlaute dargestellt werden? Wie müssen die kodiert sein (Latin1, UTF8, ...?)"

ich habe nichts an den Grundeinstellungen der Soundbridge geändert und kann alles darstellen, was die deutsche Sprache so an Besonderheiten bereithält, Umlaute und 'ß' funktioniert.
Was leider nicht dargestellt werden kann sind Anrufernamen (aus $DEST_NAME), die ein Leerzeichen enthalten. Das liegt aber sicher nicht an der Soundbridge, sondern entweder an der Variable in dem schon etwas verschachtelten Aufruf oder sowas klappt generell beim Callmonitor nicht (habe ihn erst gestern installiert).

So, nun erstmal genug. Ist leider sehr viel Text geworden.

Viele Grüße aus Berlin!

Micha
 
Hallo Micha,
miwu schrieb:
Ich bin für jeden Test zu haben und mache gern mit.
das höre ich gerne. :) Danke. Diverse Tests werden wir brauchen.

Danke für die Ausführungen zur Logik von sketch. Nur zum Verständnis: Bei einem laufenden Anruf kannst du für bis zu 3 Stunden die Soundbridge nicht mit der Fernbedienung bedienen? Klingt unpraktisch ...
führen aber auch zu unschönen (aber im meinen Augen tolerierbare) Überschneidungen
Das ließe sich ja beheben, indem man vor der Darstellung einer neuen Nachricht z.B. alle alten (wartenden) "Darsteller" stoppt (was allerdings wieder schwieriger ist, wenn man mehrere Soundbridges ansteuern möchte).
Marquee hätte ich auch schöner gefunden, leider läuft der Text nur genau einmal von rechts nach links übers Display und ist dann weg.
Dann könnte man ja das marquee-Kommando x-mal wiederholen.
kann alles darstellen, was die deutsche Sprache so an Besonderheiten bereithält
Die Frage ist immer noch, in welcher Kodierung die Umlaute übertragen werden müssen. Aber das können wir einfach später ausprobieren; dass es bei dir einfach so geklappt hat, deutet auf eine der Standardkodierungen hin.

Was leider nicht dargestellt werden kann sind Anrufernamen (aus $DEST_NAME), die ein Leerzeichen enthalten.
Was sehr sehr seltsam wäre, da du ja in deinen Texten auch Leerzeichen verwendest. Ich tippe mal, dass da irgendetwas mit dem Quoting/Escaping nicht richtig funktioniert.

Ich baue in den nächsten Tagen (= vermutlich am Wochenende) mal eine Prototyp-Funktion zusammen, mit der wir dann testen und das Verhalten optimieren können.

Viele Grüße,
Andreas
 
Hallo Andreas,

so, nun habe ich auch herausgefunden, wie ich Code und Zitate einfügen kann. Das wird dann etwas übersichtlicher.

das höre ich gerne. :smile: Danke. Diverse Tests werden wir brauchen.

Kein Problem, konnte doch auch super Informationen aus dem Forum beziehen, warum also nicht selbst mithelfen, neue zu finden? Bin am Wochenende allerdings nur selten am Rechner, Antworten könnten also einen Tag dauern.

Nur zum Verständnis: Bei einem laufenden Anruf kannst du für bis zu 3 Stunden die Soundbridge nicht mit der Fernbedienung bedienen? Klingt unpraktisch ...
Ist auch unpraktisch, allerdings bei mir nicht so furchtbar gravierend, da ich die Soundbridge (ich kürze sie ab jetzt immer mit SB ab) meinst über meinen PDA oder PC steuere und das klappt auch bei blockierter Anzeige. Es gibt in der FW der SB aber auch Kommandos, mit denen man Infrarot-Kommandos der Fernbedienung "erwarten" kann, vielleicht ist das mal einen Versuch wert. Für mein gestriges erstes Erfolgserlebnis war ich mit der wait-quit-Lösung aber schon recht glücklich. Ich werde mal gucken, ob ich irgendwo ein Stück Dokumentation zu den Befehlen der Soundbridge finde, es gibt bei Roku auch ein Forum, wo ich auch mal nachsehen werde.

Das ließe sich ja beheben, indem man vor der Darstellung einer neuen Nachricht z.B. alle alten (wartenden) "Darsteller" stoppt (was allerdings wieder schwieriger ist, wenn man mehrere Soundbridges ansteuern möchte).
Dazu müßte man dann aber den Status der noch "wartenden Darsteller" bei jedem Ereignis auslesen und sie unterscheiden können. Für einen passenden Listenereintrag fehlt mir hier die Phantasie, vielleicht hat der Callmonitor ja sowas wie eine "interne Prozessliste", die man hierfür nutzen kann. Die betroffenen Listerneraktionen sind ja während des Waits noch am Laufen. Oder man schießt einfach mit jeder neuen Ereignisrektion alle anderen eventuell noch laufenden Listeneraktionen ab. Das könnte man doch fast noch in einem Listenerbefehl unterbringen wenn die Aktionen in der Prozessliste der Box stehen oder sonstwie auslesbar sind. Bei mehreren Soundbridges gibts in diesem Fall aber echt ein Problem (solange man nicht beide in einem "Prozess" ansteuern kann und beide auf die gleichen Ereignisse reagieren sollen).

Dann könnte man ja das marquee-Kommando x-mal wiederholen.
In diesem Zusammenhang könnte ich ja auch mal probieren, ob bei Marquee das Display von selbst wieder auf seinen Ursprungszustand zurückspringt ....

Die Frage ist immer noch, in welcher Kodierung die Umlaute übertragen werden müssen. Aber das können wir einfach später ausprobieren; dass es bei dir einfach so geklappt hat, deutet auf eine der Standardkodierungen hin.
Ich werde mal sehen, ob ich was in der Soundbridge zu den verwendeten Character Sets finde, vielleicht ists ja eine schnöde Variable.

Ich baue in den nächsten Tagen (= vermutlich am Wochenende) mal eine Prototyp-Funktion zusammen, mit der wir dann testen und das Verhalten optimieren können.
Alles klar, ich werde noch versuchen, die restlichen Infos rauszufinden und poste sie hier.

Viele Grüße

Micha
 
Hi Andreas,

hier noch die Infos, die ich versprach:

Character Sets:
Es gibt bei sketch folgende Option (man kann also wie von Dir oben erhofft zwischen UTF8 und latin1 unterscheiden):
Code:
encoding utf8|latin1          - selects utf8 or latin1 as character encoding
Ich habe mal alle Optionen kopiert, die sketch so kennt

Code:
help                          - displays this list
  rect x y w h                  - draws rect
  framerect x y w h             - frames rect
  point x y                     - draws point
  line x1 y1 x2 y2              - draws line
  blit x1 y1 x y w h            - blits from (x,y,w,h) to (x1,y1)
  slide x n                     - slides the display x pixels n times
  font n|list                   - chooses a font by number
                                  "font list" to list fonts
  color n                       - chooses pen color (0 or 1)
  text x y "text"               - draws text at point (x, y)
                                  use 'c' as x or y to center
  marquee -stop|[-start] "text" - slides text across the display
  encoding utf8|latin1          - selects utf8 or latin1 as character encoding
  clear                         - clears display
  quit                          - quits sketch
Die Soundbridge selbst offenbart folgende Kommandos:

Code:
SoundBridge> help
Valid commands are:
 ?             - displays this list
 help          - provides help on a command
 clear         - clears the terminal window
 stty          - sets shell tty parameters
 consoleprint  - sets consoleprint on or off
 version       - prints out the software version
 exit          - exits the shell
 cycles        - displays a count of processor cycles
 uptime        - reports system uptime
 reboot        - reboots the system
 ps            - lists threads
 mmc           - enter mmc shell
 ifconfig      - lists network interface configurations
 ping          - pings an ip address
 ipset         - sets up a manual config
 memstat       - prints out memory statistics
 clearsettings - clears CascadeSettings and reboots
 ftpsettings   - Send the current settings block via FTP
 mediaupgrade  - Upgrades the firmware from a file on the local storage.
 srbmod        - modify srb for oem test
 irwait        - Wait for a specific IR command
 romcheck      - Print Rom Sizes
 displaytype   - Print type of currently connected DISplay
 log           - Dump the persistent log
 logclear      - Clear the log
 logadd        - Add string to log
 attract       - attract eyeballs
 time          - displays the current time
 mfg           - performs mfg tests
 sketch        - draw on the display
 irman         - capture, monitor or send IR commands

Der Marquee-Befehl kennt eine Option -start und eine Option -stop.
Folgender Befehl bewirkt das einmalige Durchlaufen von Text. Das Display schaltet nicht wieder zurück, bleibt nach dem Durchlaufen schwarz:

Code:
sketch -c marquee -start "Text"

mit folgendem Befehl kann man die Laufschrift am aktuellen Standort des Displays stoppen:

Code:
sketch -c marquee -stop

In den Urspruchgszustand kommt man aber nur mit dem bekannten quit zurück, das ist also immer fällig:

Code:
 sketch -c quit
Bis dahin ist die Bedienung der SB auch wie bei sketch -c text blockiert.

Auf der Suche nach dem "Erwarten der FernbedienungssignaleW war ich leider nicht erfolgreich. Das Kommando irman kann wohl anscheinend nur IR-Signale immitieren. Schade.

Zu der Leerzeichenproblematik fällt mir noch ein, dass auch Callmonitor-Variable $TIMESTAMP dazu führte, dass keine Anzeige erfolgte. Hier schienen wohl auch unerwartete oder fehlinterpretierbare Zeichen zu entstehen.

Fehlt nur noch die Anzahlt der darstellbaren Zeichen.

In der Schriftart Nummer 2 (Vertiakal displayfüllend) werden mit bei folgendem Befehl 35 Zeichen dargestellt.

sketch -c text c c 0123456789012345678901234567890123456789

zeigt also

01234567890123456789012345678901234

an.

So, ich hoffe, ich habe nichts vergessen.

Viele Grüße

Micha
 
Hallo Micha,

wow, danke für die ausführliche Information. Einiges davon hatte ich mir auch schon aus den Roku-Foren zusammengesucht, aber das mit dem Encoding und dem -start und -stop kannte ich noch nicht. (Zu dem RCP (Roku Control Protocol) gibt es ja eine genaue Entwicklerdokumentation, damit kann man aber das Display nicht ansprechen. Umgekehrt sind die Roku-Shell-Befehle (noch) nicht dokumentiert.)
Code:
 clear                         - clears display
Sollten wir eine Sketch-Session dann nicht eher mit 'clear' beginnen anstatt mit 'quit'?
Zu der Leerzeichenproblematik fällt mir noch ein, dass auch Callmonitor-Variable $TIMESTAMP dazu führte, dass keine Anzeige erfolgte.
Das wird ja immer seltsamer ... In TIMESTAMP kommen überhaupt keine sonderbaren Zeichen vor (nur Ziffern, Punkt, Doppelpunkt und Leerzeichen). Wie genau hast du denn TIMESTAMP eingesetzt?
In der Schriftart Nummer 2 (Vertiakal displayfüllend) werden mit bei folgendem Befehl 35 Zeichen dargestellt.
Super, danke. Ich denke, ich werde mal eine 'text'-Variante mit kürzerem Text und eine 'marquee'-Variante mit ausführlicherem Text ausprobieren.

Vielen Dank nochmal,

Andreas
 
Hallo Andreas,

die RCP-Doku hatte ich auch schon gefunden, sie sah auch recht vielversprechend aus, ich hatte aber genauso wie Du auch den Eindruck, dass die dokumentierten Befehle nur die SB steuern können und nicht das Display separat angesprochen werden kann.

Zu den eigentlichen Shell-Befehlen habe ich auch keine Doku gefunden, es gibt aber zu den meisten Befehlen eine kurze Syntax-Hilfe, wenn Du hier noch Infos brauchst, lass es mich wissen.

In TIMESTAMP kommen überhaupt keine sonderbaren Zeichen vor (nur Ziffern, Punkt, Doppelpunkt und Leerzeichen). Wie genau hast du denn TIMESTAMP eingesetzt?
Ich habe es einfach als weitere Variable in den Meldungstext für verpaßte Anrufe mit aufgenommen. Ich werde es nochmal ausprobieren und Dir meine Syntax und das Ergebnis posten (schaffe das aber erst morgen).

Sollten wir eine Sketch-Session dann nicht eher mit 'clear' beginnen anstatt mit 'quit'?
Gute Idee, den Befehl hatte ich glatt übersehen. Für den Beginn der "Sketch-Session" (schöne Bezeichnung :)) dürfte das ausreichen. Probiere ich morgen aber sicherheitshalber auch nochmal aus.

Viele Grüße

Micha
 
miwu schrieb:
Für den Beginn der "Sketch-Session" (schöne Bezeichnung :)) dürfte das ausreichen.
Ich habe vor, sketch nur einmal zu starten und dann die verschiedenen Kommandos abzusetzen (deswegen Session). Wenn ich das richtig verstanden habe, unterstützt sketch einen solchen Modus (Lesen einzeiliger Befehle von der Standardeingabe).

Aber du hast Recht, ein bisschen klingt es nach soetwas wie den Montagsmalern ... ;-)

Andreas
 
So einen Modus kennt sketch. Aus der Telnet-Session startest Du ihn einfach mit sketch und kannst dann direkt die Befehle eingeben. das -c fällt dann auch weg.

Aus

Code:
sketch -c text c c "Hallo"

würde manuell:

sketch

text cc "Hallo"

Was nicht geht ist, einem sketch -c mehrere Befehle mitzugeben

sketch -c font 2 -c text c c "Hallo"

geht also schief.

Viele Grüße

Micha
 
callmonitor-1.6

Für alle, die hier eventuell mitlesen: Eine erste Fassung der Funktionen für die SoundBridge taucht im [post=695650]Callmonitor 1.6[/post] auf, der gerade online gegangen ist. Bitte probiert die Funktionen im Alltagsbetrieb aus und gebt Feedback, was besser sein könnte.

Nochmal vielen Dank an Micha für das ausführliche Beobachten des Verhaltens seiner SoundBridge.

Gruß,

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