- 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.
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
Zuletzt bearbeitet: