Ich habe am Wochenende ein wenig recherchiert und gebastelt. Ich poste mal meine Entwicklung. Ist jedoch noch nicht 100% fertig und kann noch optimiert werden. Zur Zeit können nur die aktuellen Wetterdaten abgerufen werden. Mondphasen, Wolken etc. werden noch nicht ins deutsche übersetzt. Sunrise und Sunset werden auch noch nicht korrekt dargestellt...
Es wird für das Skript das Modul Weather::Underground benötigt. Dieses kann mit "cpan Weather::Underground" installiert werden.
Wer weiter basteln möchte, darf gerne. Wenn es fertig ist geht es dann in die PlugIn Sektion. ;-)
---------------------------------------------------------------------
my $city = "Dortmund"; # Meine Stadt
my $country = "Deutschland"; # Mein Land
my $wg_temp_ga = "7/0/0"; # Gruppenadresse Temperatur (DPT9)
my $wg_hum_ga = "7/0/1"; # Gruppenadresse Luftfeuchte (DPT9)
my $wg_wind_richtung_ga = "7/0/2"; # Gruppenadresse Wind Richtung (DPT16)
my $wg_wind_kmh_ga = "7/0/3"; # Gruppenadresse Wind KM/H (DPT9)
my $wg_luftdruck_ga = "7/0/4"; # Gruppenadresse Luftdruck (DPT9)
my $wg_clouds_ga = "7/0/5"; # Gruppenadresse Wolken (DPT16)
my $wg_kondition_ga = "7/0/6"; # Gruppenadresse Wetterverhältnis (DPT16)
my $wg_taupunkt_ga = "7/0/7"; # Gruppenadresse Taupunkt (DPT9)
my $wg_moonphase_ga = "7/0/8"; # Gruppenadresse Mondphase (DPT16)
my $wg_sunrise_ga = "7/0/9"; # Gruppenadresse Sonnenaufgang ()
my $wg_sunset_ga = "7/0/10"; # Gruppenadresse Sonnenuntergang ()
$plugin_info{$plugname.'_cycle'} = 600; # Eigenen Aufruf-Zyklus setzen (Initialisierung/zyklisches prüfen)
# nicht zu klein, da die Daten sowieso in längeren Perioden refresht werden
# und das Plugin auf die CF schreibt.
#######################
### ENDE DEFINITION ###
#######################
use Weather::Underground;
use feature qw/switch/;
my $weather = Weather::Underground->new(
place => $city . "," . $country,
debug => 0
)
|| die "Error, could not create new weather object: $@\n";
my $arrayref = $weather->get_weather()
|| die "Error, calling get_weather() failed: $@\n";
knx_write($wg_temp_ga,$arrayref->[0]->{temperature_celsius});
knx_write($wg_hum_ga,$arrayref->[0]->{humidity});
knx_write($wg_wind_kmh_ga,$arrayref->[0]->{wind_kilometersperhour});
my $windrichtung = $arrayref->[0]->{wind_direction};
if ($arrayref->[0]->{wind_kilometersperhour} eq "0.0")
{ $windrichtung = "Kein Wind"; }
else
{
given ($windrichtung) {
when ("North") { $windrichtung = "N"; }
when ("North North East") { $windrichtung = "NNO"; }
when ("North East") { $windrichtung = "NO"; }
when ("East North East") { $windrichtung = "ONO"; }
when ("East") { $windrichtung = "O"; }
when ("East South East") { $windrichtung = "OSO"; }
when ("South East") { $windrichtung = "SO"; }
when ("South South East") { $windrichtung = "SSO"; }
when ("South") { $windrichtung = "S"; }
when ("South South West") { $windrichtung = "SSW"; }
when ("South West") { $windrichtung = "SW"; }
when ("West South West") { $windrichtung = "WSW"; }
when ("West") { $windrichtung = "W"; }
when ("West North West") { $windrichtung = "WNW"; }
when ("North West") { $windrichtung = "NW"; }
when ("North North West") { $windrichtung = "NNW"; }
}
plugin_log($plugname,"Windrichtung: " . $windrichtung);
}
knx_write($wg_wind_richtung_ga,$windrichtung);
knx_write($wg_luftdruck_ga,$arrayref->[0]->{pressure},1);
knx_write($wg_taupunkt_ga,$arrayref->[0]->{dewpoint_celsius});
knx_write($wg_clouds_ga,$arrayref->[0]->{clouds});
knx_write($wg_kondition_ga,$arrayref->[0]->{conditions});
knx_write($wg_moonphase_ga,$arrayref->[0]->{moonphase});
knx_write($wg_sunrise_ga,$arrayref->[0]->{sunrise});
knx_write($wg_sunset_ga,$arrayref->[0]->{sunset});
Es wird für das Skript das Modul Weather::Underground benötigt. Dieses kann mit "cpan Weather::Underground" installiert werden.
Wer weiter basteln möchte, darf gerne. Wenn es fertig ist geht es dann in die PlugIn Sektion. ;-)
---------------------------------------------------------------------
my $city = "Dortmund"; # Meine Stadt
my $country = "Deutschland"; # Mein Land
my $wg_temp_ga = "7/0/0"; # Gruppenadresse Temperatur (DPT9)
my $wg_hum_ga = "7/0/1"; # Gruppenadresse Luftfeuchte (DPT9)
my $wg_wind_richtung_ga = "7/0/2"; # Gruppenadresse Wind Richtung (DPT16)
my $wg_wind_kmh_ga = "7/0/3"; # Gruppenadresse Wind KM/H (DPT9)
my $wg_luftdruck_ga = "7/0/4"; # Gruppenadresse Luftdruck (DPT9)
my $wg_clouds_ga = "7/0/5"; # Gruppenadresse Wolken (DPT16)
my $wg_kondition_ga = "7/0/6"; # Gruppenadresse Wetterverhältnis (DPT16)
my $wg_taupunkt_ga = "7/0/7"; # Gruppenadresse Taupunkt (DPT9)
my $wg_moonphase_ga = "7/0/8"; # Gruppenadresse Mondphase (DPT16)
my $wg_sunrise_ga = "7/0/9"; # Gruppenadresse Sonnenaufgang ()
my $wg_sunset_ga = "7/0/10"; # Gruppenadresse Sonnenuntergang ()
$plugin_info{$plugname.'_cycle'} = 600; # Eigenen Aufruf-Zyklus setzen (Initialisierung/zyklisches prüfen)
# nicht zu klein, da die Daten sowieso in längeren Perioden refresht werden
# und das Plugin auf die CF schreibt.
#######################
### ENDE DEFINITION ###
#######################
use Weather::Underground;
use feature qw/switch/;
my $weather = Weather::Underground->new(
place => $city . "," . $country,
debug => 0
)
|| die "Error, could not create new weather object: $@\n";
my $arrayref = $weather->get_weather()
|| die "Error, calling get_weather() failed: $@\n";
knx_write($wg_temp_ga,$arrayref->[0]->{temperature_celsius});
knx_write($wg_hum_ga,$arrayref->[0]->{humidity});
knx_write($wg_wind_kmh_ga,$arrayref->[0]->{wind_kilometersperhour});
my $windrichtung = $arrayref->[0]->{wind_direction};
if ($arrayref->[0]->{wind_kilometersperhour} eq "0.0")
{ $windrichtung = "Kein Wind"; }
else
{
given ($windrichtung) {
when ("North") { $windrichtung = "N"; }
when ("North North East") { $windrichtung = "NNO"; }
when ("North East") { $windrichtung = "NO"; }
when ("East North East") { $windrichtung = "ONO"; }
when ("East") { $windrichtung = "O"; }
when ("East South East") { $windrichtung = "OSO"; }
when ("South East") { $windrichtung = "SO"; }
when ("South South East") { $windrichtung = "SSO"; }
when ("South") { $windrichtung = "S"; }
when ("South South West") { $windrichtung = "SSW"; }
when ("South West") { $windrichtung = "SW"; }
when ("West South West") { $windrichtung = "WSW"; }
when ("West") { $windrichtung = "W"; }
when ("West North West") { $windrichtung = "WNW"; }
when ("North West") { $windrichtung = "NW"; }
when ("North North West") { $windrichtung = "NNW"; }
}
plugin_log($plugname,"Windrichtung: " . $windrichtung);
}
knx_write($wg_wind_richtung_ga,$windrichtung);
knx_write($wg_luftdruck_ga,$arrayref->[0]->{pressure},1);
knx_write($wg_taupunkt_ga,$arrayref->[0]->{dewpoint_celsius});
knx_write($wg_clouds_ga,$arrayref->[0]->{clouds});
knx_write($wg_kondition_ga,$arrayref->[0]->{conditions});
knx_write($wg_moonphase_ga,$arrayref->[0]->{moonphase});
knx_write($wg_sunrise_ga,$arrayref->[0]->{sunrise});
knx_write($wg_sunset_ga,$arrayref->[0]->{sunset});
Kommentar