Seite 1 von 1

Rule mit mehreren AND Abfragen

Verfasst: 7. Jul 2022 10:46
von Cyrelian
Hi,

irgendwie stehe ich gerade auf dem Schlauch. Ich habe mehrere Rules, in denen ich AND und OR verknüpfe...laufen alle einwandfrei. Beispiel diese hier:

Code: Alles auswählen

if ((AutoHoliday.state == ON) && (now.isBefore((Sonnenaufgang_Time.state as DateTimeType).getZonedDateTime.toInstant.toEpochMilli) || now.isAfter((Sonnenuntergang_Time.state as DateTimeType).getZonedDateTime.toInstant.toEpochMilli))) {
..........
}
Aber diese mit drei AND Verknüpfungen bekomme ich nicht an fliegen. Mit zwei AND Verknüpfungen läuft sie. Ich vermute fast ich hab falsch geklammert, ich finde den Fehler aber nicht.

Code: Alles auswählen

rule "Test"

when
        Time cron  "0/30 * * * * ?"
then
        if (KuecheMotionSensor_Switch.state == ON && KuecheMotionSensor_Lux.state < 50 && TerrassenMotionSensor_Darkness.state = ON){
				logInfo("rules", "Bewegungssensor (Küche) starte Timer")
		}
end
Hier kommt der Fehler:

Code: Alles auswählen

[internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.BooleanExtensions.operator_and(boolean,boolean) on instance: null in test
CYA
Cyrelian

Re: Rule mit mehreren AND Abfragen

Verfasst: 7. Jul 2022 12:07
von udo1toni
Nein, die Fehlermeldung besagt ja, dass einer der angegebenen Parameter null ist. Also entweder hast Du einen Schreibfehler bei einem der Itemnamen oder Du musst beim Vergleich des Helligkeitssensors explizit nach Number casten. Oder ist das Item am Ende vielleicht ein UoM Item? dann sollte es so aussehen:

Code: Alles auswählen

rule "Test"
when
    Time cron  "0/30 * * * * ?"
then
    if(KuecheMotionSensor_Switch.state == ON && (KuecheMotionSensor_Lux.state as Number).intValue < 50 && TerrassenMotionSensor_Darkness.state = ON) {
        logInfo("rules", "Bewegungssensor (Küche) starte Timer")
    }
end

Re: Rule mit mehreren AND Abfragen

Verfasst: 7. Jul 2022 12:26
von Cyrelian
HI Udo,

dank dir für die schnelle Rückmeldung. Seltsamerweise kommt die gleiche Meldung auch mit deiner Rule.

Code: Alles auswählen

rule "Test"
when
    Time cron  "0/30 * * * * ?"
then
    if(KuecheMotionSensor_Switch.state == ON && (KuecheMotionSensor_Lux.state as Number).intValue < 50 && TerrassenMotionSensor_Darkness.state = OFF) {
        logInfo("rules", "Bewegungssensor (Küche) starte Timer")
    }
end

Code: Alles auswählen

Script execution of rule with UID 'test-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.BooleanExtensions.operator_and(boolean,boolean) on instance: null in test
jetzt habe ich mal die Reihenfolge geändert und siehe da, es geht...warum?

Code: Alles auswählen

rule "Test"
when
    Time cron  "0/30 * * * * ?"
then
    if (KuecheMotionSensor_Switch.state == ON && TerrassenMotionSensor_Darkness.state = OFF && (KuecheMotionSensor_Lux.state < 50)) {
        logInfo("rules", "Bewegungssensor (Küche) starte Timer")
    }
end
die ITEMS sind zwei mal Typ Switch und einmal Number

Re: Rule mit mehreren AND Abfragen

Verfasst: 7. Jul 2022 12:43
von udo1toni
Oh. Glatt übersehen, auch bei mir (Copy & Paste...) Du hast beim zweiten Vergleich = statt == geschrieben.

Re: Rule mit mehreren AND Abfragen

Verfasst: 7. Jul 2022 12:50
von Cyrelian
wie war dass mit dem Wald und den Bäumen :lol: .

Sauber, Dank Dir