Am Grandstream GXP2000 Idle-Screen beliebige Infos (z.b. aktuelle Wetterdaten) anzeig

gunnarh

Neuer User
Mitglied seit
17 Okt 2004
Beiträge
55
Punkte für Reaktionen
0
Punkte
6
Nachdem ich mein GXP2000 nur sehr selten benutze, es aber viel Platz am Schreibtisch in Anspruch nimmt, wollte ich den Informationsgehalt am Display etwas aufpeppen (damit das Teil einen sinnvollen zweck erfüllt: Anzeige der Wetterdaten).

Siehe Bild im Anhang: So sieht das dann aus.

Das zugehörige XML File sieht wie nachfolgend aus. Mittels eines Perlscripts am Server werden bei jedem Abruf dann die Platzhalter durch die entsprechenden Wetterwerte ersetzt.


<?xml version="1.0"?>
<Screen>
<IdleScreen>
<ShowStatusLine>false</ShowStatusLine>
<DisplayString font="f16b" halign="Center">
<DisplayStr>$D.$o.$Y - $H:$m:$s</DisplayStr>
<X>65</X>
<Y>0</Y>
</DisplayString>
<DisplayString font="f8" halign="Left">
<DisplayStr>Penzing</DisplayStr>
<X>0</X>
<Y>18</Y>
</DisplayString>
<DisplayString font="f8" halign="Center">
<DisplayStr>Innens</DisplayStr>
<X>65</X>
<Y>18</Y>
</DisplayString>
<DisplayString font="f8" halign="Right">
<DisplayStr>Hohe W.</DisplayStr>
<X>130</X>
<Y>18</Y>
</DisplayString>
<DisplayString font="f16b" halign="Right">
<DisplayStr>TEMPERATUR1</DisplayStr>
<X>30</X>
<Y>26</Y>
</DisplayString>
<DisplayString font="f16b" halign="Right">
<DisplayStr>TEMPERATUR2</DisplayStr>
<X>80</X>
<Y>26</Y>
</DisplayString>
<DisplayString font="f16b" halign="Right">
<DisplayStr>TEMPERATUR3</DisplayStr>
<X>122</X>
<Y>26</Y>
</DisplayString>
<DisplayString font="f8" halign="Left">
<DisplayStr>°C</DisplayStr>
<X>30</X>
<Y>30</Y>
</DisplayString>
<DisplayString font="f8" halign="Left">
<DisplayStr>°C</DisplayStr>
<X>80</X>
<Y>30</Y>
</DisplayString>
<DisplayString font="f8" halign="Left">
<DisplayStr>°C</DisplayStr>
<X>122</X>
<Y>30</Y>
</DisplayString>
<DisplayString font="f14" halign="Center">
<DisplayStr>WETTER</DisplayStr>
<X>65</X>
<Y>41</Y>
</DisplayString>
<DisplayString font="f8" halign="Left">
<DisplayStr>$I</DisplayStr>
<X>0</X>
<Y>54</Y>
</DisplayString>
<DisplayString font="f8" halign="Center" a1reg="false">
<DisplayStr>-NC!-</DisplayStr>
<X>73</X>
<Y>54</Y>
</DisplayString>
<DisplayString font="f8" halign="Center" a1reg="true">
<DisplayStr>OK</DisplayStr>
<X>73</X>
<Y>54</Y>
</DisplayString>
<DisplayString font="f8" halign="Right">
<DisplayStr>TIME</DisplayStr>
<X>130</X>
<Y>54</Y>
</DisplayString>
</IdleScreen>
</Screen>


Um den Screen zu generieren verwende ich eine Umleitung der abfrage auf ein Perlscript:

in der .htaccess Datei des Verzeichnisses am Apache Webserver:

RewriteEngine on
RewriteRule gs_screen.xml$ gs_screen.pl [L]


das Perlscript selbst sieht so aus:

open(FH, "<gs_screen.temperatur.vorlage");
$XML = "";

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$time = sprintf("%02d:%02d", $hour, $min);

$temp1 = $temperatur[0];
$temp2 = $temperatur[1];
$temp3 = $temperatur[2];

while ($line = <FH>)
{
$line =~ s/TEMPERATUR1/$temp1/m;
$line =~ s/TEMPERATUR2/$temp2/m;
$line =~ s/TEMPERATUR3/$temp3/m;
$line =~ s/WETTER/$wind, LF: $feucht/m;
$line =~ s/TIME/$time/m;
$XML .= $line;
}
close FH;

print $XML;


Das Array @temperatur befülle ich im Vorfeld indem ich Wetterdaten mittels WWW::Mechanize von einer per Web abrufbaren Wetterstation auslese und parse - diesen Code möchte ich jedoch nicht 1:1 posten, da darin die Daten von privaten Wetterstationen auftauchen. Falls Interesse besteht könnte ich diesen anonymisiert noch nachliefern.
 

Anhänge

  • grandstream-ip-telefon-display.jpg
    grandstream-ip-telefon-display.jpg
    47.3 KB · Aufrufe: 164
Zuletzt bearbeitet:
Super Tutorial,
und auch wenn der Thread was älter ist, habe ich mal eine Verständnisfrage dazu:
Beim Telefonbuch Download kann angegeben werden in welchem Intervall dies geschieht.
Wie passiert das beim Idle-Screen? Du schreibst nur "bei jedem Abruf".
Aber der Idle-Screen holt sich doch nicht ständig ein Update? Also wie aktuell sind dann deine Wetterdaten?
Wäre durchaus interessant um sich z.b. andere Informationen auf den Screen zu schreiben, wenn dies automatisiert in regelmäßigen Abständen passiert (z.b. alle 5 Min oder so etwas).

Wäre dir dankbar für eine Aufklärung
 
Das Grandstream-Telefon refresht meines Wissens nicht selbständig (zumindest nicht mit meiner etwas älteren Firmware-Version).

Die Lösung hierfür sieht folgendermaßen aus:

1. in der /etc/asterisk/sip_notify.conf folgenden Eintrag hinzufügen:

[grandstream-idle-screen-refresh]
Event=>x-gs-screen
Content-Length=>0

mittels asterisk -rx "sip notify grandstream-idle-screen-refresh grandstream"
kann nun das am Asterisk registrierte Grandstream Telefon angewiesen werden den Screen zu refreshen.

2. einen Crontab-Eintrag erstellen, der dieses Event mittels "sip notify" alle 5 Minuten antriggert:

*/5 * * * * root /usr/sbin/asterisk -rx "sip notify grandstream-idle-screen-refresh grandstream" 2>/dev/null >/dev/null

Diese Lösung habe ich irgendwo in einem Grandstream-Forum gefunden.
Eine Google-Suche nach "x-gs-screen" sollte Dir Details liefern.
 

Statistik des Forums

Themen
246,512
Beiträge
2,253,337
Mitglieder
374,330
Neuestes Mitglied
Drödle
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.