Hallo zusammen,
ich stehe aktuell ein bisschen auf dem Schlauch und brauche mal Tipps.
Ich arbeite gerade an meiner Heizungssteuerung. Hier habe ich mir Programme erstellt, welche je nach Wochentag zu verschiedenen Tageszeiten verschiedene Temperaturen in den Räumen einstellen. Morgens geht zum Beispiel die Temperatur im Bad und in der Küche hoch, geht dann wieder runter (wenn wir arbeiten sind) und steigt dann abends zum Feierabend wieder, für die Nacht wird dann ebenfalls wieder abgesenkt. Natürlich nur ein paar Grad, ansonsten ist das ganze ja Kontraproduktiv. Am Wochenende läuft dann eine andere Temperaturverteilung ab.
Das ganze funktioniert auch sehr gut. Zur Tagesermittlung arbeite ich mit "Time cron" sowie "getdayofweek".
Nun habe ich zusätzlich noch das Caldav Binding eingebracht wo ich dann z.B. Urlaub eintrage. Steht im Kalender "Urlaub" wird das Heizungsprogramm auch an Wochentagen das Heizprogramm "Wochenende" verwendet. Das habe ich gelöst, indem die rules ins Caldav schauen, die Wochentagsrule läuft nur dann wenn im Kalender nicht "Urlaub" steht. Die Wochenende rule prüft ob im Kalender "Urlaub" steht, ist dies der Fall läuft die Rule entsprechend auch ab. Die Wochentags rule läuft wiederum nicht, denn es steht ja "Urlaub" im Kalender. So habe ich es hinbekommen, dass die Rules sich nicht gegenseitig außer Kraft treten.
Nun steht aber zum ersten mal eine Abwesenheit an... wir waren am Wochenende zu den Schwiegereltern (als wäre dies nicht schon schlimm genug.... Spaß, wir verstehen uns super
) hier würde nun natürlich das Haus unnötig gehzeit werden, weil ja die rules ablaufen. Wenns nicht anders geht setze ich vor Abreise die Rules außer Kraft, aber eigentlich möchte ich gerne über caldav "Weg" als Status beziehen und dann alle Heizkörper dauerhaft auf eine Temperatur stellen. Was gleichermaßen natürlich bedeutet, dass die anderen Rules nicht ablaufen dürfen.
Da ich ohnehin das Gefühl habe, dass ich das alles unnötig kompliziert umgesetzt habe, wäre meine Frage an euch, wie ich diese neue Gegebenheit ("Weg") einbinde, oder ggf. auch meine ganze Einstellung vereinfache. Wahrscheinlich kommen in Zukunft auch noch weitere Gegebenheiten hinzu wie zb "Weg Rückkehr" also der Tag an dem man zurück kommt, wo die Temperatur dann schon wieder ansteigen soll.
Um euch darzustellen wie ich das umgesetzt habe, hier mal meine Rules für den Morgen, einmal für den Wochentag und einmal fürs Wochenende.
Von diesen "Blöcken" habe ich insgesamt pro Tagesart 4 Stück, weil ich die Temperatur 1. morgens steigere 2. anschließend wieder senke 3. späten nachmittag wieder steigere 4. Nachts absenke. Die Rules Datei für die Heizung hat also ingesamt 8 solcher Blöcke.
Wäre für Ideen sehr dankbar.
ich stehe aktuell ein bisschen auf dem Schlauch und brauche mal Tipps.
Ich arbeite gerade an meiner Heizungssteuerung. Hier habe ich mir Programme erstellt, welche je nach Wochentag zu verschiedenen Tageszeiten verschiedene Temperaturen in den Räumen einstellen. Morgens geht zum Beispiel die Temperatur im Bad und in der Küche hoch, geht dann wieder runter (wenn wir arbeiten sind) und steigt dann abends zum Feierabend wieder, für die Nacht wird dann ebenfalls wieder abgesenkt. Natürlich nur ein paar Grad, ansonsten ist das ganze ja Kontraproduktiv. Am Wochenende läuft dann eine andere Temperaturverteilung ab.
Das ganze funktioniert auch sehr gut. Zur Tagesermittlung arbeite ich mit "Time cron" sowie "getdayofweek".
Nun habe ich zusätzlich noch das Caldav Binding eingebracht wo ich dann z.B. Urlaub eintrage. Steht im Kalender "Urlaub" wird das Heizungsprogramm auch an Wochentagen das Heizprogramm "Wochenende" verwendet. Das habe ich gelöst, indem die rules ins Caldav schauen, die Wochentagsrule läuft nur dann wenn im Kalender nicht "Urlaub" steht. Die Wochenende rule prüft ob im Kalender "Urlaub" steht, ist dies der Fall läuft die Rule entsprechend auch ab. Die Wochentags rule läuft wiederum nicht, denn es steht ja "Urlaub" im Kalender. So habe ich es hinbekommen, dass die Rules sich nicht gegenseitig außer Kraft treten.
Nun steht aber zum ersten mal eine Abwesenheit an... wir waren am Wochenende zu den Schwiegereltern (als wäre dies nicht schon schlimm genug.... Spaß, wir verstehen uns super

Da ich ohnehin das Gefühl habe, dass ich das alles unnötig kompliziert umgesetzt habe, wäre meine Frage an euch, wie ich diese neue Gegebenheit ("Weg") einbinde, oder ggf. auch meine ganze Einstellung vereinfache. Wahrscheinlich kommen in Zukunft auch noch weitere Gegebenheiten hinzu wie zb "Weg Rückkehr" also der Tag an dem man zurück kommt, wo die Temperatur dann schon wieder ansteigen soll.
Um euch darzustellen wie ich das umgesetzt habe, hier mal meine Rules für den Morgen, einmal für den Wochentag und einmal fürs Wochenende.
PHP-Code:
rule "Temperatursteigerung morgens Wochentag"
when
Time cron "0 0 6 ? * MON,TUE,WED,THU,FRI *"
then
if (CalDav_Termin1 .state != "Urlaub" && CalDav_Termin2.state != "Urlaub" && CalDav_Termin3.state != "Urlaub" && CalDav_Termin4.state != "Urlaub" && CalDav_Termin5.state != "Urlaub")
sendCommand(EG_Flur_Heizung, 17)
sendCommand(EG_GaesteBad_Heizung_Wand, 18)
sendCommand(EG_GaesteBad_Heizung_Boden, 15)
sendCommand(EG_Esszimmer_Heizung, 19)
sendCommand(EG_Wohnzimmer_Heizung, 19)
sendCommand(EG_Kueche_Heizung, 21)
sendCommand(OG_Kind1_Heizung , 15)
sendCommand(OG_Kind2_Heizung, 15)
sendCommand(OG_Bad_Heizung_Wand, 21)
sendCommand(OG_Bad_Heizung_Boden, 21)
sendCommand(OG_Ankleidezimmer_Heizung, 19)
sendCommand(OG_Fitness_Heizung, 16)
sendCommand(OG_Schlafzimmer_Heizung, 19)
sendCommand(EG_Buero_Heizung, 19)
end
PHP-Code:
rule "Temperatursteigerung morgens Wochenende"
when
Time cron "0 0 7 * * ?"
then
if (now.getDayOfWeek>5 || CalDav_Termin1 .state == "Urlaub" || CalDav_Termin2.state == "Urlaub" || CalDav_Termin3.state == "Urlaub" || CalDav_Termin4.state == "Urlaub" || CalDav_Termin5.state == "Urlaub")
sendCommand(EG_Flur_Heizung, 17)
sendCommand(EG_GaesteBad_Heizung_Wand, 18)
sendCommand(EG_GaesteBad_Heizung_Boden, 15)
sendCommand(EG_Esszimmer_Heizung, 21)
sendCommand(EG_Wohnzimmer_Heizung, 21
sendCommand(EG_Kueche_Heizung, 21)
sendCommand(OG_Kind1_Heizung , 15)
sendCommand(OG_Kind2_Heizung, 15)
sendCommand(OG_Bad_Heizung_Wand, 21)
sendCommand(OG_Bad_Heizung_Boden, 21)
sendCommand(OG_Ankleidezimmer_Heizung, 19)
sendCommand(OG_Fitness_Heizung, 16)
sendCommand(OG_Schlafzimmer_Heizung, 19)
sendCommand(EG_Buero_Heizung, 19)
end
Wäre für Ideen sehr dankbar.
Kommentar