Ich möchte mich bei folgenden Benutzern für Ihre tolle und hilfreiche Unterstützung bedanken. Mit Eurer Hilfe habe ich jetzt eine prima Lösung, um einen Fensterstatus komplett abzubilden - vielen lieben Dank ![]()
Die Lösung sieht folgendermaßen aus:
Das Makro entities.jinja muss unter /config/custom_templates abgelegt werden. Hierbei ist wichtig, dass man die Farben als rgb-Wert übergibt, damit diese mit Home Assistent deckungsgleich sind. Würde man den Namen verwenden, wäre der Farbton immer eine Nuance dunkler. Die rgb-Codes findet man hier bei Home Assistant.
#window_entity
{% macro window_entity(window_handle, contact_sensor) %}
{% if states(window_handle) == "closed" and states(contact_sensor) == "off" %}
Geschlossen
{% elif states(window_handle) == "tilted" and states(contact_sensor) == "off" %}
Angelehnt
{% elif states(window_handle) == "open" and states(contact_sensor) == "off" %}
Angelehnt
{% elif states(window_handle) == "closed" and states(contact_sensor) == "on" %}
Sabotage
{% elif states(window_handle) == "tilted" and states(contact_sensor) == "on" %}
Gekippt
{% elif states(window_handle) == "open" and states(contact_sensor) == "on" %}
Offen
{% else %}
Unbekannt
{% endif %}
{% endmacro %}
#window_icon
{% macro window_icon(window_sensor_icon) %}
{% if states(window_sensor_icon) == "Geschlossen" %}
phu:lift-in-window-closed
{% elif states(window_sensor_icon) == "Angelehnt" %}
phu:lift-in-window-closed
{% elif states(window_sensor_icon) == "Sabotage" %}
mdi:alert
{% elif states(window_sensor_icon) == "Gekippt" %}
phu:lift-in-window-open1
{% elif states(window_sensor_icon) == "Offen" %}
phu:lift-in-window-open2
{% else %}
mdi:alert-box
{% endif %}
{% endmacro %}
#window_icon_color
{% macro window_icon_color(window_sensor_icon_color) %}
{% if states(window_sensor_icon_color) == "Geschlossen" %}
--tile-color: rgb(158, 158, 158) !important;
{% elif states(window_sensor_icon_color) == "Angelehnt" %}
--tile-color: rgb(255, 87, 34) !important;
{% elif states(window_sensor_icon_color) == "Sabotage" %}
--tile-color: rgb(244, 67, 54) !important;
{% elif states(window_sensor_icon_color) == "Gekippt" %}
--tile-color: rgb(33, 150, 243) !important;
{% elif states(window_sensor_icon_color) == "Offen" %}
--tile-color: rgb(0, 188, 212) !important;
{% else %}
--tile-color: rgb(233, 30, 99) !important;
{% endif %}
{% endmacro %}
Das Template kann entweder direkt in die configuration.yaml eingetragen, oder aber via /config/packages als eigene Datei (z. B. templates.yaml) ausgelagert werden. Für jeden Fenstersensor, jede Entität, muss ein eigener Eintrag erstellt werden.
template:
- sensor:
- name: "Bad Fensterstatus links"
unique_id: "bad_fensterstatus_links"
state: >-
{% from 'entities.jinja' import window_entity %}
{{ window_entity('sensor.bad_fenstergriff_links', 'binary_sensor.bad_fenster_links') }}
icon: >-
{% from 'entities.jinja' import window_icon %}
{{ window_icon('sensor.bad_fensterstatus_links') }}
In der lovelace yaml wird der Fenstersensor, die Entität, dann wie folgt abgebildet.
type: tile
entity: sensor.bad_fensterstatus_links
name: Fenster
card_mod:
style: |
ha-tile-icon {
{% from 'entities.jinja' import window_icon_color %}
{{window_icon_color('sensor.bad_fensterstatus_links') }}
}