Seite 1 von 1
Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: So 4. Feb 2024, 21:25
von Osorkon
Wird mal wieder Zeit für Template.

Dieses Template zählt die Lichter, welche eingeschaltet sind.
Wenn mehr als ein Licht eingeschaltet ist, gibt das Template die Namen der Lichter die eingeschaltet sind.
Sonst "Alle Lichter sind ausgeschaltet"
Kann man für ein Karte, eine Text oder TTS Benachrichtigung verwenden.
Code: Alles auswählen
{% set lichter_liste = states.light |selectattr('state','eq','on')
| map(attribute='name')
| list
| join(', ') %}
{% set lichter_anzahl = states.light |selectattr('state','eq','on')
| list
| count %}
{% if lichter_anzahl == 0 %}
Alle Lichter sind ausgeschaltet
{% else %}
Folgende Lichter sind noch an:
{{ lichter_liste }}
{% endif %}
Und hier der kleinen Bruder für offen stehende Fenster. 
Code: Alles auswählen
{% set fenster_liste = states.binary_sensor
| selectattr('state','eq','on')
| selectattr('attributes.device_class','defined')
| selectattr('attributes.device_class','eq', 'window')
| map(attribute='name')
| list
| join(', ') %}
{% set fenster_anzahl = states.binary_sensor
| selectattr('state','eq','on')
| selectattr('attributes.device_class','defined')
| selectattr('attributes.device_class','eq', 'window')
| list
| count %}
{% if fenster_anzahl == 0 %}
Alle Fenster sind geschlossen
{% else %}
Folgende Fenster sind noch geöffnet:
{{ fenster_liste }}
{% endif %}
Die Templates lassen sich natürlich auch für weiter Domain wie Switches, covers, etc verwenden.
Bzw. für andere device classen, wie z.B. Türen.
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 18. Mär 2024, 21:02
von TheBermud
Danke für das Template.
wäre glaube ich eine gute Ergänzung, damit die Lichter in Gruppen nicht mitgezählt werden. Finde, dass sonst das Ergebnis verfälscht ist.
Ich würde die Liste gerne alphabetisch sortieren, hast du dazu eine Idee?
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 18. Mär 2024, 23:13
von Osorkon
Nach Namen sortiert:
Code: Alles auswählen
{% set lichter_liste = states.light | selectattr('state','eq','on')
| sort(attribute='name')
| map(attribute='name')
| join(', ') %}
{% set lichter_anzahl = states.light |selectattr('state','eq','on')
| list
| count %}
{% if lichter_anzahl == 0 %}
Alle Lichter sind ausgeschaltet
{% else %}
Folgende Lichter sind noch an:
{{ lichter_liste }}
{% endif %}
Wie man die Lichter die keinem Bereich zugeordnet sind aussortiert, müsste ich mir mal genauer anschauen.
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 19. Mär 2024, 07:45
von TheBermud
Vielen Dank, funktioniert super.
Ich glaube ich habe mich oben falsch ausgedrückt. Mit dem Zusatz werden die Lichtergruppen nicht mit in die Liste aufgenommen, die Lichter in den Gruppen natürlich schon 
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 30. Apr 2024, 21:41
von 0lli
Hallo,
Tolles Template mein Problem ist das meine Sensoren sowohl die device_class: window als auch door haben was eigentlich nicht das Problem ist dann hätte ich die class door einfach mit angegeben aber dann haut Tankerkönig Adressen mit raus die komischer weise auch auf door laufen 
wie kann ich denn die device_class änder?
und es stellt sich die frage welche änder ich dann die von Tankerkönig oder die von den Sensoren?
vielen Dank
Gruß Olli
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mi 1. Mai 2024, 12:11
von Osorkon
0lli hat geschrieben: ↑Di 30. Apr 2024, 21:41
wie kann ich denn die device_class änder?
Entität auswählen -> Zahnradsymbol -> Anzeigen als
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 24. Jun 2024, 11:35
von Shawn26
Hallo Zusammen,
Template funktioniert super, aber ich finde nicht heraus was ich ändern muss, damit ich die einzelnen Fenster nicht durch ein ein Komma getrennt sondern untereinander angezeigt bekomme?
Gibt es da eine Möglichkeit?
Vielen Dank
Shawn
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 24. Jun 2024, 11:43
von Osorkon
Shawn26 hat geschrieben: ↑Mo 24. Jun 2024, 11:35
damit ich die einzelnen Fenster nicht durch ein ein Komma getrennt sondern untereinander angezeigt bekomme?
ersetze die Zeile
gegen
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 24. Jun 2024, 13:01
von Shawn26
Jetzt sieht es aber so aus...

- HA-Hinweis.jpg (9.97 KiB) 11201 mal betrachtet
Shawn
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 24. Jun 2024, 13:39
von Osorkon
Ein Sensor kennt keinen Zeilenumbruch. 
Verwende stattdessen eine Markdown Karte.
Also das Template direkt in der Markdown Karte verwenden.
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 24. Jun 2024, 15:04
von Shawn26
@Osorkon
Also das mit der Markdown Karte hat wunderbar funktioniert. Jetzt hätte ich nur eine Frage und hoffe Du kannst mir da ggfs. auch weiterhelfen.
Wie bekomme ich denn das "rote" Fenster (wie in meinem horizontalen Stapel) als Info Icon in einer Markdown dargestellt?
Danke Dir
Shawn
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 24. Jun 2024, 15:39
von Osorkon
Shawn26 hat geschrieben: ↑Mo 24. Jun 2024, 15:04
Wie bekomme ich denn das "rote" Fenster (wie in meinem horizontalen Stapel) als Info Icon in einer Markdown dargestellt?
Code: Alles auswählen
<font color='#e60000'><ha-icon icon='mdi:window-open-variant'/>
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 25. Jun 2024, 06:38
von Shawn26
@Osorkon
Vielen Dank für Deine schnelle Unterstützung. Wenn das mit dem "roten Kreis" im Hintergrund auch noch zu realisieren wäre, dann wäre das ein Traum.
Wenn nicht bin ich mit dieser Lösung aber auch mehr als zufrieden.
Shawn
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Sa 7. Sep 2024, 22:13
von Mono
Bei mir kann ich die device_class leider nicht ändern bzw. einstellen da meine Fenster oder Lampen über KNX rein kommen.
was kann ich da machen?

Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: So 8. Sep 2024, 12:37
von miami
Ich habe einen Fenstersensor an der Balkontür. Der ist als Fenster konfiguriert.
Mit einem Helfer "Template" habe ich meine Balkontür zusätzlich als Tür abgelegt:
Einen Binärer Sensor-Template mit {{states('binary_sensor.balkontuer') }} angelegt und als Tür anzeigen lassen
Damit die das Fenster "Balkontür" nun nicht mehr von der Markdown-Karte für Fenster angezeigt wird, habe ich dort (an zwei Stellen) um selectattr('name','ne', 'Balkontür') ergänzt, so dass die Balkontür aus der Liste rausfällt. Die Definition sieht nun bei mir so aus:
Code: Alles auswählen
{% set fenster_liste = states.binary_sensor
| selectattr('state','eq','on')
| selectattr('attributes.device_class','defined')
| selectattr('attributes.device_class','eq', 'window')
| selectattr('name','ne', 'Balkontür')
| sort(attribute='name')
| map(attribute='name')
| list
| join('\n ') %}
{% set fenster_anzahl = states.binary_sensor
| selectattr('state','eq','on')
| selectattr('attributes.device_class','defined')
| selectattr('attributes.device_class','eq', 'window')
| selectattr('name','ne', 'Balkontür')
| list
| count %}
{% if fenster_anzahl == 0 %}
Alle Fenster sind geschlossen.
{% else %}
Folgende Fenster sind geöffnet:
{{ fenster_liste }}
{% endif %}
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mo 9. Sep 2024, 00:16
von Osorkon
Mono hat geschrieben: ↑Sa 7. Sep 2024, 22:13
ei mir kann ich die device_class leider nicht ändern bzw. einstellen da meine Fenster oder Lampen über KNX rein kommen.
In dem Fall, kannst Du nicht nach der Device Class window filtern.
Aber Du kannst das Label "fenster" verwenden.
Also alle Sensoren mit dem Label "Fenster und dem Status "offen" ausgeben.
Code: Alles auswählen
{% set fenster_liste = label_entities('fenster')
| select('match', 'sensor')
| expand()
| selectattr('state','eq','offen')
| map(attribute='name')
| list
| join(', ') %}
{{ fenster_liste }}
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 10. Sep 2024, 13:43
von Mono
Dein Template funktioniert gut.
Ich habe versucht den status Gekippt noch mit dabei zu nehmen und die beschriftung aber leider bekomme ich das nicht hin. 
Code: Alles auswählen
{% set fenster_liste = label_entities('Fenster')
| select('match', 'sensor')
| expand()
| selectattr('state','eq','Offen')
| map(attribute='name')
| list
| join(',\n') %}
{% set Fenster_anzahl = label_entities |selectattr('state','eq','Offen','Gekippt')
| list
| count %}
{% if Fenster_anzahl == 0 %}
Alle Fenster sind zu
{% else %}
Folgende Fenster sind noch offen
{{ fenster_liste }}
{% endif %}
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 10. Sep 2024, 20:50
von Osorkon
Zählt alle Sensoren mit dem Label "fenster" (klein geschrieben!) die nicht "Geschlossen" sind.
Wobei "Geschlossen" exakt der Status des Sensors sein muss, wenn es den geschlossen ist.
Und Listet die Namen der nicht geschlossnen Fenster auf.
Wenn alle Fenster Geschlossen sind, wird
Alle Fenster sind zu
ausgegeben.
Code: Alles auswählen
{% set fenster_liste = label_entities('fenster')
| select('match', 'sensor')
| expand()
| rejectattr('state','eq','Geschlossen')
| map(attribute='name')
| list %}
{% set fenster_anzahl = fenster_liste
| count %}
{% if fenster_anzahl == 0 %}
Alle Fenster sind zu
{% else %}
Folgende Fenster sind noch offen:
{{ fenster_liste | join(',\n') }}
{% endif %}
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 10. Sep 2024, 21:02
von miami
Mono, das geht so nicht: selectattr('state','eq','Offen','Gekippt'
Das Attribut state wird auf Gleichheit mit dem folgenden String geprüft. Da kannst du dann keine zwei angeben. Vielleicht gibt es aber auch noch was passenderes als "eq" (equal, also gleich). Weiß ich leider nicht.
Du kannst aber zwei "Abfragen" machen:
Code: Alles auswählen
{% set fenster_liste = label_entities('Fenster')
| select('match', 'sensor')
| expand()
| selectattr('state','eq','Offen')
| map(attribute='name')
| list
| join(',\n') %}
{% set Fenster_anzahl = label_entities |selectattr('state','eq','Offen')
| list
| count %}
{% if Fenster_anzahl == 0 %}
Alle Fenster sind zu
{% else %}
Folgende Fenster sind noch offen
{{ fenster_liste }}
{% endif %}
{% set fenster_liste = label_entities('Fenster')
| select('match', 'sensor')
| expand()
| selectattr('state','eq','Gekippt')
| map(attribute='name')
| list
| join(',\n') %}
{% set Fenster_anzahl = label_entities |selectattr('state','eq','Gekippt')
| list
| count %}
{% if Fenster_anzahl <> 0 %}
Folgende Fenster sind noch gekippt
{{ fenster_liste }}
{% endif %}
Eine andere Alternative ist auf Ungleichheit zu "Geschlossen" zu prüfen, mit "ne" (not equal oder, also ungleich). Wenn du 10 Fenster hättest:
Code: Alles auswählen
{% set fenster_liste = label_entities('Fenster')
| select('match', 'sensor')
| expand()
| selectattr('state','ne','Geschlossen')
| map(attribute='name')
| list
| join(',\n') %}
{% set Fenster_anzahl = label_entities |selectattr('state','ne','Geschlossen')
| list
| count %}
{% if Fenster_anzahl == 10 %}
Alle Fenster sind geschlossen
{% else %}
Folgende Fenster sind nicht geschlossen
{{ fenster_liste }}
{% endif %}
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 10. Sep 2024, 21:08
von Osorkon
miami hat geschrieben: ↑Di 10. Sep 2024, 21:02
Das geht nicht: selectattr('state','eq','Offen','Gekippt'
Ich habe Dir doch das funktionierende Tempel auf dem Silbertablett präsentiert.
Einfach alles außer dem Status Geschlossen:
Gruß
Osorkon
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 10. Sep 2024, 21:15
von miami
Ich habe noch was gefunden, das eq und ne etwas erklärt:
http://www.stephan-muller.com/cgi/cgi07.shtml hat geschrieben:Zum Vergleichen von Strings gibt es folgende Operatoren:
eq - Text 1 muss gleich Text 2 sein
ne - Text 1 muss ungleich Text 2 sein
Der Unterschied zwischen == und eq liegt also darin, das mit == Zahlen und mit eq Zeichenketten verglichen werden können.
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Di 10. Sep 2024, 21:19
von miami
Osorkon hat geschrieben: ↑Di 10. Sep 2024, 21:08
miami hat geschrieben: ↑Di 10. Sep 2024, 21:02
Das geht nicht: selectattr('state','eq','Offen','Gekippt'
Ich habe Dir doch das funktionierende Tempel auf dem Silbertablett präsentiert.
Einfach alles außer dem Status Geschlossen:
Ich wollte Mono's Post beantworten und sagen, warum das aus meiner Sicht nicht funktioniert.
Aber danke, rejectattr kannte ich noch nicht (und hatte ich übersehen)
Re: Template - Welcher Lichter sind eingeschaltet - Welche Fenster stehen offen
Verfasst: Mi 11. Sep 2024, 15:40
von Mono
Ich danke euch beiden es läuft wunderbar