Problem
Nach der Übernahme von Weather Underground durch IBM bietet WU keine kostenlosen Developer Keys zur Abfrage von Daten mehr an. Um weiterhin an die Daten der eigenen Wetterstation über Wunderground zu gelangen nutze ich einen Aufruf, welcher auch in der Webansicht der eigenen Wetterstation von Wunderground (https://www.wunderground.com/dashboard/pws/StationID) genutzt wird.
Lösung
Nur für Miniserver V2
Der Abruf de Daten erfolgt per https. Das unterstützt der alte Miniserver V1 nicht! Man kann diese Lösung also nur mit dem neuen Miniserver V2 verwenden.
Die Webview von Wunderground nutzt diverse Webservices um die Daten für die aktuelle Ansicht zu erhalten. Einige davon liefern als Antwort ein JSON, welches wiederum in Loxone verarbeitet werden können:
https://api.weather.com/v2/pws/observations/current?apiKey=6532d6454b8aa370768e63d6ba5a832e&stationId=StationID&format=json&units=m
In diesem Aufruf muss lediglich die StationID eingetragen werden. Der API-Key ist öffentlich und muss nicht geändert werden! Die StationID findet man am einfachsten über die Wundermap heraus.
Was bekommen wir nun zurück? Ein JSON formatierter Datensatz der die Informationen der im Request eingegrenzten Wetterstation enthält!
{ "observations": [ { "stationID": "IDARMSTA223", "obsTimeUtc": "2019-05-27T08:00:25Z", "obsTimeLocal": "2019-05-27 10:00:25", "neighborhood": "Tulpenweg", "softwareType": "WH2602 V4.5.6", "country": "DE", "solarRadiation": 159.31, "lon": 8.64811707, "realtimeFrequency": null, "epoch": 1558944025, "lat": 49.90708923, "uv": 2.0, "winddir": 103, "humidity": 93, "qcStatus": 1, "metric": { "temp": 15, "heatIndex": 15, "dewpt": 14, "windChill": 15, "windSpeed": 0, "windGust": 0, "pressure": 1008.81, "precipRate": 0.0, "precipTotal": 1.02, "elev": 224 } } ] }
In der Loxone Config
Virtueller Eingang:
Bei den virtuellen Eingängen wird ein neuer Virtueller HTTP Eingang angelegt, diesen nennen wir in diesem Beispiel "Wetter".
In den Eigenschaften des Virtuellen Eingangs muss anschließend die URL zur Wetterstation eingetragen werden, von der wir die Daten auslesen wollen
In diesem Beispiel nehmen wir als Station ID die Wetterstation ISACHSEN347
Die URL für den Virtuellen Eingang sollte dann so aussehen:
https://api.weather.com/v2/pws/observations/current?apiKey=6532d6454b8aa370768e63d6ba5a832e&stationId=ISACHSEN347&format=json&units=m
Um die Station ID deiner nächstgelegenen Wetterstation herauszufinden, einfach auf https://www.wunderground.com/wundermap deinen Ort suchen und die nächstegelegene Wetterstation anklicken (die farbigen Punkte auf der Landkarte). In dem kleinen Fenster, das sich öffnet, findest du die Station ID.
Im Eigenschaften Fenster sieht das Ganze dann so aus:
Virtueller Eingang Befehl:
Anschließend werden mit Virtueller HTTP Eingang Befehl die gewünschten Daten ausgelesen.
In diesem Beispiel wird die Temperatur mit dem Befehl "temp":\v abgefragt.
Für jeden Wert, den wir auslesen möchten legen wir einen eigenen Virtueller HTTP Eingang Befehl an, und tragen den entspechenden Befehl ein.
Wenn du https://api.weather.com/v2/pws/observations/current?apiKey=6532d6454b8aa370768e63d6ba5a832e&stationId=ISACHSEN347&format=json&units=m im Browser öffnest siehst du alle Werte die ausgelesen werden können.
Hier einige Beispiele:
Information | Befehlserkennung | Ausgabe |
---|---|---|
Windrichtung | "winddir":\v | Grad als Kompassrichtung → Für Umrechnung in Himmelsrichtung siehe unten |
Windgeschwindigkeit | "windSpeed":\v | Aktuelle Windgeschwindigkeit in km/h |
Windböen | "windGust":\v | Windböen in km/h |
Luftfeuchtigkeit | "humidity":\v | Luftfeuchtigkeit in % |
Außentemperatur | "temp":\v | Temperatur in Celsius (°C) |
Gefühlte Temperatur | "windChill":\v | Temperatur in Celsius (°C) |
Regenrate | "precipRate":\v | Aktuelle Regenrate in mm |
Regenmenge | "precipTotal":\v | Tagesregenmenge in mm |
Sonneneinstrahlung | "solarRadiation":\v | Aktuelle Sonneneinstrahlung in Watt je m² (W/m²) |
Luftdruck | "pressure":\v | Luftdruck in mbar |
Windrichtung als Himmelsrichtung anzeigen:
der Befehl "winddir":\v gibt die Himmelsrichtung in Grad aus. 0°=Norden, 180°=Süden usw.
Die Windrichtung kann mithilfe des Status-Bausteins auch im Format N NO O SO S SW W NW angezeigt werden.
Beispiel für eine fertige Config:
Datenalter und Validierung
Im Json ist die Unix Epoche Zeit (Unix Timestamp) verfügbar, welche es erlaubt die Daten auf Aktualität zu validieren. Eine genaue Anleitung dazu findest Du hier: epochtime (Unix-Zeit) zum Prüfen auf Datenaktualität nutzen