Die items mit schalter* oder sw* unter "when" aktivieren nicht.
Die logInfos sind nicht mehr systematisch gesetzt, da ich versucht habe das Problem einzukreisen.
Code: Alles auswählen
rule "timer_BZ_setzen"
when
Time cron " 0 0 0 * * ?" or // Mitternacht
Item Uhr1_H_Ein_BZ changed or // oder Zeit wurde geändert "
Item Uhr1_M_Ein_BZ changed or // "
Item Uhr1_H_Aus_BZ changed or // "
Item Uhr1_M_Aus_BZ changed or // "
Item Uhr2_H_Ein_BZ changed or // "
Item Uhr2_M_Ein_BZ changed or // "
Item Uhr2_H_Aus_BZ changed or // "
Item Uhr2_M_Aus_BZ changed or // "
Item Uhr6_H_Aus_BZ changed or // "
Item Uhr6_M_Aus_BZ changed or // "
Item Uhr7_H_Aus_BZ changed or // "
Item Uhr7_M_Aus_BZ changed or // "
Item Schalter_manu_BZ changed or // oder Manu aus
Item SW_2_BZ changed or // oder 2. Zeit dazu oder weg
Item SW_Sa_BZ changed or // oder Zeit Sa geändert
Item SW_So_BZ changed // oder Zeit So geändert
then
logInfo("timer","Rule BZ getriggert!")
logInfo("timer","Wochentag BZ ist {}",now.getDayOfWeek)
soll1EinBZ = (Uhr1_M_Ein_BZ.state as Number) + 60 * (Uhr1_H_Ein_BZ.state as Number)
logInfo("timer","BZ Einschaltzeit 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1EinBZ.intValue))
logInfo("timer","soll1_ein_bz {}",(soll1EinBZ))
tag = (now.getDayOfWeek)
if (tag < 6) { //Mo - Fr
if (Sw_2_BZ == OFF) { // 1 Zeit
soll1AusBZ = (Uhr1_M_Aus_BZ.state as Number) + 60 * (Uhr1_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
else { // 2 Zeiten
soll1AusBZ = (Uhr1_M_Aus_BZ.state as Number) + 60 * (Uhr1_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2EinBZ = (Uhr2_M_Ein_BZ.state as Number) + 60 * (Uhr2_H_Ein_BZ.state as Number)
logInfo("timer","BZ Einschaltzeit 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2AusBZ = (Uhr2_M_Aus_BZ.state as Number) + 60 * (Uhr2_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
}
else if (tag == 6) { // Sa
logInfo("timer","Status {}",(Sw_2_BZ.state))
logInfo("timer","Status {}",(Sw_Sa_BZ.state))
if (Sw_2_BZ.state == OFF && Sw_Sa_BZ.state == OFF) {
logInfo("timer","Status {}",(Sw_Sa_BZ.state))
soll1AusBZ = (Uhr1_M_Aus_BZ.state as Number) + 60 * (Uhr1_H_Aus_BZ.state as Number)
logInfo("timer","soll1_aus_bz {}",(soll1AusBZ))
logInfo("timer","BZ Ausschaltzeit Sa 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
else if (Sw_2_BZ == OFF && Sw_Sa_BZ == ON) {
soll1AusBZ = (Uhr6_M_Aus_BZ.state as Number) + 60 * (Uhr6_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit Sa 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
else if (Sw_2_BZ == ON && Sw_Sa_BZ == OFF) {
soll1AusBZ = (Uhr1_M_Aus_BZ.state as Number) + 60 * (Uhr1_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit Sa 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2EinBZ = (Uhr2_M_Ein_BZ.state as Number) + 60 * (Uhr2_H_Ein_BZ.state as Number)
logInfo("timer","BZ Einschaltzeit Sa 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2AusBZ = (Uhr2_M_Aus_BZ.state as Number) + 60 * (Uhr2_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit Sa 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
else if (Sw_2_BZ == ON && Sw_Sa_BZ == ON) {
soll1AusBZ = (Uhr1_M_Aus_BZ.state as Number) + 60 * (Uhr1_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit Sa 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2EinBZ = (Uhr2_M_Ein_BZ.state as Number) + 60 * (Uhr2_H_Ein_BZ.state as Number)
logInfo("timer","BZ Einschaltzeit Sa 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2AusBZ = (Uhr6_M_Aus_BZ.state as Number) + 60 * (Uhr6_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit Sa 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
}
else if (tag == 7) { //So
logInfo("timer","Status {}",(Sw_2_BZ.state))
logInfo("timer","Status {}",(Sw_So_BZ.state))
if (Sw_2_BZ == OFF && Sw_So_BZ == OFF) {
logInfo("timer","Status {}",(Sw_So_BZ.state))
soll1AusBZ = (Uhr1_M_Aus_BZ.state as Number) + 60 * (Uhr1_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit So 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
else if (Sw_2_BZ == OFF && Sw_So_BZ == ON) {
soll1AusBZ = (Uhr7_M_Aus_BZ.state as Number) + 60 * (Uhr7_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit So 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
else if (Sw_2_BZ == ON && Sw_So_BZ == OFF) {
soll1AusBZ = (Uhr1_M_Aus_BZ.state as Number) + 60 * (Uhr1_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit So 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2EinBZ = (Uhr2_M_Ein_BZ.state as Number) + 60 * (Uhr2_H_Ein_BZ.state as Number)
logInfo("timer","BZ Einschaltzeit So 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2AusBZ = (Uhr2_M_Aus_BZ.state as Number) + 60 * (Uhr2_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit So 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
else if (Sw_2_BZ == ON && Sw_So_BZ == ON) {
soll1AusBZ = (Uhr1_M_Aus_BZ.state as Number) + 60 * (Uhr1_H_Aus_BZ.state as Number)
logInfo("timer","BZ Ausschaltzeit So 1 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2EinBZ = (Uhr2_M_Ein_BZ.state as Number) + 60 * (Uhr2_H_Ein_BZ.state as Number)
logInfo("timer","BZ Einschaltzeit So 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
soll2AusBZ = (Uhr7_M_Aus_BZ.state as Number) + 60 * (Uhr7_H_Aus_BZ.state as Number)
logInfo("timer","soll1_aus_bz {}",(soll1AusBZ))
logInfo("timer","BZ Ausschaltzeit So 2 {}",now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue))
}
}
if(time1_Ein_BZ !== null) time1_Ein_BZ.cancel // Timer aktiv, also zuerst löschen
time1_Ein_BZ = createTimer(now.withTimeAtStartOfDay.plusMinutes(soll1EinBZ.intValue), [|
if (Schalter_manu_BZ.state == OFF) {
if ((Thermostat_BZ.state as Number) != 1) {
Thermostat_BZ.sendCommand(1)
logInfo("timer","BZ Einschaltzeit 1 erreicht und Automatik aktiv!")
}
else {
logInfo("timer","BZ Einschaltzeit 1 Thermostat gleich!")
}
}
time1_Ein_BZ = null
])
if(time1_Aus_BZ !== null) time1_Aus_BZ.cancel // Timer aktiv, also zuerst löschen
logInfo("timer","Status1")
time1_Aus_BZ = createTimer(now.withTimeAtStartOfDay.plusMinutes(soll1AusBZ.intValue), [|
logInfo("timer","Status2")
if (Schalter_manu_BZ.state == OFF) {
logInfo("timer","Status3")
if ((Thermostat_BZ.state as Number) != 11) {
logInfo("timer","Status4")
Thermostat_BZ.sendCommand(11)
logInfo("timer","Status1")
logInfo("timer","BZ Ausschaltzeit 1 erreicht und Automatik aktiv!")
}
else {
logInfo("timer","BZ Ausschaltzeit 1 Thermostat gleich!")
}
}
time1_Aus_BZ = null
])
if(time2_Ein_BZ !== null) time2_Ein_BZ.cancel // Timer aktiv, als zuerst löschen
time2_Ein_BZ = createTimer(now.withTimeAtStartOfDay.plusMinutes(soll2EinBZ.intValue), [|
if ((Schalter_manu_BZ.state == OFF) && (Sw_2_BZ.state == ON)) {
if ((Thermostat_BZ.state as Number) != 1) {
Thermostat_BZ.sendCommand(1)
logInfo("timer","BZ Einschaltzeit 2 erreicht und Automatik aktiv!")
}
else {
logInfo("timer","BZ Einschaltzeit 2 Thermostat gleich!")
}
}
time2_Ein_BZ = null
])
if(time2_Aus_BZ !== null) time2_Aus_BZ.cancel // Timer aktiv, also zuerst löschen
time2_Aus_BZ = createTimer(now.withTimeAtStartOfDay.plusMinutes(soll2AusBZ.intValue), [|
if ((Schalter_manu_BZ.state == OFF) && (Sw_2_BZ.state == ON)) {
if ((Thermostat_BZ.state as Number) != 11) {
Thermostat_BZ.sendCommand(11)
logInfo("timer","BZ Ausschaltzeit 2 erreicht und Automatik aktiv!")
}
else {
logInfo("timer","BZ Ausschaltzeit 2 Thermostat gleich!")
}
}
time2_Aus_BZ = null
])
end