Du musst halt die Temperatur einsammeln

Ich mache das über die 3-Stunden-Werte.
Code: Alles auswählen
Bridge openweathermap:weather-api:api "openweatherMap Api" @ "Wetter" [
apikey="0123456789abcdef0123456789abcdef",
refreshInterval=10,
language="de"
] {
Thing weather-and-forecast ct "Wetter meiner Stadt" @ "Wetter" [ forecastDays=0, forecastHours=24, step=3, location="50.000000000000000,9.000000000000000" ]
apikey und location musst Du natürlich selbst anpassen,
Die Channel muss man nicht extra anlegen, das macht openHAB selbst, sowie den Namen des Things.
Nun brauchst Du noch Items:
Code: Alles auswählen
Group gOWM
Number:Temperature Wetter_Fc_TempMax "Temp. max (fc) [%.1f °C]"
Switch PumpeEnable
Number:Temperature Wetter_Fc03Temp "Temperatur + 3h" (gOWM) {channel="openweathermap:weather-and-forecast:api:ct:forecastHours03#temperature"}
Number:Temperature Wetter_Fc06Temp "Temperatur + 6h" (gOWM) {channel="openweathermap:weather-and-forecast:api:ct:forecastHours06#temperature"}
Number:Temperature Wetter_Fc09Temp "Temperatur + 9h" (gOWM) {channel="openweathermap:weather-and-forecast:api:ct:forecastHours09#temperature"}
Number:Temperature Wetter_Fc12Temp "Temperatur +12h" (gOWM) {channel="openweathermap:weather-and-forecast:api:ct:forecastHours12#temperature"}
Number:Temperature Wetter_Fc15Temp "Temperatur +15h" (gOWM) {channel="openweathermap:weather-and-forecast:api:ct:forecastHours15#temperature"}
Number:Temperature Wetter_Fc18Temp "Temperatur +18h" (gOWM) {channel="openweathermap:weather-and-forecast:api:ct:forecastHours18#temperature"}
Number:Temperature Wetter_Fc21Temp "Temperatur +21h" (gOWM) {channel="openweathermap:weather-and-forecast:api:ct:forecastHours21#temperature"}
Number:Temperature Wetter_Fc24Temp "Temperatur +24h" (gOWM) {channel="openweathermap:weather-and-forecast:api:ct:forecastHours24#temperature"}
Nun noch eine Rule, die die vorhergesagten Temperaturen zusammenrechent:
Code: Alles auswählen
rule "update Maxtemp"
when
Time cron "0 55 6 * * ?"
then
var maxTemp = 0
gOWM.members.filter[ i |
i.name.contains("Temp") && i.name.contains("Fc") && (i.state instanceof Number)
].forEach [ j |
if((j.state as Number).floatValue > maxTemp)
maxTemp = (j.state as Number).floatValue
logInfo("maxtemp", "{} ist {}, Maximum ist {}",j.name,j.state,maxTemp)
]
Wetter_Fc_TempMax.postUpdate(maxTemp|°C)
PumpeEnable.postUpdate(if(maxTemp > 20) ON else OFF)
end
Die Rule läuft einmal am Tag und errechnet die erwartete Maximaltemperatur. Ist die Temperatur über 20°C, wird das ungebundene Item PumpeEnable auf ON gesetzt, ansonsten auf OFF. Zusätzlich wird die errechnete Maximaltemperatur auch noch in einem weiteren Item gespeichert.
Die Rule läuft in ähnlicher Form bei mir, allerdings nutze ich die Information für die automatische Beschattung. Ich habe in der Gruppe gOWM (Gruppe OpenweatherMap) noch andere Items drin. Es ist möglich (müsste man halt probieren) dass die Gruppe ebenfalls das Maximum errechnen kann, dann bräuchte es die Rule nicht. (Group:Number:Temperature:MAX gOWM) Ich bin mir aber nicht sicher, ob das so funktioniert, wegen des UoM. Außerdem möchte man ja die Berechnung zu einem bestimmten Zeitpunkt vornehmen.
In Deiner Rule kannst Du nun vor dem Einschalten prüfen, ob das Item PumpeEnable ON oder OFF ist und entsprechend schalten oder nicht schalten.
Auf das Setzen des Enable Items kann man natürlich verzichten, wenn man stattdessen in der Rule auf das Überschreiten des Grenzwertes testet.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet