Internetwettermodul

Hallo Zusammen,
in der Hoffnung das ich nun keine Mega-Diskussion auslöse, möchte ich mich bei euch zu euren Erfahrungen bzgl Internet-Wetterdaten, um genauer zu sein um die einzelnen Module im Modul-Store erkundigen.

Ich würde gerne ein Wetter-Modul einbinden, jedoch gibt es im Store (glücklicher weiße) eine klein Auswahl und vielleicht hat jemand schon mit beiden Erfahrungen sammeln können:

[ul]
[li]WundergroundWeather
[/li][li]IPSymconOpenWeatherMap
[/li][li]Symcon - Wunderground PWS Sync & Vorhersage Modul
[/li][li]… hab ich eines Übersehen?
[/li][/ul]

Gibt es hier eventuell Empfehlungen, Vor- und Nachteile der einzelnen Module, die besonders hervorzuheben sind?

Vielen Dank im Voraus.

Hallo Zusammen,
hat jemand Erfahrungen mit den einzelnen Modulen?
LG Dennis und Danke!

Wunderground hat bei mir nicht funktioniert. Keine Ahnung warum. Openweather produziert bei einer sinnvollen Anzeige der zukünftigen Wetterdaten massenweise Variablen. Je nach Lizenz und bisheriger Variablenanzahl bist da schnell am Ende. das Symcon - Wunderground PWS Sync & Vorhersage Modul hab ich noch nicht probiert.
Im Grunde würde mir eigentlich reichen, eine externe Seite einzubinden. Z.b. Wunderground. Aber das funktioniert auch (noch) nicht.

Module sind solange brauchbar wie sie den Veränderungen der Wetterdienst API’s angepasst werden.

Deshalb ein simpler Vorschlag:

String Variable mit ~HTML - Profil erstellen.
Einen Widget HTML Code ( iframe ) als Variablen Wert rein kopieren, schon funtzt es :slight_smile:

Einen Widget HTML Code kann man bei verschiedenen Wetterdiensten generieren wie z.B. hier
Im Feld Ortssuche den gewünschten Ort angeben und den passenden Vorschlag auswählen.

Den generierten HTML Code ( iframe ) findest Du, wenn Du etwas nach unten scrollst. Den Code kopieren und als Wert in die HTML String Variable einfügen.

Hallo Klaus,
danke für Deine super Anleitung. Hab’s genau so realisiert und in ips-view die Wetterdaten in einem HTML Objekt anzeigen lassen. Klappt super. Aber nicht vergessen, den html Code (iframe) mindestens einmal täglich ausführen lassen, sonst erhält man keine aktuellen Werte.
Hinweis, es gibt weitere schöne Widget’s, dessen Html-Code man einfach nur verwenden muss. :slight_smile:
Danke.
Gruß
Ekkehard

Man könnte das mit einem Skript machen, welches einmal am Tag die Variable leert und im gleichen Atemzug den HTML Code wieder reinschreibt. Ist jetzt nur so aus dem Bauch heraus, aber könnte funktionieren. Oder man baut in den HTML Code ein Refresh ein.

Auch wenn ich hier natürlich eine gewisse Meinung als Modulentwickler habe - probiere mal PWS Sync mit Wunderground. Ich nutze das selbst hoch und runter und bisher habe ich noch keine Info das es nicht tut.

Ich grab das nochmal aus.

In Ermangelung einer lokalen Wetterstation suche ich eine Lösung um für eine PLZ folgende Daten aus dem Internet zu ziehen. Also jeweils halbwegs aktuell.

  • Temperatur
  • Feuchte
  • Regen ja/nein
    - Globalstrahlung
    - Helligkeit

Ich kann die meisten Daten ja aus dem Wunderground holen, aber was mir zB fehlt ist die Globalstrahlung und die
Helligkeit am Standort (für Beschattung bzw. gegen Blendung)).

Die Option via Wunderground eine Station aus der Nähe auszulesen fällt mE aus weil ich ja keine Wetterstations-Daten spende und damit auch keine andere Station abgreifen kann.

Nun dachte ich, dass ich die super Daten aus morgenwirdes.de nutzen könnte, da gibts ja zB eine Solarkarte mit Globalstrahlung.
Helligkeit weiss ich nicht wo man das herbekommen könnte.

Was ich also eigentlich suche:
Wie bekomme ich die Werte von morgenwirdes.de in Variablen?
Beim Thread Regenradar bin ich nicht fündig geworden.

Hat das einer schon gemacht bzw. gefunden wo man das findet?
Will nicht gleich @jonas wieder bemühen, der hat die Tage schon wieder geholfen :heart_eyes:

Danke und Gruss Seppm

Hi,
die haben ja eine API :smiley:
für Globale Einstrahlung ( Rad1h)

$json_string = Sys_GetURLContentEx("https://morgenwirdes.de/api/v2/mosjson.php?plz=84051&type=Rad1h", Array("Timeout"=> 20000));

$json = json_decode($json_string, true);
print_r($json = json_decode($json_string));

die Werte kommen als Array.

Gruß

Vielen Dank @sewo ! :grinning:

Gleich probiert und geht.
Allerdings bin ich dann auch schon wieder am Ende mit meinem Latein (kann ich auch nicht) weil ich leider keinen Schimmer habe wie ich nun aus dem Array den jeweils aktuellen Wert für die Globalstrahlung bekommen könnte?

Das ist die Ausgabe (und für TTT (Temp 2m über Grund) hab ich Dank Dir schon mal verstanden wie ich es anpasse.)

stdClass Object
(
    [namede] => Globale Einstrahlung

    [nameen] => Global Irradiance
    [unit] => kJ/m2
    [intval] => 0
    [data] => Array
        (
            [0] => stdClass Object
                (
                    [data] => 630.00
                    [time] => 1635156000
                )

            [1] => stdClass Object
                (
                    [data] => 770.00
                    [time] => 1635159600
                )
usw, geht bis [246]

Ich vermute mal das sind die letzten 247 Werte des Wertes aus der API.

Wie bekomme ich das nun auf den jetzt aktuellen Wert den ich zB alle 5 Minuten abfragen würde. Bräuchte für meinen Fall auch keine Historie und belaste vermtl. den Server unnötig wenn ich nach so viel frag.

Und wie bekomme ich den Wert dann in eine Variable ausgegeben?

Bin leider nur Autodidakt, komm mit PHP bissel zurecht, aber dann hört es leider auch schon auf und Arrays sind mir ein noch unbekanntes Array :see_no_evil:
Mit einem ähnlichen Beispiel käme ich ggf. zurecht und kann es mir hinbasteln.

Vielen Dank
Sepp

Hi,

zb.

SetValue(12345,floatval($json['data'][0]['data']));

oder so :smiley:

<?php

$json_string = Sys_GetURLContentEx("https://morgenwirdes.de/api/v2/mosjson.php?lat=48.22&long=12.22&type=Rad1h", Array("Timeout"=> 20000));

$json = json_decode($json_string, true);


$parentID = IPS_GetParent($_IPS['SELF']);

            $KategorieID = @IPS_GetCategoryIDByName("morgenwirdes", $parentID);

                if ($KategorieID === false){
    

                    $CatID = IPS_CreateCategory();       // Kategorie anlegen
                    IPS_SetName($CatID, "morgenwirdes"); // Kategorie benennen
                    IPS_SetParent($CatID, $parentID); // Kategorie einsortieren unter dem Objekt mit der ID "12345"
                    }

                if ($KategorieID !== false){


                    $Global_Irradiance		= CreateVariableByName($KategorieID, "Globale Einstrahlung", 2);
                    SetValue($Global_Irradiance, floatval($json['data'][0]['data']));

                    }    
        
        
//Erstellen Variablen
function CreateVariableByName($id, $name, $type) {
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid===false) {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "This Variable was created by Script");
    }
    return $vid;
}

Gruß

Vielen Dank @sewo

Beim 1.ten Ausführen hat er die Kategorie angelegt und
beim 2.ten Ausführen dann die Variable.

Und einen Wert reingeschrieben: 700

Den versteh ich allerdings nicht da aktuell keine 700 W/m² (falls das die Einheit wäre) sein können, aber ich finde den Wert auch nicht im Array.

Leider sitz ich immer noch auf der Leitung :see_no_evil:

Hast Du da noch eine Hilfestellung bitte?

Danke! Seppm

Ich benutze diesen Script für andere abfrage.
Es wird eine Kategorie angelegt und dann die Variablen. Bin kein PHP Crack :smiley: habe die PHP Brocken zusammengeklaut :shushing_face:

Es wird beim Ausführen nur das was im Array steht geschrieben.

Gruß

EDIT:
Im Link steht PLZ oder Koordinaten.

lat=48.22&long=12.22 oder plz=84051

Ist beides aus dem Beispiel von der Homepage.
Mache ich meine Daten rein, kommen keine Werte :face_with_raised_eyebrow:
Einheit ist [unit] => kJ/m2