[Modul] OpenWeatherMap

hey,

das ist super und werde ich nutzen

gruß
demel

Danke Fonzo, aber ich fürchte ich hab mich falsch ausgedrückt :banghead:

Die Darstellung des Graphen, die ich mir vorstelle, ist folgende:
x-Achse: die einzelnen Zeitpunkte der Vorhersage
y-Werte: z.B. zugehörige Temperatur, Niederschlagsvorhersage …

Oder wie macht ihr die Darstellung der 3h Intervalle? Als reine Tabelle ist wahrscheinlich zu unübersichtlich.

VG, Marco

Gemacht getan, nun steht ‚m‘ hinter der Höhe (z.B.)

demel

HTMLBox mit Wettervorhersage wäre nett, dann könnte man alten Skripte einmotten, siehe Skript hier.

1+

und würde viel Arbeit ersparen…

ok, schau ich mir mal an.

demel

Ich glaub das wird einfach schwer, da die free API nicht mehr hergibt. Was höchstens noch hilfreich wäre wenn das passende Icon gleich mit runtergeladen wird und in einem media Element abgelegt, statt nur den String des Symbols anzuzeigen.

Gibt es eigentlich keinen Wetterdienst mehr der mehrtägige Prognosen noch frei liefert bei einer bestimmten Anzahl von Calls. Was ist denn mit DWD?

DWD gibt, wie der Name schon sagt, leider keine oder nur wenige Wetterdaten für die Schweiz her… darum lieber die Variante mit den Icons mit herunterladen.

ich versteh dich nicht ganz, in der freien API sind Prognosen für 5 Tage im 3h-Raster, alos insgesamt 40 Vorhersage-Punkte.
Es gibt nur in der kostenlosen API keine Vorhersage pro Tag, Wenn ich das alte Script anschaue, wird dort der kostenpflichtige (immerhin 40$/Monat) Abruf des 16-Tage-Forecast verwendet. Das bekomme ich also nicht (allgemeingültig) umgesetzt.
Was ich machen kann ist
a) Vorhersage im 3h-Raste ausgegen, das wären aber ziemlich viele Icons …
passt nicht in eine „Zeile“, wäre also pro Tag eine „Zeile“
b) Vorhersage von Temperatur min/max, Feuchte, Windgeschwindigkeit und Regen/Schnee als Kurve(n) dann aber ohne Icon.
c) man könnte Temperatur min/max, Feuchte min/max sowie Windgeschwindigkeit min/max aus den 3h-Intervallen ermitteln. Mit dem Regen wüsste ich nicht, wie man das machen sollte. Wenn man pro 3h eine Menge von 3mm hat, sind das ja nicht zwangsläufig 6mm in 6h. Die Angabe des Regens ist ja sicherlich auch bei OpenWeatherMap keine 100% Wahrscheinlichkeit.

gruss
demel

Was fehlt dir denn bei fünf Tagen Prognose von OpenWeatherMap?

Vom DWD gibt es Bilder für drei bzw. vier Tage, z.B.
als Einzelbilder

oder

oder Gesamtbild

Und als reinen Text gibt es ja für viele Bereich drei Tage Vorhersagen unter
Index of /weather/text_forecasts/html/

und eine Funktion dazu

Danke, das schaue ich mir auch noch mal näher an, nutze zur Zeit nur Teile vom DWD.

Ich selber nutze auch noch yr.no
Beispiel

Gibt auch ein PHP Skript für PHP forecast yr.

Mir fehlt momentan einfach die Idee und auch die Zeit draufzukommen wie man aus den vielen Daten dann was sinnvolles macht, dass man auch schnell überblickt. Aber vielleicht hast Du ja eine zündende Idee, ich lass mich überraschen. Aber auch so ist das Modul schon sehr hilfreich zum jetzigen Zeitpunkt, danke dafür.

Hallo,

ich bekomme mit IPS 5.1 die Fehlermeldung, dass das Object mit dem Namen ‚Location‘ in der Moduldatei (Zeilen 207 und 356) nicht gefunden werden kann. Dort müßte ‚Location Control‘ stehen.

Grüße, Gerhard

Hallo,

ich bin mir nicht sicher, aber wenn ich den Code aus dem Modul


<?
$id = IPS_GetObjectIDByName('Location', 0);
$loc = json_decode(IPS_GetProperty($id, 'Location'), true);
$lat = $loc['latitude'];
$lng = $loc['longitude'];

echo 'loc=' . print_r($loc, true) . PHP_EOL;

bei mir ausführen funktioniert es und ergibt das


loc=Array
(
    [latitude] => 51,460994761485
    [longitude] => 7,1583924908258
)

In Zeile 207 steht allerdings (in der akt. Version) auch nicht von ‚Location‘.

kannst Du das nochmal bei dir überprüfen?

demel

GetObjectIDByName ist keine gute Idee :cool:.


$location = getlocation();
		$Latitude = $location["Latitude"];
		var_dump($Latitude);
		$Longitude = $location["Longitude"];
		var_dump($Longitude);



		

function getlocation()
	{
		//Location auslesen
		$LocationID = IPS_GetInstanceListByModuleID("{45E97A63-F870-408A-B259-2933F7EABF74}")[0];
		$ipsversion = GetIPSVersion();
		if ($ipsversion == 5) {
			$Location = json_decode(IPS_GetProperty($LocationID, "Location"));
			$Latitude = $Location->latitude;
			$Longitude = $Location->longitude;
		} else {
			$Latitude = IPS_GetProperty($LocationID, "Latitude");
			$Longitude = IPS_GetProperty($LocationID, "Longitude");
		}
		$location = array("Latitude" => $Latitude, "Longitude" => $Longitude);
		return $location;
	}



function GetIPSVersion()
	{
		$ipsversion = floatval(IPS_GetKernelVersion());
		if ($ipsversion < 4.1) // 4.0
		{
			$ipsversion = 0;
		} elseif ($ipsversion >= 4.1 && $ipsversion < 4.2) // 4.1
		{
			$ipsversion = 1;
		} elseif ($ipsversion >= 4.2 && $ipsversion < 4.3) // 4.2
		{
			$ipsversion = 2;
		} elseif ($ipsversion >= 4.3 && $ipsversion < 4.4) // 4.3
		{
			$ipsversion = 3;
		} elseif ($ipsversion >= 4.4 && $ipsversion < 5) // 4.4
		{
			$ipsversion = 4;
		} else   // 5
		{
			$ipsversion = 5;
		}

		return $ipsversion;
	}	

Uhaa…
Wirf das weg:
IPS_GetObjectIDByName
Wer so etwas in einem Modul benutzt muss sich nicht über Fehler wundern.
Das Objekt kann auch ‚Daheim‘ heißen.

Das hier ist der richtige Weg:
IPS_GetInstanceListByModuleID — IP-Symcon :: Automatisierungssoftware

Michael

okok, böser copy&paste-Fehler. :eek:
Ist korrigiert. :smiley:

demel

  • Korrektur des Zugriffs auf Location
  • optische Aufbereitung der Wetterinformationen

Das ist die „so gut es geht“ Übernahme des Scripts auf das Fonzo verwiesen hat

.

Das ist aber sicherlich nicht so schön darstellbar, weil es ja 8 Datensätze pro Tag sind, also schnell ziemlich breit wird.

Die Darstellung als Kombination von Kurve, Tabelle und Icon, so wie hier von Fonzo verwiesen ( yr.no) wäre schon schick, übersteigt aber meine HTML-Fähigkeiten bei weitem.

Ich habe daher auch die Möglichkeit eingebaut, das man ein eigenes Script zur Generierung der HTML-Box aufrufen kann. Vielleicht gibt es jemand, der bei der Erstellung von HTML-Seite mehr zu Hause ist.

Gruß
demel

Da muss man das Rad nicht neu erfinden, das haben die auch nicht, das ist einfach Highcharts Meteogram.
Hier der Quellcode zum Meteogram.

Man braucht nur die Daten, dann zaubert einem Highcharts so eine Grafik. Zu Highcharts gibt es hier auch Threads im Forum Highcharts - Multigraph, wer das also so darstellen will kann Highcharts nutzten. Ich denke Highcharts hat der ein oder andere so oder so in Nutzung, ob jetzt aber ein Meteogram weis ich nicht.