Zusammenfassung
Problemstellung: Raumfunktionen sollen auf andere Räume übertragen werden. Mehrere Räume sind durch verschiebbare Wände getrennt. Abhängig davon, ob Wände geöffnet oder geschlossen sind, sollen die Befehle jedes Sensors innerhalb der geöffneten Räume an alle Aktoren, die in diesen Räume Funktionen erfüllen, weitergeleitet werden.
Die Anzahl der Räume und Trennwände soll nicht begrenzt sein.
Die Anzahl der Funktionen pro Raum (Schalten, Stellen, Dimmen, Regeln… von beliebigen Aktoren beliebiger Gewerke) soll nicht begrenzt sein.
Lösung: Im globalen Script des Prozessservers werden Änderungen eines Ist-Werts einer Raumfunktion registriert. Wenn die Änderung aus einem Raum mit verschiebbaren Wänden stammt, werden alle verbundenen Räume diesen Wert für diese Raumfunktion als Soll-Wert erhalten.
Die Namen der Datenpunkte für Raumfunktionen und Wände müssen dafür speziell aufgebaut sein.
Das Besondere an dieser Lösung: Sie kommt ohne weitere Berechnungen von Datenpunkteigenschaften aus. Das globale Script muß nicht verändert werden.
Achtung: Erst ab der Version 2.1.1.185 ist es möglich, in den Datenpunkten zur Laufzeit zu suchen. Deshalb ist diese Version, oder eine höhere, wesentliche Voraussetzung für diese Lösung.
Einzelheiten
Der Name eines Datenpunkts, der als Raumfunktion zum MRC gehören soll, muß so aufgebaut sein:
MRC_ROOM_raumbezeichnung_raumfunktion
z.B.: MRC_ROOM_Wohnzimmer_Dounlight oder MRC_ROOM_Halle_Jalousie
Jeder ROOM-Datenpunkt muß die benutzerdefinierte Eigenschaft MRC_dirty haben. Deren Typ ist Boolean. Damit die Berechnung nicht mit „Type mismatch“ abbricht, muß das dirty-flag einmal von Hand gesetzt werden (Datenpunkteigenschaften).
Der Name eines Datenpunkts, der als Wand (Raumteiler) zum MRC gehören soll, muß so aufgebaut sein: MRC_WALL_erster Raum_zweiter Raum_ z.B. MRC_WALL_Wohnzimmer_Halle_ oder MRC_WALL_Tagungsraum12A_Tagungsraum12B_ Beachten Sie die Unterstriche! Die ActualValues der WALL-Datenpunkte sollen persistent sein!
Das globale Script der MRC-Lösung als Textdatei (4,5 KB).
Das Beispielprojekt: mrc.db (1100 KB) mrc.iep (40 KB).