Pollenflug
Genauso wie Wettervorhersagen, gibt es Pollenflug-Vorhersagen von verschiedensten Anbietern. Verschiedene Einbindungs- und Darstellungsmöglichkeiten sollen hier beschrieben werden.
Donnerwetter
Die Daten können mit HTTPMOD aus der Donnerwetterseite ausgelesen werden. Als Voraussetzung benötigt man die konkrete URL. Dazu geht man einfach auf die www.donnerwetter.de, sucht seine Stadt und wählt Pollenflug aus. Die URL dieser Seite wird nun ausgelesen.
Anfänger-Tip: Das hier aufgeführte Bsp. kann mit nur einer einzigen Anpassung übernommen werden - und wenn Du in Berlin wohnst, brauchst Du garnichts anzupassen... ;-).
Daten auslesen
Der folgende Code liest sämtliche von Donnerwetter bereitgestellten Pollen-Informationen für Berlin aus. Wenn man nicht alle benötigt, kann man einfach die entsprechenden readingXXName und readingXXRegex weglassen. Der Abruf erfolgt täglich (alle 86400 Sekunden).
Wichtig ist der Eintrag "attr Pollenflug requestHeader1 User-Agent: Mozilla/5.0 (Windows NT 6.0)", ohne den HTTPMOD nur eine Fehlermeldung wirft.
define Pollenflug HTTPMOD http://www.donnerwetter.de/pollenflug/berlin/DE14356.html 86400 attr Pollenflug userattr enableControlSet reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex reading09Name reading09Regex reading10Name reading10Regex reading11Name reading11Regex reading12Name reading12Regex reading13Name reading13Regex reading14Name reading14Regex reading15Name reading15Regex reading16Name reading16Regex reading17Name reading17Regex reading18Name reading18Regex reading19Name reading19Regex reading20Name reading20Regex reading21Name reading21Regex reading22Name reading22Regex reading23Name reading23Regex reading24Name reading24Regex reading25Name reading25Regex reading26Name reading26Regex reading27Name reading27Regex reading28Name reading28Regex reading29Name reading29Regex reading30Name reading30Regex reading31Name reading31Regex reading32Name reading32Regex reading33Name reading33Regex requestHeader1 attr Pollenflug group Pollenflug (Donnerwetter) attr Pollenflug reading01Name Erle attr Pollenflug reading01Regex (?s)Erle.*?poll([\d]) attr Pollenflug reading02Name Hasel attr Pollenflug reading02Regex (?s)Hasel.*?poll([\d]) attr Pollenflug reading03Name Löwenzahn attr Pollenflug reading03Regex (?s)L.wenzahn.*?poll([\d]) attr Pollenflug reading04Name Gräser attr Pollenflug reading04Regex (?s)Gr.ser.*?poll([\d]) attr Pollenflug reading05Name Gerste attr Pollenflug reading05Regex (?s)Gerste.*?poll([\d]) attr Pollenflug reading06Name Linde attr Pollenflug reading06Regex (?s)Linde.*?poll([\d]) attr Pollenflug reading07Name Beifuss attr Pollenflug reading07Regex (?s)Beifu.*?poll([\d]) attr Pollenflug reading08Name Gansefuss attr Pollenflug reading08Regex (?s)Gansefu.*?poll([\d]) attr Pollenflug reading09Name Mais attr Pollenflug reading09Regex (?s)Mais.*?poll([\d]) attr Pollenflug reading10Name Brennessel attr Pollenflug reading10Regex (?s)Brennessel.*?poll([\d]) attr Pollenflug reading11Name Hafer attr Pollenflug reading11Regex (?s)Hafer.*?poll([\d]) attr Pollenflug reading12Name Roggen attr Pollenflug reading12Regex (?s)Roggen.*?poll([\d]) attr Pollenflug reading13Name Weizen attr Pollenflug reading13Regex (?s)Weizen.*?poll([\d]) attr Pollenflug reading14Name Spitzwegerich attr Pollenflug reading14Regex (?s)Spitzwegerich.*?poll([\d]) attr Pollenflug reading15Name Raps attr Pollenflug reading15Regex (?s)Raps.*?poll([\d]) attr Pollenflug reading16Name Hopfen attr Pollenflug reading16Regex (?s)Hopfen.*?poll([\d]) attr Pollenflug reading17Name Holunder attr Pollenflug reading17Regex (?s)Holunder.*?poll([\d]) attr Pollenflug reading18Name Ulme attr Pollenflug reading18Regex (?s)Ulme.*?poll([\d]) attr Pollenflug reading19Name Pappel attr Pollenflug reading19Regex (?s)Pappel.*?poll([\d]) attr Pollenflug reading20Name Weide attr Pollenflug reading20Regex (?s)Weide.*?poll([\d]) attr Pollenflug reading21Name Birke attr Pollenflug reading21Regex (?s)Birke.*?poll([\d]) attr Pollenflug reading22Name Eiche attr Pollenflug reading22Regex (?s)Eiche.*?poll([\d]) attr Pollenflug reading23Name Esche attr Pollenflug reading23Regex (?s)Esche.*?poll([\d]) attr Pollenflug reading24Name Platane attr Pollenflug reading24Regex (?s)Platane.*?poll([\d]) attr Pollenflug reading25Name Flieder attr Pollenflug reading25Regex (?s)Flieder.*?poll([\d]) attr Pollenflug reading26Name Ambrosia attr Pollenflug reading26Regex (?s)Ambrosia.*?poll([\d]) attr Pollenflug reading27Name Buche attr Pollenflug reading27Regex (?s)Buche.*?poll([\d]) attr Pollenflug reading28Name Rotbuche attr Pollenflug reading28Regex (?s)Rotbuche.*?poll([\d]) attr Pollenflug reading29Name Ahorn attr Pollenflug reading29Regex (?s)Ahorn.*?poll([\d]) attr Pollenflug reading30Name Nessel attr Pollenflug reading30Regex (?s)Nessel.*?poll([\d]) attr Pollenflug reading31Name Kiefer attr Pollenflug reading31Regex (?s)Kiefer.*?poll([\d]) attr Pollenflug reading32Name Tanne attr Pollenflug reading32Regex (?s)Tanne.*?poll([\d]) attr Pollenflug reading33Name Fichte attr Pollenflug reading33Regex (?s)Fichte.*?poll([\d]) attr Pollenflug requestHeader1 User-Agent: Mozilla/5.0 (Windows NT 6.0) attr Pollenflug room Wetter-vorhersage
Erläuterung der Regex:
HTTPMOD ruft einen riesigen Textblock ab. Darin sieht der relevante Abschnitt für "Hasel" wie folgt aus:
Hasel</font></b></font></td> <td><img src="http://static.donnerwetter.de/images/poll0.gif"
Der reguläre Ausdruck dazu
- sucht mit evtl. vorangegangenem Leerzeichen
(?s)
- den Begriff
Hasel
, - lässt alles bis zum
poll
von poll0.gif aus und - liest die nachfolgende Dezimalzahl aus
([\d])
(bei poll0.gif also eine Null).
(?s)Hasel.*?poll([\d])
Daten darstellen
Man kann die ausgelesenen Daten auf verschiedenste Weisen darstellen (vgl. auch die Links unten). Im folgenden ist eine einfache tabellarische Darstellung mit Hilfe einer ReadingsGroup beschrieben. Als kleines Schmankerl werden die Werte als Balken dargestellt (vgl. auch ReadingsGroup#Einfache_Balkendiagramme) und nur die Werte >0 dargestellt (vgl. auch ReadingsGroup#Inhalte_filtern).
define rgPollenflug readingsGroup Pollenflug attr rgPollenflug mapping %READING attr rgPollenflug nolinks 1 attr rgPollenflug notime 1 attr rgPollenflug room Wetter-vorhersage attr rgPollenflug valueFormat { return $VALUE if ( $VALUE > 0 );; return undef;; } attr rgPollenflug valueStyle { BalkenPollen($VALUE) }
Kurze Erläuterung:
mapping %READING
Es wird der readingXXName in der Tabelle angezeigt.valueFormat { return $VALUE if ( $VALUE > 0 );; return undef;; }
Werte = 0 (also kein Pollenflug) werden nicht dargestellt (vgl. auch ReadingsGroup#Inhalte_filtern).valueStyle { BalkenPollen($VALUE) }
Der Balken wird über die Funktion "BalkenPollen" erzeugt (s.u.).
Die notwendige Funktion für die 99_myUtils.pm sieht wie folgt aus:
# Balkenanzeige für Pollenflug
sub BalkenPollen($)
{
my ($pollen) = @_;
my $maxValue = 3;
my $percent = $pollen / $maxValue * 100;
my $color = "red";
if ($pollen < 2) { $color = "yellow"; }
elsif ($pollen < 3) { $color = "orange"; }
my $stylestring = 'style="
width: 200px;
text-align:center;
border: 1px solid #ccc;
background-image: -webkit-linear-gradient(left,'.$color.' '.$percent.'%, rgba(0,0,0,0) '.$percent.'%);
background-image: -moz-linear-gradient(left,'.$color.' '.$percent.'%, rgba(0,0,0,0) '.$percent.'%);
background-image: -ms-linear-gradient(left,'.$color.' '.$percent.'%, rgba(0,0,0,0) '.$percent.'%);
background-image: -o-linear-gradient(left,'.$color.' '.$percent.'%, rgba(0,0,0,0) '.$percent.'%);
background-image: linear-gradient(left,'.$color.' '.$percent.'%, rgba(0,0,0,0) '.$percent.'%);
"';
return $stylestring;
}
Kurze Erläuterung (weitere Infos s. ReadingsGroup#Einfache_Balkendiagramme):
$maxValue = 3
Donnerwetter liefert als Maximalwert 3 zurück.$color
Der Balken ist rot bei 3, orange bei 2, gelb bei 1.width: 200px;
Der Balken ist 200px breit.
Pollenkalender einbinden
Einen statischen Pollenkalender als Grafik kann man bspw. wie folgt einbinden:
define Pollenflug_Grafik_WD weblink image http://www.wetterdienst.de/imgs/pollenflugkalendar.jpg attr Pollenflug_Grafik_WD group Pollenflug (Wetterdienst) attr Pollenflug_Grafik_WD htmlattr width="50%" height="50%" frameborder="0" marginheight="0" marginwidth="0" attr Pollenflug_Grafik_WD room Wetter-vorhersage