Ankündigung

Einklappen
Keine Ankündigung bisher.

WundergroundWeather - Plugin

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

    #31
    Hey JuMi2006,

    Danke für die Hilfe, nun funzt zumindest dieser Teil. Leider schmeißt das Log aber den nächsten Fehler:

    2012-11-30 23:34:43.953,Googleweather,,0s,Global symbol "$wunderground_cl" requires explicit package name at (eval 52074) line 80.
    syntax error at (eval 52074) line 80, near "$wunderground_cl ouds"
    Global symbol "$wunder" requires explicit package name at (eval 52074) line 87.
    syntax error at (eval 52074) line 87, near "$wunder ground_forecast_clouds"

    Hab ich irgendwas vergessen oder wieso hakt das noch? Kann im Ordner .../var/www keine Dateien in Bezug zum Plugin finden...

    Kommentar


      #32
      @Hannatz: Mit Verlaub ist entweder die Quelle des Plugins (ausm Forum kopiert? -> lieber ausm SVN nehmen) oder dein Editor einfach Murks.

      Bitte einen richtigen Editor nehmen (Notepad++,WinSCP,Komodo) ansonsten ist das ein reines Zeichengewürfel. Das sind "ganz normale" Syntax-Fehler.

      Gruß
      Umgezogen? Ja! ... Fertig? Nein!
      Baustelle 2.0 !

      Kommentar


        #33
        Moin JuMi2006,

        ich hab den Sourcecode aus dem Forum kopiert und im Textwrangler (Mac) bearbeitet, werde das heute Abend noch einmal aus dem SVN bzw. Deinem Anhang aus dem letzten Beitrag nehmen.

        Wenn's dann noch nicht klappt melde ich mich wieder

        Danke & schönes WE!

        Gruss Hannatz

        Kommentar


          #34
          Für den Mac empfehle ich immer Komodo Edit. Der ist kostenlos und unterstützt auch Syntax Highlighting.
          Umgezogen? Ja! ... Fertig? Nein!
          Baustelle 2.0 !

          Kommentar


            #35
            Hi JuMi2006,

            danke für den Hinweis mit den Editor, es war wirklich ein Copy-Paste-Problem...

            Wenn Interesse besteht lad ich das mal hier hoch
            Ich hab das Plugin nun laufen, leider fehlen noch die Images. Bist Du mittlerweile aus dem ICE raus?!

            Vielen Dank noch einmal!

            Gruß Hannatz

            Kommentar


              #36
              Hallo,

              ich nutze das Plugin auch. Danke dafür.

              Leider wird die Vorhersagetemperatur (max/min) nicht korrekt auf den Bus gesendet. Stattdessen wird stets "86" gesendet.

              Auch eine Debug-Zeile im Plugin (von mir eingefügt) gibt nur 86 aus. D.h. es ist kein DPT-Problem.


              Habt ihr das Problem auch?

              Die Luftfeuchtigkeit ist übrigens gerade 86%..
              Im Plugin kommt die Luftfeuchtigkeit direkt vor diesen beiden Werten. $1 wird also scheinbar nicht aktualisiert/die Abrufe scheinen fehl zu schlagen und die LF wird in die Temp geschrieben.
              Code:
              my $wunderground_forecast_maxtemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{high}->{celcius};
              Was heisst hier das [0]?

              Der XML Part sieht so aus:
              Code:
              <simpleforecast>
                                      <forecastdays>
              
                                              <forecastday>
                                                      <date>
                <epoch>1359061200</epoch>
                <pretty_short>10:00 PM CET</pretty_short>
                <pretty>10:00 PM CET on January 24, 2013</pretty>
                <day>24</day>
                <month>1</month>
                <year>2013</year>
                <yday>23</yday>
                <hour>22</hour>
                <min>00</min>
                <sec>0</sec>
                <isdst>0</isdst>
                <monthname>Januar</monthname>
                <weekday_short>Do</weekday_short>
                <weekday>Donnerstag</weekday>
                <ampm>PM</ampm>
                <tz_short>CET</tz_short>
                <tz_long>Europe/Berlin</tz_long>
              </date>
                                                      <period>1</period>
                                                      <high>
                                                              <fahrenheit>30</fahrenheit>
                                                              <celsius>-1</celsius>
                                                      </high>
                                                      <low>
                                                              <fahrenheit>23</fahrenheit>
                                                              <celsius>-5</celsius>
                                                      </low>
              Da sehe ich die [0] nicht.
              High ist aber zu finden.



              Davon abgesehen würde ich mich freuen, wenn mir jemand die Icons per PN schickt.

              Gruß&Danke,
              Hendrik

              Kommentar


                #37
                Hm. Kein Kommentar?
                Klappt es bei euch denn?

                Kommentar


                  #38
                  Hi,

                  gerade getestet selbes Problem hier.

                  Das Problem ist aber die "$1" die gesendet wird. Inder Zeile darüber wird es aber als $wunderground_forecast_maxtemp definiert.

                  Meine ich musste es 3 mal abändern im script.

                  Gruß

                  Kommentar


                    #39
                    Zitat von henfri Beitrag anzeigen
                    Code:
                    my $wunderground_forecast_maxtemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{high}->{celcius};
                    Was heisst hier das [0]?

                    Der XML Part sieht so aus:
                    Code:
                    <forecast>
                      <simpleforecast>
                        <forecastdays>
                          <forecastday>
                            <period>1</period>      <-- das hier kommt mehrfach vor, von [0] bis [n]
                              <high>
                                <celsius>-1</celsius>
                              </high>
                              <low>
                                <celsius>-5</celsius>
                              </low>
                    Da sehe ich die [0] nicht.
                    Hoi Hendrik

                    Die [0] steht für das erste auftauchen einer <bla> die in dieser Position (Verschachtelungstiefe) mehrfach auftritt.
                    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


                      #40
                      Hoi

                      Hab's herausgefunden.

                      celsius ist nicht gleich celcius!
                      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


                        #41
                        Hallo,

                        Danke für eure Tipps.

                        Ich bin nicht sicher/verwirrt.
                        $1 kenne ich aus der Bash als Kommandozeilenparameter.
                        Hier scheint $1, $2, $3 aber aus der Regexp belegt zu werden.
                        Gleichzeitig scheint aber auch eine Variable belegt zu werden:
                        Code:
                        my $wunderground_forecast_maxtemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{high}->{celsius};
                        $wunderground_forecast_maxtemp =~ m/(\d{1,3})(\D)(\d{1,3})/; # ($1)($2)($3)
                        knx_write($wunderground_forecast_maxtemp_ga,$1,9);
                        Wenn ich mir hier $1 ausgeben lasse ist es leer.
                        $wunderground_forecast_maxtemp enthält die Temperatur.
                        Soweit so gut.

                        Ich würde die letzte Zeile also entsprechend ändern:
                        knx_write($wunderground_forecast_maxtemp_ga,$wunde rground_forecast_maxtemp,9);

                        Aber was mache ich hier:
                        Code:
                        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);
                        }
                        Sorry, hab versucht, das zu fixen und zu posten, aber jemand mit entsprechendem Durchblick sollte da mal rüber gucken.

                        @Bodo: Läuft es bei dir jetzt? War das s/c die einzige Änderung?

                        Gruß,
                        Hendrik

                        Kommentar


                          #42
                          Zitat von henfri Beitrag anzeigen
                          @Bodo: Läuft es bei dir jetzt? War das s/c die einzige Änderung?
                          Hoi Hendrik

                          Ja jetzt läuft's bei mir. Und nein, ich hab' noch einiges "versäubert".
                          Code:
                          # Plugin zum Abfragen und Darstellen von
                          # WundergroundWeather von jensgulow
                          # based on
                          # Plugin zum Abfragen von Google Weather
                          # Version 0.6 2012-01-28
                          # Copyright: Bodo (https://knx-user-forum.de/members/bodo.html)
                          # License: GPL (v2)
                          
                          ##################
                          ### DEFINITION ###
                          ##################
                          
                          my $city    = "Zurich";           # Meine Stadt, hier statt ü,ä,ö einfach u,a,o nehmen oder ue,ae,oe
                          my $country = "Switzerland";      # Mein Land
                          my $lang    = "DL";               # Meine Sprache
                          my $api     = "1234567890"; # API, muss man sich bei Wunderground besorgen
                          
                          my $ga_wg_temp       = "7/0/0";    # Gruppenadresse Temperatur (DPT9.001)
                          my $ga_wg_hum        = "7/0/1";    # Gruppenadresse Luftfeuchte (DPT9.007)
                          my $ga_wg_fc_maxtemp = "7/0/2";    # Gruppenadresse Temperatur Maximum (DPT9.001)
                          my $ga_wg_fc_mintemp = "7/0/3";    # Gruppenadresse Temperatur Minimum (DPT9.001)
                          my $ga_wg_clouds     = "7/0/4";    # Gruppenadresse Wolken (DPT16)
                          my $ga_wg_fc_clouds  = "7/0/5";    # Gruppenadresse Vorhersage Wolken (DPT16)
                          my $ga_wg_wind       = "7/0/6";    # Gruppenadresse Wind (DPT16)
                          my $ga_wg_windr      = "7/0/7";    # Gruppenadresse Windr (DPT16)
                          
                          my $wg_ip        = "http://api.wunderground.com/api/";
                          my $symbole      = "/wunder/symbole/";                 # Pfad zu den Wettersymbolen
                          my $symbolebg    = "/wunder/symbolebg/";               # Pfad zu den Wetterhintergründen
                          my $htdocs       = "/var/www/";                        # Das Webverzeichnis
                          my $wg_xml       = "/tmp/wunderground_weather.xml";    # Der XML Datensatz
                          my $weather_html = "/tmp/wunderground_weather.html";   # Ausgabe als HTML
                          my $wg_css       = "/wunder/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
                          
                          #######################
                          ### ENDE DEFINITION ###
                          #######################
                          
                          # Hauptverarbeitung
                          use LWP::Simple;
                          use XML::Simple;
                          use Data::Dumper;
                          use Encode qw(encode decode);
                          
                          my $url = $wg_ip.$api."/conditions/forecast/astronomy/lang:".$lang."/q/".$country."\/".$city."\.xml";
                          my $xml = get($url);
                          die "Couldn't get it!" unless defined $xml;
                          my $xml_w = ">".$wg_xml;
                          open(XML, $xml_w);    # XML Datei zum Schreiben öffnen
                          print XML $xml;
                          close(XML);
                          
                          my $weather = XMLin($xml);
                          
                          my $wg_temp       = $weather->{current_observation}->{temp_c};
                          my $wg_feel       = $weather->{current_observation}->{feelslike_c};
                          my $wg_hum        = $weather->{current_observation}->{relative_humidity};
                          my $wg_precip     = $weather->{current_observation}->{precip_today_metric};
                          my $wg_clouds     = $weather->{current_observation}->{weather};
                          my $wg_wind       = $weather->{current_observation}->{wind_string};
                          my $wg_windr      = $weather->{current_observation}->{wind_dir};
                          my $wg_windkph    = $weather->{current_observation}->{wind_kph};
                          
                          my $wg_fc_maxtemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{high}->{celsius};
                          my $wg_fc_mintemp = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{low}->{celsius};
                          my $wg_fc_clouds  = $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[0]->{conditions};
                          
                          
                          my $length = -4;
                          my $icontoday = substr ($weather->{current_observation}->{icon_url}, 31, $length);
                          my $location  = substr ($weather->{current_observation}->{observation_time}, 5, $length);
                          
                          knx_write($ga_wg_temp,$wg_temp,9);
                          knx_write($ga_wg_hum,$wg_hum,9);
                          knx_write($ga_wg_fc_maxtemp,$wg_fc_maxtemp,9);
                          knx_write($ga_wg_fc_mintemp,$wg_fc_mintemp,9);
                          if ($wg_clouds =~ m/(\D*)(\s)(\D*)/) {  # \s findet Zwischenraum (whitspaces). ($1)($2)($3)
                            knx_write($ga_wg_clouds,decode("utf8",$1." ".$3),16);
                          } else {
                            knx_write($ga_wg_clouds,decode("utf8",$wg_clouds),16);
                          }
                          if ($wg_fc_clouds =~ m/(\D*)(\s)(\D*)/) { # ($1)($2)($3)
                            knx_write($ga_wg_fc_clouds,decode("utf8",$1." ".$3),16);
                          } else {
                            knx_write($ga_wg_fc_clouds,decode("utf8",$wg_fc_clouds),16);
                          }
                          if ($wg_wind =~ m/(\D*)(\s)(\D*)/) { # ($1)($2)($3)
                          knx_write($ga_wg_wind,decode("utf8",$1." ".$3),16);
                          } else {
                            knx_write($ga_wg_wind,decode("utf8",$wg_wind),16);
                          }
                          knx_write($ga_wg_windr,decode("utf8",$wg_windr),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='".$wg_css."'>
                          <style type='text/css'>
                          <!--
                          table {
                            border: 1px;
                            border-radius: 10px;
                            -moz-border-radius: 10px;
                            -webkit-border-radius: 10px;
                            -o-border-radius: 10px;
                            overflow: hidden;
                          }
                          
                          td { 
                            color: white;
                            font-family: Dosis, Helvetica, Arial, sans-serif;
                            font-size: 16px;
                            text-shadow:black 1px 1px;
                            border-radius: 10px;
                            -moz-border-radius: 10px;
                            -webkit-border-radius: 10px;
                            -o-border-radius: 10px;
                            overflow: hidden;
                            padding: 2px;
                            margin:0;
                          }
                          
                          h1 {
                            font-size: 1em;
                            text-shadow:black 1px 1px;
                          }
                          
                          h2 {
                            font-size: 2em;
                            color: #FFF799;
                            text-shadow:black 1px 1px;
                          }
                          
                          h3 {
                            font-size: 0.6em;
                            text-shadow:black 1px 1px;
                          }
                          =-->
                          </style>
                          </head>
                          <body>
                          <table background=\"".$symbolebg.$icontoday."\.png\">".
                          
                          "<tr>\n".
                          "<td width=100px align=left>\n".
                          "<h2 align=center>".    $wg_temp   ."°</h2><h3><br/>\n".
                          "Gefühlt: ".            $wg_feel   ."° C<br/>\n".
                          "Bewölkung: ".          $wg_clouds ."<br/>\n".
                          "Luftfeuchte: ".        $wg_hum    ."<br/>\n".
                          "Niederschlag heute: ". $wg_precip ." mm"."<br/>\n".
                          "Windrichtung: ".       $wg_windr  ."<br/>\n".
                          "Windgeschwindigkeit: ".$wg_windkph." km/h"."<br/>\n"."<br/>\n".
                          $location."</h3><br/>\n".
                          "</td>\n".
                          "<td>\n".
                          "<img width=150px src=\"".$symbole.$icontoday."\.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"."<h3>".
                          $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{conditions}."</h3>\n<h1><font>".
                          $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{high}->{celsius}."° C</font><br/>\n".
                          $weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{low}->{celsius}."° C</h1><h3>\n".
                          "Niederschlagsrisiko ".$weather->{forecast}->{simpleforecast}->{forecastdays}->{forecastday}->[$j]->{pop}."%\n</h3>".
                          "<img width=100px 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>";
                          
                          open(HTML, ">:utf8", $weather_html);    # HTML Datei zum Schreiben öffnen
                            print HTML $html;
                          close(HTML);
                          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


                            #43
                            grrrrrrr

                            Hoi

                            Hmmmmm, jetzt wird auf dem Bus das <wind_dir>Süd-Südwest</wind_dir> nicht aktualisiert. Es kommt einfach kein neuer Wert auf den Bus und das veraltete <wind_dir>Nordwest</wind_dir> bleibt einfach. Hängt wohl mit dem decode("utf8",$wg_windr)
                            zusammen. Ich muss nur irgendwie für mein linknx die "bösen" Zeichen herausbekommen.
                            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


                              #44
                              Zitat von Bodo Beitrag anzeigen
                              Ich muss nur irgendwie für mein linknx die "bösen" Zeichen herausbekommen.
                              Das ist ein echtes Problem. Darum liegt das bei mir momentan auch auf Eis. linknx kachelt ganz sorgenfrei ab wenn es Umlaute auf eine GA gesendet bekommt .
                              Umgezogen? Ja! ... Fertig? Nein!
                              Baustelle 2.0 !

                              Kommentar


                                #45
                                Raspberry Pi

                                Hallo,

                                kann das jemand für uns "CV auf Raspberry Pi User" umstricken ?
                                (Gebe auch ein Bierchen aus ...)

                                Kommentar

                                Lädt...
                                X