Rule für Dämmerung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Rule für Dämmerung

Beitrag von hulda »

Problem:
wie kann ich es lösen wenn der Hauptschalter"automatik_sd03" geschalten ist und der
Daemmerungswerteinstellen_sd03 Wert kleiner als der" Daemmerungswert "
die Steckdose Sd_03_EZ01_2OG geschalten wird.
Ansonsten soll dann einfach alles aus gehen.
Später soll nach der eingestellten Uhrzeit "uhrzeit_schalten_sd03" alles aus geschalten werden.(dafür habe ich noch gar keinen Plan)

Gruß Dirk



Items

Code: Alles auswählen

Number                uhrzeit_schalten_sd03
Switch                Sd_03_EZ01_2OG  
Number                Daemmerungswerteinstellen_sd03  
 Number                Daemmerungswert 
Switch                automatik_sd03                 
rule

Code: Alles auswählen

rule "Dämmerungsschalter Fenster Esszimmer"
when
Item Daemmerungswert received update 

then

if (automatik_sd03.state != ON)
{
   if (Daemmerungswert.state <= Daemmerungswerteinstellen_sd03.state as Number)
   
       Sd_03_EZ01_2OG.postUpdate(ON) 
       
       else{
     Sd_03_EZ01_2OG.postUpdate(OFF) 
}
}
else{
     Sd_03_EZ01_2OG.postUpdate(OFF) 
}

end

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

Re: Rule für Dämmerung

Beitrag von int5749 »

hulda hat geschrieben: 3. Dez 2021 10:58 Problem:
wie kann ich es lösen wenn der Hauptschalter"automatik_sd03" geschalten ist und der
Daemmerungswerteinstellen_sd03 Wert kleiner als der" Daemmerungswert "
die Steckdose Sd_03_EZ01_2OG geschalten wird.
Ansonsten soll dann einfach alles aus gehen.
Später soll nach der eingestellten Uhrzeit "uhrzeit_schalten_sd03" alles aus geschalten werden.(dafür habe ich noch gar keinen Plan)
Also ich fange mal mit meinem Problem an, denn ich habe die Anforderung mit der Rule noch nicht verstanden. :oops:

1) Du möchtest etwas ausführen, wenn ein Schalter = ON ist. Fragst aber
!= ON
ab, was ein nicht ON ist
2) Du schreibst Daemmerungswerteinstellen_sd03 Wert kleiner als der" Daemmerungswert " fragst dies aber anders herum ab. Hier passt -mein Verständnis - Anforderung und Umsetzung nicht. Da aber der Wert Daemmerungswert wäre es sogar richtig umgesetzt :)
3) Zudem hattest Du noch einen Code-Fehler, es fehlen einige Klammern.
4) Ich habe den Code mit etwas Formatierung/Einrücken der Bausteine eine - zumindest für mich - übersichtliche Formatierung erstellt.

Versuch einmal wie folgt

Code: Alles auswählen

rule "Dämmerungsschalter Fenster Esszimmer"
when
    Item Daemmerungswert received update 
then
    if (automatik_sd03.state == ON) {
        if (Daemmerungswert.state <= Daemmerungswerteinstellen_sd03.state as Number) {
            Sd_03_EZ01_2OG.postUpdate(ON)
        } else {
            Sd_03_EZ01_2OG.postUpdate(OFF)
        }
    } else {
        Sd_03_EZ01_2OG.postUpdate(OFF)
    }
end
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Rule für Dämmerung

Beitrag von peter-pan »

Hab auch nicht alles verstanden, aber könnte es sein, das die Regel, dann eingesetzt werden soll, wenn die Automatik nicht läuft ???
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Re: Rule für Dämmerung

Beitrag von hulda »

so passt es...

Code: Alles auswählen

rule "Dämmerungsschalter Fenster Esszimmer"
when
    Item Daemmerungswert received update or  //wenn eins von beiden ausgelöst
    Item automatik_sd03 received update
then
    if (automatik_sd03.state == ON) {   //wenn der Schalter auf ein steht
        if (Daemmerungswert.state <= Daemmerungswerteinstellen_sd03.state as Number) {  //wenn der Daemmerungswert kleiner ist als Daemmerungswerteinstellen_sd03
            Sd_03_EZ01_2OG.postUpdate(ON)  //dann Steckdose ein
        } else {
            Sd_03_EZ01_2OG.postUpdate(OFF)  //ansonsten Steckdose aus
        }
    }
end
wie kann man die Steckdose Sd_03_EZ01_2OG
nach dieser eingestellten Zeit "uhrzeit_schalten_sd03" ausschalten?

oder ist es viel einfacher es mit einer weiteren Rule einfach so zu machen?

Code: Alles auswählen

rule "Dämmerungsschalter Fenster Esszimmer aus"
when
    Time cron "0 0 21 * * ?"                                                                  // täglich um 21 Uhr
                                               
then
    Sd_03_EZ01_2OG.postUpdate(OFF)                                                            
                                                                                 
end

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

Re: Rule für Dämmerung

Beitrag von int5749 »

Kleiner Tipp, Du solltest sendCommand() nutzen, anstatt postUpdate. Denn nur das sendet (wie das wort sagt) ein Kommando und forciert so einen Statuswechsel. In vielen Fällen funktioniert zwar ein postUpdate() aber ein Command ist sicherer für den Status.

Auch könntest Du den Status abfragen bevor Du unnötigerweise ein erneutes Kommando sendest.
Beispiel aus Deiner Rule

Code: Alles auswählen

        } else {
            if (Sd_03_EZ01_2OG == ON)
                  Sd_03_EZ01_2OG.sendCommand(OFF)  //ansonsten Steckdose aus
        }
Dies sendet ein OFF nur, wenn die Lampe/Steckdose eingeschaltet ist.
PS: Geht natürlich auch anders herum für das einschalten.

Ob Du nun mit einem Timer in der Rule arbeitest oder eine separate Rule nutzen möchtest um dies unabhängig zu schalten, obliegt Deinen Anforderungen. Wenn Du das item auch ausserhalb der Rule schalten kannst, ist eine separate Rule ggfs sicherer um das item zum gewünschtem Zeitpunkt immer auszuschalten. Wenn das Item nur und ausschließlich in der Rule geschaltet würde, könnte man mit einem Timer arbeiten.

Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Re: Rule für Dämmerung

Beitrag von hulda »

peter-pan hat geschrieben: 3. Dez 2021 13:18 Hab auch nicht alles verstanden, aber könnte es sein, das die Regel, dann eingesetzt werden soll, wenn die Automatik nicht läuft ???
nein umgedreht.. wenn automatik dann soll die Regel eingesetzt werden.
Also wie ein Hauptschalter

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Rule für Dämmerung

Beitrag von peter-pan »

Dann passt das ja, was @int5749 vorschlägt.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Rule für Dämmerung

Beitrag von int5749 »

Eine Idee für eine Abschaltung um 21 Uhr wäre

Code: Alles auswählen

var Timer tLightsDusk = null     // dies muss nach ganz oben in der Rules Datei

rule "Dämmerungsschalter Fenster Esszimmer"
when
    Item Daemmerungswert received update or  //wenn eins von beiden ausgelöst
    Item automatik_sd03 received update
then
    if ((automatik_sd03.state == ON) && (Sd_03_EZ01_2OG.state == OFF)) {   //wenn der Schalter auf ein steht und die Steckdose noch aus ist
        if (Daemmerungswert.state <= Daemmerungswerteinstellen_sd03.state as Number) {  //wenn der Daemmerungswert kleiner ist als Daemmerungswerteinstellen_sd03
            Sd_03_EZ01_2OG.sendCommand(ON)  //dann Steckdose ein
            tLightsDusk?.cancel
            tLightsDusk = createTimer(now.plusMinutes(Duration.between(LocalTime.now, LocalTime.now.withHour(21).withMinute(0)).toMinutes()),[|
                Sd_03_EZ01_2OG.sendCommand(OFF)  //ansonsten Steckdose aus
            ])
        }
    }
end
Aber dies ist ungetestet und nur ein Weg nach Rom.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Re: Rule für Dämmerung

Beitrag von hulda »

Hallo,
erst einmal vielen Dank für deine Mühen...
ich habe es mal ausprobiert. Aber irgendwie verstehe ich das nicht.
Muß nicht noch eine Zeit rein ab wann die Steckdose überhaupt wieder eingeschaltet werden darf? z.B 10 uhr oder wenn es wieder Hell geworden ist?

Gruß Dirk

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

Re: Rule für Dämmerung

Beitrag von int5749 »

hulda hat geschrieben: 7. Dez 2021 08:29 ich habe es mal ausprobiert. Aber irgendwie verstehe ich das nicht.
Hat es denn funktioniert??
hulda hat geschrieben: 7. Dez 2021 08:29 Muß nicht noch eine Zeit rein ab wann die Steckdose überhaupt wieder eingeschaltet werden darf? z.B 10 uhr oder wenn es wieder Hell geworden ist?
Müssen muß es nicht und war von Dir auch ncht angegeben. Du kannst die Steckdose quasi direkt wieder einschalten, wenn Du magst.
Es wird ja "nur" geschaltet, nichts gesperrt.

Viele Grüße und einen guten Start in den Tag.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Antworten