Semantic Model in Openhab

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

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"

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert