Seite 3 von 4

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

Verfasst: 3. Dez 2020 10:04
von Boris099
Ah okay, das versuche ich

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

Verfasst: 3. Dez 2020 16:20
von Boris099
Also habe ich gemacht, aber nicht perfekt, da diese ZWAVE Dinger halt evtl. erst ne halbe Stunde später eine Luminance Änderung melden.
Alternativ habe ich versucht im When-Teil den Item.state abzufragen also

when
Item zwave_device_6c898019_node5_sensor_luminance.state <=4

aber das frisst er nicht, sowas geht wohl nicht im When-Teil?

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

Verfasst: 3. Dez 2020 16:56
von udo1toni
So ist es. der when-Teil ist ein Trigger, Du kannst auf changed triggern oder auf received update, aber nicht auf Status.
Zeig mal bitte Deine Rule, so wie sie jetzt ist.

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

Verfasst: 3. Dez 2020 17:07
von Boris099
So sieht das momentan aus

Code: Alles auswählen

rule "ZPIR_Kueche_Luminance changed"
when
      Item zwave_device_6c898019_node5_sensor_luminance changed
then
      if(now.getHourOfDay >= 15) {
        if(newState <= 3) {  // && previousState > 3) {
            if(zwave_device_6c898019_node10_switch_binary.state != ON) zwave_device_6c898019_node10_switch_binary.sendCommand(ON)
            if(Lampe_KuecheVitrine.state != ON) Lampe_KuecheVitrine.sendCommand(ON)
        }
      }
end

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

Verfasst: 3. Dez 2020 22:46
von udo1toni
Ah, ich glaube, ich verstehe, was Dein Problem ist... Die Helligkeit hat sich nicht verändert, aber die Uhrzeit-grenze wurde überschritten.

da musst Du einen zusätzlichen Trigger einbauen, der aber nicht an die Helligkeit gekoppelt ist, sondern an die Uhrzeit. So:

Code: Alles auswählen

rule "ZPIR_Kueche_Luminance changed"
when
      Item zwave_device_6c898019_node5_sensor_luminance changed or
      Time cron "0 0 15 * * ?"                                           // täglich um 15:00:00 Uhr
then
    if(now.getHourOfDay >= 15 && newState <= 3) {
        if(zwave_device_6c898019_node10_switch_binary.state != ON)
            zwave_device_6c898019_node10_switch_binary.sendCommand(ON)
        if(Lampe_KuecheVitrine.state != ON)
            Lampe_KuecheVitrine.sendCommand(ON)
    }
end
Die Rule triggert also bei Helligkeitsänderung UND um 15 Uhr. Ist es schon vor 15 Uhr dunkel genug, so triggert die Rule um 15 Uhr, die erste Bedingung ist erfüllt, die zweite Bedingung ist erfüllt -> es wird geschaltet. Ist es um 15 Uhr nicht dunkel genug, triggert die Rule um 15 Uhr aber es passiert bis zur Helligkeitsänderung nichts.

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

Verfasst: 3. Dez 2020 23:17
von Boris099
Wenn alles so einfach wäre wie du das mit der Logik erfasst.... Also echt great!!!

... aber was kann ich denn dafür daß es schon so früh dunkel wird, sonst hätten wir das Problem doch gar nicht, oder? Sonne, Sommer und kein Corona mehr

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

Verfasst: 4. Dez 2020 17:35
von Boris099
Also noch was Kleines:-)

Diese "doo..." ZWave PIRs tun einfach nicht so wie sie sollen, das liegt wohl einfach daran, dass ich die billigsten gekauft hatte...
Also die Luminance Werte dieser Dinger fallen Nachts, wenn länger auf "0" einfach "weg". Das heißt es wird kein Luminanz Wert angezeigt.
Vielleicht eine Energiesparfunktion - es lässt sich in der Config aber nicht beeinflussen. In HabMin steht dann "-"
Sobald der Luminanzwert wieder nennenswert steigt wachen die wieder auf, aber im Log seh ich z.B.

Code: Alles auswählen

2020-12-04 07:50:15.036 [vent.ItemStateChangedEvent] - zwave_device_6c898019_node2_sensor_luminance changed from NULL to 2
Kann ich diese "NULL" auch abfragen, und im rule verwenden?

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

Verfasst: 4. Dez 2020 19:06
von udo1toni
Ja, das ist kein Problem. Du kannst z.B. auf instanceof Number testen. Das bedeutet: der angegebene Wert ist vom Typ Number Bei NULL ist diese Aussage falsch, bei einem Zahlenwert ist die Aussage wahr. Für Deine Rule sähe das dann so aus:

Code: Alles auswählen

rule "ZPIR_Kueche_Luminance changed"
when
      Item zwave_device_6c898019_node5_sensor_luminance changed or
      Time cron "0 0 15 * * ?"                                           // täglich um 15:00:00 Uhr
then
    val nState = if(newState instanceof Number) newState else 0          // falls ein ungültiger Wert geliefert wird, wird 0 genommen
    if(now.getHourOfDay >= 15 && nState <= 3) {
        if(zwave_device_6c898019_node10_switch_binary.state != ON)
            zwave_device_6c898019_node10_switch_binary.sendCommand(ON)
        if(Lampe_KuecheVitrine.state != ON)
            Lampe_KuecheVitrine.sendCommand(ON)
    }
end
Alternativ, falls der Code einen Fehler schmeißt:

Code: Alles auswählen

rule "ZPIR_Kueche_Luminance changed"
when
      Item zwave_device_6c898019_node5_sensor_luminance changed or
      Time cron "0 0 15 * * ?"                                           // täglich um 15:00:00 Uhr
then
    var nState = 0 
    if(newState instanceof Number) nState = newState                     // falls ein ungültiger Wert geliefert wird, wird 0 genommen
    if(now.getHourOfDay >= 15 && nState <= 3) {
        if(zwave_device_6c898019_node10_switch_binary.state != ON)
            zwave_device_6c898019_node10_switch_binary.sendCommand(ON)
        if(Lampe_KuecheVitrine.state != ON)
            Lampe_KuecheVitrine.sendCommand(ON)
    }
end
der Unterschied zwischen beiden Varianten: Bei der ersten variante reicht eine lokale Konstante, die über den ternären Operator mit dem Alternativwert gefüllt wird, bei der zweiten Variante muss es eine lokale Variable sein.

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

Verfasst: 4. Dez 2020 22:10
von Boris099
Oh Mann:-} Vielen Dank
Ich gebe Feedback

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

Verfasst: 5. Dez 2020 14:14
von Boris099
Also ich habe das erste Beispiel eingestellt, hat er direkt genommen, keine Warnung oder Fehler!
Jetzt muss ich bis morgen früh abwarten, bis der Sensor nochmal diesen "Blank" Wert angenommen hat.

EIne Frage drängt sich mir auf, wieso weiß das rule zu welchem device "newstate" gehört,
einfach weil nur ein device im when-Teil angesprochen ist?