Wunderground Modul

Hallo Zusammen,

nach dem ich schon einige Module nutze, wollte ich euch mein Wunderground Modul nicht vorenthalten.
Mit dem Modul ist es möglich die Wunderground API auszulesen.

https://github.com/Matzel687/Wunderground.git
.
Außerdem könnt ihr unter Wetter Icon Pfad bestimmen welches Icon Set Ihr von Wunderground nutzen möchtet,
oder den Pfad von euren eigenen Icons angeben.


Wunderground2.JPG

Des Weiteren stehen euch vier Funktionen zu Verfügung:

[b][ul]WD_Weathernow(ModulID, „all“) => Aktuelle Wetterdaten[/ul]

  • WD_Weathernextdays(ModulID) => Wetter vorhersage nächste 3 Tage
  • WD_Weathernexthours(ModulID) => Wettervorhersage nächste 24 Stunden
  • WD_Weatheralerts(ModulID) => Wetter Alarm Meldungen

Die Funktionen geben die Wetterdaten jeweils in einem Array aus, so ist es möglich die Daten z.B. weiter in einer HMLBox zu verarbeiten.

Es besteht auch die möglichkeit die Daten in einer Externen Seite zu verarbeiten. Das ganze sieht dann z.B. so aus

Eine Beispiel PHP Datei ist unten im Anhang

css.zip (2.34 KB)

Hallo aus Magdeburg,

sieht gut aus ! Danke

Hallo Matzel687,

mein RASPI scheint zu zicken, Danke für das Modul.

  1. nach der Installation steht ein Standdard http:// Icons set unter „Wetter Icon Pfad“
    damit erhalte ich Fehler?? > eine Menge Fehler > nicht weiter verfolgt…
    2.wie in dem Bild angezeigt habe ich diesem Pfad angegeben, „user\Wetter_Icons“
    damit erhalte ich schon einmal einige Einträge siehe Bild. aber es scheint als ob die Pfadangabe nicht richtig ist!

Glück Auf D.Voss

Hi,

Danke!

Installation problemlos.
Warum werden bei mir in den html boxen nur der Link angezeigt und eben nicht der Inhalt des Ziels?

Sebastian

Hallo,

bei der Anweisung kommt eine Fehlermeldung.



    $info = WD_Weathernow($id_modul);    
    print_r($info);



Warning:  Missing argument 2 for WD_Weathernow(), called in D:\IP-Symcon\scripts\29479.ips.php on line 11 and defined in D:\IP-Symcon\scripts\__generated.inc.php on line 1389
Notice:  Undefined variable: value in D:\IP-Symcon\scripts\__generated.inc.php on line 1393

Alles andere funkt.
Danke für das Modul.

Hallo Matzel,
eine ganz bescheidene Frage:
Wie wird dies installiert?
Ich habe es über die Modulverwaltung versucht, aber es klappt nicht.
Dann bin ich dem Link gefolgt, aber die PHP-Datei als neues Script läuft nicht. Wo kommen die JSONS hin?

Ich bin neu mit Symcon unterwegs. Meine Wetterstation OC3 habe ich in WUG laufen. Einige kleinere Scripts hierzu habe ich angepasst zum üben…

Mit freundlichen Grüßen
Matthias

Hallo zusammen,

@ D.Voss
Die Pfadeingabe „user\Wetter_Icons\“ ist ein Beispiel weil hier bei mir meine eigenen Icons liegen.
Wenn du das Modul installierst steht der Pfad zum Standard Icon-Set von Wunderground drin.
Wenn du ein anderes Set haben möchtest musst du den Pfad ändern.
Siehe hier -> https://www.wunderground.com/weather/api/d/docs?d=resources/icon-sets
Für Icon Set 1 müsstest du bei Pfad dann folgendes eintragen http://icons.wxug.com/i/c/a/ Typ ist dann gif.
Der rest sieht doch auf den Sccrenshot gut aus.

@ wibo
Bei der Funktion habe ich oben was vergessen.
Die Funktion sieht folgendermaßen für das gesamte Array aus

WD_Weathernow($id_modul,"all");

und für die Aktuelle Temperatur z.b so

WD_Weathernow($id_modul, "Temp_now"); 

@MHerold
Das Modul installierst du über die Modul Instanz:
Kern Instanzen -> Modules -> Hinzufügen
Hier gibst du dann die Git Adresse ein
https://github.com/Matzel687/Wunderground.git
Anschließen kannst du dann über Objekt hinzufügen -> Instanzen die Wunderground Instanz hinzufügen.

Gruß Marcel

@ Buzz2912

In den String Variablen sind die Arrays gespeichert.
Da man meines Wissens nach keine Daten im Modul selbst zwischenspeichern kann.
Mit folgendem Skript kannst du dann die Daten auswerten.
Dazu musst du dir noch zwei String Variablen als HTMLBox anlegen.

Das kann dann z.B. so aussehen:


<?
$WetterNextDays = WD_Weathernextdays(/*ModulID*/);
$Weathernow = WD_Weathernow(/*ModulID*/,"all" );
$WetterStunden = WD_Weathernexthours(/*ModulID*/);
$WetterWarnung = WD_Weatheralerts(/*ModulID*/);

SetValue(/*STING_VAR_ID[HTMLBox]*/,String_Wetter_Heute_Stunden($WetterStunden));
SetValue(/*STING_VAR_ID[HTMLBox]*/,String_Wetter_Now_And_Next_Days($Weathernow, $WetterNextDays,$WetterWarnung));

function String_Wetter_Heute_Stunden($WetterStunden)
            {
            $tag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
                  $html = '<table >
                            <tr>';
                for ($i=0; $i < 10; $i=$i+2) {
                       $html.= '<td align="center" valign="top"  style="width:130px;padding-left:20px;">
                                '.$tag[date("w",$WetterStunden[$i]['Date'])].' '.date("H:i",$WetterStunden[$i]['Date']).' Uhr <br>
                                <img src="'.$WetterStunden[$i]['Icon'].'" style="float:left;">
                                <div style="float:right">
                                    '.$WetterStunden[$i]['Temp'].' °C<br>
                                    '.$WetterStunden[$i]['Humidity'].' %
                                 </div>

                                 <div style="clear:both; font-size: 10px;">
                                    Ø Wind: '.$WetterStunden[$i]['Wind'].' km/h<br>
                                    Niederschlag: '.$WetterStunden[$i]['Rain'].' Liter/m²
                                  </div>
                               </td>';
                       }
                $html .= "</tr>
                           </table>";
                return $html;
                }
                
function String_Wetter_Now_And_Next_Days($Weathernow, $WetterNextDays,$WetterWarnung)
            {
          
               $html = '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
                            <table >';
                            foreach($WetterWarnung as $Warnung=> $ID){
                                $html.= '<tr>
                                        <td style="color:'.$ID['Color'].'" colspan="5"> <i class="fa fa-info-circle"></i>
                                         '.$ID['Text'].'
                                         </td>
                                        </tr>';
                              }
                        $html.= '<tr>
                                <td align="center" valign="top"  style="width:140px;padding-left:20px;">
                                    Aktuell<br>
                                    <img src="'.$Weathernow['Icon'].'" style="float:left";width="50px">
                                    <div style="float:right">
                                         '.$Weathernow['Temp_now'].' °C<br>
                                        '.$Weathernow['Hum_now'].'%<br>
                                     </div>
                                    <div style="clear:both; font-size: 10px;">
                                        Ø Wind: '.$Weathernow['Wind_now'].' km/h<br>
                                        '.$Weathernow['Temp_feel'].' °C gefühlt<br>
                                        '.$Weathernow['Pres_now'].' hPa<br>
                                        Regen 1h: '.$Weathernow['Rain_now'].' Liter/m²<br>
                                        Sichtweite '.$Weathernow['Vis_now'].' km
                                     </div>
                                 </td>';
                foreach($WetterNextDays as $day=> $data){
                    if( isToday($data['Date']))
                        $Wochentag = "Heute";
                    else {
                        $tag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
                        $Wochentag =$tag[date("w",intval($data['Date']))];
							}
                     $html.= '<td align="center" valign="top"  style="width:130px;padding-left:20px;">
                                '.$Wochentag.'<br>
                                <img src="'.$data['Icon'].'" style="float:left;">
                                <div style="float:right">
                                    '.$data['TempHigh'].' °C<br>
                                    '.$data['TempLow'].' °C
                                 </div>
                                 <div style="clear:both; font-size: 10px;">
                                    Ø Wind: '.$data['Wind'].' km/h<br>
                                    Niederschlag: '.$data['Rain'].' Liter/m²
                                  </div>
                               </td>';
                      }
                $html .= "</tr>
                           </table>";
                return $html;
            }
            
     function isToday($time)
            {
                $begin = mktime(0, 0, 0);
                $end = mktime(23, 59, 59);
                // check if given time is between begin and end
                if($time >= $begin && $time <= $end)
                    return true;
                else
                    return false;
            }
?>



Hallo Matzel687,
Danke für die Infos zum Installieren (Module). Das hat soweit geklappt. Ich hatte wohl beim ersten Mal einen Fehler gemacht. Die Werte werden angezeigt, die Grafiken als Link angezeigt. Da habe ich Deine obige Beschreibung eingearbeitet…

Nun zur HTML-Box:
Ich habe die Variablen angelegt, das Script übernommen, wie vorgeschlagen. Auf welche Variable verweist das Ereignis in Zeile 4?

Nach Eintragen der Modul-ID und der beiden Variablen-Iss läuft das Script fehlerfrei durch.
Nun mein Problem: Wie kann die HTML-Box anzeigen lassen? Gibt es dazu ein Beispiel?

Vielen Dank schonmal für Dein Modul. Die Werte passen… Es wäre schön, wenn dies auch grafisch passen würde.

Mit freundlichen Grüßen
Matthias

Marcel,
Danke hat geklappt…

Das Ereignis verweist auf die Temperatur Variable im Modul.
Kann aber auch jede andere Variable aus dem Modul sein.
So brauchst du keinen zweiten Timer einbauen.
Jedes Mal wenn im Modul die Variable Aktualisiert wird, wird auch das Skript ausgeführt und somit die HTML Boxen aktualisiert.

Wunderground5.JPG

Um die HTML Boxen anzuzeigen musst du diese Verlinken.
Dazu einfach in der Kategorie wo dein Web Front drauf zugreift.
Neues Objekt-> Link Hinzufügen und dann die jeweilige Box auswählen

Hallo,

vielen Dank für das Modul !!!

Kann es sein, dass die Ereignisse nicht richtig anhand der Modulvorgaben gesetzt werden ???

Bei mir sieht das so aus:

Gruß Proxima

@ Proxima

Danke für den Hinweis. Habe es im Skript geändert.

Bitte einmal das Modul Updaten.

Wenn du die Instanz nicht neu erstellen möchtest musst du den Timer Wert ändern z.B. von 10 Min auf 11Min und dann speichern. Dann sollte er die Timer übernehmen.

Hallo ,

Update ist gemacht aber die Icons kommen nicht , was muss ich da machen ?

Hallo Matzel687,

  • wie sind die eigenen (nicht Wunderground) Icons zu benennen ???

ich habe mir mal aus einem anderen Thread ein Bild „ausgeliehen“ ;-).

  • Wäre es möglich, die Infos, welche im Bild unter „Testinteger“ und „Gesamtübersicht“ angezeigt werden, zu integrieren ???

Gruß Proxima

@ Fraunhofer

was meinst du den mit den Icons?

Wenn du die Wettervorhersage in einer HTMLBox ausgeben möchtest, musst du das Srikpt in Post 8 nutzen.
Da im Array nur die Daten zu verfügung gestellt werden. Um die Variablen gering zu halten.
Das Skript ist auch nur ein Beispiel, mit ein bisschen HTML kann sich so jeder seine eigene Wetterseite basteln.

@Proxima

unter „Forecast Description Phrases“ findest du die Bezeichnungen der Icons
https://www.wunderground.com/weather/api/d/docs?d=resources/phrase-glossary&_ga=1.48884256.704559908.1450640723

Gruß Marcel

Top Sache das! Vielen Dank für ein weiteres sehr wertvolles Modul!! :slight_smile:

Hast du ne Idee warum die Warnung gleich drei mal angezeigt wird? Am Script scheint es nicht zu liegen, liefert hier Wunderground drei Meldungen!?

Ich oute mich auch mal als Test-User deines Weather Moduls…

hat auf meinem alten Raspi IPS 4 auf Anhieb funktioniert.

TOP. Gefällt mir super.

Hat jemand zu den Icon Sets von Weatherunderground evtl. ne Alternative?

Man muss diese ja lediglich runterladen und in seinen persönlichen Ordner ablegen und diesen Ordner dann im Modul angeben…
Die Icon Bezeichnungen sind oben ja verlinkt…

Hi,

bei mir das gleiche. Drei Mal die gleiche Meldung.

Gruß Proxima

Hi,

wie wärs mit:

DeviantArt

Gruß Proxima