Hintergrund und Nutzen
Am Semantic Model kommt man in Openhab kaum vorbei und wenn man sich einmal damit beschäftigt hat, wird auch schnell der Nutzen klar. Mit dem Semantic Model wird das eigene Haus als Struktur abgebildet, samt aller Ebenen, Räume, Geräte und deren Funktionen. Damit ist von einer kleinen 3-Zimmer Wohnung bis zur mehrgeschossigen Stadtvilla oder zu mehreren Standorten alles möglich.
Wird das Modell sauber aufgebaut, könnte mit Scripten und Regeln durch das ganze Haus navigiert werden. Das kann für komplexere Funktonen interessant sein, zum Beispiel beim generieren von Seiten.
Apropos Seiten: Auf diesen sollen die jeweiligen Steckdosen/Lampen/Sensoren/Lautsprecher etc. des Raumes dargestellt werden. Mit Widgets lassen sich dann Gruppen von Lampen oder Steckdosen dynamisch darstellen.
Tipps zum Aufbau
Wie schon beschrieben, wird das Modell immer von der größten Einheit zur kleinsten aufgebaut, hier mal als Beispiel für ein kleines Eigenheim:
- Haus/Wohnung
- Dachgeschoss
- Büro
- Gäste
- 1.OG
- Eltern
- Kind 1
- Kind 2
- Bad
- Flur
- EG
- Küche
- Wohnzimmer
- Flur
- Keller
- Waschkeller
- Bastelkeller
- Heizungsanlage
- Garage
- Server und Netzwerk
- Dachgeschoss
Als erster Stepp schon mal eine gute Struktur. In meinen Scripten und Widgets nutze ich nun für jeden Raum eine Struktur wie diese (je nachdem ob Geräte der Gruppe vorhanden sind):
- Alle Bedienelemente
- Heizung
- Alle Lampen
- Alle Lautsprecher
- Alle Sensoren
- Alle Steckdosen
- Virtuelle Schaltpunkte
Die Sammelgruppen haben zudem jeweils den Raumnamen vorangestellt (das Label ist frei wählbar), was den Vorteil hat, das direkt über den Raum und den anzuzeigenden Bereich die Gruppe der Geräte erfasst werden kann.
Anwendungsbeispiel
Kommen wir nun kurz zu einem Beispiel: Es sollen alle Helligkeiten eines Raumes dargestellt werden. In der oben dargestellten Lösung bedeutet das nun: Widget auf die Seite packen, Gruppe der Lampen darstellen und Seite neu aufbauen. Als Widget wird dann dies eingebunden:
uid: hmv_list_all_lights
tags:
- Listet alle Stecker in einer Equipment-Gruppe
- by hmv
props:
parameters:
- description: A text prop
label: header
name: header
required: false
type: TEXT
- context: item
description: Gruppe von Equipment
label: Item
name: itemgroup
required: false
type: TEXT
parameterGroups: []
timestamp: Mar 28, 2022, 8:07:56 AM
component: f7-card
config:
mediaList: false
title: = props.header
slots:
default:
- component: oh-list
slots:
default:
- component: oh-repeater
config:
for: item
fragment: true
groupItem: =props.itemgroup
sourceType: itemsInGroup
slots:
default:
- component: oh-slider-item
config:
color: '=(items[loop.item.name+"_set"].state == "ON") ? "green" : "gray"'
item: =loop.item.name+'_brightness'
label: false
max: 250
min: 0
scale: true
scaleSteps: 5
scaleSubSteps: 5
step: 1
title: =loop.item.label
visible: =items[loop.item.name+"_brightness"].state != "NULL"