Hallo Udo, erst mal Danke für die Antwort.
Wenn ich das richtig verstanden habe, kann man das nur in der Regel selber abfragen

Also nicht von aussen, z.B. in der Shell oder über die Konsole?
GrüßeDu setzt voraus, dass jedes Item allzeit einen gültigen Wert enthält, das ist aber nicht sicher.
Code: Alles auswählen
rule "Fenster auf am Abend bei Wärme"
when
Channel 'astro:sun:local:set#event' triggered START or
Item FensterTest_zu changed to ON
then
if((Dachboden_Temperature.state >= 21) && (Dachboden_Heizung.state <= 18) && (Fensterautomatik.state == ON) && (Outside_Temperature.state <= Dachboden_Temperature.state) && (Outside_Temperature.state >= 13)) {
sendCommand(FensterMitte_auf, ON)
sendCommand(FensterLuR_auf, ON)
createTimer(now.plusMinutes(15)) [| sendCommand(FensterLuR_luft, ON) ]
}
end
rule "Fenster wieder zu bei kalte oder Luftung"
when
Item Dachboden_Temperature changed or
Item Outside_Temperature changed or
Item FensterTest_zu changed to ON
then
if((Dachboden_Temperature.state <= 20) && (Fensterautomatik.state == ON) && (Outside_Temperature.state >= 15)) {
sendCommand(FensterMitte_luft, ON)
sendCommand(FensterLuR_luft, ON)
}
if((Dachboden_Temperature.state <= 20) && (Fensterautomatik.state == ON) && (Outside_Temperature.state <= 15)) {
sendCommand(FensterMitte_zu, ON)
sendCommand(FensterLuR_zu, ON)
}
if((Dachboden_Temperature.state <= 17) && (Fensterautomatik.state == ON)) {
sendCommand(FensterMitte_zu, ON)
sendCommand(FensterLuR_zu, ON)
}
if(Outside_Temperature.state <= 5) {
createTimer(now.plusSeconds(60)) [| sendCommand(FensterMitte_zu, ON) ]
createTimer(now.plusSeconds(60)) [| sendCommand(FensterLuR_zu, ON) ]
}
end
Du musst halt prüfen, ob ein gültiger Wert vorliegt. Gegeben ist ein Number Item meinNumberItem:
Code: Alles auswählen
rule "test"
when
Item meinNumberItem changed
then
if(!(meinNumberItem.state instanceof Number)) { // Prüfung auf Typ
logWarn("testrule","meinNumberItem.state ist nicht vom Typ Number!") // Warnung
logInfo("testrule","meinNumberItem.state = {}",meinNumberItem.state) // Information
return; // Abbruch der Rule
}
var Number nZahl = meinNumberItem.state as Number
logInfo("testrule","Die Zahl lautet {}",nZahl)
end
Code: Alles auswählen
rule "test"
when
Item meinNumberItem changed
then
var Number nZahl = 5 // default Wert
if(meinNumberItem.state instanceof Number)
nZahl = meinNumberItem.state as Number
logInfo("testrule","Die Zahl lautet {}",nZahl)
end