Ankündigung

Einklappen
Keine Ankündigung bisher.

GoogleWeather-Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Ich habe am Wochenende ein wenig recherchiert und gebastelt. Ich poste mal meine Entwicklung. Ist jedoch noch nicht 100% fertig und kann noch optimiert werden. Zur Zeit können nur die aktuellen Wetterdaten abgerufen werden. Mondphasen, Wolken etc. werden noch nicht ins deutsche übersetzt. Sunrise und Sunset werden auch noch nicht korrekt dargestellt...

    Es wird für das Skript das Modul Weather::Underground benötigt. Dieses kann mit "cpan Weather::Underground" installiert werden.

    Wer weiter basteln möchte, darf gerne. Wenn es fertig ist geht es dann in die PlugIn Sektion. ;-)
    ---------------------------------------------------------------------

    my $city = "Dortmund"; # Meine Stadt
    my $country = "Deutschland"; # Mein Land

    my $wg_temp_ga = "7/0/0"; # Gruppenadresse Temperatur (DPT9)
    my $wg_hum_ga = "7/0/1"; # Gruppenadresse Luftfeuchte (DPT9)
    my $wg_wind_richtung_ga = "7/0/2"; # Gruppenadresse Wind Richtung (DPT16)
    my $wg_wind_kmh_ga = "7/0/3"; # Gruppenadresse Wind KM/H (DPT9)
    my $wg_luftdruck_ga = "7/0/4"; # Gruppenadresse Luftdruck (DPT9)
    my $wg_clouds_ga = "7/0/5"; # Gruppenadresse Wolken (DPT16)
    my $wg_kondition_ga = "7/0/6"; # Gruppenadresse Wetterverhältnis (DPT16)
    my $wg_taupunkt_ga = "7/0/7"; # Gruppenadresse Taupunkt (DPT9)
    my $wg_moonphase_ga = "7/0/8"; # Gruppenadresse Mondphase (DPT16)
    my $wg_sunrise_ga = "7/0/9"; # Gruppenadresse Sonnenaufgang ()
    my $wg_sunset_ga = "7/0/10"; # Gruppenadresse Sonnenuntergang ()

    $plugin_info{$plugname.'_cycle'} = 600; # Eigenen Aufruf-Zyklus setzen (Initialisierung/zyklisches prüfen)
    # nicht zu klein, da die Daten sowieso in längeren Perioden refresht werden
    # und das Plugin auf die CF schreibt.

    #######################
    ### ENDE DEFINITION ###
    #######################

    use Weather::Underground;
    use feature qw/switch/;

    my $weather = Weather::Underground->new(
    place => $city . "," . $country,
    debug => 0
    )
    || die "Error, could not create new weather object: $@\n";

    my $arrayref = $weather->get_weather()
    || die "Error, calling get_weather() failed: $@\n";

    knx_write($wg_temp_ga,$arrayref->[0]->{temperature_celsius});
    knx_write($wg_hum_ga,$arrayref->[0]->{humidity});
    knx_write($wg_wind_kmh_ga,$arrayref->[0]->{wind_kilometersperhour});

    my $windrichtung = $arrayref->[0]->{wind_direction};

    if ($arrayref->[0]->{wind_kilometersperhour} eq "0.0")
    { $windrichtung = "Kein Wind"; }
    else
    {
    given ($windrichtung) {
    when ("North") { $windrichtung = "N"; }
    when ("North North East") { $windrichtung = "NNO"; }
    when ("North East") { $windrichtung = "NO"; }
    when ("East North East") { $windrichtung = "ONO"; }
    when ("East") { $windrichtung = "O"; }
    when ("East South East") { $windrichtung = "OSO"; }
    when ("South East") { $windrichtung = "SO"; }
    when ("South South East") { $windrichtung = "SSO"; }
    when ("South") { $windrichtung = "S"; }
    when ("South South West") { $windrichtung = "SSW"; }
    when ("South West") { $windrichtung = "SW"; }
    when ("West South West") { $windrichtung = "WSW"; }
    when ("West") { $windrichtung = "W"; }
    when ("West North West") { $windrichtung = "WNW"; }
    when ("North West") { $windrichtung = "NW"; }
    when ("North North West") { $windrichtung = "NNW"; }
    }
    plugin_log($plugname,"Windrichtung: " . $windrichtung);
    }
    knx_write($wg_wind_richtung_ga,$windrichtung);
    knx_write($wg_luftdruck_ga,$arrayref->[0]->{pressure},1);
    knx_write($wg_taupunkt_ga,$arrayref->[0]->{dewpoint_celsius});
    knx_write($wg_clouds_ga,$arrayref->[0]->{clouds});
    knx_write($wg_kondition_ga,$arrayref->[0]->{conditions});
    knx_write($wg_moonphase_ga,$arrayref->[0]->{moonphase});
    knx_write($wg_sunrise_ga,$arrayref->[0]->{sunrise});
    knx_write($wg_sunset_ga,$arrayref->[0]->{sunset});

    Kommentar


      #17
      Hoi

      Ja die Anfrage:
      Code:
      http://mobile.wunderground.com/cgi-bin/findweather/getForecast?query=Muenchen
      ergibt:


      Edit: waning gibbous moon abnehmender Dreiviertelmond
      Angehängte Dateien
      Grüsse Bodo
      Fragen gehören ins Forum, und nicht in mein Postfach;
      EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

      Kommentar


        #18
        Zitat von Bodo Beitrag anzeigen

        Was fragst Du denn da ab? Könnte es sein, dass Du die Daten auf Google bekommst, die Google jetzt von wunderground.com verwendet?

        Hallo Bodo,
        ich habe folgendes gemacht:
        in der Kommandozeile des Internetbrowsers
        "http://www.google.com/ig/api?weather='meine PLZ'&hl=de" eingegeben. Dann kommt eben die von mir so genannte "Sorry-Meldung"

        Wenn ich allergings im Google- Fenster einfach 'Wetter PLZ' eingebe, kommen die aus der Vergangenheit bekannten Anzeigen.
        Hat meines Erachtens nichts mit wunderground zu tun.

        Gruß
        Martina

        Kommentar


          #19
          Hoi

          Doch Google verwendet die Daten von Weather Underground: iGoogle

          Unten das: Wetterdaten bereitgestellt von Weather Underground, Inc.
          Grüsse Bodo
          Fragen gehören ins Forum, und nicht in mein Postfach;
          EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

          Kommentar


            #20
            Nur kurz weil ich das grad erst sehe: Bitte kein cpan. Das ist einer der schnellsten Wege ein kaputtes und unwartbares System zusammen zu bekommen!

            Weather::Underground wurde zuletzt vor 7 Jahren gepflegt..

            Wunderground hat nach erstem Anschein gute Daten und eine mächtige JSON/XML-API, die ich wenn dann direkt verwenden würde statt obskurer pms von CPAN..
            Mit Übersetzung, 10-Tage, stündlich uvm.

            Weather API : Weather UndergroundMEINKEY/conditions/forecast/langL/q/Germany/Ottobrunn.xml
            Weather API : Weather UndergroundMEINKEY/conditions/forecast/langL/q/Germany/Ottobrunn.json
            -> Weather API: Introduction : Weather API : Weather Underground

            Beispiel anbei, da sind auch so durchaus spannende Sachen wie erwartete Schneemenge als eigenes Feld und so drin

            Makki
            Angehängte Dateien
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #21
              @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

              Kommentar


                #22
                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 & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                -> Bitte KEINE PNs!

                Kommentar


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

                  Kommentar


                    #24
                    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 & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                    -> Bitte KEINE PNs!

                    Kommentar


                      #25
                      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 (https://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
                      Viele Grüße Jens

                      Kommentar


                        #26
                        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,[COLOR=Red]$weather[/COLOR]->{[COLOR=Red]current_observation[/COLOR]}->{[COLOR=Red]temp_c[/COLOR]},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
                        Fragen gehören ins Forum, und nicht in mein Postfach;
                        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                        Kommentar


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

                          Code:
                                    'current_observation' => {'temp_c' => '[COLOR=Red]11.0[/COLOR]',}
                          ... wie bei dem hier disskutiertem Problem:

                          https://knx-user-forum.de/forum/supp...wiregate/22189

                          Dann sollten ja die doppelten Gänsfüßchen was bewirken können?!
                          Viele Grüße Jens

                          Kommentar


                            #28
                            Problem gelöst:

                            Hauptfehler war hier:

                            Code:
                            .
                            .
                            .
                            my $weather = XMLin($xml)[COLOR=Red]->{weather}[/COLOR];
                            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 (https://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 Dateien
                            Viele Grüße Jens

                            Kommentar


                              #29
                              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 (https://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.[COLOR=Red]$icontoday[/COLOR]."\.png\" alt=\"".
                              $weather->{current_observation}->{icon}."\" /><br/>\n".
                              "</td>\n";
                              Angehängte Dateien
                              Viele Grüße Jens

                              Kommentar


                                #30
                                Hier das aktuelle Aussehen:
                                Angehängte Dateien
                                Viele Grüße Jens

                                Kommentar

                                Lädt...
                                X