|
 |
|

05.09.2012, 11:28
|
|
Neuer Benutzer
|
|
Registriert seit: 02.07.2010
Ort: Dortmund
Beiträge: 6
|
|
@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
|

05.09.2012, 22:28
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 07.07.2007
Beiträge: 11.779
|
|
Zitat von Abraxas
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!
|

06.09.2012, 20:44
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 07.07.2007
Beiträge: 11.779
|
|
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!
|

25.10.2012, 22:46
|
 |
Benutzer
|
|
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
|
|
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
|

26.10.2012, 02:58
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 27.09.2008
Beiträge: 4.669
|
|
Zitat von jensgulow
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
|

26.10.2012, 12:14
|
 |
Benutzer
|
|
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
|
|
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?!
|

26.10.2012, 22:19
|
 |
Benutzer
|
|
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
|
|
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
|

02.11.2012, 20:06
|
 |
Benutzer
|
|
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
|
|
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";
Geändert von jensgulow (02.11.2012 um 20:56 Uhr)
|

02.11.2012, 20:57
|
 |
Benutzer
|
|
Registriert seit: 08.02.2012
Ort: Leipzig
Beiträge: 108
|
|
Hier das aktuelle Aussehen:
|
| Themen-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:55 Uhr.
|