ich danke dir auch, dein Code funktioniert auch wie folgt:
ich danke euch beiden erneut für eure unterstützung
Ich habe versucht das Skipt nachzubauen, leider ohne Erfolg. Die Template-Prüfung war OKAY, nur beim Start kam der Fehler im Log:
Invalid config for ‘template’ at configuration.yaml, line 26: expected dictionary for dictionary value ‘sensors’, got [{‘name’: ‘count_openwindow’, ‘unique_id’: ‘cs202404102130’, ‘state’: “{{ expand(‘binary_sensor.grp_fenster_info’) | selectattr(‘state’,‘eq’,‘on’) | list | count }}”, ‘attributes’: {‘friendly_name’: ‘Anzahl offener Fenster’, ‘Sensor’: "{% set entities = expand(‘binary_sensor.grp_fenster_info’) | selectattr(‘state’,‘eq’,‘on’) | map(attribute=‘name’) | list | join(', ') %} {%- for s in entities -%} {{ s }} {%- endfor %} "}}]
Hier mein Code:
template:
- sensors:
- name: "count_openwindow"
unique_id: "cs202404102130"
state: "{{ expand('binary_sensor.grp_fenster_info') | selectattr('state','eq','on') | list | count }}"
attributes:
friendly_name: "Anzahl offener Fenster"
Sensor: >
{% set entities = expand('binary_sensor.grp_fenster_info') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ') %}
{%- for s in entities -%}
{{ s }}
{%- endfor %}
Du hast gleich mehrere Fehler drin:
sensor: anstatt sensors:Die for Schleife kannst Du Dir auch sparen.
template:
- sensor:
- name: Count openwindow
unique_id: 03fbef23-d848-4fac-9560-f584cc897f7d
state: |
{{ expand('binary_sensor.grp_fenster_info') | selectattr('state','eq','on') | list | count }}
attributes:
offene_fenster: |
{{ expand('binary_sensor.grp_fenster_info') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ') }}
Gruß
Osorkon
Super!! Danke für Deine Hilfe - jetzt passt der Sensor. Habe noch einiges zu lernen ![]()
# Anzahl offene Fenster
- sensor:
- name: Count_OpenWindow
icon: mdi:window-open-variant
unique_id: 03fbef23-d848-4fac-9560-202404112203
state: |
{{ expand('binary_sensor.grp_fenster_info') | selectattr('state','eq','on') | list | count }}
attributes:
OpenWindowNames: |
{{ expand('binary_sensor.grp_fenster_info') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ') }}
Wie kann ich eigentlich das Icon einfärben, wenn ein Fenster offen ist?
Wenn ich mich mal einreihen darf:
Anhand dieses Videos lasse ich mich auch über den Status der Tür/Fenstersensoren informieren, sobald ich das Haus/WLAN verlasse.
Jedoch warum auch immer, erhalte ich immer die Meldung “Der ist noch offen” wenn ich gehe und KEINe Tür/Fenster mehr offen ist.
Mein Code:
message: >-
{% set balkonturen_liste = expand('binary_sensor.balkonturen') | selectattr('state', 'eq', 'on') | map(attribute='name') | list %}
{% if balkonturen_liste | length > 1 %}
Der {{ balkonturen_liste[:-1] | join(', der ') }} und der {{ balkonturen_liste[-1] }} ist noch offen
{% else %}
Der {{ balkonturen_liste[0] }} ist noch offen
{% endif %}
Wenn mind. eine Tür offen ist, passt es.
Wenn alle geschlossen sind, wird auch immer nur die Zeile zw. “else” und “endif” ausgegeben.
Liegt es an der Formatierung? Warum mal “balkonturen_liste[:-1]” oder “balkonturen_liste[0]” steht ![]()
Danke.
Musst noch eine Elif dazwischen bauen
If == 1
….
Elif > 1
…
Else
Alles ist zu
Oder dann das Else weg lassen, wenn bei geschlossen nichts ausgegeben werden soll.
Gruß
Osorkon
Hab das anders gelöst, wenn ein Template meldet das ein Raum Offen ist wird es gelb
- binary_sensor:
- name: "OpenDoorDetection_WZ"
unique_id: "opendoordetection_wz"
state: >
{% if is_state("binary_sensor.doorwindowdetection_wzwindow1", "on") or
is_state("binary_sensor.doorwindowdetection_wzwindow2", "on") or
is_state("binary_sensor.doorwindowdetection_wzwindow3", "on") or
is_state("binary_sensor.doorwindowdetection_wzroombalcony1", "on") or
is_state("binary_sensor.doorwindowdetection_wzroombalcony2", "on") %}
on
{% elif is_state("binary_sensor.doorwindowdetection_wzwindow1", "off") and
is_state("binary_sensor.doorwindowdetection_wzwindow2", "off") and
is_state("binary_sensor.doorwindowdetection_wzwindow3", "off") and
is_state("binary_sensor.doorwindowdetection_wzroombalcony1", "off") and
is_state("binary_sensor.doorwindowdetection_wzroombalcony2", "off") %}
off
{% endif %}
icon: mdi:sofa-outline
device_class: window
Danke!
Habe es nun so:
message: >
{% set balkonturen_liste = expand('binary_sensor.balkonturen') |
selectattr('state', 'eq', 'on') | map(attribute='name') | list %} {% if
balkonturen_liste | length > 1 %}
❗Der {{ balkonturen_liste[:-1] | join(', der ') }} und der {{ balkonturen_liste[-1] }} ist noch offen❗
{% endif %}
und nun erscheint eine leere Meldung, wenn eine Tür/Fenster offen ist.
Edit:
{% set balkonturen_liste = expand('binary_sensor.balkonturen') | selectattr('state', 'eq', 'on') | map(attribute='name') | list %}
{% if balkonturen_liste | length == 1 %}
Der {{ balkonturen_liste[0] }} ist noch offen
{% elif balkonturen_liste | length > 1 %}
Der {{ balkonturen_liste[:-1] | join(', der ') }} und der {{ balkonturen_liste[-1] }} ist noch offen
{% else %}
Alles geschlossen!
{% endif %}
Zumindest ist nun alles geschlossen und “Alles geschlossen” hat er mal ausgespuckt. Muss zu Hause testen…
Edit #2:
Es wird nun immer der else (Alles geschlossen) gesendet, egal ob keine oder eine Tür offen ist ![]()
Habe den ‘binary.sensor.xxx’ mal umbenannt, es kommt immer noch die Meldung, dass alles geschlossen ist. Könnte es somit am Helfer liegen? Dass der nicht stimmt?
Du darfst nicht die Länge der Liste abfragen, sondern die Anzahl der Listen Elemente.
{% set balkonturen_liste = expand('binary_sensor.balkonturen') | selectattr('state', 'eq', 'on') | map(attribute='name') | list %}
{% if balkonturen_liste | count == 1 %}
Der {{ balkonturen_liste[0] }} ist noch offen
{% elif balkonturen_liste | count > 1 %}
Der {{ balkonturen_liste[:-1] | join(', der ') }} und der {{ balkonturen_liste[-1] }} ist noch offen
{% else %}
Alles geschlossen!
{% endif %}
Gruß
Osorkon
Moin,
wie kann ich es anstellen, dass wenn alle Türen/Fenster offen sind, ich keine Auflistung sondern lediglich die Meldung “Alle T/F geöffnet” erhalte?
Danke.
Erstell dir doch einfach einen Helfer (Gruppe), der nur an ist, wenn alle Fenster/ Türen offen sind. Wenn dieser Helfer an ist, blendest du über “Bedingungen” die Karte mit der Auflistung aus und blendest stattdessen eine Karte mit der Info, dass alles auf ist, ein.
Einfach die Anzahl der Fenster der Gruppe mit der Anzahl der offenen Fenster vergleichen, wenn Gleich dann sind alle Fenster geöffnet.
{% set balkonturen_liste = expand('binary_sensor.balkonturen') | selectattr('state', 'eq', 'on') | map(attribute='name') | list %}
{% set balkonturen_alle = expand('binary_sensor.balkonturen') | list | count %}
{% set balkonturen_offen = expand('binary_sensor.balkonturen') | selectattr('state', 'eq', 'on') | list | count %}
{% if balkonturen_liste | count == 1 %}
Der {{ balkonturen_liste[0] }} ist noch offen
{% elif balkonturen_alle == balkonturen_offen %}
Alle T/F geöffnet
{% elif balkonturen_liste | count > 1 %}
Der {{ balkonturen_liste[:-1] | join(', der ') }} und der {{ balkonturen_liste[-1] }} ist noch offen
{% else %}
Alles geschlossen!
{% endif %}
Gruß
Osorkon
Hallo Zusammen,
Darf ich das Thema nochmal aufgreifen. Alle der o.g. Lösungsvorschläge gehen von einem Binary Fenstersensor aus. Also auf/zu oder on/off. Die lassen sich prima in einer entsprechenden Gruppe zusammenfassen.
Ich nutze jedoch bei meinen Fenstern und Türen “3 State Sensoren”. Diese zeigen neben “Offen” und “Geschlossen” auch “Gekippt” an. Leider lassen sich diese Sensoren scheinbar nicht so einfach gruppieren. Ich habe schon versucht die 3 States über eine Helfer zu “binarisieren” also On = Geöffnet oder gekippt und off ist geschlossen. Aber leider lassen sich Helfer dann auch nicht gruppieren.
Ich komme von FHEM da gibt es eine Modul, das einem das alles abgenommen hat. Es stelle sowohl die Anzahl der offenen Fenster und Türen als auch “sprechbare” Sätze bereit.
Hat hier schon jemand eine “Offene Fenster Warnung” mit den Homematic IP Sensoren realisiert hat. Ziel ist es, meine jetzige Funktion in HA zu realisieren. Wenn ich heute die Wohnung verlasse, ertönt eine Sprachausgabe “Alle Fenster und Türen sind geschlossen” oder eben " Achtung: Das Fenster xxx ist und die Tür yyy sind noch geöffnet"
Darüber hinaus benötige ich die Anzahl der offenen Fenster und Türen noch für andere Automatisierungen.
Schon mal vielen Dank für eure Hilfe.
Hab eine Lösung gefunden.
Schön für dich, nur leider hilft es anderen Usern nicht, wenn du die Lösung nicht postest.
Hmm, meine Frage hat ja scheinbar auch keinen interessiert ![]()
wNur weil keiner eine Antwort hatte … Wenn das dein Verständnis von Community ist, okay.
Aber evtl. sucht zukünftig doch mal jemand nach was ähnlichem.
Ja so wie ich auf diesen 6 Monate alten Post gestoßen bin. ![]()
Und bitte werde doch nicht gleich persönlich!!! Was soll das? Hast du meine anderen Posts hier gelesen. Oder kennst du mein Engagement im FHEM Forum? Vermutlich nicht aber gleich mal drauf hauen. Das geht dann schneller als einen Hilfreichen Post zu schreiben. Ist das dein Verständnis von Community?
Die Lösung war am Ende gar nicht so schwer. Ich lasse einfach die Zustände in einen Zähler Helfer laufen. Der dann entsprechend der Aktionen am Fenster um eins erhöht und um eins verringert. Fertig.
Da ich noch ganz neu auf HA bin, hatte ich die Funktion noch nicht entdeckt.
Und wie ich die Namen der Trigger Entitäten in einen Helfer schreibe bekomme ich auch noch hin. Hab schon was ähnliches gefunden.
Wäre aber natürlich für einen Tipp dankbar.
Also eigentlich müsste doch die Lösung am Anfang vom Thread auch bei 3 Zuständen funktionieren. Oder versteh ich da gerade was falsch?