Seite 1 von 1

Batterie-Ladestandsanzeige als Widget

Verfasst: 15. Jul 2025 10:58
von peter-pan
Ich hab mir ein kleines Widget gebastelt mit dem man sich den Ladestand (prozentual) der Batterien anzeigen lassen kann.

Es werden alle Batterien überwacht, die den Tag "LowBattery" (Property) haben. Man muss also nicht eine bestimmte Gruppe angeben. Die Selektionsgrenze(n) ist(sind) skalierbar.
lowbatt.jpg
Der Yaml-Code:

Code: Alles auswählen

uid: battery_charging_status
tags:
  - peter
  - rich
  - rlk_battery_status - derivation
  - null
props:
  parameters:
    - default: "55"
      description: Maximum percentage to show in the widget
      label: Max Percent
      name: max
      required: false
      type: INTEGER
      min: 0
      max: 100
    - default: "50"
      description: The percentage above which green is used
      label: Green Level
      name: green
      required: false
      type: INTEGER
      min: 0
      max: 100
    - default: "39"
      description: The percentage above which orange is used
      label: Orange Level
      name: orange
      required: false
      type: INTEGER
      min: 0
      max: 100
    - default: Battery Charging Status /Ladezustand
      description: Title used for the widget to the left of the colon.
      label: Title
      name: title
      required: false
      type: TEXT
  parameterGroups: []
timestamp: Jul 15, 2025, 9:28:03 AM
component: oh-list-card
config:
  title: =props.title
  style:
    background: linear-gradient(to bottom left,#FA8072 30%,#00FFFF 60%)
    border-radius: var(--f7-card-expandable-border-radius)
slots:
  default:
    - component: oh-repeater
      config:
        filter: Number.parseFloat(items[loop.item.name].state) <= props.max
        for: item
        fragment: true
        itemTags: LowBattery
        sourceType: itemsWithTags
      slots:
        default:
          - component: oh-list-item
            config:
              badge: "=(items[loop.item.name].displayState === undefined) ? loop.item.state :
                items[loop.item.name].displayState"
              badgeColor: '=(Number.parseFloat(loop.item.state) > props.green) ? "green" :
                (Number.parseFloat(loop.item.state) > props.orange) ? "orange" :
                "red"'
              icon: '=(Number.parseFloat(loop.item.state) > props.green) ? "f7:battery_100" :
                (Number.parseFloat(loop.item.state) > props.orange) ?
                "f7:battery_25" : "f7:battery_0"'
              iconColor: '=(Number.parseFloat(loop.item.state) > props.green) ? "green" :
                (Number.parseFloat(loop.item.state) > props.orange) ? "orange" :
                "red"'
              item: =loop.item.name
              title: =loop.item.label
Vielleicht gefällt's dem ein oder anderen.