Datenübergabe in OpenHAB

Aus Debacher-Wiki
Wechseln zu:Navigation, Suche

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.

 1 uid: ud_batterie_parameter
 2 tags: []
 3 props:
 4   parameters:
 5     - context: item
 6       description: Name des
 7       label: Batterie Zustands Item
 8       name: batLevel
 9       required: true
10       type: TEXT
11       filterCriteria:
12         - value: Group
13           name: type
14   parameterGroups: []
15 timestamp: Jan 1, 2022, 4:24:17 PM
16 component: oh-list-card
17 config:
18   title: '="Eine Batterie Leer: " + ((items[props.batLevel].state === "OFF") ? "Nein" : "Ja")'
19 slots:
20   default:
21     - component: oh-repeater
22       config:
23         fragment: true
24         for: item
25         sourceType: itemsInGroup
26         groupItem: =props.batLevel
27         fetchMetadata: widgetOrder
28       slots:
29         default:
30           - component: oh-list-item
31             config:
32               icon: '=(loop.item.state === "OFF") ? "f7:battery_100" : "f7:battery_0"'
33               iconColor: '=(loop.item.state === "OFF") ? "green" :  "red"'
34               title: = loop.item.name.split('_')[0]
35               item: =loop.item.name
36               badge: '=(loop.item.state === "OFF") ? "Ok" : "Wechseln"'
37               badgeColor: '=(loop.item.state === "OFF") ? "green" : "red"'
38               footer: =items[loop.item.name.split('_')[0]+"_BatteryState"].state
39               action: popup
40               actionModal: widget:ud_standard_widget
41               actionModalConfig:
42                 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:

 1 uid: ud_standard_widget
 2 tags: []
 3 props:
 4   parameters:
 5     - description: Überschrift
 6       label: Überschrift
 7       name: ueberschrift
 8       required: false
 9       type: TEXT
10     - context: item
11       description: Das Equipment für die Anzeige
12       label: equipment
13       name: equipment
14       required: true
15       type: TEXT
16   parameterGroups: []
17 timestamp: Dec 10, 2021, 1:58:37 PM
18 component: f7-card
19 config:
20   title: '="Zustand von " + ((props.ueberschrift) ? props.ueberschrift : props.equipment)'
21 slots:
22   default:
23     - component: oh-list
24       config:
25         mediaList: true
26       slots:
27         default:
28           - component: oh-repeater
29             config:
30               fragment: true
31               for: element
32               sourceType: itemsInGroup
33               groupItem: = props.equipment
34               filter: =loop.element.metadata && loop.item.metadata.semantics
35               fetchMetadata: semantics
36             slots:
37               default:
38                 - component: oh-list-item
39                   config:
40                     title: =loop.element.name.split('_')[1]+":"
41                     icon: = 'oh:' + loop.element.category
42                     subtitle: =loop.element.metadata.semantics.value
43                     footer: =loop.element.metadata.semantics.config.relatesTo
44                     item: = loop.element.name
45                     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