ich verzweifle mal wieder an einem Thema. Ich persönlich finde, dass die Wettervorhersagen und generell alle Wetterinformationen zumindest für Essen sehr genau sind und fand es immer schade, dass die Einbindung der Wetterdaten in openHAB nicht möglich ist.
Als ich letztens aber mal etwas Zeit hatte, habe ich mir das noch einmal etwas genauer angeschaut und habe doch einen Weg gefunden die Daten einzubinden. Hier (https://listed.to/@DieSieben/7851/api-d ... erdienstes) ist eigentlich sehr gut beschrieben wie man an Wetterdaten für seinen Ort kommt. Ich beschreibe das mal etwas ausführlicher falls noch andere Leute die Daten vom DWD einbinden wollen und diese nicht ebenfalls so lange überlegen müssen wie ich.
Meine Things sehen wie folgt aus:
Code: Alles auswählen
Thing http:url:dwd "DWD" [
baseURL="https://s3.eu-central-1.amazonaws.com/app-prod-static.warnwetter.de/v16/forecast_mosmix_H423.json",
refresh=15] {
Channels:
//heute
Type string : TemperatureMaxDay0 "TemperatureMaxDay0" [ stateTransformation="JSONPATH:$.days[0].temperatureMax" ]
Type string : TemperatureMinDay0 "TemperatureMinDay0" [ stateTransformation="JSONPATH:$.days[0].temperatureMin" ]
Type string : SunriseDay0 "SunriseDay0" [ stateTransformation="JSONPATH:$.days[0].sunrise" ]
Type string : SunsetDay0 "SunsetDay0" [ stateTransformation="JSONPATH:$.days[0].sunset" ]
Type string : SunHoursDay0 "SunHoursDay0" [ stateTransformation="JSONPATH:$.days[0].sunshine" ]
//morgen
Type string : TemperatureMaxDay1 "TemperatureMaxDay1" [ stateTransformation="JSONPATH:$.days[1].temperatureMax" ]
Type string : TemperatureMinDay1 "TemperatureMinDay1" [ stateTransformation="JSONPATH:$.days[1].temperatureMin" ]
Type string : SunriseDay1 "SunriseDay1" [ stateTransformation="JSONPATH:$.days[1].sunrise" ]
Type string : SunsetDay1 "SunsetDay1" [ stateTransformation="JSONPATH:$.days[1].sunset" ]
Type string : SunHoursDay1 "SunHoursDay1" [ stateTransformation="JSONPATH:$.days[1].sunshine" ]
}
Code: Alles auswählen
Group:String gDWD "Wetterdaten DWD"
//heute
String DWDTemperatureMinDay0_text "Temperature min day0 [%s]" (gDWD) {channel="http:url:dwd:TemperatureMinDay0"}
Number:Temperature DWDTemperatureMinDay0 "Temp min (heute) [%.1f °C]" <temperature> (gDWD)
String DWDTemperatureMaxDay0_text "Temperature max day0 [%s]" (gDWD) {channel="http:url:dwd:TemperatureMaxDay0"}
Number:Temperature DWDTemperatureMaxDay0 "Temp max (heute) [%.1f °C]" <temperature> (gDWD)
String DWDSunriseDay0_text "Sunrise day0 [%s]" (gDWD) {channel="http:url:dwd:SunriseDay0"}
String DWDSunriseDay0 "Sunrise day0 [%s]" (gDWD)
String DWDSunsetDay0_text "Sunset day0 [%s]" (gDWD) {channel="http:url:dwd:SunsetDay0"}
String DWDSunHoursDay0_text "Sun hours day0 [%s]" (gDWD) {channel="http:url:dwd:SunHoursDay0"}
Number DWDSunHoursDay0 "Sonnenstd. (heute) [%.1f h]" <time> (gDWD)
//morgen
String DWDTemperatureMinDay1_text "Temperature min day1 [%s]" (gDWD) {channel="http:url:dwd:TemperatureMinDay1"}
Number:Temperature DWDTemperatureMinDay1 "Temp min (morgen) [%.1f °C]" <temperature> (gDWD)
String DWDTemperatureMaxDay1_text "Temperature max day1 [%s]" (gDWD) {channel="http:url:dwd:TemperatureMaxDay1"}
Number:Temperature DWDTemperatureMaxDay1 "Temp max (morgen) [%.1f °C]" <temperature> (gDWD)
String DWDSunHoursDay1_text "Sun hours day1 [%s]" (gDWD) {channel="http:url:dwd:SunHoursDay1"}
Number DWDSunHoursDay1 "Sonnenstd. (morgen) [%.1f h]" <time> (gDWD)
Temperaturen werden ohne Einheit und Komma übertragen. zB für 10,5 °C wird 105 übertragen.
Die Sonnenstunden werden als Stundenanzahl in Sekunden übertragen zB für 15,2 Std. wird 9120 übertragen.
Die Zeit für den Sonnenaufgang wird (wenn ich das richtig recherchiert habe) als UNIX Timestamp übertragen. zB für 05:15 wird 1686366948000 übertragen.
Die Rule zu der heutigen Mindesttemperatur sieht zB so aus:
Code: Alles auswählen
rule "TemperatureMinDay0_text updated"
when
Item DWDTemperatureMinDay0_text received update
then
var Number oldValue = new DecimalType(DWDTemperatureMinDay0_text.state.toString)
DWDTemperatureMinDay0.postUpdate(oldValue/10)
end
Code: Alles auswählen
rule "DWDSunHoursDay0_text updated"
when
Item DWDSunHoursDay0_text received update
then
var Number oldValue = new DecimalType(DWDSunHoursDay0_text.state.toString)
DWDSunHoursDay0.postUpdate(oldValue/600)
end
Danke für Eure Hilfe.
Christian