Seite 1 von 1

[SOLVED]Zeitangabe im rule wird nicht korrekt gelesen

Verfasst: 9. Okt 2021 20:02
von Boris099
Ich habe hier ein Problem mit meinem rule und die darin verwendete Zeitangabe. Es funktioniert nicht wie es soll!
Was ist denn hier falsch?
Es geht dabei um die zweite Zeitangabe weiter unten. Der Switch soll ausgeschaltet werden, wenn es zwischen
5h und 10h (Morgens) ist und wenn der Lumenwert >= 5 ist.
Dummerweise wird der Switch immer ausgeschaltet wenn der Lumenwert >= 5 ist, egal wieviel Uhr es ist.

Code: Alles auswählen

rule "ZPIR_DieleOG_Luminance changed"
when
        Item zwave_device_6c898019_node2_sensor_luminance changed
then
        val nState = if(newState instanceof Number) newState else 0     // falls ein ungültiger Wert geliefert wird, wird 0 genommen
        if((now.getMinuteOfDay >= (16 * 60 + 00) && (nState <= 3))) {
                if(zwave_device_6c898019_node13_switch_binary.state != ON)
                        zwave_device_6c898019_node13_switch_binary.sendCommand(ON)
        }
        if(now.getMinuteOfDay >= (05 * 60 + 00) || now.getMinuteOfDay <= (10 * 60 + 00)) {
                if(nState >= 5) {
        if(zwave_device_6c898019_node13_switch_binary.state != OFF)
                        zwave_device_6c898019_node13_switch_binary.sendCommand(OFF)
        }
        }
end

Re: Zeitangabe im rule wird nicht korrekt gelesen

Verfasst: 9. Okt 2021 20:46
von udo1toni
Du schreibst in Deiner Signatur, dass Du openHAB stable nutzt. Leider ist die Angabe so etwas ungenau. Anhand des "immer up-to-date" schließe ich aber auf openHAB3.1 als Version.

In openHAB3 steht getMinuteOfDay nicht zur Verfügung. Du musst minuteOfDay also berechnen, so:

Code: Alles auswählen

val minuteOfDay = now.getMinute + now.getHour * 60
und nun diese lokale Konstante verwenden.

Außerdem hast Du einen Logikfehler in der Rule. Die Rule soll abschalten, falls a größer 299 ODER kleiner als 601 ist. Dies trifft auf jede rationale Zahl zu. Vermutlich möchtest Du eher, dass die Zahl a zwischen 300 und 600 liegen muss, also a größer 299 UND a kleiner 601.

Re: Zeitangabe im rule wird nicht korrekt gelesen

Verfasst: 9. Okt 2021 21:00
von Boris099
Hallo Udo,

Ne ich bin noch auf 2.5.12 habe mir OH3 noch nicht zugetraut, mache ich wenn es draußen wieder dunkler wird :-)

Ich verwende da ein Beispiel von Dir, welches ich in einem anderen rule verwende, dort funktioniert es mit dem || hier in dieser Konstellation aber nur mit &&.

Also habe || mit && ersetzt, und jetzt macht er es richtig...
das ist für mich ein Kreuz mit den Klammern und den logischen Befehlen :?
Egal läuft jetzt wie gewünscht.

Bzgl. OH3 muß man da wirklich so besch... die getMinuteOfDay berechnen, oder geht das dann dort evtl. komplett anders und einfacher?
Das ist doch eine Verschlimmbesserung, sollte man bestrafen:-)

Re: Zeitangabe im rule wird nicht korrekt gelesen

Verfasst: 9. Okt 2021 21:07
von udo1toni
Ah.

Ich habe mein Posting noch ergänzt wegen des Logikfehlers, das habe ich erst im Nachgang gesehen.

Wäre gut, wenn Du Deine Signatur etwas konkretisieren könntest ;)