Aufgabenstellung

In diesem Beitrag möchte ich zeigen, wie man mit einem Workflow einen Gruppenstatus für mehrere Tür- und Fensterkontakte realisieren kann.

Ausgangsbasis ist in diesem Beispiel ein Homematic Kontakt, dieser liefert die folgenden Werte:

  • 0 = Tür/Fenster ist geschlossen

  • 1 = Tür/Fenster ist geöffnet

Realisierung

Will man nun einen Gruppenstatus machen, dann muss die entsprechende Variable den Wert TRUE haben, wenn einer der Kontakte TRUE liefert.
Zur Realisierung dieses Vorhabens legt man nun als erstes eine Variable vom Type „Boolean“ an und weist zum Beispiel das Profil „Window“ zu.
Nun erstellt man einen Workflow und platziert die entsprechenden Homematic Instanzen im Workflow. Vorkonfigurierte Module findet man im Modul-Baum, es existiert jeweils ein Modul um die Homematic Instanz mit Eingängen oder mit Ausgängen im Workflow zu platzieren.
In unserem Fall benötigen wir die Fensterkontakt-Instanzen mit Ausgangsmodulen, die Ziel-Variable wird als Variable-Modul mit Eingängen platziert.
Diese verbindet man nun mit einem ODER Modul und damit ist die prinzipielle Logik des Workflows bereits fertig.
Es ist nun bereits möglich diese Logik zu testen – einfach in den Test-Modus des Workflow umschalten und auf „Manuelles Ausführen“ klicken. Das Workflow-Skript wird im Hintergrund gestartet und die Ergebniswerte im Workflow-Editor angezeigt.
Eine Simulation der Änderung einer Eingangsvariable ist durch die Buttons im Workflow-Designer möglich. Zu beachten ist allerdings, dass man in diesem Fall den Workflow immer noch manuell starten muss, um eine erneute Auswertung der Kontakte auszulösen.

Automatische Ausführung des Workflows

So, wenn man nun aber tatsächlich ein Fenster öffnet, wird sich jetzt der Wert der Gruppenstatus-Variable noch nicht ändern. Das liegt daran, dass der Workflow noch nicht automatisch aufgerufen wird, sobald sich der Wert eines Fensterkontaktes ändert.
Die einfachste Möglichkeit um zur Realisierung dieser automatischen Ausführung ist das setzen der Eigenschaft „Workflow Ausführung“ bei den Eingangsinstanzen.
Nach dem Setzen der Eigenschaften und der Speicherung des Workflows werden vom Workflow-Editor Events angelegt, die das Workflow-Skript automatisch aufrufen, wenn sich der Wert der Variable ändert.
Im Workflow werden diese Events durch ein Icon dargestellt, auch in der Konsole kann man die Events unter dem Workflow-Skript sehr einfach finden.
Nach dem Anlegen der Events wird der Workflow nun auch automatisch aufgerufen, sobald ein Fenster geöffnet oder geschlossen wird.

Alternative mit OnChange Modulen

Alternativ könnte man das automatische Aufrufen des Workflows auch über Module des Typs „Bei Änderung“ realiseren, diese Module müssen direkt nach den Eingangs-Variablen platziert werden, die den Aufruf auslösen sollen.
Technisch gesehen gibt es in diesem Fall keinen Unterschied zu der Version mit dem Setzen der Eigenschaft „Workflow Ausführung“, ich möchte sie nur vollständigerhalber hier kurz aufzeigen.