Hallo Zusammen,
ich möchte mich bei Euch bedanken, Rule und ich werden sicher keine Freunde! Bisher läuft die Rule ohne Probleme! Udo an den Temperaturstufen bin ich interessiert, würde das eventuell via Alexa auch funktionieren Alex Temperatur auf 22 Grad oder Alexa Frostschutz?
Danke vG. Isostar1101
Regel erweitern
- udo1toni
- Beiträge: 15248
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Regel erweitern
Mit Alexa hab ich nichts am Hut, keine Ahnung, was da zur Verfügung steht.
Als Beispiel, wie man das mit mehreren Modi umsetzen kann:
Als Beispiel, wie man das mit mehreren Modi umsetzen kann:
Code: Alles auswählen
// item für Modus
Number MilaHeizModus "Heizmodus [MAP(modus.map):%s]"
Code: Alles auswählen
// modus.map:
0=OFF
1=Frostschutz
2=Nachtabsenkung
3=Komfort
-=-0
Code: Alles auswählen
// globale Variablen werden zu Beginn der Datei definiert
var Boolean bKomfort_01 = false // Merker für Timer-Aktivierung
var Timer tKomfort_01 = null // Timer für Rückschaltung auf Nachtabsenkung
var Number nOldMilaHeizModus
rule "Heizung an"
when
Time cron "0 15 5 * * ?" or // täglich 05:15 Uhr
Time cron "0 0 19 * * ?" // täglich 19:00 Uhr
then
bKomfort_01 = true // Komfort über Zeit aktiv
MilaHeizModus.postUpdate(3) // Komfort ein
logInfo("heat","Komfort ein auf Zeit")
end
rule "Heizung aus"
when
Time cron "0 30 6 * * ?" or
Time cron "0 0 23 * * ?"
then
bKomfort_01 = false // Komfort über Zeit inaktiv
MilaHeizModus.postUpdate(2) // Komfort ein
logInfo("heat","Komfort aus auf Zeit")
end
rule "Heizung bei Bewegung"
when
Item FF_Kinderzimmer_Bewegungsmelder changed to ON
then
nOldMilaHeizModus = if(MilaHeizModus.state instanceof Number) (MilaHeizModus.state as Number) else 2
tKomfort_01?.cancel // Timer canceln
if(bKomfort_01) return; // falls Komfort über Zeit aktiv, Rule Ende
tKomfort_01 = createTimer(now.plusMinutes(15),[| // Timer für Abschaltung anlegen
MilaHeizModus.postUpdate(nOldMilaHeizModus) // alten Modus wählen
logInfo("heat","Komfort aus nach Bewegung")
])
MilaKomfort.postUpdate(3) // Komfort ein
logInfo("heat","Komfort ein nach Bewegung")
end
rule "Mila Heizung"
when
Item MilaHeizModus changed or // Modus geändert
Item FF_Kinderzimmer_Temperatur changed // Temperatur geändert
then
var Number nSoll
var Number nMode = 2
if(MilaKomfort.state instanceof Number) nMode = MilaKomfort.state as Number
switch (nMode.intValue)
case 0: nSoll = -20 // AUS
case 1: nSoll = 7 // Frotschutz
case 3: nSoll = 21 // Komfort
default: nSoll = 19 // default -> jeder andere Wert -> Nachtabsenkung
}
var Heizung = OFF // Standard ist Heizung aus
var Number nTemp = 21 // Standard Raumtemperatur ist 21
if(FF_Kinderzimmer_Temperatur.state instanceof Number)
nTemp = FF_Kinderzimmer_Temperatur.state as Number // setze reale Temperatur
if(nTemp < nSoll) Heizung = ON // falls reale Temperatur unter Solltemperatur Heizung ein
if(FF_Kinderzimmer_Heizung.state != Heizung) // Sollstatus setzen, falls abweichend
FF_Kinderzimmer_Heizung.sendCommand(Heizung)
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 55
- Registriert: 18. Sep 2018 17:43
Re: Regel erweitern
Guten Tag und Danke,
ich hatte heute gesehen das die Heizung um 10 Uhr angegangen ist ohne das Bewegung im Zimmer war, die Regel wurde durch die Temperatur unter 19Grad ausgelöst! Die neue Rule von Udo habe ich noch nicht am Start!
ich hatte heute gesehen das die Heizung um 10 Uhr angegangen ist ohne das Bewegung im Zimmer war, die Regel wurde durch die Temperatur unter 19Grad ausgelöst! Die neue Rule von Udo habe ich noch nicht am Start!
- udo1toni
- Beiträge: 15248
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Regel erweitern
Ja, das soll doch so sein, oder?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 55
- Registriert: 18. Sep 2018 17:43
Re: Regel erweitern
Hallo Udo1Toni,
es sollte ein heizen zu festen Zeiten zwischen 05:15 Uhr und 6:30 erfolgen (schön wenn das nur an Wochentagen gehen würde) und es soll ein heizen jeden Tag zwischen 19Uhr und 21Uhr, kein heizen soll in der Zeit zwischen 24 und 5 Uhr erfolgen, in der übrigen Zeit soll der Bewegungsmelder das Heizen nach Anwesenheit + 15Minuten erledigen. Der Temperaturbereich soll wenn geheizt wird immer zwischen 19-21 Grad liegen. Sorry da haben wir uns wohl falsch verstanden! Danke für deine Mühe vG. Isostar1101
es sollte ein heizen zu festen Zeiten zwischen 05:15 Uhr und 6:30 erfolgen (schön wenn das nur an Wochentagen gehen würde) und es soll ein heizen jeden Tag zwischen 19Uhr und 21Uhr, kein heizen soll in der Zeit zwischen 24 und 5 Uhr erfolgen, in der übrigen Zeit soll der Bewegungsmelder das Heizen nach Anwesenheit + 15Minuten erledigen. Der Temperaturbereich soll wenn geheizt wird immer zwischen 19-21 Grad liegen. Sorry da haben wir uns wohl falsch verstanden! Danke für deine Mühe vG. Isostar1101
- udo1toni
- Beiträge: 15248
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Regel erweitern
Eine Zone 19°C bis 21°C ist hier sinnlos, wie soll das funktionieren? Das einzig Sinnvolle ist, im vorgegebenen Zeitraum auf 21°C zu heizen. Man könnte höchstens die Rule so umstellen, dass sie erst ab 19°C anfängt zu heizen und bei 21°C aufhört zu heizen, dann sieht die Rule aber anders aus.
Die Zeitsteuerung bleibt hiervon unberührt.
Eine Einschränkung auf Werktage ist einfach, Du verschiebst das ? auf die Tage und setzt die gewünschten Tage statt des ?.
Eine weitere Sache ist: der Raum kühlt aus und benötigt auch eine gewisse Zeit, um auf Temperatur zu kommen. Wenn der Raum die 21 °C erreicht und erst dann die Heizung abschaltet, wird die Temperatur erst noch weiter steigen, also überschwingen. Je höher die Heizleistung, desto höher das Überschwingen.
Normalerweise überlässt man deshalb die Temperaturregelung einer spezialisierten Steuerung (und sei es in Form eines Bimetall Thermostaten) und beschränkt sich darauf, die Solltemperatur innerhalb bestimmter Grenzen zu verschieben (z.B. um 2 bis 4 Grad abzusenken).
Code: Alles auswählen
rule "Mila Heizung"
when
Item MilaKomfort changed or // Komfort aktiviert oder deaktiviert
Item FF_Kinderzimmer_Temperatur changed // Temperatur geändert
then
val Number nHysterese = 1 // Schaltspiel
val Number nSoll = 20 // Solltemperatur
var Heizung = FF_Kinderzimmer_Heizung.state // Übernimm aktuellen Status
var Number nTemp = 20 // Standard Raumtemperatur ist 20
if(FF_Kinderzimmer_Temperatur.state instanceof Number)
nTemp = FF_Kinderzimmer_Temperatur.state as Number // setze reale Temperatur
if(nTemp < nSoll - nHysterese && MilaKomfort.state == ON) Heizung = ON // falls reale Temperatur unter Solltemperatur und Heizen ON Heizung ein
if(nTemp > nSoll + nHysterese || MilaKomfort.state == OFF) Heizung = OFF // falls reale Temperatur über Solltemperatur oder Heizen OFF Heizung aus
if(FF_Kinderzimmer_Heizung.state != Heizung) // Sollstatus setzen, falls abweichend
FF_Kinderzimmer_Heizung.sendCommand(Heizung)
end
Eine Einschränkung auf Werktage ist einfach, Du verschiebst das ? auf die Tage und setzt die gewünschten Tage statt des ?.
Code: Alles auswählen
when
Time cron "0 15 5 ? * MO-FR" or // Werktags 05:15 Uhr (auch an beweglichen Feiertagen, die auf einen Werktag fallen)
Time cron "0 0 19 * * ?" // täglich 19:00 Uhr
then
Eine weitere Sache ist: der Raum kühlt aus und benötigt auch eine gewisse Zeit, um auf Temperatur zu kommen. Wenn der Raum die 21 °C erreicht und erst dann die Heizung abschaltet, wird die Temperatur erst noch weiter steigen, also überschwingen. Je höher die Heizleistung, desto höher das Überschwingen.
Normalerweise überlässt man deshalb die Temperaturregelung einer spezialisierten Steuerung (und sei es in Form eines Bimetall Thermostaten) und beschränkt sich darauf, die Solltemperatur innerhalb bestimmter Grenzen zu verschieben (z.B. um 2 bis 4 Grad abzusenken).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet