Rule mit while loop und variablen Items
Verfasst: 17. Jun 2022 12:07
Hi zusammen,
ich möchte Eine Regel für eine Gartenbewässerung mit 4 Ventilen, welche auf eine bestimmte Uhrzeit gestartet wird und dann je nach dem für welche Ventilkreise Zeiten hinterlegt sind, sollen diese entsprechend nacheinander geschaltet werden.
Meine Regel sieht wie folgt aus. Durchläuft auch die Schleife, aber mit den Variablen Items kann sie nicht umgehen. Deshlab wird der "IF" Teil komplett ignoriert.
Gibt es überhaupt eine Möglichkeit Items mit einer Nummer dahinter variabel zu machen in einer Rule ?
ich möchte Eine Regel für eine Gartenbewässerung mit 4 Ventilen, welche auf eine bestimmte Uhrzeit gestartet wird und dann je nach dem für welche Ventilkreise Zeiten hinterlegt sind, sollen diese entsprechend nacheinander geschaltet werden.
Meine Regel sieht wie folgt aus. Durchläuft auch die Schleife, aber mit den Variablen Items kann sie nicht umgehen. Deshlab wird der "IF" Teil komplett ignoriert.
Gibt es überhaupt eine Möglichkeit Items mit einer Nummer dahinter variabel zu machen in einer Rule ?
Code: Alles auswählen
var Timer timerVENTIL = null
rule "Bewässerungsautomatik"
when
Time cron "0 * * * * ?"
then
if (BWA_Switch.state == ON) {
var sollMinute = (BWA_Switch_M.state as DecimalType).intValue
var sollStunde = (BWA_Switch_H.state as DecimalType).intValue
var Kreis1 = (BWA_Switch_T1.state as DecimalType).intValue
var Kreis2 = (BWA_Switch_T2.state as DecimalType).intValue
var Kreis3 = (BWA_Switch_T3.state as DecimalType).intValue
var Kreis4 = (BWA_Switch_T4.state as DecimalType).intValue
var Boolean K1 = if(Kreis1 > 0) true else false
var Boolean K2 = if(Kreis2 > 0) true else false
var Boolean K3 = if(Kreis3 > 0) true else false
var Boolean K4 = if(Kreis4 > 0) true else false
if (sollMinute == now.getMinuteOfHour && sollStunde == now.getHourOfDay) {
logInfo("Bew", "Gartenbewässerung gestartet " + K1)
var i = 0
while ((i=i+1) <= 4) {
logInfo("Bew", "Kreis" + i)
if ("K"+i) {
var sollTimer = ("Kreis"+i)
logInfo("Bew", "Timer Kreis" + i + sollTimer)
sendCommand("BEW_Ventil_"+i, ON)
timerVENTIL = createTimer(now.plusMinutes(sollTimer))[
sendCommand("BEW_Ventil_"+i, OFF)]
}
}
}
}
end