Kleine Hilfestellung - Rule ignoriert &&

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

Kleine Hilfestellung - Rule ignoriert &&

Beitrag von Boris099 »

Hallo,

Ich bastele gerade an einem rule und das will einfach nicht wie ich will:-)
Das ist sicherlich meiner Unwissenheit geschuldet, ich denke ihr könnt mir sicher helfen?
Ich verwende in einer Zeile im rule && um somit Zeit und Sensorstatus mit "und" zu verknüpfen.
Das funktioniert nicht, der Status interessiert ihn nicht!
Momentan tut er einfach bei jeder Sensorstatus-Änderung die Lampe schalten.
Was mache ich falsch, verwende ich && falsch?

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) || now.getMinuteOfDay <= (08 * 60 + 30) && nState <= 3) {
                if(zwave_device_6c898019_node13_switch_binary.state != ON)
                        zwave_device_6c898019_node13_switch_binary.sendCommand(ON)
        }
        if(nState >= 5) {
            if(zwave_device_6c898019_node13_switch_binary.state != OFF)
                zwave_device_6c898019_node13_switch_binary.sendCommand(OFF)
        }
end
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Kleine Hilfestellung - Rule ignoriert &&

Beitrag von KellerK1nd »

Du musst dabei mehr Klammern.

Code: Alles auswählen

 if(((now.getMinuteOfDay >= (16 * 60 + 00)) || (now.getMinuteOfDay <= (08 * 60 + 30))) && (nState <= 3)) {
Hab das jetzt nur fix vom Handy aus geschrieben. Bitte nochmal genau prüfen.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

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

Re: Kleine Hilfestellung - Rule ignoriert &&

Beitrag von Boris099 »

Diese doof... Klammern 😀
Ich bin jetzt auch nicht Zuhause, teste es und gebe Feedback
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

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

Re: Kleine Hilfestellung - Rule ignoriert &&

Beitrag von Boris099 »

Also das funktioniert, Vielen Dank!

Nun versuche ich das gerade ähnlich in einem anderen rule und schon wieder kapier ich das nicht wirklich.
Im OH Log zwingt er mich eine dritte Klammer am Ende zu setzen - ist das denn richtig?

Code: Alles auswählen

if((now.getMinuteOfDay >= (16 * 60 + 00) && (nState <= 10))) {
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Kleine Hilfestellung - Rule ignoriert &&

Beitrag von KellerK1nd »

Bist du mit openHAB3 unterwegs? Mit openHAB3 gibt es das minuteOfDay nicht mehr, das muss man sich errechnen.

openHAB3 Regel:

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
    val Number getMinuteOfDay = (now.getHour * 60 + now.getMinute)

    if((((getMinuteOfDay) >= (16 * 60 + 00)) || ((getMinuteOfDay) <= (08 * 60 + 30))) && (nState <= 3)) {
        if(zwave_device_6c898019_node13_switch_binary.state != ON)
            zwave_device_6c898019_node13_switch_binary.sendCommand(ON)
    }
    if(nState >= 5) {
        if(zwave_device_6c898019_node13_switch_binary.state != OFF)
            zwave_device_6c898019_node13_switch_binary.sendCommand(OFF)
        }
end

Falls du noch mit openHAB2 unterwegs bist dann diese:

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)) || (now.getMinuteOfDay <= (08 * 60 + 30))) && (nState <= 3)) {
        if(zwave_device_6c898019_node13_switch_binary.state != ON)
            zwave_device_6c898019_node13_switch_binary.sendCommand(ON)
    }
    if(nState >= 5) {
        if(zwave_device_6c898019_node13_switch_binary.state != OFF)
            zwave_device_6c898019_node13_switch_binary.sendCommand(OFF)
        }
end
Kann sein das ich zu viel Klammern setze, nur so behalte ich leichter den Überblick, da ich jedes Item mit seinem Wert bei solchen Verschachtelungen klammere.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

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

Re: Kleine Hilfestellung - Rule ignoriert &&

Beitrag von Boris099 »

Du hast da was verwechselt.
Ich bin noch auf 2.5

Das erste Beispiel das du mir gestern gegeben hast, war richtig.
Meine zweite Frage ist eine leicht abgeänderte rule. Da benötige ich die zweite Zeitregel nicht.
Und dann sieht das auch mit den Klammern wieder anders aus.
OH Log will dann eine dritte Klammer am Ende.
Verstehe nicht genau wieso, ist die den notwendig?
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Kleine Hilfestellung - Rule ignoriert &&

Beitrag von int5749 »

Boris099 hat geschrieben: 24. Sep 2021 11:07 Verstehe nicht genau wieso, ist die den notwendig?
Zähl doch mal die Klammern

Code: Alles auswählen

if((now.getMinuteOfDay >= (16 * 60 + 00)) && (nState <= 10)) {
Hatte aber Kellerkind schon richtig geschrieben!!

4x Klammer auf, dann muss auch 4x Klammer zu ;-)

[falsches entfernt unf korrigiert]

Viele Grüße
Zuletzt geändert von int5749 am 24. Sep 2021 11:40, insgesamt 2-mal geändert.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Kleine Hilfestellung - Rule ignoriert &&

Beitrag von KellerK1nd »

Du hast da was verwechselt.
Ich bin noch auf 2.5
Darum habe ich ja zwei Fassungen geschrieben. ;) So hast du schonmal die Regel für openHAB3.

So sollte es gehen:

Code: Alles auswählen

if((now.getMinuteOfDay >= (16 * 60 + 00)) && (nState <= 10))
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

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

Re: Kleine Hilfestellung - Rule ignoriert &&

Beitrag von udo1toni »

Also, um ehrlich zu sein, sind viele der Klammern unnötig. Das wichtigste ist aber, dass für jede öffnende Klammer auch eine schließende Klammer gesetzt werden muss.
Klammern haben die höchste Priorität, ansonsten muss man schauen... ich bin mir nicht sicher, inwieweit diese Rangfolge korrekt ist, im Zweifel ist klammern sicher sinnvoll.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten