Hallo,
ich habe zahlreiche Taster und Sensoren, die über Batterie laufen. Gibt es eine Möglichkeit, dass HA mir auf dem Dashboard eine Nachricht anzeigt, sobald eine dieser Entitäten nur noch wenig Batterie hat?
So etwa wie hier?
Danke Euch!
Hallo,
ich habe zahlreiche Taster und Sensoren, die über Batterie laufen. Gibt es eine Möglichkeit, dass HA mir auf dem Dashboard eine Nachricht anzeigt, sobald eine dieser Entitäten nur noch wenig Batterie hat?
So etwa wie hier?
Danke Euch!
Hi,
ungeprüft antwortet google KI dazu:
1. Dashboard: Alle Batteriestände anzeigen (Markdown-Karte)Fügen Sie diese Karte zu Ihrem Dashboard hinzu. Sie listet alle Batterien sortiert nach Ladestand auf und hebt Batterien unter 10 % fett und rot hervor.yamltype: markdown
title: "🔋 Batteriestände"
content: >
| Gerät | Zustand |
| :--- | :---: |
{%- for state in states.sensor
| selectattr('attributes.device_class', 'defined')
| selectattr('attributes.device_class', 'eq', 'battery')
| sort(attribute='state', reverse=false) %}
{%- set level = state.state | int(-1) %}
{%- if level != -1 %}
| {{ state.name }} | {% if level <= 10 %}**<span style="color: red;">{{ level }} %</span>**{% else %}{{ level }} %{% endif %} |
{%- endif %}
{%- endfor %}
Diese Automation löst aus, sobald irgendein Batteriesensor unter 10 % fällt. Sie schickt eine Benachrichtigung an Ihr Smartphone und listet im Text genau den Namen des betroffenen Geräts sowie dessen aktuellen Ladestand auf.
Erstellen Sie eine neue leere Automation, klicken Sie oben rechts auf die drei Punkte, wählen Sie “Als YAML bearbeiten” und fügen Sie folgenden Code ein:
yaml
alias: "Warnung: Batterie unter 10%"
description: "Sendet eine Benachrichtigung, wenn eine Batterie schwach ist."
trigger:
- platform: numeric_state
entity_id: [] # Bleibt leer, da wir über das Template alle Batterien überwachen
value_template: >-
{{ states.sensor
| selectattr('attributes.device_class', 'defined')
| selectattr('attributes.device_class', 'eq', 'battery')
| map(attribute='state') | map('int') | min }}
below: 10
condition: []
action:
- service: notify.notify
metadata: {}
data:
title: "🪫 Batterie schwach!"
message: >-
Folgende Batterien müssen getauscht werden:
{%- for state in states.sensor
| selectattr('attributes.device_class', 'defined')
| selectattr('attributes.device_class', 'eq', 'battery') %}
{%- if state.state | int(100) <= 10 %}
- {{ state.name }}: {{ state.state }}%
{%- endif %}
{%- endfor %}
mode: single
💡 Profi-Tipps zum Code:notify.notify: Schickt die Nachricht an alle angemeldeten Smartphones. Wenn Sie die Nachricht nur an ein bestimmtes Gerät senden möchten, ersetzen Sie dies durch z.B. notify.mobile_app_ihr_handy.Voraussetzung: Ihre Geräte müssen in Home Assistant korrekt als Batterie erkannt werden (Standard bei fast allen Zigbee-, Homematic- oder Shelly-Geräten). Das wird über das Attribut device_class: battery im Hintergrund geregelt.
Vlt. ein Ansatzpunkt, die Google KI ist nicht so toll wie Claude aber schon brauchbar, nur muss man immer schauen, ob die Ausgabe Sinn macht, manchmal werden Dinge nur halb ausgeschrieben, was zu Fehlern führen kann
Die Markdown Karte funktioniert, sieht nicht schön aus aber funktional.
Cheers Franky
Hi, ich hab mal noch etwas Google gequält ![]()
Das sit der YAML Code, einfach kopieren und in eine Markdown Karte einfügen, das Ergebnis siehst du dann unten auf dem Bild
{%- set low_batteries = states.sensor
| selectattr('attributes.device_class', 'defined')
| selectattr('attributes.device_class', 'eq', 'battery')
| rejectattr('state', 'in', ['unavailable', 'unknown']) %}
{%- set filtered_low = namespace(devices=[]) %}
{%- for state in low_batteries %}
{%- if state.state | int(-1) <= 10 and state.state | int(-1) >= 0 %}
{%- set filtered_low.devices = filtered_low.devices + [state.name ~ ' (' ~ state.state ~ '%)'] %}
{%- endif %}
{%- endfor %}
{%- if filtered_low.devices | length > 0 %}
### 🪫 WARNUNG: Kritische Batterien (< 10%)!
{%- for device in filtered_low.devices %}
* **⚠️ {{ device }}**
{%- endfor %}
***
{%- endif %}
| Gerät | Zustand |
| :--- | :---: |
{%- for state in states.sensor
| selectattr('attributes.device_class', 'defined')
| selectattr('attributes.device_class', 'eq', 'battery')
| sort(attribute='state', reverse=false) %}
{%- set level = state.state | int(-1) %}
{%- if level != -1 %}
| {{ state.name }} | {% if level <= 10 %}**⚠️ {{ level }} %**{% else %}{{ level }} %{% endif %} |
{%- endif %}
{%- endfor %}
Veil Vergnügen, beim Rumbasteln
![]()
Hier wird auch noch der Bereich mit ausgegeben, falls du mehrere gleichnamige Geräte hast
{%- set low_batteries = states.sensor
| selectattr(‘attributes.device_class’, ‘defined’)
| selectattr(‘attributes.device_class’, ‘eq’, ‘battery’)
| rejectattr(‘state’, ‘in’, [‘unavailable’, ‘unknown’]) %}
{%- set filtered_low = namespace(devices=
) %}
{%- for state in low_batteries %}
{%- if state.state | int(-1) <= 10 and state.state | int(-1) >= 0 %}
{%- set area = area_name(state.entity_id) | default(‘Kein Bereich’, true) %}
{%- set filtered_low.devices = filtered_low.devices + [state.name ~ ’ [’ ~ area ~ ‘] (’ ~ state.state ~ ‘%)’] %}
{%- endif %}
{%- endfor %}
{%- if filtered_low.devices | length > 0 %}
🪫 WARNUNG: Kritische Batterien (< 10%)!
{%- for device in filtered_low.devices %}
⚠️ {{ device }}
{%- endfor %}
{%- endif %}
Bereich
Gerät
Zustand
{%- for state in states.sensor
| selectattr('attributes.device_class', 'defined')
| selectattr('attributes.device_class', 'eq', 'battery')
| sort(attribute='state', reverse=false) %}
{%- set level = state.state | int(-1) %}
{%- if level != -1 %}
{%- set area = area_name(state.entity_id) | default('Kein Bereich', true) %}
| {{ area }} | {{ state.name }} | {% if level <= 10 %}**⚠️ {{ level }} %**{% else %}{{ level }} %{% endif %} |
{%- endif %}
{%- endfor %}
So, viel Vergnügen, beim Rumspielen und gestalten der Anzeigen ![]()
Wenn du was nettes hast, wäre es schön das Ergebnis hier zu posten,
Danke und Grüße Franky
P.S.: oder du schaust dir mal das Strategie Dashboard von Simon an:
by HarryP: Zusammenführung Mehrfachpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen), oder noch besser die “Editier-Funktion” nutzen und nur den aktuellen Code einstellen.
Ich habe den Code noch so angepasst, dass die Karte nur angezeigt wird, wenn eine Batterie unter 10% ist, ansonsten ist die Karte ausgeblendet:
{%- set low_batteries = states.sensor | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', 'battery') | rejectattr('state', 'in', ['unavailable', 'unknown']) %}
{%- set filtered_low = namespace(devices=[]) %}
{%- for state in low_batteries %}
{%- if state.state | int(-1) <= 10 and state.state | int(-1) >= 0 %}
{%- set filtered_low.devices = filtered_low.devices + [state.name ~ ' (' ~ state.state ~ '%)'] %}
{%- endif %}
{%- endfor %}
{# Die gesamte Karte wird nur generiert, wenn kritische Batterien existieren #}
{%- if filtered_low.devices | length > 0 %}
### ⚠️ WARNUNG: Kritische Batterien (< 10%)!
{%- for device in filtered_low.devices %}
* ⚠️ {{ device }}
{%- endfor %}
***
| Gerät | Zustand |
| :--- | :---: |
{%- set ns = namespace(all=[]) %}
{%- for state in states.sensor | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', 'battery') | rejectattr('state', 'in', ['unavailable', 'unknown']) %}
{%- set ns.all = ns.all + [ {"name": state.name, "level": state.state | int(-1)} ] %}
{%- endfor %}
{%- for item in ns.all | sort(attribute='level') %}
| {{ item.name }} | {% if item.level <= 10 %}**⚠️ {{ item.level }} %**{% else %}{{ item.level }} %{% endif %} |
{%- endfor %}
{%- endif %}
Habe vor zwei Wochen auf folgende HACS Integration umgestellt.
Funktioniert Super.
Status Meldungen verschiedener Art.
usw.
Vielen Dank für Eure Idee. Der letzte Vorschlag von nfloyd gefällt mir, da hier nicht permanent alles angezeigt wird.
Vielleicht hat jemand noch eine Idee, wie man es hinbekommt, dass ganze per Button Card bzw. Stapel Karte so zu gestalten:
In der von mir oben zitierten Lösung gab es eine solche Darstellung für meine Fenster, bei der nur die aktuell offnen Fenster gelistet werden und ansonsten ein grünes Fenster mit Alles geschlossen erscheint.
Ich nutze dafür die status-card aus HACS. Die nehme ich auch für offene Fenster, Türen, angeschaltete Lichter, Rollladen, Updates usw. und auch wenn ein Akku unter 30% fällt.
Hast Du dazu vielleicht ein Skript oder eine Anleitung?
Bei den Fenstern musste ich vorher einige Helfer definieren.
Hinweis dazu: Ein Teil der Geräte ist von Homematic und liest dort den Batteriestatus aus.
Hier ist mein Code für die status-card. Kannst du ja mal probieren, ob es dir so zusagt oder evtl. noch anpassen. Helfer sind dafür nicht nötig.
content:
- Akku
- RM-Akku
- Unerreichbar
- alarm_control_panel
- light
- binary_sensor - door
- binary_sensor - window
- cover - shutter
- binary_sensor - moisture
- binary_sensor - motion
- update
type: custom:status-card
columns: 3
hide_person: true
list_mode: false
hide_content_name: false
customization:
- type: cover - shutter
invert_state: 'false'
invert: true
icon_color: indigo
- type: binary_sensor - window
invert_state: 'false'
icon: mdi:window-closed-variant
hold_action:
action: more-info
double_tap_action:
action: more-info
- type: binary_sensor - door
invert_state: 'false'
show_total_entities: false
badge_mode: false
- type: light
invert_state: 'false'
name: Licht
- type: alarm_control_panel
invert_state: 'false'
icon_color: red
name: Alarmanlage
- type: binary_sensor - moisture
invert_state: 'false'
icon_color: blue
- type: update
invert_state: 'false'
icon_color: teal
- type: binary_sensor - motion
invert_state: 'false'
icon_color: orange
filter: area
label_filter: false
popup_sort: state
rulesets:
- group_id: Akku
group_icon: mdi:battery-30
group_status: Niedrig
attributes:
device_class: battery
state: <30
- group_id: RM-Akku
group_icon: mdi:smoke-detector-variant-alert
group_status: Niedrig
attributes:
device_class: battery
state: 'on'
- group_id: Unerreichbar
group_icon: mdi:cancel
group_status: Unerreichbar
state: unavailable
area: sensoren
multiple_areas: false
show_total_number: false
show_total_entities: false
square: true
no_scroll: true
hide_card_if_empty: true
badge_mode: false
no_background: false
color: amber
styles:
card:
border-color: rgb(50, 50, 50);
icon:
background-color: rgba(0, 0, 0, 0)
content_layout: horizontal
grid_options:
columns: 12
rows: auto
extra_entities: []
hide_filter: entity
background_color:
- 30
- 30
- 30
Update: Ich habe meine status-card Code angepasst um auch den Binärsensor von den Rauchmeldern zu erfassen. Der heisst bei mir “RM-Akku” … sollte dann auch für deine Binärsensoren von Homematic funktionieren (Namen dann vielleicht noch anpassen)
Ich habe es noch weiter für mich optimiert:
Das ganze sieht nun so aus:
{%- set ignored_entities = [
'sensor.lenovo_tb125fu_battery_level',
'sensor.iphone_heidi_battery_level',
'sensor.s23_home_battery_level',
'sensor.galaxy_watch5_pro_b8ml_battery_level'
] %}
{%- set low_batteries = states.sensor | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', 'battery') | rejectattr('state', 'in', ['unavailable', 'unknown']) %}
{%- set filtered_low = namespace(devices=[]) %}
{%- for state in low_batteries %}
{# Filtert alle IDs aus der Ignorier-Liste aus #}
{%- if state.entity_id not in ignored_entities %}
{%- if state.state | int(-1) <= 10 and state.state | int(-1) >= 0 %}
{%- set filtered_low.devices = filtered_low.devices + [state.name ~ ' (' ~ state.state ~ '%)'] %}
{%- endif %}
{%- endif %}
{%- endfor %}
{# Karte wird nur generiert, wenn mindestens eine Batterie unter 10% ist #}
{%- if filtered_low.devices | length > 0 %}
### ⚠️ WARNUNG: Kritische Batterien (< 10%)!
{%- for device in filtered_low.devices %}
* ⚠️ {{ device }}
{%- endfor %}
***
| Gerät | Zustand |
| :--- | :---: |
{%- set ns = namespace(all=[]) %}
{%- for state in states.sensor | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', 'battery') | rejectattr('state', 'in', ['unavailable', 'unknown']) %}
{%- set level = state.state | int(-1) %}
{# Zeigt nur Batterien unter 50% an und ignoriert die IDs aus der Liste #}
{%- if level < 50 and state.entity_id not in ignored_entities and level != -1 %}
{%- set ns.all = ns.all + [ {"name": state.name, "level": level} ] %}
{%- endif %}
{%- endfor %}
{%- for item in ns.all | sort(attribute='level') %}
| {{ item.name }} | {% if item.level <= 10 %}**⚠️ {{ item.level }} %**{% else %}{{ item.level }} %{% endif %} |
{%- endfor %}
{%- endif %}
Sehr nice,
sieht schöner aus, als mein Vorschlag, nehme ich auch gerne ![]()
Dankeschön
Ich nutze dafür die custom:battery-state-card
type: custom:battery-state-card
secondary_info: '{attributes.battery_type_and_quantity}'
round: 0
filter:
include:
- and:
- name: attributes.device_class
value: battery
- not:
name: device.labels
operator: contains
value: no_battery_info
exclude:
- name: state
value: 'Off'
- name: state
value: 10
operator: '>'
- name: state
value: unavailable
bulk_rename:
- from: Batterie+
- from: Battery
sort:
by: state
desc: false
grid_options:
columns: full
Ich nutze zusätzlich Battery-Notes
Oh man! So viele Vorschläge! Super! Da ist der Abend ja gerettet!
Homematic verwendet ja einen binary_sensor, der wohl keine Prozentwerte ausgibt. Gehen Eure Lösungen dann auch?
Also mit der status-card könnte man da sicher was basteln für nen Binärsensor. So wie ich es jetzt habe, werden nur Prozentwerte ausgewertet. Geht der auf 1 wenn die Batterie leer ist oder 0 wenn leer ?
Da fällt mir ein, ich brauche das auch noch für meine Rauchmelder-Batterien (X-Sense).. Die haben auch nur einen Binärsensor (steht im Moment auf “Normal”)
Update: Ich habe meine status-card Code angepasst um auch den Binärsensor von den Rauchmeldern zu erfassen. Der heisst bei mir “RM-Akku” … sollte dann auch für deine Binärsensoren von Homematic funktionieren (Namen dann vielleicht noch anpassen)
Das sollte funktionieren. Einfach mit exclude bzw. include arbeiten.
Habe heute selber mal gebastelt.
Es gibt eine Helfergruppe mit den Homematic Binärsensoren.
Dann habe ich das Skript für die offenen Fenster dubliziert und auf die Batterien angepasst.
Rausgekommen ist das:
type: vertical-stack
cards:
- type: custom:auto-entities
card:
type: entities
title: Batteriezustände
show_header_toggle: false
card_mod:
style: |
ha-card {
background: rgba(255, 140, 0, 1) !important;
}
.card-header {
color: #000000;
font-weight: 600;
font-size: 14px;
}
filter:
include:
- options:
card_mod:
style:
hui-generic-entity-row $: |
.info {
color:#000000 !important;
font-weight:600;
font-size:12px;
}
state-badge {
color:#000000 !important;
}
.state {
color: #000000 !important;
font-weight:600;
font-size:14px;
}
domain: binary_sensor
attributes:
device_class: battery
state: 'on'
show_empty: false
grid_options:
rows: auto
Normal ist nichts auf dem Dashboard zu sehen. Hoffe, dass bei einer leeren Batterie eine Meldung kommt.
Zum Test habe ich dann mal den State auf off gesetzt und es wurden alle Batterien mit Zustand Normal (so heißt das bei Homematic) angezeigt.
Hinweis: Ich habe keine Ahnung von YAML, kann mir nur mit Basteln und Rückschlüssen helfen.
Jetzt wäre es noch Klasse, wenn man das Skript dahingehend erweitern kann, wenn sonstige Battrien bei einem Stand unter 20 % angezeigt werden. Die Batterien würde ich in einem Helfer sammeln. Aber dann ???