- Mitglied seit
- 30 Jun 2004
- Beiträge
- 12,882
- Punkte für Reaktionen
- 0
- Punkte
- 0
Heute mal wieder ein kleines Skript :mrgreen:
Ich wollte einfach mal das Display Modul meines optipoint 410 für was anderes nutzen als nur verpaßte Anrufe zu sehen oder im LDAP Telefonbuch zu blättern. Also habe ich mal ein bißchen in meinen PHP Kenntnissen gekramt und mir eine WML Seite gebastelt, die mir aktuelle Wetterdaten einer beliebigen Stadt anzeigt und diese auch automatisch aktualisiert.
Das Beispiel zeigt das aktuelle Wetter in Heidelberg an.
Die Beschaffung der Wetterdaten habe ich mir ganz einfach (und vor allem legal(*) gemacht...
Unter http://deutsch.wunderground.com/ werden RSS-Feeds die aktuellen Wetterdaten weltweit als RSS-Feeds bereitsgestellt.
Die beiden images "blind100.wbmp" und "blind130.wbmp" dienen lediglich der Fixierung der Tabellenspaltenbreite, da WML recht eingeschränkt ist, was Formatierungsangaben im Quelltext angeht. Und das op410 schein aus dieser reduzierten Menge auch wieder nur einen Teil zu kennen und nicht den gesamten Umfang Die beiden images sind im Anhang zu diesem Posting zu finden.
Viel Spaß damit
Wer hat eigentlich hier im Forum außer mir noch so ein Display im Einsatz?
(*) Wichtiger Hinweis zu Wetterdaten im Internet: Auch wenn es möglich ist, per PHP die Wetterdaten z.B. von wetter.com oder ähnlichen Anbietern zu extrahieren, so ist dies doch in den allermeisten Fällen nicht legal! sondern stellt einen Verstoß gegen die Nutzungsbedingungen dieser Anbieter dar. Bei der hier verwendeten Variante stellt sich diese Problematik nicht.
Ich wollte einfach mal das Display Modul meines optipoint 410 für was anderes nutzen als nur verpaßte Anrufe zu sehen oder im LDAP Telefonbuch zu blättern. Also habe ich mal ein bißchen in meinen PHP Kenntnissen gekramt und mir eine WML Seite gebastelt, die mir aktuelle Wetterdaten einer beliebigen Stadt anzeigt und diese auch automatisch aktualisiert.
Das Beispiel zeigt das aktuelle Wetter in Heidelberg an.
Die Beschaffung der Wetterdaten habe ich mir ganz einfach (und vor allem legal(*) gemacht...
Unter http://deutsch.wunderground.com/ werden RSS-Feeds die aktuellen Wetterdaten weltweit als RSS-Feeds bereitsgestellt.
- Man sucht sich unter http://deutsch.wunderground.com/global/DL.html unten aus der tabelle eine deutsche Stadt aussuchen
- nach Auswahl der Stadt kopiert man sich den oben recht an dem Symbol "RSS" verankerten Link
- und fügt diesen im Skript in $url ein
- in $city noch die Stadt eintragen Ja, ich weiß... ich hätte die Stadt auch aus dem XML extrahieren können. Aber dazu war ich einfach zu faul, es ist schließlich Sonntag.
Die beiden images "blind100.wbmp" und "blind130.wbmp" dienen lediglich der Fixierung der Tabellenspaltenbreite, da WML recht eingeschränkt ist, was Formatierungsangaben im Quelltext angeht. Und das op410 schein aus dieser reduzierten Menge auch wieder nur einen Teil zu kennen und nicht den gesamten Umfang Die beiden images sind im Anhang zu diesem Posting zu finden.
Viel Spaß damit
Wer hat eigentlich hier im Forum außer mir noch so ein Display im Einsatz?
PHP:
<?php
header("Content-Type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
?>
<?PHP
//
// Example: weather in Heidelberg
// modify these three parameters
// for your requirements
//
$url = "http://deutsch.wunderground.com/auto/rss_full/global/stations/10734.xml";
$city = "Heidelberg";
//
// do not modify anyhting behind this line!
//
$content = implode("", file($url));
preg_match_all("/\<item>(.*?)\<\/item\>/si", $content, $results);
preg_match("/\<description\>(.*?)\<\/description\>/si", $results[1][0], $desc);
$arr = explode(" | ",$desc[1]);
preg_match("/Temperature: (.*?)F \/ (.*?)C/si", $arr[0], $str);
$wetter['temp'] = $str['2'];
preg_match("/Humidity: (.*)%/si", $arr[1], $str);
$wetter['feuchte'] = $str['1'];
preg_match("/Pressure: (.*?)inch \/ (.*?)hPa/si", $arr[2], $str);
$wetter['druck'] = $str['2'];
preg_match("/Conditions: (.*)/si", $arr[3], $str);
$wetter['wolken'] = $str['1'];
preg_match("/Wind Direction: (.*)/si", $arr[4], $str);
$wetter['windr'] = $str['1'];
preg_match("/Wind Speed: (.*?)mph \/ (.*?)km\/h/si", $arr[5], $str);
$wetter['windg'] = $str['2'];
preg_match("/Updated: (.*)/si", $arr[6], $str);
$wetter['stand'] = $str['1'];
// added for time format conversion
// from am/pm to 24-hour format
$stand = explode(' ',$wetter['stand']);
if ($stand[1] == 'AM')
{ $stand = explode(':',$stand[0]);
$stand[0] = $stand[0] % 12;
}
else
{ $stand = explode(':',$stand[0]);
if ($stand[0] < 12)
{$stand[0]+=12;}
}
$wetter['stand'] = $stand[0].':'.$stand[1];
// end format conversion
?>
<wml>
<card id = "wetter"
title = "<?php echo $city ?>"
ontimer = "<?php echo $SCRIPT_NAME ?>" >
<timer value="3000" />
<p>
<table columns="2">
<tr>
<td><img src="blind100.wbmp" alt="blind" /></td>
<td><img src="blind130.wbmp" alt="blind" /></td>
</tr>
<tr>
<td>Temperatur:</td>
<td><? echo $wetter['temp'] . 'C ' . $wetter['stand'] ?></td>
</tr>
<tr>
<td>Luftfeuchte:</td>
<td><? echo $wetter['feuchte'] . '%'; ?></td>
</tr>
<tr>
<td>Luftdruck:</td>
<td><? echo $wetter['druck'] . 'hPa'; ?></td>
</tr>
<tr>
<td>Bewölkung:</td>
<td><? echo $wetter['wolken']; ?></td>
</tr>
<tr>
<td>Windrichtung:</td>
<td><? echo $wetter['windr']; ?></td>
</tr>
<tr>
<td>Windstärke:</td>
<td><? echo $wetter['windg'] . 'km/h'; ?></td>
</tr>
</table>
</p>
</card>
</wml>
(*) Wichtiger Hinweis zu Wetterdaten im Internet: Auch wenn es möglich ist, per PHP die Wetterdaten z.B. von wetter.com oder ähnlichen Anbietern zu extrahieren, so ist dies doch in den allermeisten Fällen nicht legal! sondern stellt einen Verstoß gegen die Nutzungsbedingungen dieser Anbieter dar. Bei der hier verwendeten Variante stellt sich diese Problematik nicht.