Heizplan für Feiertage

Advertisements

Feiertag! Ausschlafen und gemütlich frühstücken. Da hast Du sicher andere Dinge im Kopf als Deinen Fibaro Heizplan. Aber Vorsicht, beim Frühstück könnte es kalte Füße und schlechte Laune geben. Dein Heizplan kennt nämlich keine Feiertage und geht davon aus, dass jeder Wochentag ein ganz normaler Arbeitstag ist. Diese Szene stellt Dir einen Heizplan für Feiertage zur Verfügung in dem sie Deinen Heizplan mit den Werten für Sonntag überschriebt und nach dem Feiertag wieder auf den Ursprung zurücksetzt. Ganz automatisch, ohne manuellen Eingriff.

Feiertagsheizplan

Feiertagsheizplan

Feiertag erkennen

Um das manuelle Überschreiben des Heizplanes realisieren zu können muss das HC2 erstmal wissen, ob heute ein Feiertag ist oder nicht. Dafür habe ich eine Szene mit der Anbindung an einen Webdienst veröffentlicht. Mit Hilfe der gelieferten Daten und daraus generierten globalen Variablen weiß das Smart Home ob ein Feiertag ist oder nicht.

Heizplan für Feiertage

Ist heute ein Feiertag wird der aktuelle Heizplan für alle Räume in dynamisch generierten globalen Variablen gespeichert und der aktuelle Tag mit den Sollwerten für Sonntag überschrieben. Fällt der Feiertag auf einen Sonntag bleibt natürlich der „richtige“ Heizplan aktiv.

Anders als in früheren Versionen (< v1.0) der Szene wird nun der echte Heizplan angepasst und kein anfälliger Umweg über den manuellen Modus verwendet. Die damit verbundenen Nachteile gehören damit der Vergangenheit an. So bleiben andere Szenen zur Steuerung der Temperatur weiterhin voll funktionsfähig und funktionieren wie gewohnt und ohne Einschränkung. Wird beispielsweise für einen Raum die Solltemperatur manuell geändert oder ein Fenster geöffnet greifen die dafür vorgesehenen Mechanismen wie gewohnt.

Ablauf der Szene

Ursprungsheizplan

Der Heizplan im Bad unterscheidet sich bei uns zwischen Wochentagen und Wochenenden. An Wochentagen zwischen 9 und 17 Uhr wird die Temperatur auf 18°C gesenkt. Dies geschieht am Wochenende nicht. Hier werden die 21°C durchgehend bis 22 Uhr gehalten.

Heizplan für Wochentage

Heizplan für Wochentage

Heizplan für Wochenenden

Heizplan für Wochenenden

Feiertag

Nehmen wir an heute ist Donnerstag 0:01 Uhr und ein Feiertag. Die globale Variable holidayToday wurde also durch die Feiertagsszene auf den Wert 1 gesetzt und die Heizplanszene durch die Änderung getriggert.

Start der Szene an einem Feiertag

Start der Szene an einem Feiertag

Die Szene stellt fest, dass ein Feiertag ist und sucht sich alle Heizpläne aus dem Home Center. In diesem Beispiel (Auszug) sind es die Heizpläne mit den IDs 4 (Schlafzimmer),185 (Bad) und 186 (Wohnzimmer). Mit den ermittelten IDs werden nun die vollständigen Heizpläne abgerufen und für jeden Raum separat in einer dynamisch generierten globalen Variable gespeichert. Für das Beispiel Bad heißt die globale Variable heatplan185 und enthält den ursprünglichen Heizplan im JSON Format.

Heizplan überschreiben

Nun wird der Heizplan des aktuellen Wochentages sowie für den darauffolgenden Tag – im Beispiel also Donnerstag und Freitag – mit den Werten für Sonntag überschrieben. Der darauffolgende Tag wird gleich mit überschrieben, weil beispielsweise der 1. und 2. Weihnachtsfeiertag direkt aufeinander folgen und die globale Variable gHoliday erst am 27.12. wieder geändert wird. Weiterhin wird zum Schutz der gespeicherten Heizpläne die ebenfalls generierte globale Variable heatplanOverwrite auf den Wert 1 gesetzt. Dies verhindert, dass bei erneuter Ausführung der Szene die Sicherungen überschrieben werden.

Der überschriebene Heizplan

Der überschriebene Heizplan

Nach dem Feiertag

Durch die erneute Änderung der globalen Variable gHolidayToday durch die Feiertagsszene wird der ursprüngliche Heizplan für alle Räume aus der Sicherung geholt und wieder aktiviert.

Zurücksetzen der Heizpläne

Zurücksetzen der Heizpläne

Heizplan für Wochentage

Heizplan für Wochentage

Konfiguration der Szene

gHeatplanOverwrite: Name der globalen Variable die ein versehentlichen Überschreiben der Sicherungen verhindert.
gHolidayToday: Name der globalen Variable für Feiertage (1 oder 0) -> Siehe „Feiertagsvariablen“

Changelog

Version 0.5 (26.12.2016)

  • Bugfix: Sollzeit-Berechnung korrigiert

Version 1.0 (29.12.2016)

  • Neuentwicklung: Überschreiben und Sichern kompletter Heizpläne

Download

Feedback erwünscht

Du findest die Umsetzung nicht gut, oder die Idee dahinter einfach sinnlos? Dann hinterlasse Deine Gedanken in der Kommentarfunktion und ich überlege mir, was ich damit anstelle. Wenn Du anders lautendes Feedback hast, dann selbstverständlich auch in die Kommentare damit.

Posted in Heizung and tagged , .

39 Comments

  1. Pingback: Feiertagsvariable im HC2 | Mein kleiner Smart Home Blog

  2. Hallo Bastian,

    Dein Skript funktioniert einwandfrei! Herzlichen Dank für die Umsetzung!!! Es wäre nun noch toll, wenn das Skript noch so erweitert würde, dass die Tage zwischen Weihnachten und Neujahr z.B. als Urlaubstage hinterlegt werden könnten, um dann auch den Sonntagsheizplan laufen lassen zu können!

    Viele Grüße

    Matthias

    • Hi fstae,

      Danke für Dein Feedback. Ich habe heute morgen noch einen Bug beseitigt, aber jetzt sollte es funktionieren. Ich arbeite gerade an einer Lösung mit der man eigene Kalenderdaten hochladen und nutzen kann und suche noch Beta-Tester 😉 Interesse?
      Gruß
      Bastian

  3. Hallo Bastian, danke für das Update. Werde es über Neujahr mal testen. Wie stellst Du dir die Umsetzung mit dem Kalender und den Urlaubstagen vor?

  4. Hi, ja das kenne ich soweit, aber meine Frage ziele auf die Integration des Urlaubs.Oder habe ich in deinem Artikel was übersehen? Falls ja, schonmal sorry.

    • Hi,
      bisher sind nur Feiertage integriert, aber ich arbeite an einer Lösung die es ermöglichen soll Kalenderdaten ähnlich der Feiertage zu integrieren.
      Wird aber nicht Plug and Play sein können.

      Gruß
      Bastian

  5. Hallo Bastian,

    toller Artikel. Mit dieser Methode könnte man im Frühjahr dann auch den Heizplan (Heizperiode) außer Kraft setzen. Bedeutet z.B., wenn es ab März die ersten warmen Frühlingstage gäbe, könnte der Heizplan durchgängig auf 5 Grad gesetzt werden und wenn es im Oktober oder so wieder kälter wird der Heizplan aus der Globalen Variable wiederhergestellt werden. Praktisch eine Aktivierung oder Deaktivierung der Heizperiode .

    Das Verknüpft mit einem VD wäre perfekt.

    Weißt Du, wie man per JSON eine Tagesconfig dann an den Heizplan übergibt?

    Gruß
    ChrisBeat

    PS: Was ist auf siio los. scheinbar löschen sie jetzt schon ganze Artikel wenn Du auf Dein Blog hinweißt.

    • Hallo Chris,

      danke für das nette Feedback und die Anregung bezüglich des Heizplanes für die warmen Monate.
      Allerdings erschließt sich mir der Sinn nicht so ganz. Mit dem Heizplan gibst Du eine Solltemperatur für Deine Räume vor. Ist diese erreicht, wird auch nicht geheizt. In den Sommermonaten wird es vermutlich nie passieren, dass die Temperatur beispielsweise tagsüber die 21°C unterschreitet, so dass zwar die Solltemperatur vom Heizplan kommt, aber auf Grund der Raumwärme gar nicht geheizt wird.

      Ein VD könnte ich mir für einige Anwendungsbeispiele vorstellen. Beispielsweise um zentral einen Urlaubsmodus einzustellen oder ähnliches. Wenn Du hier noch Ideen hast, dann immer raus damit.

      Das Übergeben einer vollständigen Tageskonfig an den Heizplan funktioniert über die Put API. Ich mache in der Szene nichts anderes, als mir die aktuelle Konfiguration im JSON Format zu holen, diese in eine Lua Tabelle wandle um gezielt einzelne Werte zu ändern, alles wieder in JSON wandle und es per PUT an die API sende.

      Gruß
      Bastian

      PS: Ich habe mit meiner – in meinen Augen noch immer berechtigten – Kritik bei siio wohl etwas übertrieben und einen sehr wunden Punkt getroffen. Mein Account dort wurde gesperrt und ich bin dort nicht mehr anzutreffen. Schade für die User denen ich immer gern und ausführtlich geholfen habe, aber so ist es jetzt halt. Über die tatsächlichen Beweggründe könnte ich nur spekulieren und das möchte ich hier nicht öffentlich tun.

  6. Hallo Bastian,

    kann es sein, dass der Downloadlink noch auf die alte Version 0.5 verlinkt? Des Weiteren die Frage, hattest Du schon Gelegenheit, über das Thema Integration von Urlaubstagen nachzudenken.

    Beispiel akut: Bin gerade krank zu Hause und wünschte mir den Wochenendheizplan 😉

    Gruß
    Chris

    • Hallo Chris,
      danke für den Tipp. Nun funktioniert der Download mit der aktuellen Version.
      Das Thema Urlaub/Kalender ist nich nicht final, aber ich könnte Dich als Beta-Tester gebrauchen 😉 Bei Interesse bitte kurze Skype Nachricht.

      Gruß
      Bastian

  7. Hallo wBastian,

    Danke für dein Script, funktioniert bei mir auch wunderbar, allerdings kommt es zu folgender Meldung wenn die Heizpläne zurückgesetzt werden:
    [
    DEBUG] 08:55:14: Heute ist kein Feiertag mehr, setze Heizpläne zurück
    [DEBUG] 08:55:14: Abrufen der Heizplan IDs erfolgreich (HTTP Status 200)
    [DEBUG] 08:55:14: Heizplan mit der ID 5 gefunden
    [DEBUG] 08:55:14: Heizplan mit der ID 6 gefunden
    [DEBUG] 08:55:14: Heizplan mit der ID 7 gefunden
    [DEBUG] 08:55:14: Error: 400 – Zugriff verweigert
    [DEBUG] 08:55:14: Error: 400 – Zugriff verweigert
    [DEBUG] 08:55:14: Error: 400 – Zugriff verweigert

    Hast du eine Idee, was hier zu dem Error 400 führt ?

    Danke & Gruß,
    Julian

    • Hallo Julian,

      ich habe es gerade bei mir ausprobiert, konnte Dein Problem aber nicht nachstellen. Welche Version der Szene hast Du im Einsatz?

      Gruß
      Bastian

  8. Hi Bastian,

    Danke für die schnelle Antwort. Ich benutze Version 1.0 und im HC2 Firmware 4.110. Was merkwürdig ist, obwohl das Script meldet Zugriff Verweigert wird die Variable heatplanOverwrite wieder auf 0 zurück gesetzt. Damit müsste ja das HC ja wieder zum normalen Heizplan zurückkehren oder ? Ist es schlimm das die Variablen heatplan5, 6 und 7 nicht gelöscht werden oder ist das sowieso nicht vorgesehen ?

    Gruß,
    Julian

    • Hallo Julian,
      die Meldung „Zugriffverweigert“ bedeutet, dass der Heizplan nicht zurückgesetzt wird. Die globalen Variablen speichern lediglich Informationen und haben keinen Einfluss auf den Plan. Das die Variablen nicht gelöscht werden ist normal und gewollt. Leider ist es aus der Ferne schwierig den Fehler zu deuten.
      Gruß
      Bastian

  9. Hallo Bastian,

    SUPER Script – habe mir die Version 1.0 aus dem Forum von Fibaro geladen.
    Da die Scene, wie in Version 0.5, keine „timerFunc“ mehr hat – wie wird sie denn getriggert?

    Falls, soweit mein Verständnis, durch Änderungen des Wertes der Globalen Holidayvariablen — dann wäre die Frage was passiert wenn zwei Feiertage (z.B. Weihnachten 1. und 2. Feiertag) nacheinander kommen? Am zweiten Tag ist zwar immer noch Holliday aber der Heizplan checkt das nicht. ODER ich habe da was falsch verstanden dann freue ich mich auf ein paar klärende Worte 🙂

    Schöne Grüße
    Hubertus

    • Hallo Hubertus,

      nach Ewigkeiten komme ich dazu, Deinen Kommentar zu beantworten und mich erstmal für die netten Worte zu bedanken.

      Du hast recht, die Szene wird nicht mehr zyklisch, sondern nur noch durch die Änderung der globalen Feiertags Variable getriggert. Das von Dir geschilderte Szenario (zwei Feiertage in Folge) hat aber insofern keine negativen Folgen, dass durch das erstmalige setzen der globalen Variable der Heizplan auf Sonntag gesetzt wird und die Szene nicht mehr getriggert wird. Das nächste Triggern erfolgt erst wieder bei Änderung der globalen Variable, also nach den Feiertagen.

      Grüße
      Bastian

  10. Pingback: Feiertagsvariablen im HC2 | Mein kleiner Smart Home Blog

  11. Guten Morgen zusammen!

    Hallo Bastian, jetzt kommt so langsam die kalte Jahreszeit wieder und ich warte noch gespannt auf deinen Feiertagsheizplan mit zusätzlicher Ferienschaltung (Anwesenheit an Wochentagen)…bist du da weiter gekommen?

    Grüße Sven

    • Moin Sven,

      ich habe leider nicht die Zeit gehabt dies intensiv zu verfolgen, hab es aber gerade nochmal auf meine ToDo-Liste geschrieben.

      Grüße
      Bastian

  12. Mahlzeit…wollte hier noch mal nachfragen, ob du dir mal den Kopf zerbrochen hast, über einen Urlaubsvariable.

    Funktion: Urlaub, Heizung wird nicht abgesenkt, bzw…Übernahme Heizplan vom Samstag (warum Samstag?, Sonntag geht man ja wieder früher ins Bett 😉 ) für eine eingetragene Zeit

    Ich könnte mir vorstellen, den Kompletten Heizplan Mo-So in Variablen zu sichern oder sogar im Skript festlegt, dann für die eingetragene Zeit (halt den Urlaub, den man zu Hause verbringt) komplett mit den Samstagszeiten zu überschreiben (den normalen Zeitplan!!! damit Dinge wie bei Globaler Abwesenheit doch runter gefahren wird oder bei geöffnetem Fenster)
    So was muss doch machbar sein !?

    Grüße Sven

    • Moin Sven,

      da sprichst Du etwas spannendes an. Gerade letzte Woche ist mir ein Bug bei meinen bisherigen Heizungsszenen aufgefallen, so dass ich da ohnehin nochmal ran muss. Die Idee werde ich mal mit einfließen lassen. Danke.

      Grüße
      Bastian

  13. Hallo Bastian,

    bin leider blutiger Anfänger in diesem Bereich, finde aber die Gedanken, die Du Dir gemacht hast, absolut sinnvoll und würde dies gerne bei mir integrieren. Leider habe ich bislang keine Möglichkeit gefunden, wie ich das bei mir mache.
    Was muss ich denn nun downloaden und wie bekomme ich das in mein HC2? Habe hier bislang noch keine Anleitung gefunden. Für ein wenig Hilfestellung wäre ich dankbar.

    Gruß Klaus-Peter

    • Hallo Klaus-Peter,

      Du hast direkt unter der Anleitung den Kommentar verfasst 😉

      Spaß beiseite. Gern kann ich Dich ein wenig unterstützen, jedoch weiß ich nicht wo Du stehst und was Du schon so gemacht hast. Am einfachsten wird es sein, wenn Du einen Beitrag im Forum dazu verfasst, dann können die anderen auch mit antworten.

      Grüße
      Bastian

  14. Hallo Bastian,

    vielen Dank für Deine Antwort. Ich hatte zunächst die Schwierigkeit, die Download-Datei zu öffnen. Ich sagte ja, „blutiger“ Anfänger. Das Problem hebe ich in der Zwischenzeit gelöst und der Heizplan läuft auch. Würde aber gerne die Szene nur einmal am Tag laufen lassen (z. B. 00:01 Uhr). Und für mich als Rheinländer ist der Rosenmontag (48 Tage vor Ostern) noch ein besonders wichtiger beweglicher Feiertag. Ist es möglich, die beweglichen Feiertage hier mit einzubauen?

    Vielen Dank und schöne Grüße

    Klaus-Peter

    • Hallo Klaus-Peter,

      sehr schön, weiter so 😉

      Schau mal in den Header der Szene. Dort findest Du unter globals die globale Variable holidayToday. Die Feiertagsszene hast Du erfolgreich eingebunden?
      Bewegliche Feiertage ist ein gutes Thema. Neben dem Rosenmontag bei Euch sind Heiligabend und Silvester auch ein Thema. Ich habe schon ein paar Ideen, wie man dies sinnvoll umsetzen kann. Ich hoffe, dass ich kurzfristig dazu komme.

      Grüße
      Bastian

  15. Hallo Bastian,

    vielen Dank für die ermutigenden Worte. Ja, die Feiertagsszene habe ich erfolgreich eingebunden. Die Abfrage habe ich auch erfolgreich von alle 10 Min. auf alle 2 Stunden geändert. Ich persönlich fände es schöner, die Abfrage einmal am Tag und am liebsten eben so früh wie möglich zu starten.

    Das mit den Feiertagen wäre ganz toll. Ich freue mich, von Dir zu hören.

    Dir einen schönen Sonntag.

    LG Klaus-Peter

    • Hallo Klaus-Peter,

      die Feiertagsszene in der Version 1.0 fragt genau einmal am Tag die Feiertage ab. Die Zeit kannst Du sogar selbst einstellen. Was Du vermutlich meinst ist die Timer-Funktion. Diese läuft alle 60 Sekunden und prüft, ob die ausgewählte Uhrzeit zur Abfrage der Daten erreicht ist. Da das Home Center keine zeitlichen Trigger kennt, man also keine Ausführungsuhrzeit für Szenen angeben kann, muss die Szene auf diese Art und Weise laufen.

      Grüße
      Bastian

  16. Hallo Bastian,

    vielen Dank für Deine Geduld. Kannst Du mir denn die Stelle einmal markieren, in der ich die Zeit ablesen und damit verändern kann. Ich habe diese Stelle mit meinen bescheidenen Mitteln nämlich leider noch nicht gefunden.

    Vielen Dank schon mal im voraus.

    LG

    Klaus-Peter

    • Hallo Klaus-Peter,

      kein Problem, dafür bin ich ja da 😉
      Ersteinmal solltest Du gucken, ob Du die aktuellste Version der Szene im Einsatz hast. Das ist die Version 1.0 die Du unter diesem Link herunterladen kannst.
      Wie auch im Artikel beschrieben, findest Du im oberen Teil der Szene die Konfiguration für selbige. Dort findest Du folgenden Block:
      ---------------------------------------------------
      ------------- Timer Config ------------------------
      scheduler = true
      startTime = '00:01' -- Zeitpunkt des Datenabrufs

      Wenn scheduler auf true steht, wird zu der in startTime angegebenen Zeit die Abfrage der Daten ausgeführt.

      Grüße
      Bastian

  17. Hallo Bastian,

    es lag zwar nicht in Deiner Absicht, aber mittlerweile bin ich völlig verwirrt. Der Link, den Du mir mitgeschickt hast, verweist auf die drei Download-Dateien auf dieser Seite. Wenn ich diese durchsuche finde ich die Stelle, die Du mir angibst, leider nicht.

    —————————————————
    ————- Timer Config ————————
    scheduler = true
    startTime = ’00:01′ — Zeitpunkt des Datenabrufs

    Wenn ich die Datei auf folgender Seite https://www.mkshb.de/feiertagsvariable-im-hc2/ öffne, finde ich zwar die angegebene Stelle, diese Datei läuft aber nicht ohne Fehler durch

    Im Augenblick nutze ich diese Datei: Heizplan-Feiertag-1.0.zip – 1.0

    Was mache ich denn nun falsch?

    Vielen Dank für Dein Verständnis.

    LG Klaus-Peter

    • Hallo Klaus-Peter,

      alles kein Problem. Das kriegen wir schon hin. Du hast scheinbar alles ein wenig vermischt, daher fange ich ganz vorne an.

      Um Deine Heizpläne an Feiertagen zu überschreiben brauchst Du 2 Szenen. Eine welche im Home Center die globalen Variablen für Feiertage pflegt. Das ist diese hier. Die hat erstmal überhaupt nichts mit dem Heizplan zu tun, sondern läuft lediglich einmal in der Nacht ’00:01′ Uhr um die globalen Variablen zu setzen.

      Die zweite Szene – diese hier – wird bei Veränderung der globalen Variablen für die Feiertage (siehe oben) gestartet und setzt die Heizpläne – wenn der heutige oder morgige Tag ein Feiertag ist.

      Ich hoffe, ein wenig Licht ins Dunkle gebracht zu haben.

      Grüße
      Bastian

  18. Hallo Bastian,

    vielen Dank für Deine „erleuchtende“ Hilfe. Beide Szenen habe ich jetzt angelegt. Diese sollten auch nicht zugeordnet bleiben? Ich glaube, dann habe ich es mit Deiner Hilfe geschafft.

    Vielen Dank und liebe Grüße aus dem Rheinland
    Klaus-Peter

    • Hallo Klaus-Peter,

      sehr schön, weiter so.
      Die beiden Szenen agieren unabhängig voneinander. Die globalen Variablen sind die einzige Verbindung, wenn Du so möchtest.

      Grüße
      Bastian

  19. Hallo Bastian,

    nochmals vielen, vielen Dank. Ich glaube, jetzt hab ich es (auch) verstanden.

    Vielen Dank und liebe Grüße

    Klaus-Peter

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere