Baue Deinen eigenen Wetterdienst - Dark Sky API

Neue Version im ursprünglichen Post.

Funzt… Danke!

Ich habe mal versucht, das Skript nachzuvollziehen, um bestimmte Anpassungen bzw. Ergänzungen vorzunehmen. Leider scheitere ich aber an meinen begrenzten php-Fähigkeiten.

Ich habe in der API-Beschreibung gesehen, dass stündliche Werte für die nächsten 48 Stunden zur Verfügung stehen. Diese werden, soweit ich das erkennen kann, im Grundatz auch mit dem Skript abgerufen. Wie aber komme ich daran? 2 Dinge möchte ich damit realisieren (sicherlich wird es noch mehr, wenn ich in der Lage bin, an die Werte zu gelangen):

Ich möchte die Werte in 2 Stunden darstellen sowie eine Variable erstellen, die die Uhrzeit anzeigt, wann es das nächste mal regnet.

Vielen Dank für eine Erläuterung oder sonstige Hilfe…!

Grüße, Götz

Hat sich erledigt. In diesem Teil

$hourly = $parsed_json->{'hourly'}->{'data'};
   $message = array();

        for($i=0;$i<48;$i++)
         {
             $time = utf8_decode($hourly[$i]->time);
             $summary = utf8_decode($hourly[$i]->summary);
             $temp = utf8_decode($hourly[$i]->temperature);
             $temp2 = utf8_decode($hourly[$i]->apparentTemperature);
             $humidity = utf8_decode($hourly[$i]->humidity);
             @$precipType = utf8_decode($hourly[$i]->precipType);
             $niederschlag = "";
             if ($precipType == "rain") $niederschlag = "Regen";
             if ($precipType == "snow") $niederschlag = "Schnee";
             if ($precipType == "sleet") $niederschlag = "Schneeregen";
             $niedr_prop = utf8_decode($hourly[$i]->precipProbability);
             $wind = utf8_decode($hourly[$i]->windSpeed);
             $boen = utf8_decode($hourly[$i]->windGust);
             $wolken = utf8_decode($hourly[$i]->cloudCover);
             $tag = date('d',intval($time));    
             $stunde = date('H',intval($time));         
             $Wochentag = $WochenTage[date('w',intval($time))];
             $message[$stunde] = array(date('d.m',intval($time)),$WochenTage[date('w',intval($time))],date('H',intval($time)),$summary,$temp,$temp2,$niederschlag,$niedr_prop,$wind,$boen,$wolken,$humidity);
             $box2[]="$Wochentag $stunde Uhr $summary / $niederschlag $niedr_prop % / $temp °C";
         }

sind auch die Werte der nächsten 24 Stunden, wenn man die Zeile

for($i=0;$i<48;$i++)

auf

for($i=0;$i<24;$i++)

ändert, da anderenfalls die ersten durch die letzten 24 Stunden überschrieben werden. So kann man sich nun für die nächsten 24 Stunden aus dem Array bedienen…

Ich hab das Skript für mich auch mal aufbereitet und das sieht schon sehr gut aus. Nur das Einbinden der Icons in meiner html Box funktioniert irgendwie noch nicht. Am liebsten wäre mir ne URL zu den farbigen Images die Dark Sky auch selbst auf der Webseite nutzt (die auch in der Hilfe Seite unter „Was bedeuten die Icons“ aufgelistet sind) und die müssen auch nicht animiert sein aber das scheint es nicht zu geben. Hat da jemand schon was gemacht?

Edit:

Hab es anders gelöst, hatte noch die XAMLStudio Icons und die hab ich mir jetzt passend gezogen und binde die ein. So soeht es fast wieder so aus wie mit Wunderground :slight_smile:

Wobei ich es schon komisch finde, dass für die nächsten Tage nur Wind als Icon angegeben ist. Naja, muss man mal beobachten.

ich würde gerne die Bewölkungs Vorhersage abfragen über den ganzen Tag hinweg

z.B. das Ergebnis sollte sein

10 Uhr 20%
11 Uhr 30%
12 Uhr 40%

und so weiter

ist das hiermit überhaupt machbar ?
Ich bräuchte es für meine PV

Hallo Leute,

ich habe einfach keine Zeit, mein Wetterscript umzubauen. Kann man bei Wunderground bezahlen, damit der key wieder gültig wird?

Grüße Jens

Die Icons habe ich wie folgt in die HTML-Box eingefügt

             $Icon =  utf8_decode($days[$i]->icon);    
             $IconUrl = 'https://darksky.net/images/weather-icons/'.$Icon.'.png';
             $html.= '<td align="center" valign="top"  style="width:110px;padding-left:20px;">
                        '.$Wochentag.'<br>
                        <img width="70" height="70" src="'.$IconUrl.'" style="float:left;">

Zum Glück hat das Wetter heute zum programmieren eingeladen :smiley:
Alles auf DarkSky umgebogen und gleich noch paar Sachen verbessert.

Vielen Dank für die perfekte Vorarbeit hier im Forum. Mal schauen wie lange das jetzt Bestand hat :confused:

Danke & Ciao
Heiko

Noch schöner wäre es wenn du es hier veröffentlichen würdest :slight_smile:

Da gibt es nicht viel zu veröffentlichen. Ich habe das Script aus Post #10 genommen und entsprechend meiner Baum & Variablenstruktur angepasst.

Gruß Heiko

Hallo zusammen,

auch von meiner Seite aus vielen Dank für die mega Vorarbeit!:smiley:

Ich gebe die Außentemperatur eigentlich nur über mein LCN GT10D aus und es klappt super.

Hier der Code, für LCN User:

<?php
$api = "API-Dark-Sky-key"; 
$latitude = "51.24"; 
$longitude = "6.73"; 

  $json_string = file_get_contents("https://api.darksky.net/forecast/$api/$latitude,$longitude?exclude=minutely&lang=de&units=si");  
  $parsed_json = json_decode($json_string); 
  $current = $parsed_json->{'currently'}; 
   
    $text0 = utf8_decode($current->temperature);
    SetValue(56777, $text0);	// Float-Variable Außentemperatur wird gesetzt

$DisplayID = 30601;
$Zeile = 4;
$Text = "Außentemp.=${text0}°C
";


DisplayText($DisplayID, $Zeile , $Text);

function DisplayText($instance, $line, $text)
{
    $text = substr($text, 0, 58);
    for($part = 0; $part < ceil(strlen($text) / 12); $part++)
	{
       if(!LCN_SendCommand($instance, 'GT',
            'DT' .
            $line .
            ($part + 1) .
            substr($text, $part * 12, 12) .
            "
")) return;
    }// end for
}// end function DisplayText

?>

Vielen Dank!

Hallo Zusammen,

auf Grund von der Einstellung der Wunderground api bin ich jetzt auch umgestiegen auf die Dark Sky API.
Vielen Dank an die Vorberatung von someone und Buzz.

Soweit hat alles auf anhieb Funktioniert. Ich habe nur ein Problem wo ich mir grade die Zähne ausbeiße. :confused:
Mein Problem ist bei der Regenwahrscheinlichkeit. In der Variablen wir ein Prozentwert angezeigt. Sobald ich aber die
Variable in IPS-View einbinde wird mir z.B. 0,80% Regenwahrscheinlichkeit angezeigt ob wohl in der Variable 80% steht.
Weiß jemand wo ran das liegt ??

Gruß Stephan

Wenn jemand die Tatsache umgehen will einen eigenen API Key zu nutzten kann man auch einfach
Weatherwidget.io
nutzten. Das basiert auch auf den Daten von Dark Sky und da wird dann alles zentral über einen API Key des Anbieters abgerufen. Das Widget kann man dann in IP-Symcon einbinden.

Nachdem ich 3 Tage vergeblich damit zugebracht habe, bei Wunderground eine neue API zu erhalten, indem ich eine PersonalWeatherStation einrichte, meine Daten hochlade, E-Mail’s an IBM schreibe und um eine API bettele, habe ich DarkSky entdeckt!
Anmelden: 5min.
API-Key: 5min.
Script von Buzz2912 hat sofort, ohne Fehler funktioniert, und lässt sich hervorragend an die persönlichen Bedürfnisse anpassen.

Bei diesem ganzen „Modul-Hype“, wird leider schnell übersehen, dass das beste Modul wertlos ist, wenn der Service-Partner (Wunderground) hochgradig inkompetent ist!

Durch die Scriptlösung mit DarkSky, kann ich genau die Wetterdaten laden, die mir bei meiner Wetterstation fehlen, ohne ein riesen Packet (ca. 200Variablen) laden zu müssen, wobei ich nur ca. 10 Daten pro Tag zu meiner Wetterstation hinzufügen möchte!

Wie im Titel schon gesagt: DANKE für diese Arbeit, weiter so!

Hallo Leute,
ich habe Post von Wunderground.

Die Abfragen wie bisher würden mich 200 $ im Monat kosten. :confused:
Das DarkSky Script funktioniert bei mir nicht.--------------Unable to find the wrapper https//----------------
Was habe ich falsch gemacht?
IPS 3.4

Grüße aus dem Erzgebirge

200 Glocken … nicht schlecht :confused:

Schreib doch mal genau Deinen Fehler bzw. dein Script hier rein. Bei https// fehlt der Doppelpunkt :cool:

Ciao Heiko

Danke für die schnelle Antwort :slight_smile:

Warning: file_get_contents(): Unable to find the wrapper „https“ - did you forget to enable it when you configured PHP? in C:\IP-Symcon\scripts\34253.ips.php on line 20

Warning: file_get_contents(https://api.darksky.net/forecast/a0fe08873e587700f5a296487704cab8/50.569169,12.505790?exclude=minutely&lang=de&units=si): failed to open stream: No such file or directory in C:\IP-Symcon\scripts\34253.ips.php on line 20

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\34253.ips.php on line 22

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\34253.ips.php on line 23

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\34253.ips.php on line 24

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\34253.ips.php on line 25

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\34253.ips.php on line 26

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\34253.ips.php on line 27

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\34253.ips.php on line 28

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\34253.ips.php on line 29
Abort Processing during exceed of maximal ErrorCount: Trying to get property of non-object
Error in Script C:\IP-Symcon\scripts\34253.ips.php on Line 31

Grüße aus dem Erzgebirge

Kannst Du über file_get_contents() irgendeine Seite via HTTPS einlesen. Also auch mal mit einer andernen URL probieren und Bescheid geben!?

Gruß Heiko

Guten Morgen,
da passiert genau das gleiche. Es wird wohl am https liegen. Vorher hatte ich wunderground nur mit http aufgerufen.
Grüße Jens