This is not about clicking and something is happening in the real word ![]()
It is just about getting status information (e.g. signal strength, battery level, temperature, etc) of an equipment element presented in a space saving table view.
Just wanted to share in case someone needs a template to adapt from.
Just provide the type of equipment according to semantics e.g. SmokeDetector and name of points in a comma-seperated way.
Furthermore it puts the location at the beginning of each row (which was painful to find out)
The widget asumes that the item name follows the standard syntax: thingName_channel
You can also specify individual column headers and an overall header
Code
uid: StateGrid
tags: []
props:
parameters:
- description: Name of equipment tag, i.e. SmokeDetector. All equipments with this tag will be included in the query
label: Tag name
name: varTag
required: false
type: TEXT
- description: Suffix(es) of items (comma-separated) to be queried within all equipments with the above tag. Syntax:itemSuffix=columnHeader, e.g. BatteryLevel=Battery,SignalStrength=Signal,ErrorCode=Error
label: Item Suffixes und Label
name: varItem
required: false
type: TEXT
- label: Header
name: varHeader
required: false
type: TEXT
parameterGroups: []
timestamp: Feb 10, 2021, 9:36:19 PM
component: f7-card
config:
style:
color: var(--my-font-color)
fontSize: 1.0em
font-weight: bold
--f7-card-bg-color: "#111111"
--f7-card-margin-vertical: 0px
--f7-card-margin-horizontal: 0px
--f7-card-content-padding-horizontal: 0px
--f7-card-content-padding-vertical: 0px
--f7-card-border-radius: 0px
slots:
default:
- component: f7-card-content
config:
style:
align-items: center
text-align: center
slots:
default:
- component: f7-row
config:
style:
height: 35px
padding-left: 10px
fontSize: 150%
text-align: left
slots:
default:
- component: f7-col
slots:
default:
- component: Label
config:
text: '=(props.varHeader == NULL) ? "" : props.varHeader'
- component: f7-row
config:
noGap: true
style:
height: 35px
slots:
default:
- component: f7-col
- component: oh-repeater
config:
for: rHeader
sourceType: array
in: =props.varItem.split(",")
fragment: true
slots:
default:
- component: f7-col
slots:
default:
- component: Label
config:
text: =loop.rHeader.split("=")[1]
- component: oh-repeater
config:
for: rThing
sourceType: itemsWithTags
itemTags: '=(props.varTag == NULL) ? "" : props.varTag'
fetchMetadata: semantics
fragment: true
slots:
default:
- component: f7-row
config:
style:
height: 35px
--f7-grid-row-gap: 1px
--f7-grid-gap: 1px
slots:
default:
- component: f7-col
slots:
default:
- component: Label
config:
text: =loop.rThing.metadata.semantics.config.hasLocation
style:
padding-left: 10px
text-align: left
- component: oh-repeater
config:
for: rItem
sourceType: array
in: =props.varItem.split(",")
fragment: true
slots:
default:
- component: f7-col
config:
style:
background: "#222222"
font-weight: normal
slots:
default:
- component: Label
config:
text: =items[loop.rThing.name + "_" + loop.rItem.split("=")[0]].state
style:
height: 35px
class:
- justify-content-center
- display-flex
- flex-direction-column






