Rule für Badheizkörper soll nur 3 mal auslösen....

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Rule für Badheizkörper soll nur 3 mal auslösen....

Beitrag von PeterA »

Hallo,

nachfolgende Rule tut hier schon lange und zuverlässig ihren Dienst:

Code: Alles auswählen

rule "Shelly DG HK Bad Ein mit Nachlauf durch Badfeuchte"
when
    Item InnenDGBad_Hum changed
then
    if (Shelly1_04_DG_HK_Bad_Heater1.state!=ON) {                                 // Wenn nicht an, Abbruch
    logWarn("Heizung DG HK Bad","nicht Aktiv, Abbruch")
        return;
    }

    if ((us3000c_soc.state as Number) <= 30) {                                    // Wenn Akkuladestand zu niedrig, Abbruch
    logInfo("Heizung DG HK Bad","Ladestand Akku zu niedrig, Abbruch")
        return;
    }

    if ((ess_state.state as Number) == 5) {                                       // Wenn Akku entladen nicht Erlaubt, Abbruch
    logInfo("Heizung DG HK Bad","Akku Entladen nicht erlaubt, Abbruch")
        return;
    }
    
    if ((InnenDGBad_Hum.state as Number >= InnenDGBad_HumGrenzMax_Set.state as Number) && (Aussen_Temp.state as Number >= AussenGrenzMax3_Set.state as Number) && Shelly1_04.state==OFF) {
       Shelly1_04.sendCommand("ON")                                           // Heizung DH HK Bad EIN (Auto off 30min über Shelly direkt)
    logInfo("Heizung DG HK Bad","Aktiv durch Badfeuchte")
    sendBroadcastNotification("HK DG Bad Aktiviert durch Badfeuchte um: " + now.toString("HH:mm") + " Uhr") //Pushnachricht
    }
    
end
Im Prinzip wird ein Shelly geschaltet wenn die Außentemperatur hoch genug ist (denn dann ist die die Heizung aus)
und die Badfeuchte hoch genug ist (derzeit auf 75%).
Wenn der Shelly dann den Handtuchheizkörper eingeschaltet hat schaltet sich der Shelly nach 30min (off Timer im Shelly) wieder ab.
Sollte nun die Badfeuchte immer noch über 75% liegen wird der Shelly wieder geschaltet usw. usw. bis die Badfeuchte wieder unter 75% liegt.

Nun möchte ist das der Shelly maximal nur 3 mal Eingeschaltet werden kann so lange die Badfeuchte über dem eingestellten Sollwert liegt.

Wie kann diese Rule damit erweitert werden ? Es muss ja ein Zähler "rein". Der Abschalttimer soll wenn möglich im Shelly bleiben.

Gruß Peter
von udo1toni » 17. Jul 2024 08:27
Gut, dann wäre also ein Reset an dieser Stelle hinreichend:

Code: Alles auswählen

    if((InnenDGBad_Hum.state as Number) < (InnenDGBad_HumGrenzMax_Set.state as Number)) {  // Grenzwert 1 unterschritten
        iCount = 0                                                                         // Zähler zurücksetzen
        logDebug("Heizung DG HK Bad","Luftfeuchte schon unter Grenzwert, Abbruch")
        return;
    }
Gehe zur vollständigen Antwort
- OpenHab 2.4
#PWRUP

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

Re: Rule für Badheizkörper soll nur 3 mal auslösen....

Beitrag von udo1toni »

Na, eine globale Variable sollte reichen. Die Frage ist aber, wann resettest Du die Variable?

Code: Alles auswählen

var Integer iCount = 0

rule "Shelly DG HK Bad Ein mit Nachlauf durch Badfeuchte"
when
    Item InnenDGBad_Hum changed
then
    if(Shelly1_04_DG_HK_Bad_Heater1.state!=ON) {                                           // Wenn nicht an, Abbruch
        logWarn("Heizung DG HK Bad","nicht Aktiv, Abbruch")
        return;
    }

    if((us3000c_soc.state as Number) <= 30) {                                              // Wenn Akkuladestand zu niedrig, Abbruch
        logInfo("Heizung DG HK Bad","Ladestand Akku zu niedrig, Abbruch")
        return;
    }

    if((ess_state.state as Number) == 5) {                                                 // Wenn Akku entladen nicht Erlaubt, Abbruch
        logInfo("Heizung DG HK Bad","Akku Entladen nicht erlaubt, Abbruch")
        return;
    }
    
    if(Shelly1_04.state == ON) {                                                           // Heizung läuft schon
        logDebug("Heizung DG HK Bad","Shelly ist schon aktiv, Abbruch")
        return;
    }

    if((InnenDGBad_Hum.state as Number) < (InnenDGBad_HumGrenzMax_Set.state as Number)) {  // Grenzwert 1 unterschritten
        logDebug("Heizung DG HK Bad","Luftfeuchte schon unter Grenzwert, Abbruch")
        return;
    }

    if((Aussen_Temp.state as Number) < (AussenGrenzMax3_Set.state as Number)) {            // Grenzwert 2 unterschritten
        logDebug("Heizung DG HK Bad","Außentemperatur unter Grenzwert, Abbruch")
        return;
    }

    if(iCount > 2) (                                                                         // bereits dreimal geheizt
        logInfo("Heizung DG HK Bad","Maximale Anzahl überschritten, Abbruch")
        return;
    }

    Shelly1_04.sendCommand(ON)                                                             // Heizung DH HK Bad EIN (Auto off 30min über Shelly direkt)
    iCount += 1
    logInfo("Heizung DG HK Bad","Aktiv durch Badfeuchte")
    var strMessage = "HK DG Bad Aktiviert durch Badfeuchte um: "
    strMessage = strMessage + now.toString("HH:mm") + " Uhr. Dies ist der "
    strMessage = strMessage + iCount.toString + ". Heizvorgang."
    sendBroadcastNotification(strMessage)                                                  //Pushnachricht
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Rule für Badheizkörper soll nur 3 mal auslösen....

Beitrag von PeterA »

Die Rules soll ja erst Auslösen wenn die Badfeuchte über 75% und die Temperatur über 13 Grad liegt.
Ist die Bandfeuchte wieder unter 75% gefallen darf die Rule wieder auslösen.
- OpenHab 2.4
#PWRUP

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

Re: Rule für Badheizkörper soll nur 3 mal auslösen....

Beitrag von udo1toni »

Gut, dann wäre also ein Reset an dieser Stelle hinreichend:

Code: Alles auswählen

    if((InnenDGBad_Hum.state as Number) < (InnenDGBad_HumGrenzMax_Set.state as Number)) {  // Grenzwert 1 unterschritten
        iCount = 0                                                                         // Zähler zurücksetzen
        logDebug("Heizung DG HK Bad","Luftfeuchte schon unter Grenzwert, Abbruch")
        return;
    }
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Rule für Badheizkörper soll nur 3 mal auslösen....

Beitrag von PeterA »

"Kaum macht man's richtig, schon funktioniert's!" ;)

So sieht die Rule jetzt aktuell aus und tut genau was sie soll!

Vielen Dank Udo wieder einmal!

Code: Alles auswählen

rule "Shelly DG HK Bad Ein mit Nachlauf durch Badfeuchte 3mal"
when
    Item InnenDGBad_Hum changed
then
    if(Shelly1_04_DG_HK_Bad_Heater1.state!=ON) {                                           // Wenn nicht an, Abbruch
        logWarn("Heizung DG HK Bad","nicht Aktiv, Abbruch")
        return;
    }

    if((us3000c_soc.state as Number) <= 30) {                                              // Wenn Akkuladestand zu niedrig, Abbruch
        logInfo("Heizung DG HK Bad","Ladestand Akku zu niedrig, Abbruch")
        return;
    }

    if((ess_state.state as Number) == 5) {                                                 // Wenn Akku entladen nicht Erlaubt, Abbruch
        logInfo("Heizung DG HK Bad","Akku Entladen nicht erlaubt, Abbruch")
        return;
    }
    
    if(Shelly1_04.state == ON) {                                                           // Heizung läuft schon
        logInfo("Heizung DG HK Bad","Shelly ist schon aktiv, Abbruch")
        return;
    }

    if((InnenDGBad_Hum.state as Number) <= (InnenDGBad_HumGrenzMax_Set.state as Number)) { // Grenzwert 1 unterschritten
        iCount = 0                                                                         // Zähler zurücksetzen
        logInfo("Heizung DG HK Bad","Luftfeuchte schon unter Grenzwert, Abbruch")
        return;
    }

    if((Aussen_Temp.state as Number) <= (AussenGrenzMax3_Set.state as Number)) {            // Grenzwert 2 unterschritten
        logInfo("Heizung DG HK Bad","Außentemperatur unter Grenzwert, Abbruch")
        return;
    }

    if(iCount > 2) {                                                                        // bereits dreimal geheizt
        logInfo("Heizung DG HK Bad","Maximale Anzahl überschritten, Abbruch")
        return;
    }

    Shelly1_04.sendCommand(ON)                                                             // Heizung DH HK Bad EIN (Auto off 30min über Shelly direkt)
    iCount += 1
    logInfo("Heizung DG HK Bad","Aktiv durch Badfeuchte")
    var strMessage = "HK DG Bad Aktiviert durch Badfeuchte um: "
    strMessage = strMessage + now.toString("HH:mm") + " Uhr. Dies ist der "
    strMessage = strMessage + iCount.toString + ". Heizvorgang."
    sendBroadcastNotification(strMessage)                                                  //Pushnachricht
end
- OpenHab 2.4
#PWRUP

Antworten