Wunderground-Anbindung ohne API-Key

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!

Response
{
  "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:

InformationBefehlserkennungAusgabe
Windrichtung"winddir":\vGrad als Kompassrichtung → Für Umrechnung in Himmelsrichtung siehe unten
Windgeschwindigkeit"windSpeed":\vAktuelle Windgeschwindigkeit in km/h
Windböen"windGust":\vWindböen in km/h 
Luftfeuchtigkeit"humidity":\vLuftfeuchtigkeit in %
Außentemperatur"temp":\vTemperatur in Celsius (°C) 
Gefühlte Temperatur"windChill":\vTemperatur in Celsius (°C) 
Regenrate"precipRate":\vAktuelle Regenrate in mm
Regenmenge"precipTotal":\vTagesregenmenge in mm
Sonneneinstrahlung"solarRadiation":\vAktuelle 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