Hi,
wie versprochen, versuche ich mein vorbereitetes Szenario vom Workshop hier dokumentiert reinzustellen. Ich fange mit der Item-Struktur an, bei der ich jetzt jedes Item kommentiert habe. Um es nochmal zu betonen: Es geht bei dem Szenario primär und eine relativ einfache Veschattungslösung, die vor allem einige ausgewählte Möglichkeiten von SM zeigen soll, nicht um eine generelle Lösung für ein ganzes Haus.
Auf Wunsch der Teilnehmer wollte ich hier aber einige Ideen zur Gestaltung des Item-Baums teilen. Ist großteils daran angelehnt, wie ich es bei mir gemacht habe bzw. wie ich es demnächst bei mir umbauen werde (z.B. das Fenster-Item).
Grundstruktur:
Gruß, Waldemar
P.S.: Ich musste das File leider "zippen", da es für den Upload zu groß geworden wäre...
nodes-WS.zip
wie versprochen, versuche ich mein vorbereitetes Szenario vom Workshop hier dokumentiert reinzustellen. Ich fange mit der Item-Struktur an, bei der ich jetzt jedes Item kommentiert habe. Um es nochmal zu betonen: Es geht bei dem Szenario primär und eine relativ einfache Veschattungslösung, die vor allem einige ausgewählte Möglichkeiten von SM zeigen soll, nicht um eine generelle Lösung für ein ganzes Haus.
Auf Wunsch der Teilnehmer wollte ich hier aber einige Ideen zur Gestaltung des Item-Baums teilen. Ist großteils daran angelehnt, wie ich es bei mir gemacht habe bzw. wie ich es demnächst bei mir umbauen werde (z.B. das Fenster-Item).
Grundstruktur:
- Ich versuche die Gebäudestruktur abzubilden, meine ersten 3 Ebenen sind immer Stockwerk (KG, EG, OG, DG), Raum (Wohnzimmer, Esszimmer, Schlafzimmer, Kinderzimmer, Windfang etc.), Funktionsgruppe (Licht, Heizung, Fenster etc.)
- Auch Ausnahmen "presse" ich in diese Struktur, z.B. Garage ist bei mir ein Stockwerk, sie hat einen Raum (bei meinen Eltern gibt es in der Garage 2 Räume) oder "Außen" ist bei mir ein Sockwerk, die Räume sind "Gartenlaube" oder "Westbalkon", dann kommen erst die vorhandenen Funktionen wie Licht, Steckdose etc.
- Auf jeder Ebene gibt es ein Zentral-Item (auf Stockwerk-Ebene ist es alle globalen Funktionen, auf Raumebene ist es zentral für das Stockwerk und auf Funktionsebene ist es zentral für den Raum.
- Die Idee hier: Der Pfad zu einer Funktion ist immer 3-Stufig. Das ist für generische Selektoren und für relative Item-Adressen sehr vorteilhaft, ich weiß, dass ich von einem EG.Flur.Licht immer mit ... beim Stockwerk lande. Das heißt aber auch, dass mein Licht in einem Stockwerk mit nur einem Raum (z.B. Dachstudio) trotzdem DG.Dachstudio.Licht heißt und nicht nur DG.Licht oder Dachstudio.Licht.
- Ab dem Funktionslevel läuft es natürlich auseinander, man kann nicht alles gleichartig gestalten, da die Funktionen selbst stark unterschiedlich sind. Hier versuche ich aber pro Funktion eine gleichartige Struktur einzuhalten:
- Licht ist z.B. immer Licht.<Position>.Schalten und Licht.<Position>.Dimmen (falls es ein dimmbares Licht ist), also z.B. Licht.Decke.Schalten, Licht.Decke.Dimmen. Dabei ist "Decke" dann auch gleich das komplexe Item für das Dimmer-Widget.
- Die Funktion versuche ich als Aggregat zu gestalten, der einen sinnvollen Wert enthält. Beim Licht wäre das ein codeblock "or" mit Trigger ".*.Schalten", der dann anzeigt, ob irgendein Licht in dem Raum eingeschaltet ist. Hier ist anzumerken, dass ich das so noch nicht realisiert habe, weil ich noch kein Zeit hatte, auszuprobieren, ob der Trigger ".*.Schalten" so funktioniert, wie ich das will. Aber die Item-Struktur ist dafür vorgesehen.
- Beim Fenster (aus dem Workshop-Beispiel) ist das Pattern "Fenster.<welches>.Status", "Fenster.<welches>.Rollo" und "Fenster.<welches>.Sperre", z.B. Fenster.West.Status. Auch bei nur einem Fenster im Raum wird der Pfad nicht gekürzt.
- Wenn es für mich Sinn macht, versuche ich die Pfade zu kürzen, ohne die generische Adressierungsmöglichkeit zu vernachlässigen. Exemplarich habe ich das für die Sperre gemacht: Statt Fenster.West.Rollo.Sperre habe ich Fenster.West.Sperre definiert, weil das für sich selbsterklärend ist und der Pfad kürzer ist.
- Ich habe bei meiner Item-Struktur noch eine für euch uninteressante Anforderung: Ich lasse meine Visu generieren, dazu vergebe ich extra Attribute und manchmal auch Hilfsitems. Für dieses Beispiel habe ich keine Hilfsitems benötigt, aber alle Attribute die mit cd_ anfangen (cd_icon, cd_widget, cd_page etc.) müsst ihr einfach ignorieren.
- Ferner habe ich in dem angefügten Beispiel alle Items unter einem Wurzelknoten "WS" gehängt, damit das Ganze von meinen eigenen Items getrennt ist und auch auf einen Schlag exportiert werden kann. Dieser WS-Knoten (für Workshop) gehört natürlich nicht zu meiner hier beschriebenen Item-Struktur.
Gruß, Waldemar
P.S.: Ich musste das File leider "zippen", da es für den Upload zu groß geworden wäre...
nodes-WS.zip
Kommentar