falls jemand vor langeweile nicht weiß, was er in openhab einbinden soll....ich hab mir mal ein historisches wetter gebastelt .es können damit die daten eurer wetteraufzeichnung verglichen werden.
vorraussetzung: persistence, also die nutzung einer datenbank (mysql, influxdb o.ä)
ausserdem müsst ihr natürlich einige werte auf euer system anpassen.
das ganze ist als kleine inspiration anzusehen.
items: (gruppe Wetter_Astro auf eure genutzte gruppe anpassen)
String Temp_Rekord_min "[%s]" <temperature_cold> (Wetter_Astro)
String Temp_Rekord_max "[%s]" <temperature_hot> (Wetter_Astro)
String Temp_letztes_Jahr "[%s]" <temperature>
String Temp_letzter_Monat "[%s]" <temperature>
String Wolken_letztes_Jahr "[%s]" <wolken>
String Regen_letztes_Jahr "[%s]" <rain>
String Wind_letztes_Jahr "[%s]" <wind>
sitemap:
Frame label="Historisches Wetter" {
Text item=Temp_Rekord_min
Text item=Temp_Rekord_max
Text item=Temp_letzter_Monat
Text item=Temp_letztes_Jahr
Text item=Wolken_letztes_Jahr
Text item=Regen_letztes_Jahr
Text item=Wind_letztes_Jahr
}
rules:
hier gibt es einiges zu beachten:
- bei allen val einträgen muss das item auf euren namen angepasst werden.
- es müssen entsprechende daten in der datenbank vorhanden sein (bsp: in zeile 10 wird das wetter vor einem jahr abgefragt, wenn ihr noch nicht so lange loggt, dann müsst ihr den abfragezeitraum verkürzen) das könnte dann bspw ...Wetter_Temperatur.historicState(now.minusMonth(1).... sein wenn ihr erst seit einem monat daten aufzeichnet.
rule "wetter"
when
Item Wetter_Temperatur changed or
Item Dummy changed
then
val tempmin = Math::round((Wetter_Temperatur.minimumSince(parse("2018-01-01")).state as Number).floatValue())
val tempmax = Math::round((Wetter_Temperatur.maximumSince(parse("2018-01-01")).state as Number).floatValue())
val aktuell = Math::round((Wetter_Temperatur.state as Number).floatValue())
val String zeitpunkt = String::format( "%1$tH:%1$tM" + " Uhr am " + "%1$td.%1$tm.%1$ty", new java.util.Date )
val temp_jahr = Math::round((Wetter_Temperatur.historicState(now.minusYears(1)).state as Number).floatValue())
val temp_monat = Math::round((Wetter_Temperatur.historicState(now.minusMonths(1)).state as Number).floatValue())
val wolken_aktuell = Math::round((Wetter_Wolken.state as Number).floatValue())
val wolken_jahr = Math::round((Wetter_Wolken.historicState(now.minusHours(12)).state as Number).floatValue())
val wind_aktuell = Math::round((Wetter_WindSpeed.state as Number).floatValue())
val wind_jahr = Math::round((Wetter_WindSpeed.historicState(now.minusYears(1)).state as Number).floatValue())
val regen_jahr = Wetter_Regen.historicState(now.minusYears(1)).state as Number
if (aktuell < tempmin) {
Temp_Rekord_min.postUpdate(aktuell + " um " + zeitpunkt)
}
if (aktuell > tempmax) {
Temp_Rekord_max.postUpdate(aktuell + " um " + zeitpunkt)
}
if (aktuell > temp_jahr) {
Temp_letztes_Jahr.postUpdate((aktuell - temp_jahr) + " °C wärmer als vor einem Jahr")
}
if (aktuell < temp_jahr) {
Temp_letztes_Jahr.postUpdate((temp_jahr - aktuell) + " °C kälter als vor einem Jahr")
}
if (aktuell == temp_jahr) {
Temp_letztes_Jahr.postUpdate("Jetzt ist es so warm wie vor einem Jahr")
}
if (aktuell > temp_monat) {
Temp_letzter_Monat.postUpdate((aktuell - temp_monat) + " °C wärmer als vor einem Monat")
}
if (aktuell < temp_monat) {
Temp_letzter_Monat.postUpdate((temp_monat - aktuell) + " °C kälter als vor einem Monat")
}
if (aktuell == temp_monat) {
Temp_letzter_Monat.postUpdate("Jetzt ist es so warm wie vor einem Monat")
}
if (wolken_aktuell > wolken_jahr) {
Wolken_letztes_Jahr.postUpdate((wolken_aktuell - wolken_jahr) + " % mehr Wolken als gestern")
}
if (wolken_aktuell < wolken_jahr) {
Wolken_letztes_Jahr.postUpdate((wolken_jahr - wolken_aktuell) + " % weniger Wolken als gestern")
}
if (wolken_aktuell == wolken_jahr) {
Wolken_letztes_Jahr.postUpdate("Gleiche Bewölkung wie gestern")
}
if (regen_jahr > 0.1) {
Regen_letztes_Jahr.postUpdate("Vor einem Jahr hat es gerade geregnet")
}
if (regen_jahr < 0.1) {
Regen_letztes_Jahr.postUpdate("Vor einem Jahr hat es nicht geregnet")
}
if (wind_aktuell < wind_jahr) {
Wind_letztes_Jahr.postUpdate((wind_jahr - wind_aktuell) + " km/h weniger Wind als letztes Jahr")
}
if (wind_aktuell > wind_jahr) {
Wind_letztes_Jahr.postUpdate((wind_aktuell - wind_jahr) + " km/h mehr Wind als letztes Jahr")
}
end
Alles anzeigen