Zurück   KNX-User-Forum > Öffentlicher Bereich > KNX EIB Forum > Code-Schnipsel
knx-user-forum - International KNX Award Winner 2010


Links
Kalender
Spende

Antwort
 
Themen-Optionen Ansicht
  #21  
Alt 05.09.2012, 11:28
Neuer Benutzer
 
Registriert seit: 02.07.2010
Ort: Dortmund
Beiträge: 6
Abraxas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Makki:

werde mal die JSON/XML Variante prüfen.
Den Api Key bekommt man nach Registrierung? Kostenfrei?

Bezüglich Weather::Underground:
Mag sein dass das pm schon ein paar Jährchen auf dem Buckel hat - funktioniert aber ganz gut...

Jemand Lust mit zu basteln? Bin gerade zeitlich ziemlich eingespannt durch die Arbeit...

Gruß,
Konstantin
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #22  
Alt 05.09.2012, 22:28
Benutzerbild von makki
Erfahrener Benutzer
 
Registriert seit: 07.07.2007
Beiträge: 11.779
makki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat von Abraxas Beitrag anzeigen
Den Api Key bekommt man nach Registrierung? Kostenfrei?
Ja, das ist halt die Pille die man schlucken muss, gefällt mir auch nicht aber besser als von wetteronline.de HTML zu parsen o.ä.
Für Privatpersonen/Entwickler:
Calls Per Day 500
Calls Per Minute 10

Gewerblich sollte das jeder selbst lesen, wird man ums zahlen IMHO nicht umhinkommen..
Aber dann sollten $20 im Monat auch drin sein, wenn man sich überlegt welchen Aufwand es macht, das Zeug ständig anzupassen und zu pflegen bzw. überhaupt brauchbare Wetterdaten zu bekommen..

Makki
__________________
EIB/KNX & HS3(+Lüfter+picoPSU80), Multiroom-AV mit Russound,mpd,vdr,DM8000, Profilux II+, N141 DALI, DMX, dez. Lüfter (RS485), Wärmepumpe (RS422), 30+ 1-Wire Temp,Luft&Bodenfeuchte,IRTrans
WireGate - Supportforum - bitte keine PN's!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #23  
Alt 06.09.2012, 16:30
Benutzerbild von ZeitlerW
Benutzer
 
Registriert seit: 15.09.2010
Beiträge: 196
ZeitlerW ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo zusammen,

nachdem ich mit yr.no wie viele hier recht zufrieden bin, sollten wir uns doch mal die api von yr.no ansehen!

http://api.yr.no/weatherapi/documentation

Da gibt es auch Standortvorsagen:
B<Locationforecast> - Weather forecast for a specified place


Für den Standort Schauenstein würde die URL so aussehen:

http://api.yr.no/weatherapi/location...=11.73;msl=555

Das sollte doch mit dem XML - parser auswertbar sein

Ich meine etwas von einer creative commons Lizenz gelesen zu haben.

vG
Wolfgang

Geändert von ZeitlerW (06.09.2012 um 17:52 Uhr)
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #24  
Alt 06.09.2012, 20:44
Benutzerbild von makki
Erfahrener Benutzer
 
Registriert seit: 07.07.2007
Beiträge: 11.779
makki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäre
Standard

Guter Einwurf, sieht auch ordentlich aus!
Die Daten von yr.no / met.no kommen m.W. übrigens vom DWD, die dürfen das nur aus irgendeinem komischen Grund nicht selbst in dieser Detailtiefe direkt liefern (nach Anmeldung bekommt mans auch vom DWD - Stichwort Grundversorgung/GDS aber brutal Textlastig und schwer parsebar)

Makki
__________________
EIB/KNX & HS3(+Lüfter+picoPSU80), Multiroom-AV mit Russound,mpd,vdr,DM8000, Profilux II+, N141 DALI, DMX, dez. Lüfter (RS485), Wärmepumpe (RS422), 30+ 1-Wire Temp,Luft&Bodenfeuchte,IRTrans
WireGate - Supportforum - bitte keine PN's!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #25  
Alt 25.10.2012, 22:46
Benutzerbild von jensgulow
Benutzer
 
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
jensgulow ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

da mich die Wetterdaten von wunderground auch interessierten habe ich mal versucht das "alte" WG-plugin von Bodo für wunderground anzupassen:

Code:
# ANPASSUNG an WUNDERGROUND based on
# Plugin zum Abfragen von Google Weather
# Version 0.5 2011-02-15
# Copyright: Bodo (http://knx-user-forum.de/members/bodo.html)
# License: GPL (v2)
# Aufbau möglichst so, dass man unterhalb der Definitionen nichts ändern muss!

##################
### DEFINITION ###
##################

my $city                         = "xxxxxx";        # Meine Stadt, hier statt ü,ä,ö einfach u,a,o nehmen oder ue,ae,oe
my $country                     = "Germany";    # Mein Land
my $lang                         = "DL";            # Meine Sprache
my $api                         = "xxxxxx";        #API, muss man sich bei Wunderground besorgen

my $wunderground_temp_ga                = "10/0/4";    # Gruppenadresse Temperatur (DPT9.001)
my $wunderground_hum_ga                    = "10/0/5";    # Gruppenadresse Luftfeuchte (DPT9.007)
my $wunderground_forecast_maxtemp_ga     = "10/0/6";    # Gruppenadresse Temperatur Maximum (DPT9.001)
my $wunderground_forecast_mintemp_ga     = "10/0/7";    # Gruppenadresse Temperatur Minimum (DPT9.001)
my $wunderground_clouds_ga                = "10/0/8";    # Gruppenadresse Wolken (DPT16)
my $wunderground_forecast_clouds_ga        = "10/0/9";    # Gruppenadresse Vorhersage Wolken (DPT16)
my $wunderground_wind_ga                = "10/0/10";    # Gruppenadresse Wind (DPT16)

my $wunderground_ip                        = "http://api.wunderground.com/api/";
my $htdocs                                = "/var/www/";                        # Das Webverzeichnis
my $wunderground_xml                    = "wunderground_weather.xml";        # Der XML Datensatz
my $weather_html                        = "wunderground_weather.html";        # Ausgabe als HTML
my $wunderground_css                    = "wunderground_weather.css";        # Das Stylesheet

$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 ###
#######################

# Hauptverarbeitung
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
use Encode qw(encode decode);
# use open ":utf8";

my $url = $wunderground_ip.$api."/conditions/forecast/lang:".$lang."/q/".$country."\/".$city."\.xml";
my $xml = encode("utf8",get($url));
# my $xml = get($url);
die "Couldn't get it!" unless defined $xml;

my $xml_w = ">".$htdocs.$wunderground_xml;
open(XML, $xml_w);    # XML Datei zum Schreiben öffnen
print XML $xml;
close(XML);

my $weather = XMLin($xml)->{weather};

knx_write($wunderground_temp_ga,$weather->{current_observation}->{temp_c},9);

my $wunderground_hum = $weather->{current_observation}->{relative_humidity};
$wunderground_hum =~ m/(\d{1,3})(\D)/; # ($1)($2)
knx_write($wunderground_hum_ga,$1,9);

knx_write($wunderground_forecast_maxtemp_ga,$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{high}->{celcius},9);

knx_write($wunderground_forecast_mintemp_ga,$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{low}->{celcius},9);

my $wunderground_clouds = $weather->{current_observation}->{weather};
if ($wunderground_clouds =~ m/(\D*)(\s)(\D*)/) {  # \s findet Zwischenraum (whitspaces). ($1)($2)($3)
  knx_write($wunderground_clouds_ga,$1." ".$3,16);
} else {
  knx_write($wunderground_clouds_ga,$wunderground_clouds,16);
}

my $wunderground_forecast_clouds = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{conditions};
if ($wunderground_forecast_clouds =~ m/(\D*)(\s)(\D*)/) { # ($1)($2)($3)
  knx_write($wunderground_forecast_clouds_ga,$1." ".$3,16);
} else {
  knx_write($wunderground_forecast_clouds_ga,$wunderground_forecast_clouds,16);
}
my $wunderground_wind = $weather->{current_observation}->{wind_string};
if ($wunderground_wind =~ m/(\D*)(\s)(\D*)/) { # ($1)($2)($3)
knx_write($wunderground_wind_ga,$1." ".$3,16);
} else {
  knx_write($wunderground_wind_ga,$wunderground_wind,16);
}

my $html = 
"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
<title>Wetter</title>
<meta name='language' content='de'>
<meta http-equiv='content-type' content='text/html; charset=utf8'>
<link rel='stylesheet' type='text/css' href='".$wunderground_css."'>
<style type='text/css'>
<!--
td {
  vertical-align: top;
  padding: 10px;
  background-color: black;
  background: -moz-linear-gradient(top, #b2bcc8, #adc7db);
  border: 1px #fff solid;
  font-family: Verdana,Helvetica,Arial,Sans-serif;
  font-size: 10px;
  color: #fff;
}
=-->
</style>
</head>
<body>
<table>".

"<tr><td colspan='5'><h1>".$weather->{current_observation}->{display_location}->{full}.":</h1></td></tr>\n".
"<tr>\n".
"<td>\n".
"<strong>".$weather->{current_observation}->{observation_time_rfc822}."</strong><br/>\n".
"<img src=\"".$weather->{current_observation}->{icon}."\" alt=\"".
$weather->{current_observation}->{icon}."\" /><br/>\n".
$weather->{current_observation}->{icon}."<br/>\n".
"Temperatur: ".$weather->{current_observation}->{temp_c}."° C<br/>\n".
"Luftfeuchte: ".$weather->{current_observation}->{relative_humidity}." %<br/>\n".
"Wind: ".$weather->{current_observation}->{wind_dir}." mit ".$weather->{current_observation}->{wind_kph}."km/h"."<br/>\n".
"</td>\n";

for(my $j=0;$j<4;$j++) {
$html = $html."<td>\n".
"<strong>".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{date}->{weekday}."</strong><br/>\n".
"<img src=\"".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{icon_url}."\" alt=\"".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{conditions}."\" /><br/>\n".
$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{conditions}."<br/>\n".
"min. ".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{low}->{celsius}."° C<br/>max. ".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{high}->{celsius}."° C<br/>\n".
"</td>\n";
}
$html = $html."</tr>
</table>
</body>";


my $html_datei = $htdocs.$weather_html;

open(HTML, ">:utf8", $html_datei);    # HTML Datei zum Schreiben öffnen
  print HTML $html;
close(HTML);
Es wird auch die XML-Datei erstellt; geparst sieht das ganze so aus:

Code:
$VAR1 = {
          'forecast' => {
                        'simpleforecast' => {
                                            'forecastdays' => {
                                                              'forecastday' => [
                                                                               {
                                                                                 'icon' => 'cloudy',
                                                                                 'icon_url' => 'http://icons-ak.wxug.com/i/c/k/cloudy.gif',
                                                                                 'maxhumidity' => '94',
                                                                                 'date' => {
                                                                                           'hour' => '23',
                                                                                           'tz_short' => 'CEST',
                                                                                           'month' => '10',
                                                                                           'pretty_short' => '11:00 PM CEST',
                                                                                           'monthname' => 'Oktober',
                                                                                           'day' => '25',
                                                                                           'yday' => '298',
                                                                                           'tz_long' => 'Europe/Berlin',
                                                                                           'weekday_short' => 'Do',
                                                                                           'weekday' => 'Donnerstag',
                                                                                           'epoch' => '1351198800',
                                                                                           'min' => '00',
                                                                                           'isdst' => '1',
                                                                                           'ampm' => 'PM',
                                                                                           'pretty' => '11:00 PM CEST on October 25, 2012',
                                                                                           'sec' => '0',
                                                                                           'year' => '2012'
                                                                                         },
                                                                                 'avehumidity' => '82',
                                                                                 'maxwind' => {
                                                                                              'kph' => '14',
                                                                                              'mph' => '9',
                                                                                              'degrees' => '265',
                                                                                              'dir' => 'West'
                                                                                            },
                                                                                 'skyicon' => 'cloudy',
                                                                                 'snow_day' => {
                                                                                               'in' => '0',
                                                                                               'cm' => '0'
                                                                                             },
                                                                                 'qpf_night' => {
                                                                                                'mm' => '0.0',
                                                                                                'in' => '0.00'
                                                                                              },
                                                                                 'high' => {
                                                                                           'celsius' => '13',
                                                                                           'fahrenheit' => '55'
                                                                                         },
                                                                                 'low' => {
                                                                                          'celsius' => '4',
                                                                                          'fahrenheit' => '39'
                                                                                        },
                                                                                 'snow_night' => {
                                                                                                 'in' => '0',
                                                                                                 'cm' => '0'
                                                                                               },
                                                                                 'qpf_allday' => {
                                                                                                 'mm' => '0.5',
                                                                                                 'in' => '0.02'
                                                                                               },
                                                                                 'period' => '1',
                                                                                 'avewind' => {
                                                                                              'kph' => '13',
                                                                                              'mph' => '8',
                                                                                              'degrees' => '274',
                                                                                              'dir' => 'West'
                                                                                            },
                                                                                 'minhumidity' => '78',
                                                                                 'snow_allday' => {
                                                                                                  'in' => '0',
                                                                                                  'cm' => '0'
                                                                                                },
                                                                                 'qpf_day' => {
                                                                                              'mm' => '0.3',
                                                                                              'in' => '0.01'
                                                                                            },
                                                                                 'conditions' => "Regen m\x{c3}\x{b6}glich",
                                                                                 'pop' => '20'
                                                                               },
                                                                               {
                                                                                 'icon' => 'mostlycloudy',
                                                                                 'icon_url' => 'http://icons-ak.wxug.com/i/c/k/mostlycloudy.gif',
                                                                                 'maxhumidity' => '80',
                                                                                 'date' => {
                                                                                           'hour' => '23',
                                                                                           'tz_short' => 'CEST',
                                                                                           'month' => '10',
                                                                                           'pretty_short' => '11:00 PM CEST',
                                                                                           'monthname' => 'Oktober',
                                                                                           'day' => '26',
                                                                                           'yday' => '299',
                                                                                           'tz_long' => 'Europe/Berlin',
                                                                                           'weekday_short' => 'Fr',
                                                                                           'weekday' => 'Freitag',
                                                                                           'epoch' => '1351285200',
                                                                                           'min' => '00',
                                                                                           'isdst' => '1',
                                                                                           'ampm' => 'PM',
                                                                                           'pretty' => '11:00 PM CEST on October 26, 2012',
                                                                                           'sec' => '0',
                                                                                           'year' => '2012'
                                                                                         },
                                                                                 'avehumidity' => '60',
                                                                                 'maxwind' => {
                                                                                              'kph' => '10',
                                                                                              'mph' => '6',
                                                                                              'degrees' => '312',
                                                                                              'dir' => 'Nordwest'
                                                                                            },
                                                                                 'skyicon' => 'cloudy',
                                                                                 'snow_day' => {
                                                                                               'in' => '0',
                                                                                               'cm' => '0'
                                                                                             },
                                                                                 'qpf_night' => {
                                                                                                'mm' => '0.0',
                                                                                                'in' => '0.00'
                                                                                              },
                                                                                 'high' => {
                                                                                           'celsius' => '8',
                                                                                           'fahrenheit' => '46'
                                                                                         },
                                                                                 'low' => {
                                                                                          'celsius' => '0',
                                                                                          'fahrenheit' => '32'
                                                                                        },
                                                                                 'snow_night' => {
                                                                                                 'in' => '0',
                                                                                                 'cm' => '0'
                                                                                               },
                                                                                 'qpf_allday' => {
                                                                                                 'mm' => '0.0',
                                                                                                 'in' => '0.00'
                                                                                               },
                                                                                 'period' => '2',
                                                                                 'avewind' => {
                                                                                              'kph' => '8',
                                                                                              'mph' => '5',
                                                                                              'degrees' => '176',
                                                                                              'dir' => "S\x{c3}\x{bc}d"
                                                                                            },
                                                                                 'minhumidity' => '47',
                                                                                 'snow_allday' => {
                                                                                                  'in' => '0',
                                                                                                  'cm' => '0'
                                                                                                },
                                                                                 'qpf_day' => {
                                                                                              'mm' => '0.0',
                                                                                              'in' => '0.00'
                                                                                            },
                                                                                 'conditions' => 'Wolkig',
                                                                                 'pop' => '0'
                                                                               },
                                                                               {
                                                                                 'icon' => 'cloudy',
                                                                                 'icon_url' => 'http://icons-ak.wxug.com/i/c/k/cloudy.gif',
                                                                                 'maxhumidity' => '72',
                                                                                 'date' => {
                                                                                           'hour' => '23',
                                                                                           'tz_short' => 'CEST',
                                                                                           'month' => '10',
                                                                                           'pretty_short' => '11:00 PM CEST',
                                                                                           'monthname' => 'Oktober',
                                                                                           'day' => '27',
                                                                                           'yday' => '300',
                                                                                           'tz_long' => 'Europe/Berlin',
                                                                                           'weekday_short' => 'Sa',
                                                                                           'weekday' => 'Samstag',
                                                                                           'epoch' => '1351371600',
                                                                                           'min' => '00',
                                                                                           'isdst' => '1',
                                                                                           'ampm' => 'PM',
                                                                                           'pretty' => '11:00 PM CEST on October 27, 2012',
                                                                                           'sec' => '0',
                                                                                           'year' => '2012'
                                                                                         },
                                                                                 'avehumidity' => '64',
                                                                                 'maxwind' => {
                                                                                              'kph' => '16',
                                                                                              'mph' => '10',
                                                                                              'degrees' => '16',
                                                                                              'dir' => 'Nord-Nordost'
                                                                                            },
                                                                                 'skyicon' => 'cloudy',
                                                                                 'snow_day' => {
                                                                                               'in' => '0',
                                                                                               'cm' => '0'
                                                                                             },
                                                                                 'qpf_night' => {
                                                                                                'mm' => '0.0',
                                                                                                'in' => '0.00'
                                                                                              },
                                                                                 'high' => {
                                                                                           'celsius' => '7',
                                                                                           'fahrenheit' => '45'
                                                                                         },
                                                                                 'low' => {
                                                                                          'celsius' => '-4',
                                                                                          'fahrenheit' => '25'
                                                                                        },
                                                                                 'snow_night' => {
                                                                                                 'in' => '0',
                                                                                                 'cm' => '0'
                                                                                               },
                                                                                 'qpf_allday' => {
                                                                                                 'mm' => '0.0',
                                                                                                 'in' => '0.00'
                                                                                               },
                                                                                 'period' => '3',
                                                                                 'avewind' => {
                                                                                              'kph' => '13',
                                                                                              'mph' => '8',
                                                                                              'degrees' => '14',
                                                                                              'dir' => 'Nord-Nordost'
                                                                                            },
                                                                                 'minhumidity' => '44',
                                                                                 'snow_allday' => {
                                                                                                  'in' => '0',
                                                                                                  'cm' => '0'
                                                                                                },
                                                                                 'qpf_day' => {
                                                                                              'mm' => '0.0',
                                                                                              'in' => '0.00'
                                                                                            },
                                                                                 'conditions' => 'Bedeckt',
                                                                                 'pop' => '0'
                                                                               },
                                                                               {
                                                                                 'icon' => 'partlycloudy',
                                                                                 'icon_url' => 'http://icons-ak.wxug.com/i/c/k/partlycloudy.gif',
                                                                                 'maxhumidity' => '83',
                                                                                 'date' => {
                                                                                           'hour' => '22',
                                                                                           'tz_short' => 'CET',
                                                                                           'month' => '10',
                                                                                           'pretty_short' => '10:00 PM CET',
                                                                                           'monthname' => 'Oktober',
                                                                                           'day' => '28',
                                                                                           'yday' => '301',
                                                                                           'tz_long' => 'Europe/Berlin',
                                                                                           'weekday_short' => 'So',
                                                                                           'weekday' => 'Sonntag',
                                                                                           'epoch' => '1351458000',
                                                                                           'min' => '00',
                                                                                           'isdst' => '0',
                                                                                           'ampm' => 'PM',
                                                                                           'pretty' => '10:00 PM CET on October 28, 2012',
                                                                                           'sec' => '0',
                                                                                           'year' => '2012'
                                                                                         },
                                                                                 'avehumidity' => '63',
                                                                                 'maxwind' => {
                                                                                              'kph' => '8',
                                                                                              'mph' => '5',
                                                                                              'degrees' => '107',
                                                                                              'dir' => "Ost-S\x{c3}\x{bc}dost"
                                                                                            },
                                                                                 'skyicon' => 'mostlysunny',
                                                                                 'snow_day' => {
                                                                                               'in' => '0',
                                                                                               'cm' => '0'
                                                                                             },
                                                                                 'qpf_night' => {
                                                                                                'mm' => '0.0',
                                                                                                'in' => '0.00'
                                                                                              },
                                                                                 'high' => {
                                                                                           'celsius' => '7',
                                                                                           'fahrenheit' => '45'
                                                                                         },
                                                                                 'low' => {
                                                                                          'celsius' => '-5',
                                                                                          'fahrenheit' => '23'
                                                                                        },
                                                                                 'snow_night' => {
                                                                                                 'in' => '0',
                                                                                                 'cm' => '0'
                                                                                               },
                                                                                 'qpf_allday' => {
                                                                                                 'mm' => '0.0',
                                                                                                 'in' => '0.00'
                                                                                               },
                                                                                 'period' => '4',
                                                                                 'avewind' => {
                                                                                              'kph' => '5',
                                                                                              'mph' => '3',
                                                                                              'degrees' => '118',
                                                                                              'dir' => "Ost-S\x{c3}\x{bc}dost"
                                                                                            },
                                                                                 'minhumidity' => '51',
                                                                                 'snow_allday' => {
                                                                                                  'in' => '0',
                                                                                                  'cm' => '0'
                                                                                                },
                                                                                 'qpf_day' => {
                                                                                              'mm' => '0.0',
                                                                                              'in' => '0.00'
                                                                                            },
                                                                                 'conditions' => 'Teils Wolkig',
                                                                                 'pop' => '0'
                                                                               }
                                                                             ]
                                                            }
                                          },
                        'txt_forecast' => {
                                          'date' => '2:00 AM CEST',
                                          'forecastdays' => {
                                                            'forecastday' => [
                                                                             {
                                                                               'icon' => 'cloudy',
                                                                               'icon_url' => 'http://icons-ak.wxug.com/i/c/k/cloudy.gif',
                                                                               'period' => '0',
                                                                               'fcttext' => "Bedeckt. H\x{c3}\x{b6}chsttemperatur: 55F. Windgeschwindigkeit: 5-10 mph. Windrichtung: West.",
                                                                               'title' => 'Donnerstag',
                                                                               'pop' => '20',
                                                                               'fcttext_metric' => "Bedeckt. H\x{c3}\x{b6}chsttemperatur: 13C. Windgeschwindigkeit: 10-15 km/h. Windrichtung: West."
                                                                             },
                                                                             {
                                                                               'icon' => 'cloudy',
                                                                               'icon_url' => 'http://icons-ak.wxug.com/i/c/k/cloudy.gif',
                                                                               'period' => '1',
                                                                               'fcttext' => 'Bedeckt. Tiefsttemperatur: 39F. Windgeschwindigkeit: 5-15 mph. Windrichtung: West-Nordwest.',
                                                                               'title' => 'Donnerstag Nacht',
                                                                               'pop' => '20',
                                                                               'fcttext_metric' => 'Bedeckt. Tiefsttemperatur: 4C. Windgeschwindigkeit: 10-20 km/h. Windrichtung: West-Nordwest.'
                                                                             },
                                                                             {
                                                                               'icon' => 'mostlycloudy',
                                                                               'icon_url' => 'http://icons-ak.wxug.com/i/c/k/mostlycloudy.gif',
                                                                               'period' => '2',
                                                                               'fcttext' => "Wolkig. H\x{c3}\x{b6}chsttemperatur: 46F. Light Wind.",
                                                                               'title' => 'Freitag',
                                                                               'pop' => '0',
                                                                               'fcttext_metric' => "Wolkig. H\x{c3}\x{b6}chsttemperatur: 8C. Light Wind."
                                                                             },
                                                                             {
                                                                               'icon' => 'cloudy',
                                                                               'icon_url' => 'http://icons-ak.wxug.com/i/c/k/cloudy.gif',
                                                                               'period' => '3',
                                                                               'fcttext' => 'Wolkig. Tiefsttemperatur: 32F. Windgeschwindigkeit: 5-10 mph. Windrichtung: Nord-Nordost.',
                                                                               'title' => 'Freitag Nacht',
                                                                               'pop' => '0',
                                                                               'fcttext_metric' => 'Wolkig. Tiefsttemperatur: 0C. Windgeschwindigkeit: 10-15 km/h. Windrichtung: Nord-Nordost.'
                                                                             },
                                                                             {
                                                                               'icon' => 'cloudy',
                                                                               'icon_url' => 'http://icons-ak.wxug.com/i/c/k/cloudy.gif',
                                                                               'period' => '4',
                                                                               'fcttext' => "Bedeckt. H\x{c3}\x{b6}chsttemperatur: 45F. Windgeschwindigkeit: 5-10 mph. Windrichtung: Nord-Nordost.",
                                                                               'title' => 'Samstag',
                                                                               'pop' => '0',
                                                                               'fcttext_metric' => "Bedeckt. H\x{c3}\x{b6}chsttemperatur: 7C. Windgeschwindigkeit: 10-20 km/h. Windrichtung: Nord-Nordost."
                                                                             },
                                                                             {
                                                                               'icon' => 'cloudy',
                                                                               'icon_url' => 'http://icons-ak.wxug.com/i/c/k/cloudy.gif',
                                                                               'period' => '5',
                                                                               'fcttext' => 'Bedeckt. Tiefsttemperatur: 25F. Windgeschwindigkeit: 5-10 mph. Windrichtung: Nord-Nordwest.',
                                                                               'title' => 'Samstag Nacht',
                                                                               'pop' => '0',
                                                                               'fcttext_metric' => 'Bedeckt. Tiefsttemperatur: -4C. Windgeschwindigkeit: 5-15 km/h. Windrichtung: Nord-Nordwest.'
                                                                             },
                                                                             {
                                                                               'icon' => 'partlycloudy',
                                                                               'icon_url' => 'http://icons-ak.wxug.com/i/c/k/partlycloudy.gif',
                                                                               'period' => '6',
                                                                               'fcttext' => "Teils Wolkig. H\x{c3}\x{b6}chsttemperatur: 45F. Light Wind.",
                                                                               'title' => 'Sonntag',
                                                                               'pop' => '0',
                                                                               'fcttext_metric' => "Teils Wolkig. H\x{c3}\x{b6}chsttemperatur: 7C. Light Wind."
                                                                             },
                                                                             {
                                                                               'icon' => 'clear',
                                                                               'icon_url' => 'http://icons-ak.wxug.com/i/c/k/clear.gif',
                                                                               'period' => '7',
                                                                               'fcttext' => 'Teils Wolkig. Tiefsttemperatur: 23F. Light Wind.',
                                                                               'title' => 'Sonntag Nacht',
                                                                               'pop' => '0',
                                                                               'fcttext_metric' => 'Teils Wolkig. Tiefsttemperatur: -5C. Light Wind.'
                                                                             }
                                                                           ]
                                                          }
                                        }
                      },
          'features' => {
                        'feature' => [
                                     'conditions',
                                     'forecast'
                                   ]
                      },
          'termsofService' => 'http://www.wunderground.com/weather/api/d/terms.html',
          'version' => '0.1',
          'current_observation' => {
                                   'precip_1hr_in' => '0.00',
                                   'feelslike_c' => '11.0',
                                   'heat_index_f' => 'NA',
                                   'pressure_in' => '29.83',
                                   'precip_1hr_metric' => ' 0',
                                   'precip_today_string' => '0.02 in (1 mm)',
                                   'wind_gust_kph' => '0',
                                   'wind_gust_mph' => '0',
                                   'local_epoch' => '1351187914',
                                   'wind_degrees' => '270',
                                   'local_tz_short' => 'CEST',
                                   'visibility_km' => 'N/A',
                                   'solarradiation' => '0',
                                   'observation_time_rfc822' => 'Thu, 25 Oct 2012 19:00:53 +0200',
                                   'history_url' => 'http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=ISACHSEN86',
                                   'observation_epoch' => '1351184453',
                                   'pressure_trend' => '0',
                                   'windchill_f' => 'NA',
                                   'local_tz_offset' => '+0200',
                                   'precip_today_in' => '0.02',
                                   'heat_index_c' => 'NA',
                                   'wind_string' => 'Calm',
                                   'local_time_rfc822' => 'Thu, 25 Oct 2012 19:58:34 +0200',
                                   'local_tz_long' => 'Europe/Berlin',
                                   'wind_dir' => 'West',
                                   'precip_1hr_string' => '0.00 in ( 0 mm)',
                                   'icon' => 'clear',
                                   'visibility_mi' => 'N/A',
                                   'relative_humidity' => '82%',
                                   'icon_url' => 'http://icons-ak.wxug.com/i/c/k/nt_clear.gif',
                                   'observation_time' => 'Last Updated on Oktober 25, 19:00 CEST',
                                   'heat_index_string' => 'NA',
                                   'station_id' => 'ISACHSEN86',
                                   'temperature_string' => '51.8 F (11.0 C)',
                                   'feelslike_string' => '51.8 F (11.0 C)',
                                   'dewpoint_string' => '46 F (8 C)',
                                   'weather' => 'Heiter',
                                   'ob_url' => 'http://www.wunderground.com/cgi-bin/findweather/getForecast?query=51.322964,12.483942',
                                   'forecast_url' => 'http://www.wunderground.com/global/stations/10471.html',
                                   'windchill_c' => 'NA',
                                   'estimated' => {},
                                   'display_location' => {
                                                         'country' => 'DL',
                                                         'longitude' => '12.42000008',
                                                         'elevation' => '146.00000000',
                                                         'state_name' => 'Deutschland',
                                                         'country_iso3166' => 'DE',
                                                         'full' => 'Leipzig, Deutschland',
                                                         'state' => {},
                                                         'city' => 'Leipzig',
                                                         'zip' => '00000',
                                                         'latitude' => '51.31999969'
                                                       },
                                   'UV' => '-1',
                                   'feelslike_f' => '51.8',
                                   'temp_f' => '51.8',
                                   'wind_mph' => '0.0',
                                   'windchill_string' => 'NA',
                                   'precip_today_metric' => '1',
                                   'dewpoint_f' => '46',
                                   'image' => {
                                              'link' => 'http://www.wunderground.com',
                                              'url' => 'http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png',
                                              'title' => 'Weather Underground'
                                            },
                                   'pressure_mb' => '1010',
                                   'wind_kph' => '0.0',
                                   'dewpoint_c' => '8',
                                   'temp_c' => '11.0',
                                   'observation_location' => {
                                                             'country' => 'GERMANY',
                                                             'longitude' => '12.483942',
                                                             'elevation' => '450 ft',
                                                             'country_iso3166' => 'DE',
                                                             'full' => 'Leipzig, Baalsdorf, SACHSEN',
                                                             'state' => 'SACHSEN',
                                                             'city' => 'Leipzig, Baalsdorf',
                                                             'latitude' => '51.322964'
                                                           }
                                 }
        };
...ABER in der HTML-Datei kommt nichts an:

Code:
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
<title>Wetter</title>
<meta name='language' content='de'>
<meta http-equiv='content-type' content='text/html; charset=utf8'>
<link rel='stylesheet' type='text/css' href='wunderground_weather.css'>
<style type='text/css'>
<!--
td {
  vertical-align: top;
  padding: 10px;
  background-color: black;
  background: -moz-linear-gradient(top, #b2bcc8, #adc7db);
  border: 1px #fff solid;
  font-family: Verdana,Helvetica,Arial,Sans-serif;
  font-size: 10px;
  color: #fff;
}
=-->
</style>
</head>
<body>
<table><tr><td colspan='5'><h1>:</h1></td></tr>
<tr>
<td>
<strong></strong><br/>
<img src="" alt="" /><br/>
<br/>
Temperatur: ° C<br/>
Luftfeuchte:  %<br/>
Wind:  mit km/h<br/>
</td>
<td>
<strong></strong><br/>
<img src="" alt="" /><br/>
<br/>
min. ° C<br/>max. ° C<br/>
</td>
<td>
<strong></strong><br/>
<img src="" alt="" /><br/>
<br/>
min. ° C<br/>max. ° C<br/>
</td>
<td>
<strong></strong><br/>
<img src="" alt="" /><br/>
<br/>
min. ° C<br/>max. ° C<br/>
</td>
<td>
<strong></strong><br/>
<img src="" alt="" /><br/>
<br/>
min. ° C<br/>max. ° C<br/>
</td>
</tr>
</table>
</body>
Die GA's sind mit DPT in der eibga.conf eingetragen.
Auf dem Bus erscheinen auch Telegramme - allerdings völlig leer.

Code:
2012-10-25 22:25:26.712,A_GroupValue_Write,0.0.0,10/0/4,00 00,,,,0,low,7,T_DATA_XXX_REQ,0 2012-10-25 22:31:44.354,A_GroupValue_Write,0.0.0,10/0/4,00 00,,,,0,low,7,T_DATA_XXX_REQ,0 2012-10-25 22:32:21.182,A_GroupValue_Write,0.0.0,10/0/4,00 00,,,,0,low,7,T_DATA_XXX_REQ,0 2012-10-25 22:34:23.237,A_GroupValue_Write,0.0.0,10/0/4,00 00,,,,0,low,7,T_DATA_XXX_REQ,0 2012-10-25 22:42:54.050,A_GroupValue_Write,0.0.0,10/0/4,00 00,,,,0,low,7,T_DATA_XXX_REQ,0
Was übersehe ich denn da? Scheint ja wohl ein Problem im plugin mit der Variablenzuweisung zu sein oder.

Bin ein wenig hilflos. Vielleicht weiss ja der Entwickler oder einer von den Profis Rat.

Danke schon mal im Voraus.

Jens
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #26  
Alt 26.10.2012, 02:58
Benutzerbild von Bodo
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Ort: Zürich
Beiträge: 4.669
Bodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat von jensgulow Beitrag anzeigen
Was übersehe ich denn da? Scheint ja wohl ein Problem im plugin mit der Variablenzuweisung zu sein oder.
Hoi Jens

Das sieht eigentlich alles richtig aus.
Code:
knx_write($wunderground_temp_ga,$weather->{current_observation}->{temp_c},9);
Das parsen von XML ist eine Wissenschaft für sich.
Ich find' gerade den Fehler nicht und bin leider bis zum 01.11. weg.
Code:
$VAR1 = {
          'forecast' => {
...
                      },
          'current_observation' => {
                                   'temp_c' => '11.0',
                                 }
        };
__________________
Grüsse Bodo Nach bst. Wissen, ohne Gewähr; Fragen gehören ins Forum, und nicht in mein Postfach; EibPC-Fan; Wiregate-Fan; Alix1d mit eibd, linknx, knxweb, 30x 1-Wire, mjpg_streamer, e-mail, sms, growl-notif., CUL; Dreambox8000HD stream VLC's, TV-Browser start-record; Fritzbox 7270, voip; HP ProCurve 1810G 24 GE; Zotac ZBOX HD-ND22 mit SU2300 und Ubuntu 11.10 FullHD; MusicPal; SqueezeboxBoom; NEU Russound C5; iPhone 5 IOS6.1 JB PHP Lighty
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #27  
Alt 26.10.2012, 12:14
Benutzerbild von jensgulow
Benutzer
 
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
jensgulow ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Liegt es evtl. an dem Punkt bei den jeweiligen Werten in der geparsten Version, z.B.:

Code:
          'current_observation' => {'temp_c' => '11.0',}
... wie bei dem hier disskutiertem Problem:

- √ - BUG oder Anwenderfehler: KNXWRITE auf DPT 5.005

Dann sollten ja die doppelten Gänsfüßchen was bewirken können?!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #28  
Alt 26.10.2012, 22:19
Benutzerbild von jensgulow
Benutzer
 
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
jensgulow ist zur Zeit noch ein unbeschriebenes Blatt
Daumen hoch

Problem gelöst:

Hauptfehler war hier:

Code:
.
.
.
my $weather = XMLin($xml)->{weather};
Das rot markierte musste weg. Jetzt funktioniert es.
Es sind noch kleinere Unklarheiten drin, aber mit dem nachfolgendem CODE

Code:
# ANPASSUNG an WUNDERGROUND based on
# Plugin zum Abfragen von Google Weather
# Version 0.5 2011-02-15
# Copyright: Bodo (http://knx-user-forum.de/members/bodo.html)
# License: GPL (v2)
# Aufbau möglichst so, dass man unterhalb der Definitionen nichts ändern muss!

##################
### DEFINITION ###
##################

my $city                         = "Leipzig";        # Meine Stadt, hier statt ü,ä,ö einfach u,a,o nehmen oder ue,ae,oe
my $country                         = "Germany";        # Mein Land
my $lang                         = "DL";            # Meine Sprache
my $api                         = "xxxxxxxxxxxxxxxx";    #API, muss man sich bei Wunderground besorgen

my $wunderground_temp_ga                = "10/0/4";    # Gruppenadresse Temperatur (DPT9.001)
my $wunderground_hum_ga                    = "10/0/5";    # Gruppenadresse Luftfeuchte (DPT9.007)
my $wunderground_forecast_maxtemp_ga             = "10/0/6";    # Gruppenadresse Temperatur Maximum (DPT9.001)
my $wunderground_forecast_mintemp_ga             = "10/0/7";    # Gruppenadresse Temperatur Minimum (DPT9.001)
my $wunderground_clouds_ga                = "10/0/8";    # Gruppenadresse Wolken (DPT16)
my $wunderground_forecast_clouds_ga            = "10/0/9";    # Gruppenadresse Vorhersage Wolken (DPT16)
my $wunderground_wind_ga                = "10/0/10";    # Gruppenadresse Wind (DPT16)

my $wunderground_ip                    = "http://api.wunderground.com/api/";
my $htdocs                        = "/var/www/";                # Das Webverzeichnis
my $wunderground_xml                    = "wunderground_weather.xml";        # Der XML Datensatz
my $weather_html                    = "wunderground_weather.html";        # Ausgabe als HTML
my $wunderground_css                    = "wunderground_weather.css";        # Das Stylesheet

$plugin_info{$plugname.'_cycle'} = 1800;    # 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 ###
#######################

# Hauptverarbeitung
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
use Encode qw(encode decode);
# use open ":utf8";

my $url = $wunderground_ip.$api."/conditions/forecast/lang:".$lang."/q/".$country."\/".$city."\.xml";
my $xml = encode("utf8",get($url));
# my $xml = get($url);
die "Couldn't get it!" unless defined $xml;

my $xml_w = ">".$htdocs.$wunderground_xml;
open(XML, $xml_w);    # XML Datei zum Schreiben öffnen
print XML $xml;
close(XML);

my $weather = XMLin($xml);

my $wunderground_temp = $weather->{current_observation}->{temp_c};
$wunderground_temp =~ m/(\d{1,3})(\D)(\d{1,3})/; # ($1)($2)($3)
knx_write($wunderground_temp_ga,$1,9);

my $wunderground_hum = $weather->{current_observation}->{relative_humidity};
$wunderground_hum =~ m/(\d{1,3})(\D)/; # ($1)($2)
knx_write($wunderground_hum_ga,$1,9);

my $wunderground_forecast_maxtemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{high}->{celcius};
$wunderground_forecast_maxtemp =~ m/(\d{1,3})(\D)(\d{1,3})/; # ($1)($2)($3)
knx_write($wunderground_forecast_maxtemp_ga,$1,9);

my $wunderground_forecast_mintemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{low}->{celcius};
$wunderground_forecast_mintemp =~ m/(\d{1,3})(\D)(\d{1,3})/; # ($1)($2)($3)
knx_write($wunderground_forecast_mintemp_ga,$1,9);

my $wunderground_clouds = $weather->{current_observation}->{weather};
if ($wunderground_clouds =~ m/(\D*)(\s)(\D*)/) {  # \s findet Zwischenraum (whitspaces). ($1)($2)($3)
  knx_write($wunderground_clouds_ga,$1." ".$3,16);
} else {
  knx_write($wunderground_clouds_ga,$wunderground_clouds,16);
}

my $wunderground_forecast_clouds = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{conditions};
if ($wunderground_forecast_clouds =~ m/(\D*)(\s)(\D*)/) { # ($1)($2)($3)
  knx_write($wunderground_forecast_clouds_ga,$1." ".$3,16);
} else {
  knx_write($wunderground_forecast_clouds_ga,$wunderground_forecast_clouds,16);
}
my $wunderground_wind = $weather->{current_observation}->{wind_string};
if ($wunderground_wind =~ m/(\D*)(\s)(\D*)/) { # ($1)($2)($3)
knx_write($wunderground_wind_ga,$1." ".$3,"16");
} else {
  knx_write($wunderground_wind_ga,$wunderground_wind,16);
}

my $html = 
"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
<title>Wetter</title>
<meta name='language' content='de'>
<meta http-equiv='content-type' content='text/html; charset=utf8'>
<link rel='stylesheet' type='text/css' href='".$wunderground_css."'>
<style type='text/css'>
<!--
td {
  vertical-align: top;
  padding: 10px;
  background-color: black;
  background: -moz-linear-gradient(top, #b2bcc8, #adc7db);
  border: 1px #fff solid;
  font-family: Verdana,Helvetica,Arial,Sans-serif;
  font-size: 10px;
  color: #fff;
}
=-->
</style>
</head>
<body>
<table>".

"<tr><td colspan='5'><h1>".$weather->{current_observation}->{display_location}->{full}.":</h1></td></tr>\n".
"<tr>\n".
"<td>\n".
"<strong>".$weather->{current_observation}->{observation_time_rfc822}."</strong><br/>\n".
"<img src=\"".$weather->{current_observation}->{icon}."\" alt=\"".
$weather->{current_observation}->{icon}."\" /><br/>\n".
$weather->{current_observation}->{icon}."<br/>\n".
"Temperatur: ".$weather->{current_observation}->{temp_c}."° C<br/>\n".
"Luftfeuchte: ".$weather->{current_observation}->{relative_humidity}." %<br/>\n".
"Wind: ".$weather->{current_observation}->{wind_dir}." mit ".$weather->{current_observation}->{wind_kph}."km/h"."<br/>\n".
"</td>\n";

for(my $j=0;$j<4;$j++) {
$html = $html."<td>\n".
"<strong>".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{date}->{weekday}."</strong><br/>\n".
"<img src=\"".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{icon_url}."\" alt=\"".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{conditions}."\" /><br/>\n".
$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{conditions}."<br/>\n".
"min. ".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{low}->{celsius}."° C<br/>max. ".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{high}->{celsius}."° C<br/>\n".
"</td>\n";
}
$html = $html."</tr>
</table>
</body>";


my $html_datei = $htdocs.$weather_html;

open(HTML, ">:utf8", $html_datei);    # HTML Datei zum Schreiben öffnen
  print HTML $html;
close(HTML);
gibt es zumindest schon mal eine Ausgabe auf:

http://wiregatexxx/wunderground_weather.html

Ergebnis siehe Anlage.

Da kann ich nach dem Kurzurlaub dann weitermachen.

Jens
Angehängte Grafiken
Dateityp: jpg snapshot.jpg (15,8 KB, 118x aufgerufen)
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #29  
Alt 02.11.2012, 20:06
Benutzerbild von jensgulow
Benutzer
 
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
jensgulow ist zur Zeit noch ein unbeschriebenes Blatt
Pfeil

Habe mal noch etwas an der Optik gearbeitet.
Jetzt passt sich das ganze ganz gut im iframe der CV an das übrige Design an.
Da mir die Symbole von wunderground nicht gefallen haben habe ich eigene Symbole in einem eigenen Ordner /var/www/symbole abgelegt und auf die entsprechenden Namen gemacht. Funktioniert auch ganz gut. ein Problem besteht noch mit der Änderung Tag/Nacht. Da im geparsten XML der <icon> Tag nicht zwischen Tag und Nacht unterscheidet habe ich die ganze Zeit die Tagessymbole.
Versucht habe ich mal mit substr aus dem <icon_url> tag etwas rauszulesen, komme aber da nicht weiter.

Hier mal der Code:
Code:
# ANPASSUNG an WUNDERGROUND based on
# Plugin zum Abfragen von Google Weather
# Version 0.5 2011-02-15
# Copyright: Bodo (http://knx-user-forum.de/members/bodo.html)
# License: GPL (v2)
# Aufbau möglichst so, dass man unterhalb der Definitionen nichts ändern muss!

##################
### DEFINITION ###
##################

my $city                         = "Leipzig";       # Meine Stadt, hier statt ü,ä,ö einfach u,a,o nehmen oder ue,ae,oe
my $country                    = "Germany";    # Mein Land
my $lang                         = "DL";            # Meine Sprache
my $api                           = "xxxxxxxxx";   #API, muss man sich bei Wunderground besorgen

my $wunderground_temp_ga                               = "10/0/4";    # Gruppenadresse Temperatur (DPT9.001)
my $wunderground_hum_ga                                = "10/0/5";    # Gruppenadresse Luftfeuchte (DPT9.007)
my $wunderground_forecast_maxtemp_ga             = "10/0/6";    # Gruppenadresse Temperatur Maximum (DPT9.001)
my $wunderground_forecast_mintemp_ga              = "10/0/7";    # Gruppenadresse Temperatur Minimum (DPT9.001)
my $wunderground_clouds_ga                              = "10/0/8";    # Gruppenadresse Wolken (DPT16)
my $wunderground_forecast_clouds_ga                  = "10/0/9";    # Gruppenadresse Vorhersage Wolken (DPT16)
my $wunderground_wind_ga                                 = "10/0/10";    # Gruppenadresse Wind (DPT16)

my $wunderground_ip                    = "http://api.wunderground.com/api/";
my $symbole                                = "/symbole/";            # Pfad zu den Wettersymbolen
my $htdocs                                  = "/var/www/";                # Das Webverzeichnis
my $wunderground_xml                  = "wunderground_weather.xml";        # Der XML Datensatz
my $weather_html                         = "wunderground_weather.html";        # Ausgabe als HTML
my $wunderground_css                   = "wunderground_weather.css";        # Das Stylesheet

$plugin_info{$plugname.'_cycle'} = 3600;    # 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 ###
#######################

# Hauptverarbeitung
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
use Encode qw(encode decode);
# use open ":utf8";

my $url = $wunderground_ip.$api."/conditions/forecast/lang:".$lang."/q/".$country."\/".$city."\.xml";
#my $xml = encode("utf8",get($url));
my $xml = get($url);
die "Couldn't get it!" unless defined $xml;

my $xml_w = ">".$htdocs.$wunderground_xml;
open(XML, $xml_w);    # XML Datei zum Schreiben öffnen
print XML $xml;
close(XML);

my $weather = XMLin($xml);

my $wunderground_temp = $weather->{current_observation}->{temp_c};
$wunderground_temp =~ m/(\d{1,3})(\D)(\d{1,3})/; # ($1)($2)($3)
knx_write($wunderground_temp_ga,$1,9);

my $wunderground_hum = $weather->{current_observation}->{relative_humidity};
$wunderground_hum =~ m/(\d{1,3})(\D)/; # ($1)($2)
knx_write($wunderground_hum_ga,$1,9);

my $wunderground_forecast_maxtemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{high}->{celcius};
$wunderground_forecast_maxtemp =~ m/(\d{1,3})(\D)(\d{1,3})/; # ($1)($2)($3)
knx_write($wunderground_forecast_maxtemp_ga,$1,9);

my $wunderground_forecast_mintemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{low}->{celcius};
$wunderground_forecast_mintemp =~ m/(\d{1,3})(\D)(\d{1,3})/; # ($1)($2)($3)
knx_write($wunderground_forecast_mintemp_ga,$1,9);

my $wunderground_clouds = $weather->{current_observation}->{weather};
if ($wunderground_clouds =~ m/(\D*)(\s)(\D*)/) {  # \s findet Zwischenraum (whitspaces). ($1)($2)($3)
  knx_write($wunderground_clouds_ga,$1." ".$3,16);
} else {
  knx_write($wunderground_clouds_ga,$wunderground_clouds,16);
}

my $wunderground_forecast_clouds = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{conditions};
if ($wunderground_forecast_clouds =~ m/(\D*)(\s)(\D*)/) { # ($1)($2)($3)
  knx_write($wunderground_forecast_clouds_ga,$1." ".$3,16);
} else {
  knx_write($wunderground_forecast_clouds_ga,$wunderground_forecast_clouds,16);
}
my $wunderground_wind = $weather->{current_observation}->{wind_string};
if ($wunderground_wind =~ m/(\D*)(\s)(\D*)/) { # ($1)($2)($3)
knx_write($wunderground_wind_ga,$1." ".$3,"16");
} else {
  knx_write($wunderground_wind_ga,$wunderground_wind,16);
}

my $html = 
"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
<title>Wetter</title>
<meta name='language' content='de'>
<meta http-equiv='content-type' content='text/html; charset=utf8'>
<link rel='stylesheet' type='text/css' href='".$wunderground_css."'>
<style type='text/css'>
<!--

td 
{ 
  color: white;
  font-family: Dosis, Helvetica, Arial, sans-serif;
  font-size: 16px;
  border-radius: 10px;
    -moz-border-radius: 10px;
      -webkit-border-radius: 10px;
      -o-border-radius: 10px;
  overflow: hidden;
  padding: 10px;
  margin:0;
  color:       #fff   /*{a-body-color}*/;
    text-shadow:   0   /*{a-body-shadow-x}*/   1px   /*{a-body-shadow-y}*/   1px   /*{a-body-shadow-radius}*/   #111   /*{a-body-shadow-color}*/;
    background:               #222   /*{a-body-background-color}*/;
    background-image: -webkit-gradient(linear, left top, left bottom, from(   #444   /*{a-body-background-start}*/), to(   #222   /*{a-body-background-end}*/)); /* Saf4+, Chrome */
    background-image: -webkit-linear-gradient(   #444   /*{a-body-background-start}*/,   #222   /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
    background-image:    -moz-linear-gradient(   #444   /*{a-body-background-start}*/,   #222   /*{a-body-background-end}*/); /* FF3.6 */
    background-image:     -ms-linear-gradient(   #444   /*{a-body-background-start}*/,   #222   /*{a-body-background-end}*/); /* IE10 */
    background-image:      -o-linear-gradient(   #444   /*{a-body-background-start}*/,   #222   /*{a-body-background-end}*/); /* Opera 11.10+ */
    background-image:         linear-gradient(   #444   /*{a-body-background-start}*/,   #222   /*{a-body-background-end}*/);
}

h1
{
  font-size: 1.4em;
}

=-->
</style>
</head>
<body>
<table>".

"<tr height=380px>\n".
"<td width=350 align=left>\n".
"<strong>".$weather->{current_observation}->{observation_time}."<br/>\n"."<br/>\n<h1>".
$weather->{current_observation}->{weather}."</h1><br/>\n".
"Temperatur: ".$weather->{current_observation}->{temp_c}."° C<br/>\n".
"Gefühlt: ".$weather->{current_observation}->{feelslike_c}."° C<br/>\n"."<br/>\n".
"Luftfeuchte: ".$weather->{current_observation}->{relative_humidity}."<br/>\n".
"Niederschlag heute: ".$weather->{current_observation}->{precip_today_metric}." mm"."<br/>\n".
"Niederschlag 1h: ".$weather->{current_observation}->{precip_1hr_metric}." mm"."<br/>\n"."<br/>\n".
"Windrichtung: ".$weather->{current_observation}->{wind_dir}."<br/>\n".
"Windgeschwindigkeit: ".$weather->{current_observation}->{wind_kph}." km/h"."</strong><br/>\n".
"</td>\n".
"<td>\n".
"<img width=300px height=300px src=\"".$symbole.$weather->{current_observation}->{icon}."\.png\" alt=\"".
$weather->{current_observation}->{icon}."\" /><br/>\n".
"</td>\n";

for(my $j=0;$j<4;$j++) {
$html = $html."<td align=center>\n".
"<strong>".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{date}->{weekday}."</strong><br/>\n"."<br/>\n".
$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{conditions}."<br/>\n".
"Maximal ".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{high}->{celsius}."° C<br/>
Minimal ".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{low}->{celsius}."° C<br/>\n".
"Niederschlagsrisiko ".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{pop}."%<br/>\n".
"<img width=150px height=150px src=\"".$symbole.$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{icon}."\.png\" alt=\"".
$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{conditions}."\" /><br/>\n".
"</td>\n";
}
$html = $html."</tr>
</table>
</body>";


my $html_datei = $htdocs.$weather_html;

open(HTML, ">:utf8", $html_datei);    # HTML Datei zum Schreiben öffnen
  print HTML $html;
close(HTML);
Die Größen der Darstellung der html-Seite sind an mein 15 Zoll Display angepasst.

Wenn jemand eine gute Möglichkeit weiss, wie man das Tag/Nacht Problem lösen könnte wäre ich dankbar.

Jens

EDIT:
Habe das Tag/Nacht-Problem jetzt gelöst:

Code:
my $length = -4;
my $icontoday = substr ($weather->{current_observation}->{icon_url}, 31, $length);
und dann im html-Teil:

Code:
"<tr height=380px>\n".
"<td width=350 align=left>\n".
"<strong>".$weather->{current_observation}->{observation_time}."<br/>\n"."<br/>\n<h1>".
$weather->{current_observation}->{weather}."</h1><br/>\n".
"Temperatur: ".$weather->{current_observation}->{temp_c}."° C<br/>\n".
"Gefühlt: ".$weather->{current_observation}->{feelslike_c}."° C<br/>\n"."<br/>\n".
"Luftfeuchte: ".$weather->{current_observation}->{relative_humidity}."<br/>\n".
"Niederschlag heute: ".$weather->{current_observation}->{precip_today_metric}." mm"."<br/>\n".
"Niederschlag 1h: ".$weather->{current_observation}->{precip_1hr_metric}." mm"."<br/>\n"."<br/>\n".
"Windrichtung: ".$weather->{current_observation}->{wind_dir}."<br/>\n".
"Windgeschwindigkeit: ".$weather->{current_observation}->{wind_kph}." km/h"."</strong><br/>\n".
"</td>\n".
"<td>\n".
"<img width=300px height=300px src=\"".$symbole.$icontoday."\.png\" alt=\"".
$weather->{current_observation}->{icon}."\" /><br/>\n".
"</td>\n";
Angehängte Grafiken
Dateityp: jpg snapshot.jpg (65,0 KB, 81x aufgerufen)

Geändert von jensgulow (02.11.2012 um 20:56 Uhr)
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #30  
Alt 02.11.2012, 20:57
Benutzerbild von jensgulow
Benutzer
 
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
jensgulow ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hier das aktuelle Aussehen:
Angehängte Grafiken
Dateityp: jpg snapshot.jpg (63,3 KB, 83x aufgerufen)
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort

Stichworte
google, plugin, weather, wiregate

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[WireGate-Plugin] Plugin CUL für KS300, FS20, FHT/HMS&Co lbau WireGate 152 20.01.2013 23:21
[Featurewunsch] Plugin: Aufrufzeiten (crontab...) Chris M. WireGate 13 16.02.2012 07:21
Plugin Fragen tjakobi WireGate 1 18.12.2010 02:25
- √ - Plugin Update - Gira Info Terminal Touch troth KNX EIB Forum 7 26.06.2010 14:42


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:55 Uhr.



SEO by vBSEO