Hallo Udo!
Bitte um dein/euer Feedback zu folgender Regel.
Kurz beschrieben wollte ich alle Funktionen in eine Regel packen und die Wärmepumpe nach festen Zeiten ein und aus schalten.
Zudem über einen zusätzlichen Shelly per potenzialfreien Kontakt, die Wärmepumpe je nach anliegen von PV-Leistung freigeben.
Separat als eigene Regeln hat das bereits funktioniert. Ich wollte aber die Anzahl meiner Regeln reduzieren und den Ablauf in eine Regel packen. Leider funktioniert das nicht. Ich bitte um Hilfe dazu! Warum geht das nicht?
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
time: 08:52
type: timer.TimeOfDayTrigger
- id: "2"
configuration:
time: 18:30
type: timer.TimeOfDayTrigger
- id: "3"
configuration:
cronExpression: 0 0/10 9-18 * * ? *
type: timer.GenericCronTrigger
conditions: []
actions:
- inputs: {}
id: "4"
configuration:
type: application/vnd.openhab.dsl.rule
script: >
import java.time.LocalTime val currentTime = now.toLocalTime()
logInfo("regel", "Aktuelle Zeit: {}", currentTime) logInfo("regel",
"Zustand ShellyWP_Betrieb: {}", ShellyWP_Betrieb.state)
// Regel 1: Einschalten der Wärmepumpe um 08:52 if
(currentTime.isAfter(LocalTime.parse("08:51")) &&
currentTime.isBefore(LocalTime.parse("08:53")) &&
ShellyWP_Betrieb.state == OFF) {
logInfo("regel", "Einschalten der Wärmepumpe um 08:52 Uhr")
sendCommand(ShellyWP_Betrieb, ON)
sendBroadcastNotification("Wärmepumpe um 08:52 Uhr eingeschaltet")
}
// Regel 2: Ausschalten der Wärmepumpe um 18:30 if
(currentTime.isAfter(LocalTime.parse("18:29")) &&
currentTime.isBefore(LocalTime.parse("18:31")) &&
ShellyWP_Betrieb.state == ON) {
logInfo("regel", "Ausschalten der Wärmepumpe um 18:30 Uhr")
sendCommand(ShellyWP_Betrieb, OFF)
sendBroadcastNotification("Wärmepumpe um 18:30 Uhr ausgeschaltet")
}
// Regel 3: Freigabe der Wärmepumpe basierend auf dem PVMittelwert alle
10 Minuten zwischen 09:00 und 18:00 if
(currentTime.isAfter(LocalTime.parse("09:00")) &&
currentTime.isBefore(LocalTime.parse("19:00"))) {
val pvMittelwert = (PVMittelwert.state as QuantityType<Power>).toUnit("kW").toBigDecimal
logInfo("regel", "PVMittelwert: {}", pvMittelwert)
if (pvMittelwert > 3 && Shelly_WP_Freigabe_Betrieb.state != ON) {
logInfo("regel", "Freigabe der Wärmepumpe, da PV-Leistung > 3kW")
sendCommand(Shelly_WP_Freigabe_Betrieb, ON)
sendBroadcastNotification("Wärmepumpe freigegeben, da PV-Leistung > 3kW")
} else if (pvMittelwert < 1 && Shelly_WP_Freigabe_Betrieb.state != OFF) {
logInfo("regel", "Freigabe der Wärmepumpe aufgehoben, da PV-Leistung < 1kW")
sendCommand(Shelly_WP_Freigabe_Betrieb, OFF)
sendBroadcastNotification("Wärmepumpe nicht freigegeben, da PV-Leistung < 1kW")
} else {
logInfo("regel", "Keine Änderung an der Freigabe der Wärmepumpe erforderlich")
}
}
type: script.ScriptAction
LG Rene