Jetzt wird es für den einen oder anderen etwas gruselig, leider kommt man um ein Script das für die Steuerung der abhängigen Heizgruppen zueinander zuständig ist, nicht herum. In diesem Beispiel geht es jetzt um das Obergeschoss. Die Räume sind in der Reihenfolge Flur-Bad-Schlafzimmer-Kinderzimmer2-Kinderzimmer1-Flur durch Türen verbunden. Das heißt die Räume könnten sich durch offene Türen gegenseitig belüften. Das bedeutet leider, dass dieses Script individuell, je nach Bedarf auf die jeweilige Konstellation angepasst werden muss.

Dieses Programm ist so angelegt, dass es nur bei einem manuellen Aufruf ausgeführt wird, da die Bedingung so angelegt ist, dass sie nie erfüllt wird. Bei einem Aufruf des Programms über die Weboberfläche der HomeMatic oder beim Aufruf von einem anderen Programm aus, wird die Bedingung immer von der HomeMatic auf WAHR gesetzt und deshalb wird dann das Programm ausgeführt.

Im Prinzip läuft das Script nach folgenden Schema ab:

  • Als erstes prüft jeder Raum, ob ein Fenster geöffnet ist, wenn dies der Fall ist, setzt der Raum seinen Heizstatus auf "Lueften"
  • Dann prüft jeder Raum, ob zu einem Nachbarraum eine Türe geöffnet ist und ob dieser Raum belüftet wird
  • Wenn Nachbarraum belüftet und die Türe geöffnet, setzt der Raum seinen Heizstatus auf "Fremdlueftung"
  • Damit in der Kette wirklich alle Räume zueinander geprüft werden, wird durch die "while(counter < 4)" Schleife dieser Test mehrfach wiederholt (Anzahl Räume -1)
  • Zum Schluss werden die berechneten Heizstatus'e in die Systemvariable geschrieben, wenn sich der Wert vom gespeicherten unterscheidet

Da das Script hier direkt im Beitrag etwas unübersichtlich wäre, könnt ihr es hier herunterladen.

Wie man sieht, ist die Bedingung des Programms so angelegt, dass es eigentlich nie automatisch ausgeführt wird. Um es dennoch auszuführen, gibt es zwei Möglichkeiten:

  1. Manueller Start des Programms über die Bedienoberfläche der HomeMatic
  2. Aufruf des Programms von einem anderen Programm

Bei beiden Möglichkeiten wird die erste Bedingung automatisch auf "wahr" gesetzt. Hier nun das Programm:


Programm Raumstatus-OG-setzen:

Name Beschreibung Bedingung (Wenn...) Aktivität (Dann.., Sonst..) Aktion
Raumstatus-OG-setzen Prüft und setzt den Status der Räume im OG Systemzustand: S_Dummy bei im Wertebereich von Nur bei manuell oder Auffruf ausführen bis kleiner nur prüfen Systemzustand: S_Dummy sofort auf reset setzen
Bedingung: Wenn...
Systemzustand S_DummybeiNur bei manuell oder Aufruf ausführen nur prüfen
ODER
Aktivität: Dann...
Systemzustand S_Dummy sofort reset
Skript
! Setzen des Raumstatus im OG

siehe Download

sofort
Aktivität:Sonst...

Nun fehlt noch das vorletzte Programm, welches das Script "Raumstatus-OG-setzen" aufruft und damit die Heiz-Zustände der Räume aktualisiert. Dieses Programm reagiert auf alle Türen und Fenster, wenn sich deren Zustand ändert. Dann wird  unser "Raumstatus-OG-setzen" Script zeitversetzt aufgerufen. Der Zeitversatz ist deshalb nötig, dass wenn jetzt jemand durch alle Räume rennt nicht ständig die Heizstadien permanent geändert werden und dadurch das Funknetz ans Limit gebracht wird. Und den Batterien der Regler wäre auch nicht damit gedient, wenn dauernd Auf/Zu gesteuert würde. Die Zeitverzögerung von 3 Minuten ist meiner Meinung nach das untere Limit und sollte individuell angepasst werden. Das ist die Zeit, die vergeht bis Nachbarräume erkennen, dass sie Fremd belüftet oder auf reduzierter Temperatur laufen sollten.

Auch wird hier demonstriert, wie man aus einem Programm heraus ein anderes HomeMatic Programm über ein Script starten kann.


Programm Raumstatus OG prüfen:

Name Beschreibung Bedingung (Wenn...) Aktivität (Dann.., Sonst..) Aktion
Raumstatus OG pruefen Wenn Fenster oder Türe im OG bewegt wird Kanalzustand: Fenster-Schlafzimmer-AL bei geschlossen bei Änderung auslösen Skript: ... verzögert um 3 Minuten ausführen
Bedingung: Wenn...
Geräteauswahl Fenster-Schlafzimmer-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Schlafzimmer-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Schrankzimmer-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Schrankzimmer-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Bad-OG-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Bad-OG-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Kinderzimmer2-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Kinderzimmer2-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Kinderzimmer1-Rechts-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Kinderzimmer1-Rechts-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Kinderzimmer1-Links-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Fenster-Kinderzimmer1-Links-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Kinderzimmer1-Flur-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Kinderzimmer1-Flur-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Bad-OG-Flur-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Bad-OG-Flur-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Bad-OG-Schrankzimmer-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Bad-OG-Schrankzimmer-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Schlafzimmer-Vanessa-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Schlafzimmer-Vanessa-AL bei offen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Kinderzimmer2-Kinderzimmer1-AL bei geschlossen bei Änderung auslösen
ODER
Geräteauswahl Tuer-Kinderzimmer2-Kinderzimmer1-AL bei offen bei Änderung auslösen
UND
Aktivität: Dann...
Skript
!Script Raumstatus-OG-setzen aufrufen, dieses ermittelt die Lüftungszustände des Obergeschosses

var p = dom.GetObject("Raumstatus-OG-setzen");
p.ProgramExecute();

verzögert um 3 Minuten
Aktivität:Sonst...

Hier noch ein Beispiel zum Gesamtablauf der die Funktionsweise zusammen fasst:

  1. Ausgangszustand: Alle Räume sind durch offene Türen lüftungs-mässig verbunden und laufen im Status AUTO
  2. In einem Raum wird nun ein Fenster (Beispiel Kinderzimmer 1) geöffnet
  3. Das Programm "Raumstatus OG prüfen" wird sofort aktiv und startet das Script mit 3 Minuten Verzögerung
  4. Nach 31 Sekunden steuert das Lüftungsprogramm für das Kinderzimmer 1 in den Status "Lüften"
  5. Nach 2Min 29 Sekunden werden die Nachbarräume auf den Status "Fremdlüftung" gesetzt
  6. Wird zwischendurch ein Fenster oder Türe bewegt, läuft die Zeit von 3 Minuten wieder von vorne los
  7. Sollte das Fenster zwischenzeitlich wieder geschlossen sein, wird lediglich der Lüftungszustand des betroffenen Raumes neu gesetzt

Um es anschaulicher zu machen, werde ich später mal ein Ablaufdiagramm erstellen.

 

 

   
© WagoTec.de