[SOLVED]Zeitangabe im rule wird nicht korrekt gelesen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

[SOLVED]Zeitangabe im rule wird nicht korrekt gelesen

Beitrag 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
Zuletzt geändert von Boris099 am 9. Okt 2021 21:11, insgesamt 1-mal geändert.
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Zeitangabe im rule wird nicht korrekt gelesen

Beitrag 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.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: Zeitangabe im rule wird nicht korrekt gelesen

Beitrag 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:-)
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Zeitangabe im rule wird nicht korrekt gelesen

Beitrag 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 ;)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten