Dark Sky direkt in Loxone einbinden

Mit diesem Template können Daten direkt von Dark Sky in den Miniserver geholt werden. Dies funktioniert ohne Umweg über einen PC, und auch ohne LoxBerry, anhand des virtuellen HTTP Eingangs.

ACHTUNG! Mit Übernahme von DarkSky durch Apple im Frühjahr 2020 wurde die Neuregistrierung bei DarkSky deaktiviert. Lt. Bloginfo von DarkSky wird die API bis Ende 2021 weiterlaufen. Jedenfalls scheint die weitere Funktionialität leider angezählt.

Unterschied zur LoxBerry Lösung

Für LoxBerry gibt es eine Wetterlösung (Weather4Loxone), die ebenfalls über DarkSky (oder auch Weatherbit) Informationen bereitstellt. Die Unterschiede zu der Lösung auf dieser Seite sind:

  • Weather4Loxone benötigt einen Raspberry (oder ähnliche Hardware) und entsprechende technische Kenntnisse

  • Weather4Loxone bietet auch einen Emulator für das Loxone Wetterservice ("Cloud Weather Emulator") - die Lösung hier liefert der Loxone nur die Werte aber nicht die hübschen Wetterbilder, die das Loxone Wetterservice liefert

wer also "nur" aktuelle Wetterdaten und Vorhersagen für die Loxone Programmierung / Darstellung benötigt, ist mit der Lösung hier vermutlich besser dran.

Token und Ort

Unter https://darksky.net/dev bekommt man wenn man sich registriert (E-Mail, Passwort) einen "secret key" (32 stellig, Zahlen und Kleinbuchstaben). Mit diesem kann man dann direkt im Browser Anfragen stellen:

https://api.darksky.net/forecast/[secret-key]/[latitude],[longitude]

In der URL des Templates musst du die Felder [secret-key] und [latitude], [longitude] durch deine Angaben ersetzen:

  • secret-key = der secret-key, den du bekommen hast

  • latitude, longitude = geografische Breite und Länge; einfach über z.B. GoogleMaps rausfindbar (hast du vermutlich ohnedies in der Loxone schon angegeben)

Danach kann man noch eine Reihe von Request-Parametern setzten ("?" und danch mit "&" getrennt). Hier die empfohlenen (genaue Beschreibung aller Parameter siehe https://darksky.net/dev/docs):

  • units - Einheiten für Temperatur, Windgeschwindigkeit etc. - us, si oder andere

  • lang - Sprache der textuellen Angaben z.B. de

  • exclude - Um die Größe der Antworten zu reduzieren, wenn z.B. keine minütlichen Vorhersagen nötig sind

Beispiel:

https://api.darksky.net/forecast/[secret-key]/[latitude],[longitude]?units=si&lang=de&exclude=minutely,alerts,flags



Abfragelimit

Die Abfrageanzahl in der kostenlosen Version sind auf 1.000 Abfragen pro Tag limitiert. Für mehr Abfragen müssen z.B. Kreditkarteninfos hinterlegt werden (man zahlt dann pro Abfrage). Bei 1.000 Abfragen pro Tag könnte man alle 87 Sekunden eine Abfrage machen. Für die Wetterdaten ist es aber sicher ausreichend, diese alle 20-30 Minuten zu aktualisieren, alles andere ist vermutlich nur vorgetäuschte Genauigkeit (ob eine Wolke gerade meine PV-Anlage beschattet kann man so vermutlich nicht rausfinden) - Template ist auf 600 Sek. = 10 Min. voreingestellt.

Ergebnis

Als Ergebnis erhält man ein JSON Dokument (menschen- und maschinenlesbare Antwort) mit: 

  • aktuellen Wetterdaten

  • die Vorschau für die nächsten Minuten, Stunden und Tage

  • Warnungen und Flags

Die jeweiligen Antwortblöcke sind optional - nicht für jeden Ort gibt es sie (z.B. fehlt oft die Vorschau für die nächsten Minuten)

Die Loxone kann selbst das JSON parsen, dafür muss die Loxone aber angewiesen werden, wo die einzelnen Werte in der Antwort zu finden sind. Genau das macht das Template.

Template

Template herunterladen: VI_Dark Sky.xml

Das Einbinden des Templates funktioniert so: Templates in Loxone Config einbinden

Enthaltene Daten

Alle hier beschriebenen Daten werden je nach Ort/Wetterstation und Datenblock (daily/hourly/...) nur optional geliefert. Siehe auch https://darksky.net/dev/docs#response-format

Eingang

Einheit*)

Beschreibung und Anmerkung

Template Version

Eingang

Einheit*)

Beschreibung und Anmerkung

Template Version

apparent_temp

<v.2> °C

gefühlte Temperatur

V2 - nur curr

apparent_temp_high

<v.2> °C

maximale gefühlte Temperatur

-

apparent_temp_high_time





UNIX Zeit der maximalen gefühlten Temperatur

-

apparent_temp_low

<v.2> °C

minimale gefühlte Temperatur

-

apparent_temp_low_time



UNIX Zeit der minimalen gefühlten Temperatur

-

cloud_cover

<v> %

Bedeckung (zwischen 0% und 100%)

V1 - nur curr

dew_point

<v.2> °C

Taupunkt (Schwüle wird bei Taupunkt > 16 °C empfunden, wenn Lufttemperatur = Taupunkt, dann ist die relative Luftfeuchtigkeit 100%)

V1 - nur curr, day1

humidity

<v> %

Luftfeuchtigkeit (zwischen 0% und 100%)

V1 - nur curr

icon



Maschinenlesbarer Text für Zusammenfassung auf Englisch: clear-day, clear-night, rain, snow, sleet, wind, fog, cloudy, partly-cloudy-day, partly-cloudy-night. Passende Icons dazu gibt es z.B. bei http://darkskyapp.github.io/skycons/

V4 - nur curr, day1

moon

0..1

Mondphase. 0 = Neumond, 0,25 erster Halbmond, 0,5 = Vollmond, 0,75 zweiter Halbmond

-

nearest_storm_bearing

<v.2>° (0° .. 360°)

Richtung des nächstgelegenen Sturmes. 0° = Norden

-

nearest_storm_distance

<v.2> km

Entfernung des nächstgelegenen Sturmes

-

ozone



Ozone Wert, https://de.wikipedia.org/wiki/Dobson-Einheit

-

snow_accum

<v.2> cm

Schneefall in der gegebenen Zeiteinheit

V3 - nur day1-day4

precip_intensity



Niederschlagsmenge (falls es regnet - d.h. immer mit precip_prob gemeinsam betrachten)

V5 - nur day1-day4

precip_intensity_error



Standardabweichung für die Niederschlagsmenge

-

precip_intensity_max



größte Niederschlagsmenge

-

precip_intensity_max_time



UNIX Zeit der größten Niederschlagsmenge

-

precip_prob

<v> %

Niederschlagswahrscheinlichkeit (zwischen 0% und 100%)

V1 - nur day1-day4

precip_type



Niederschlagsart: Regen, Schnee oder gefrierender Regen = Eiskörner = Schneeregen

-

pressure



Luftdruck

-

summary



Menschenlesbare Zusammenfassung (nicht fürs Parsen geeignet)

-

sunrise_time



UNIX Zeit des Sonneraufgangs

-

sunset_time



UNIX Zeit des Sonnenuntergangs

-

temp

<v.2> °C

Lufttemperatur

V1 - nur curr

temp_high

<v.2> °C

Tageshöchsttemperatur

V1 - nur day1-day3

temp_high_time



UNIX Zeit der Tageshöchsttemperatur

-

temp_low

<v.2> °C

Tagestiefsttemperatur

V1 - nur day1-day3

temp_low_time



UNIX Zeit der Tagestiefsstemperatur

-

time



UNIX-Zeit des jeweiligen Blocks (Beginn der Minute, Beginn der Stunde, Beginn des Tages)

V1 - nur curr, day1

uv_index



UV-Index

-

uv_index_time



UNIX Zeit des höchsten UV-Index des Tages

-

visibility

<v.2> km

Sichtweite

V4 - nur curr

wind_bearing



Windrichtung (0° = Norden)

V2 - nur curr

wind_gust

<v.2> km/h

Spitzenwindgeschwindigkeit

V1 - nur curr, hr1-hr2

wind_gust_time



UNIX Zeit der höchsten Spitzenwindgeschwindigkeit des Tages

-

wind_speed

<v.2> km/h

Windgeschwindigkeit

V1 - nur curr, hr1-hr2

 *) Bei Einheit wird angenommen, dass "units=si" in der Abfrage gesetzt wurde; das <v.2> bedeutet (wie in der Loxone Config) dass der Wert auf 2 Nachkommastellen genau geliefert wird

Aufbau der virtuellen Eingänge des Templates

Alle Eingänge beginnen mit ds (Dark Sky).

  • ds_curr_* sind die aktuellen Wetterdaten

  • ds_day*_* sind die Tages-Vorhersagen der nächsten 7 Tage (day0 ist heute, day1 ist morgen, day2 ist übermorgen)

  • ds_hr*_* sind die stündlichen Vorhersagen bis zum Ende des nächsten Tages (hr1 ist die kommende, volle Stunde, hr2, hr3, hr4 die zweite, dritte und vierte Stunde)

Im Template sind nur die Daten der nächsten 2 Stunden und nächsten 4 Tage enthalten (DarkSky liefert aber bis zu 24 Stunden  zurück). Du kannst die Eingänge ergänzen, wenn du weitere Daten benötigst.

Bitte beachte: Für jeden einzelnen Eingangsbefehl wird vom Miniserver eine Suche durchgeführt. Diese Suchen benötigen Leistung des Miniservers. Daher empfehle ich, Eingänge, die du absolut nicht benötigst, aus deiner Programmierung zu löschen.

Wetter visualisieren

Die Werte <icon> und <summary> eignen sich dafür in der Visualisierung dargestellt zu werden. Das Problem dabei ist, dass diese keine gültigen Werte liefern, da bei virtuellen Eingängen keine Texte geparsed werden können. Die beiden liefern daher immer 0.

Es gibt jetzt folgende Lösungen für dieses Problem:

Template-Versionen

Alle Versionen sind auf der Attachments Seite zu finden

Version

Beschreibung

Version

Beschreibung

1 (18.12.2018)

Initiales Template, 23 virtuelle Eingänge

2 (30.12.2018)

2 weitere Eingänge 

3 (6.1.2019)

2 weitere Eingänge

4 (19.1.2019)

4 weitere Eingänge

5 (29.5.2019)

4 weitere Einträge, summary entfernt