[SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: [SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Beitrag von Boris099 »

Hier habe ich nun eine Motion rule, bei dem ich das gleiche Problem mit dem "Blank" Luminance Wert über Nacht habe.
Ich habe versucht die gleiche Logik einzubauen, jedoch bezieht sich "nstate" ja nicht auf dieses device, somit wirft er mir eine Warnung im Log:

Code: Alles auswählen

Validation issues found in configuration model 'ZPIR_Wohn_Motion.rules', using it anyway:

The value of the local variable nState is not used
Wie muß ich da den Bezug herstellen?

Das rule

Code: Alles auswählen

// Globale Variablen
var Timer Wohn_Timer = null             // Timer für autoamtische Abschaltung Licht Wohn PIR

// Globale Konstanten
val Integer Wohn_TimeOut = 360          // Timeout (hier z.B. 6 Minuten oder 360 Sek) unten verwendet

rule "ZPIR_Wohn_Motion changed"
when
    Item zwave_device_6c898019_node3_alarm_motion received update ON                    //ZPIR3 Wohn
then
    if (now.getMinuteOfDay >= (6 * 60 + 45) && now.getMinuteOfDay <= (8 * 60 + 30)) {   //zwischen 6.45h und 8.30h
        val nState = if(newState instanceof Number) newState else 0                     // falls ein ungültiger Wert geliefert wird, wird 0 genommen
        if(zwave_device_6c898019_node3_sensor_luminance.state <=5) {
            Wohn_Timer?.cancel                                                          //Timer abbrechen, unten Neustart
            if(zwave_device_6c898019_node9_switch_binary.state != ON)
                zwave_device_6c898019_node9_switch_binary.sendCommand(ON)
            if(Lampe_SonneKlein.state != ON)
                Lampe_SonneKlein.sendCommand(ON)
            if(Lampe_WohnEckregal.state != ON)
                Lampe_WohnEckregal.sendCommand(ON)

            Wohn_Timer = createTimer(now.plusSeconds(Wohn_TimeOut), [|                  //Wohn Licht Timer
            if(zwave_device_6c898019_node9_switch_binary.state != OFF)
                zwave_device_6c898019_node9_switch_binary.sendCommand(OFF)
            if(Lampe_SonneKlein.state != OFF)
                Lampe_SonneKlein.sendCommand(OFF)
            if(Lampe_WohnEckregal.state != OFF)
                Lampe_WohnEckregal.sendCommand(OFF)
            ])
        }
    }
end
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: [SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Beitrag von Boris099 »

Ist das so korrekt?
Das Log hält still :-)

Code: Alles auswählen

// Globale Variablen
var Timer Wohn_Timer = null             // Timer für autoamtische Abschaltung Licht Wohn PIR

// Globale Konstanten
val Integer Wohn_TimeOut = 360          // Timeout (hier z.B. 6 Minuten oder 360 Sek) unten verwendet

rule "ZPIR_Wohn_Motion changed"
when
    Item zwave_device_6c898019_node3_alarm_motion received update ON                    //ZPIR3 Wohn
then
    if (now.getMinuteOfDay >= (6 * 60 + 45) && now.getMinuteOfDay <= (8 * 60 + 30)) {   //zwischen 6.45h und 8.30h
        val nState = if(zwave_device_6c898019_node3_sensor_luminance.state instanceof Number) zwave_device_6c898019_node3_sensor_luminance.state else 0
        if(nState <=5) {
            Wohn_Timer?.cancel                                                          //Timer abbrechen, unten Neustart
            if(zwave_device_6c898019_node9_switch_binary.state != ON)
                zwave_device_6c898019_node9_switch_binary.sendCommand(ON)
            if(Lampe_SonneKlein.state != ON)
                Lampe_SonneKlein.sendCommand(ON)
            if(Lampe_WohnEckregal.state != ON)
                Lampe_WohnEckregal.sendCommand(ON)

            Wohn_Timer = createTimer(now.plusSeconds(Wohn_TimeOut), [|                  //Wohn Licht Timer
            if(zwave_device_6c898019_node9_switch_binary.state != OFF)
                zwave_device_6c898019_node9_switch_binary.sendCommand(OFF)
            if(Lampe_SonneKlein.state != OFF)
                Lampe_SonneKlein.sendCommand(OFF)
            if(Lampe_WohnEckregal.state != OFF)
                Lampe_WohnEckregal.sendCommand(OFF)
            ])
        }
    }
end
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

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

Re: [SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Beitrag von udo1toni »

newState ist eine implizite Variable. Diese wird bei changed mit dem neuen Wert des Items gesetzt, welches die Rule getriggert hat.
Wenn eine Rule mehrere Items als Trigger nutzt, muss man das triggernde Item über triggeringItem ermitteln, eine weitere implizite Variable. newState ist hier halt viel kürzer als der absurde Itemname... ;)

nState wiederum ist eine lokale Variable, bzw in der ersten Variante eine lokale Konstante. Wenn die Rule abgelaufen ist, existiert sie nicht länger...
Zu Deiner Rule kann ich grade nichts sagen, das ist am Telefon fehlerträchtig.

Gesendet von meinem SM-G973F mit Tapatalk

openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

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

Re: [SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Beitrag von udo1toni »

So, jetzt vom PC...

Rule sieht gut aus. Allerdings... da es hier ja um drei Items geht, lohnt sich ein Group Item. Nehmen wir an, Du legst ein Group Item vom Typ Switch an, mit dem Namen gWohnMotion und ordnest die drei Items diesem Group Item zu, dann kannst Du alle drei Items so schalten:

Code: Alles auswählen

gWohnMotion.members.filter[i|i.state != ON].forEach[j|j.sendCommand(ON)]
Das Gruppenitem wird als Liste abgerufen (.members) und nach Items gefiltert, deren Status nicht ON ist - das entspricht dem if(). Das Ergebnis ist wieder eine Liste. Nun wird für jedes Item der Liste der Befehl ON gesendet. Die Liste kann auch 0 Items enthalten, dann wird halt kein einziges ON gesendet (also wie bisher).
Die gleiche Zeile (nur jeweils mit OFF) kannst Du auch in den Timer packen...
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: [SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Beitrag von Boris099 »

Das muss ich erst mal verdauen:-) Einfach ist das nicht... Oder
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

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

Re: [SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Beitrag von udo1toni »

:)
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: [SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Beitrag von Boris099 »

Da kommt ein Fehler hoch wenn der Schalter durch den Motion Sensor aktiviert wird. Versteh ich nicht sieht doch alles gut aus!

Code: Alles auswählen

 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'ZPIR_Wohn_Motion changed': Unknown variable or command '<='; line 13, column 12, length 11
Das bezieht sich auf die Zeile mit dem <= 5, was soll da denn falsch sein?

Code: Alles auswählen

 val nState = if(zwave_device_6c898019_node3_sensor_luminance.state instanceof Number) zwave_device_6c898019_node3_sensor_luminance.state else 0
 if(nState <= 5) {
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: [SOLVED] Bei Luminanz Wert xx Switch ON und um yy Uhr OFF

Beitrag von Boris099 »

OK Problem gelöst,
ich habe dein 2. Beispiel genommen und das funktioniert (also mit der lokalen Variablen)
Das bedeutet das 1. Beispiel kann OH nicht sauber interpretieren!
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Antworten