Für weitere Regeln und Automatisierungen wollte ich die aktuellen Wetterdaten in openHAB integrieren. Im ersten Schritt wollte ich das ohne eigene Wetterstation umsetzen und die externen Daten etwas aggregieren und testen welche Daten ich überhaupt benötige.
Alle Artikel die ich gefunden habe, referenzieren aktuell auf das WeatherUnderground Binding. Leider gibt es dafür keine kostenlosen API-Keys zur privaten Nutzung mehr. Als Alternative habe ich jetzt das Weather1 Binding mit Daten von OpenWetherMap verwendet.
Die Grundlagen für den Artikel habe ich bei Wenzlaff.de gefunden.
Installation
Die Installation wird wie gewohnt in openHAB in der Paper UI durchgeführt:
openHAB – Paper UI – Add-ons – Bindings – Weather Binding – INSTALL
Bitte achtet darauf, dass die Legacy-Bindings für ein Version 1 Binding in den Einstellungen aktiviert sind.
OpenWeatherMap
Für die Verwendung von externen Wetterdaten benötigt man bei OpenWeatherMap einen API-Key. Der Account wird hier erstellt und danach per E-Mail verschickt.
Services
Die Anpassung der Services wird in der Datei services/weather.cfg vorgenommen.
apikey.OpenWeatherMap=xxx
# Location – Altomünster – OpenWeatherMap
weather:location.Altomuenster-OWM.latitude=48.3859
weather:location.Altomuenster-OWM.longitude=11.2535
weather:location.Altomuenster-OWM.provider=OpenWeatherMap
weather:location.Altomuenster-OWM.language=de
weather:location.Altomuenster-OWM.updateInterval=30
Der apiKey muss durch den vorher generierten Schlüssel ersetzt werden. Die location kann an die eigenen Bedürfnisse angepasst werden. Den Aktualisierungsintervall habe ich auf 30 Minuten gesetzt.
Um die GPS-Koordinaten (latitude, longitude) für Altomünster herauszufinden, habe ich den Service von gpskoordniaten.de genutzt.
Items
Als erste Test-Items kann man den Satz an Daten verwenden:
// OpenWeatherMap Daten
Number owmHumidity "Feuchte [%d %%]" {weather="locationId=Altomuenster-OWM, type=atmosphere, property=humidity"}
Number owmTemperature "Temperatur [%.2f °C]" {weather="locationId=Altomuenster-OWM, type=temperature, property=current"}
Number owmPressure "Luftdruck [%.2f hPa]" {weather="locationId=Altomuenster-OWM, type=atmosphere, property=pressure"}
String owmPressureTrend "Luftdruck Trend [%s]" {weather="locationId=Altomuenster-OWM, type=atmosphere, property=pressureTrend"}
Number owmWindSpeed "Windgeschwindigkeit [%.2f km/h]" {weather="locationId=Altomuenster-OWM, type=wind, property=speed"}
String owmWindDirection "Windrichtung [%s]" {weather="locationId=Altomuenster-OWM, type=wind, property=direction"}
Number owmWindDegree "Windrichtung in Grad [%.0f °]" {weather="locationId=Altomuenster-OWM, type=wind, property=degree"}
Number owmClouds "Bewölkung [%.0f %%]" {weather="locationId=Altomuenster-OWM, type=clouds, property=percent"}
Number owmRain "Regen der letzten 3 Stunden [%.2f mm/h]" {weather="locationId=Altomuenster-OWM, type=precipitation, property=rain"}
Number owmSnow "Schnee der letzten 3 Stunden [%.2f mm/h]" {weather="locationId=Altomuenster-OWM, type=precipitation, property=snow"}
// Forecast +1 ist der nächste Tag
// ACHTUNG: Funktioniert aktuell nicht mit OpenWeatherMap, 25.08.2018
Number ownForecastTempMin "Temperatur min. [%.2f °C]" {weather="locationId=Altomuenster-OWM, forecast=1, type=temperature, property=min"}
Number ownForecastTempMax "Temperatur max. [%.2f °C]" {weather="locationId=Altomuenster-OWM, forecast=1, type=temperature, property=max"}
Sitemap
Danach habe ich die Sitemap zur Visualisierung an meine Anforderungen angepasst:
Text label="Wetter" icon="temperature" {
Frame label="Altomünster (Open Weather Map)" {
Frame label="Heutiger Tag" {
Text item=owmTemperature icon="selfTemperature"
Text item=owmHumidity icon="selfWater"
Text item=owmPressure
Text item=owmPressureTrend
Text item=owmWindSpeed icon="wind"
Text item=owmWindDirection icon="wind"
Text item=owmWindDegree icon="wind"
Text item=owmClouds
Text item=owmRain icon="rain"
Text item=owmSnow
}
Frame label="Morgiger Tag" {
Text item=ownForecastTempMin
Text item=ownForecastTempMax
}
}
}
Fazit
Mit dem Weather1 Binding sind schnell und unkompliziert „grobe“ Wetterdaten in openHAB integriert.
Was ich leider erst im Nachgang gesehen habe ist das von OpenWeatherMap mit den kostenlosen Accounts momentan nur aktuelle Tagesdaten und keine Wettervorschau für die nächsten Tage verwendet werden kann (obwohl das in der Dokumentation anders beschrieben steht). Das Problem wird in diesem Ticket im Detail beschrieben.
Wie habt Ihr eure Wetterdaten zur Hausautomatisierung verwendet? Soll ich doch besser gleich auf eine „richtige“ Wetterstation für die Daten umsteigen?