Tag zusammen,
Inspiriert von dem HS/FS Plugin gleichen Namens habe ich ein WG-Plugin erstellt, dass die Unwettermeldungen ausliest und auf den Bus sendet. Findet sich auch im SVN.
Viel Spass damit,
der Jan
Inspiriert von dem HS/FS Plugin gleichen Namens habe ich ein WG-Plugin erstellt, dass die Unwettermeldungen ausliest und auf den Bus sendet. Findet sich auch im SVN.
Viel Spass damit,
der Jan
Code:
# Plugin zum Auslesen der Unwettermeldungen
# Version 0.1 29.09.2011
# Copyright: JNK (https://knx-user-forum.de/members/jnk.html)
# In Anlehnung an HS/FS Logigbaustein 19909 by Michael Grosalski
# License: GPL (v2)
# Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss!
####################
###Einstellungen:###
####################
my $unwetter_txt_GA = '0/1/1'; # sendet Textmeldung DPT 16
my $unwetter_max_stufe_GA = '0/1/2'; # sendet höchste Warnstufe als DPT 5.005
my $unwetter_max_typ_GA = '0/1/3'; # sendet höchsten Warntyp als DPT 5.005
my $unwetter_max_neu_GA = '0/1/4'; # sendet 1=neue Meldungen, 0=alte Meldungen, DPT 1
my $plz = '45886'; #PLZ
my $baseurl = 'http://www.unwetterzentrale.de/uwz/getwarning_de.php?plz='; # Basis-URL
my $country = 'DE'; # Land
my $lang = 'de'; # deutsch
######################
##ENDE Einstellungen##
######################
use LWP::Simple;
my %warnstufen = ( gelb => 1, orange => 2, rot => 3, violett => 4 );
my %warntyp = ( gewitter => 1, glatteisregen => 2, regen => 3, schnee => 4, sturm => 5, temperatur => 6 );
my @warnstufen_txt = ( 'keine Meldung', 'Vorwarn.', '', 'stark. ', 'extr. ' );
my @warntyp_txt = ( '', 'Gewitter', 'Glatteis', 'Regen', 'Schnee', 'Sturm', 'Temperatur' );
$plugin_info{$plugname.'_cycle'} = 900;
# Abfrage
my $url = $baseurl.$plz.'&uwz=UWZ-'.$country.'&lang='.$lang;
my $content = get($url);
if ($content eq undef) {
return 'HTTP failed.';
}
my @LINES = split (/\n/, $content);
my $high_typ = 0;
my $high_stufe = 0;
my $all_str = '';
my $typ;
my $stufe;
for (my $i=0;$i<@LINES;$i++) {
if ($LINES[$i] =~ /<div style="float:left;display:block;width:117px;height:110px;padding-top:6px;"><img src="..\/images\/icons\/(.*?)-(.*?).gif" width="117" height="104"><\/div>/i) {
$typ = $warntyp{$1};
$stufe = $warnstufen{$2};
my $str = $stufe.$typ;
if ($stufe>$high_stufe) {
$high_stufe = $stufe;
$high_typ = $typ;
}
$all_str .= $str;
}
}
if ($unwetter_txt_GA) {
knx_write($unwetter_txt_GA, $warnstufen_txt[$high_stufe].$warntyp_txt[$high_typ], 16);
}
if ($unwetter_max_stufe_GA) {
knx_write($unwetter_max_stufe_GA, $high_stufe, 5.005);
}
if ($unwetter_max_typ_GA) {
knx_write($unwetter_max_typ_GA, $high_typ, 5.005);
}
if ($plugin_info{$plugname.'_allstr'} == $all_str) {
if ($unwetter_max_neu_GA) {
knx_write($unwetter_max_neu_GA, 0, 1);
}
} else {
if ($unwetter_max_neu_GA) {
knx_write($unwetter_max_neu_GA, 1, 1);
}
$plugin_info{$plugname.'_allstr'} = $all_str;
}
return $all_str;


-> Das geht 

Kommentar