Datenübergabe in OpenHAB

Aus Debacher-Wiki
Zur Navigation springenZur Suche springen

In OpenHAB ist es möglich Daten von einem Widget an ein aufgerufenes Widget zu Übergeben. Das Beispiel geht von meinem Batterie-Widget aus. Dieses Widget zeigt alle Batteriezustände an, wenn die Einträge zu einer Gruppe gehören. Nur diese Gruppe muss ausgewählt werden. Falls auch eine Batteriespannung vorhanden ist, so wird diese als Footer angezeigt.

uid: ud_batterie_parameter
tags: []
props:
  parameters:
    - context: item
      description: Name des
      label: Batterie Zustands Item
      name: batLevel
      required: true
      type: TEXT
      filterCriteria:
        - value: Group
          name: type
  parameterGroups: []
timestamp: Jan 1, 2022, 4:24:17 PM
component: oh-list-card
config:
  title: '="Eine Batterie Leer: " + ((items[props.batLevel].state === "OFF") ? "Nein" : "Ja")'
slots:
  default:
    - component: oh-repeater
      config:
        fragment: true
        for: item
        sourceType: itemsInGroup
        groupItem: =props.batLevel
        fetchMetadata: widgetOrder
      slots:
        default:
          - component: oh-list-item
            config:
              icon: '=(loop.item.state === "OFF") ? "f7:battery_100" : "f7:battery_0"'
              iconColor: '=(loop.item.state === "OFF") ? "green" :  "red"'
              title: = loop.item.name.split('_')[0]
              item: =loop.item.name
              badge: '=(loop.item.state === "OFF") ? "Ok" : "Wechseln"'
              badgeColor: '=(loop.item.state === "OFF") ? "green" : "red"'
              footer: =items[loop.item.name.split('_')[0]+"_BatteryState"].state
              action: popup
              actionModal: widget:ud_standard_widget
              actionModalConfig:
                equipment: = loop.item.name.split('_')[0]

Am Ende wird aus dem list-item quasi ein Button (action: popup), der ein weiteres Widget aufruft (ud_standard_widget). Diesem Widget wird in der letzten Zeile das zur Batterie gehörige Gerät als Parameter übergeben.

Das Zielwidget hat folgenden Aufbau:

uid: ud_standard_widget
tags: []
props:
  parameters:
    - description: Überschrift
      label: Überschrift
      name: ueberschrift
      required: false
      type: TEXT
    - context: item
      description: Das Equipment für die Anzeige
      label: equipment
      name: equipment
      required: true
      type: TEXT
  parameterGroups: []
timestamp: Dec 10, 2021, 1:58:37 PM
component: f7-card
config:
  title: '="Zustand von " + ((props.ueberschrift) ? props.ueberschrift : props.equipment)'
slots:
  default:
    - component: oh-list
      config:
        mediaList: true
      slots:
        default:
          - component: oh-repeater
            config:
              fragment: true
              for: element
              sourceType: itemsInGroup
              groupItem: = props.equipment
              filter: =loop.element.metadata && loop.item.metadata.semantics
              fetchMetadata: semantics
            slots:
              default:
                - component: oh-list-item
                  config:
                    title: =loop.element.name.split('_')[1]+":"
                    icon: = 'oh:' + loop.element.category
                    subtitle: =loop.element.metadata.semantics.value
                    footer: =loop.element.metadata.semantics.config.relatesTo
                    item: = loop.element.name
                    badge: =loop.element.state

Noch Screenshots dazu:

Bildschirmfoto von 2022-01-01 16-38-58.png

Bildschirmfoto von 2022-01-01 16-39-15.png