[Modul] OpenWeatherMap

Du unterschätzt Deine Fähigkeiten :D.
Einfach[i]Zeile 549[/i] gegen den passenden Eintrag austauschen schon hast Du das was Du willst.

In meinem Fall steht da also


place = 'Germany/Hesse/Hattersheim_am_Main';

Hallo demel42,

ich bin gerade dabei, mir eine Alternative für Wunderground zu suchen … da fand ich Dein Modul … Klasse !!! :loveips:

Ich hätte aktuell noch einen Wunsch: :rolleyes:
Zur Anzeige im WebFront bzw. IPS View verwende eigene Wettersymbole. Um diese besser zuordnen zu können wäre es toll, wenn das Modul auch die jeweils passende Weather condition id in eine Variable speichert.

Könntest Du das ggf. mit integrieren.

Gruß

Swifty

klar, kann ich machen. Es gibt nur ein Problem(chen) - das Element „weather“ ist ein array, d.h. es gibt mehr als eine Condition. Bei „description“ und „icon“ hänge ich die Elemente Komma-separiert hintereinander. Es gib ja keine Array-Variablen in IPS.
D.h. bei der Darstellung müsstest Du ggfs. die Liste splitten (per exlode()). Passt das zu Deinem Vorhaben? Alternative Vorschläge?

gruss
demel

Einfach ein String Variable nehmen und den Array dort mit json_encode oder serialize ablegen wäre mein Vorschlag.

… nur die „weather.id“ wäre perfekt …

z.B. 800 = klarer Himmel, 602=starker Schneefall , 511=gefrierender Regen

gruß

Swifty

naja, mit ‚es gibt keine Array-Variablen‘ meine ich, das iPS selbst array’s verwaltet. Egal wie man die Variablen in einem String kodiert- es setzt immer voraus, das man etwas mit dem Inhalt der Variablen macht, bevor man diese verwenden kann. Die Frage an Swifty bezog sich darauf, ob das dür einen Anwendungsfall ok ist.

demel

das ist schon klar, aber es gibt zu jedem Zeitpunkt (potentiell) mehrere id’s. Habe ich schon selbst gesehen, ist also nicht zu ungewöhnlich. Ob es von der gleichen Kategorie mehrere geben kann, kann ich nicht beurteilen, aber auf jeden Fall zB ‚rain‘ und ‚clouds‘ gleichzeitig

demel

Ich ging davon aus, dass die ID pro Zeitpunkt nur einmalig ausgegeben wird:

Call 5 day / 3 hour forecast data

{„city“:{„id“:1851632,„name“:„Shuzenji“,
„coord“:{„lon“:138.933334,„lat“:34.966671},
„country“:„JP“,
„cod“:„200“,
„message“:0.0045,
„cnt“:38,
„list“:[{
„dt“:1406106000,
„main“:{
„temp“:298.77,
„temp_min“:298.77,
„temp_max“:298.774,
„pressure“:1005.93,
„sea_level“:1018.18,
„grnd_level“:1005.93,
„humidity“:87,
„temp_kf“:0.26},
„weather“:[{„id“:804,„main“:„Clouds“,„description“:„overcast clouds“,„icon“:„04d“}],
„clouds“:{„all“:88},
„wind“:{„speed“:5.71,„deg“:229.501},
„sys“:{„pod“:„d“},
„dt_txt“:„2014-07-23 09:00:00“}
]}

oder bei Current weather data

{„coord“:{„lon“:139,„lat“:35},
„sys“:{„country“:„JP“,„sunrise“:1369769524,„sunset“:1369821049},
„weather“:[{„id“:804,„main“:„clouds“,„description“:„overcast clouds“,„icon“:„04n“}],
„main“:{„temp“:289.5,„humidity“:89,„pressure“:1013,„temp_min“:287.04,„temp_max“:292.04},
„wind“:{„speed“:7.31,„deg“:187.002},
„rain“:{„3h“:0},
„clouds“:{„all“:92},
„dt“:1369824698,
„id“:1851632,
„name“:„Shuzenji“,
„cod“:200}

Gruß

Swifty

die eckigen Klammer in der json-struktur kennzeichnen ein array, wenn auch hier mit einem Element. Es mag durchaus sein, das mehr als ein ‚weather‘-element selten ist, ist aber definitiv nicht unmöglich.

demel

Im Zweifelsfall nimm halt den ersten Eintrag aus dem Array, beim Icon legst Du Dich ja auf auf eines fest und schreibst dies in eine Variable.

… dass wäre OK …

  • optionale Übernahme der Ids der Wetterbedingungen

Anmerkung: die erste ID zu übernehmen führt u.U. in die Irre, weil es keine (für mich erkennbare) Ordnung hierin gibt. D.h. man bekommt nicht unbedingt die „wichtigste“.

Daher mache ich das wie bei den Icons, es ist eine Liste.

Im README.md steht ein Codefragment für den Zugriff auf icon, analog ist der Zugriff auf ids.

$icons = GetValue(4711);
$icon = explode(',', $icons)[0];
$url = 'http://openweathermap.org/img/w/' . $icon . '.png';

Gruß
demel

Ok, ich hatte mich bisher noch nicht mit Highcharts beschäftigt, versuche es mal zu installieren.

demel

Hallo,

ich habe mir die WeatherConditions nochmal angeschaut.

Das sind ja

Group 2xx: Thunderstorm (Gewitter)
Group 3xx: Drizzle (Nieselregen)
Group 5xx: Rain (Regen)
Group 6xx: Snow (Schnee)
Group 7xx: Atmosphere (das ist so etwas wie Nebel, Dunst …)
Group 800: Clear (klarer Himmel)
Group 80x: Clouds (Bewölkung)

Nun könnte man vielleicht davon ausgehen, das die Gruppe 2xx relevanter ist als 3xx etc pp. Manche von den Gruppen schliessen sich m.E. gegenseitig aus

  • Gewitter und Regen sowie Gewitter und Nieselregen
  • Nieselregen, Regen und Schnee - Schneeregen gehört zur Gruppe Schnee
  • Clear und Cloud

Innerhalb einer Gruppe sehe ich keine Doppeldeutigkeiten ausser bei 7/Atmosphere, da kann ich mir vorstellen, das es mehrere Nennungen aus dieser Gruppe geben könnte - ist aber vielleicht weniger spannend.

In meinen Logs hatte ich bisher nur gefunden: leichter Nieselregen, Nebel, also Gruppe 3/Drizzel und 7/Atmosphere.

Ich könnte, um den Umgang zu vereinfachen, eventuell das Icon und die ID nach dieser Priorirät (als der Gruppennummer) die wichtigste ID/Icon heraussuchen.
In dem Text (Variable Conditions) stehen alle angegebenen Bedingungen.

Was wäre von diesem Vorschlag zu halten?

demel

Das ist ja eine Darstellung um Vorhersage von yr.no darzustellen. Um die Daten von OpenWeatherMap einfliessen zu lassen, ist doch schon etwas mehr zu machen, oder?

demel

Ja, das stimmt, damit habe ich mich ehrlich gesagt noch nicht auseinander gesetzt bisher, es geht ja so schön einfach nur eine Zeile auszutauschen. Aber vielleicht kann man das auch irgendwie für Daten wie von Openweathermap benutzten.

Hallo demel,

… das kling gut … :wink:

Hallo demel,

Die erste ID sollte m.E. priorisiert werden:

Bei Openweathermap hierzu steht:

"NOTE: It is possible to meet more than one weather condition for a requested location.

An example

The first weather condition in API respond is primary."

Gruß

Swifty

das ist eindeutig, also dann die erste ID

demel

[ul]
[li]ConditionIcons und ConditionIds (Plural) ersetzt durch ConditionIcon und ConditionId (Singular).
[/li]Es wird nur noch der wichtigste Eintrag gespeichert - laut OpenWeatherMap ist das jeweils der erste Eintrag.
[li]zusätzliche temporäre Ablage der Originaldaten in internen Buffern und Funktion zum Abruf der Daten (OpenWeatherMap_GetRawData())
[/li][/ul]