[Gelöst] Abbruch oder GOTO in Regel ?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
Steinspiel
Beiträge: 394
Registriert: 28. Dez 2019 08:49
Answers: 2

[Gelöst] Abbruch oder GOTO in Regel ?

Beitrag von Steinspiel »

Moin,

Mit viel Hilfe von hier aus dem Forum habe ich "meine" erste Bewegungsmelder Regel fertig. Dachte ich ... :-(

Die Regel funktioniert soweit: reagiert der Bewegungsmelder schaltet die Lampe, ja nach Uhrzeit, für 20 sekunden an und dimmt auf 10%, anschließend auf 0%.
Soweit ist alles OK.
Aber, IST die Lampe schon an (weil man sie z.B. per Sprache eingeschaltet hat) und löst der Bewegungsmelder aus, dimmt sie sich auch auf 10% und anschließend auf 0%...

Nun habe ich versucht mir eine Abfrage zu basteln, das, wenn die Lampe schon AN ist ein Abbruch erfolgt

Code: Alles auswählen

        if(Flur2_Dimmen.state == ON) {
                return;
        }
Aber das funktioniert nicht, die eingeschaltette Lampe dimmt dann trotzdem auf 0% runter.

Kann mir jemand sagen wie ich das bewerkstelligen kann das bei schon eingeschaltetter Lampe die Regel nicht ausgeführt wird bzw. ähnlich wie GOTO auf END gesprungen wird?

mein rules

Code: Alles auswählen

var Timer tBewegung = null                                                              // Timervariable global definieren


rule "Nachtlicht"

when
        Item Bew_Sens_Presence changed to ON                                            // Bewegung erkannt
        
then
        tBewegung?.cancel   
                                                                                         // zunächst eventuell laufende Timer entfernen
//das ist meine Abfrage ANFANG
        if(Flur2_Dimmen.state == ON) {
                return;
        }
//das ist meine Abfrage ENDE


        if(OffsetBewegungsmelder.state == 2)                                            // Offset nach "2" abgefragt    


        {
          
              sendCommand(Flur2_Dimmen, 10)                                             // Flur_2 auf 10% Dimmen, Ein

                tBewegung = createTimer(now.plusSeconds(20), [ |                        // Timer anlegen
                
                sendCommand(Flur2_Dimmen, 0)                                            // Flur_2 auf 0% Dimmen, Aus
                        tBewegung = null                                                // Timervariable deinitialisieren

        ])

        }
end
schönen Abend noch...
von Steinspiel » 12. Jan 2020 20:43
Moin,

Ich hätte mit der Frage etwas warten sollen! Im Log habe ich gesehen das das Item "Flur2_Dimmen" gar nicht ON / OFF schaltet sondern nur in Prozent Dimmt!

Code: Alles auswählen

Flur2_Dimmen changed from 0 to 10
Das richtige Item in die Regel gesetzt und sie wird bei angeschalteter "Flur2_Dimmen" auch abgebrochen.

Code: Alles auswählen

Flur2_an_aus changed from OFF to ON
Danke,
Gehe zur vollständigen Antwort
bis dann, Steinspiel

Benutzeravatar
Steinspiel
Beiträge: 394
Registriert: 28. Dez 2019 08:49
Answers: 2

Re: [Gelöst] Abbruch oder GOTO in Regel ?

Beitrag von Steinspiel »

Moin,

Ich hätte mit der Frage etwas warten sollen! Im Log habe ich gesehen das das Item "Flur2_Dimmen" gar nicht ON / OFF schaltet sondern nur in Prozent Dimmt!

Code: Alles auswählen

Flur2_Dimmen changed from 0 to 10
Das richtige Item in die Regel gesetzt und sie wird bei angeschalteter "Flur2_Dimmen" auch abgebrochen.

Code: Alles auswählen

Flur2_an_aus changed from OFF to ON
Danke,
bis dann, Steinspiel

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

Re: [Gelöst] Abbruch oder GOTO in Regel ?

Beitrag von udo1toni »

Du musst nicht ein 2. Item anlegen. Mögliche (sinnvolle) changed Trigger für Dimmer Items:

Code: Alles auswählen

rule "Dimmer Item Test"
when
    Item MyDimmer changed from 0 or // entspricht from OFF to ON
    Item MyDimmer changed to 0 // entspricht from ON to OFF
then
    ...
end
Natürlich kann man auch changed ohne weitere Angaben oder received update verwenden und mit dem Itemstatus über if() eingrenzen, wie die Rule reagieren soll.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten