Infrarot Heizung über Temperatur und Zeit regeln

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Torti
Beiträge: 40
Registriert: 24. Mär 2019 09:42
Answers: 0

Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von Torti »

Hallo, ich habe mir für mein Gäste WC eine Infrarot Heizung in Form eines Spiegels gekauft. (Platzsparen da nur 1m auf 1m)
ich habe diesen Spiegel über einen Sonoff mit Temp Sensor dht22 ins openhab eingebunden. Läuft Prima!
Bislang kann ich den Sonoff mit einer Regel steuern, er geht bei unter 18 Grad an und bei über 21,5 Grad aus.
Nun würde ich gerne das Nachts, 22:30 Uhr bis 5:30 Uhr, der Sonoff erst bei 16 Grad an geht und bei 20 wieder aus.
Hier meine bisherige Regel:

Code: Alles auswählen

rule "Temperatur Bad"
    when
        Item TempToi changed
    then
        if((TempToi.state as Number).floatValue >= 21.5)  {
            sendCommand(SwitchToi ,OFF)
        }
    else if ((TempToi.state as Number).floatValue <= 18)  {
            sendCommand(SwitchToi ,ON)
    }
    end
Ich habe aber noch nie eine Zeitsteuerung geregelt.

violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von violine21 »

Hallo,
wie immer führen mehrere Wege nach Rom.
Du könntest mit zwei Rules und Timecron arbeiten.
Oder z.B. so:

Code: Alles auswählen

rule "Temperatur Bad"
    when
        Item TempToi changed
    then
        if(now.getMinuteOfDay >= 1350 || now.getMinuteOfDay <= 330) {
            if((TempToi.state as Number).floatValue >= 20)  {
            sendCommand(SwitchToi ,OFF)
            }
            else if ((TempToi.state as Number).floatValue <= 16)  {
            sendCommand(SwitchToi ,ON)
            }
        }else{
            if((TempToi.state as Number).floatValue >= 21.5)  {
            sendCommand(SwitchToi ,OFF)
            }
            else if ((TempToi.state as Number).floatValue <= 18)  {
            sendCommand(SwitchToi ,ON)
            }
        }    
    end
Hier wird geprüft, ob die Minute des Tages >= 1350 (22:30 = 22 * 60 + 30) oder ob die Minute des Tages <= 330 (5:30 = 5 * 60 + 30).
Es gibt sicher noch andere Möglichkeiten...

Torti
Beiträge: 40
Registriert: 24. Mär 2019 09:42
Answers: 0

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von Torti »

Hallo, Danke für diese schnelle Antwort.
Ja es führen immer sehr viele Wege zum Ziel, wenn man diese kennt ;-)
Deine Lösung erscheint mir aber schön einfach und somit auf mich angepasst :mrgreen: , diese verstehe ich wenigstens.
Gleich antwortet dann bestimmt Udo und Peter Pan und danach bin ich wieder vollends verwirrt, deswegen setze ich deine Lösung erst einmal um.
Dannnkkeee

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

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von udo1toni »

Wenn Du mehrere tageszeitabhängige Regeln hast, kannst Du auch ein Item definieren, welches Du entsprechend umstellst. In den eigentlichen Rules musst Du dann nur den Status des Items abfragen. Du kannst natürlich auch direkt die Sollwerte entsprechend setzen.
Items:

Code: Alles auswählen

Switch isNight
Number tempMin
Number tempMax

Code: Alles auswählen

rule "Nacht"
when
    Time cron "0 30 22 * * ?" // täglich 22:30 
then
    isNight.postUpdate(ON)
    tempMin.postUpdate(16)
    tempMax.postUpdate(20)
end

rule "Tag"
when
    Time cron "0 30 5 * * ?" // täglich 05:30 
then
    isNight.postUpdate(OFF)
    tempMin.postUpdate(18)
    tempMax.postUpdate(21.5)
end

rule "Heizung Bad" 
when
    Item TempToi changed
then
    val Number nTemp = if(TempToi.state instanceof Number) (TempToi.state as Number).floatValue else 18.5
    val Number nMax = if(tempMax.state instanceof Number) (tempMax.state as Number) else 20
    val Number nMin = if(tempMin.state instanceof Number) (tempMin.state as Number) else 16

    if(nTemp <= nMin && SwitchToi.state != ON) SwitchToi.sendCommand(ON)
    else if(nTemp >= nMax && SwitchToi.state != OFF) SwitchToi.sendCommand(OFF)
end
Das Item isNight habe ich nur zur Verdeutlichung eingebaut, wenn Du nichts damit anfangen kannst, brauchst Du es nicht. Es wechselt halt jeweils um 22:30 und 05:30 seinen Zustand.
Die Rule "Heizung Bad" ist fehlertolerant gegen die üblichen Probleme, also dass Ober/Untergrenze nicht definiert wurden oder der Temperatursensor mal keinen gültigen Wert liefert, indem bei Fehlen eines Wertes ein default Wert verwendet wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von violine21 »

Torti hat geschrieben: 22. Mai 2020 12:00 Gleich antwortet dann bestimmt Udo und Peter Pan und danach bin ich wieder vollends verwirrt...
:lol:
Darum schrieb ich, das es mehrere Wege gibt...

Torti
Beiträge: 40
Registriert: 24. Mär 2019 09:42
Answers: 0

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von Torti »

Als ob ich es gewusst habe.
Dieses mal habe ich aber verstanden was du geschrieben hast @ Udo1Toni
Entweder liegt es daran, dass ich viel von dier lese( auch in anderen Foren) oder du immer mehr auch für Dumme erklärst.
Ich will KEINE ehrliche Antwort :-)
vielen Dank auch an dich

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

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von udo1toni »

Torti hat geschrieben: 22. Mai 2020 12:12 Als ob ich es gewusst habe.
Dieses mal habe ich aber verstanden was du geschrieben hast @ Udo1Toni
Entweder liegt es daran, dass ich viel von dier lese( auch in anderen Foren) oder du immer mehr auch für Dumme erklärst.
Ich will KEINE ehrliche Antwort :-)
vielen Dank auch an dich
Es mag auch am Beispielcode liegen, in diesem Fall ist es ja doch ein eher einfaches Problem ;)

Und dann kommt es sehr auf meine Tagesverform an, ob ich es schaffe, einfach genug zu beschreiben.
Wenn jemand was nicht versteht, liegt es vermutlich eher an meinem Unvermögen, es verständlich zu erklären, als am fehlenden Intellekt des Lesers. Ich bin halt kein Lehrer :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Torti
Beiträge: 40
Registriert: 24. Mär 2019 09:42
Answers: 0

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von Torti »

udo1toni hat geschrieben: 22. Mai 2020 12:02
[/code]
if(nTemp <= nMin && SwitchToi.state != ON) SwitchToi.sendCommand(ON)
else if(nTemp >= nMax && SwitchToi.state != OFF) SwitchToi.sendCommand(OFF)
end
[/code]
Eine Frage zu der Zitierten Zeile habe ich noch.
Wenn das Item switchtoi an ist, warum sende ich dann noch mal an und umgekehrt?
Ich verstehe ja, dass es an sein soll um die nMin zu erreichen aber wenn es doch schon state =ON ist, ist es doch an ??? :?:
Danke
P.S. du erklärst das alles super

bastler
Beiträge: 121
Registriert: 7. Jan 2020 19:36
Answers: 2

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von bastler »

darf ich mal probieren?

Code: Alles auswählen

 != ON
das ist nicht an, durch das ausrufezeichen wird die abfrage invertiert, heißt also "wenn SwitchToi.state NICHT ON ist soll er eingeschaltet werden ;)

Torti
Beiträge: 40
Registriert: 24. Mär 2019 09:42
Answers: 0

Re: Infrarot Heizung über Temperatur und Zeit regeln

Beitrag von Torti »

AHHHHHHHH, Wieder schlauer und meinem Ziel einmal eine Regel bis zum Ende selber schreiben etwas näher ;-)

Antworten