Muss ich alle Fenster einzeln auflisten?

Muss ich alle Fenster einzeln auflisten??

Ich möchte, dass die Automatisierung jedes mal startet, wenn ein Fenster für 10 Minuten geöffnet ist.
Ich habe auch schon über eine Gruppe nachgedacht, bin aber noch zu keiner vernünftigen Lösung gekommen.

Eine Wildcard ala
- binary_sensor.*
gibt es nicht, oder?

triggers:
  - entity_id:
      - binary_sensor.fenster_schlafzimmer
      - binary_sensor.fenster_bad
      - binary_sensor.fenster_kuche
    to: "on"
    for:
      hours: 0
      minutes: 10
      seconds: 0
    trigger: state
    alias: Sobald Fenster länger als 10 Min. geöffnet ist

Probier mal sowas:

{{ states.binary_sensor | selectattr('object_id', 'match', 'fenster_')
   | map(attribute='entity_id') | list }}

Damit bekommt man zwar eine schöne Liste von allen Fenster Entitäten, mehr aber nicht.

Als Auslöser nicht zu gebrauchen.

Oder auf was wolltest Du @phettsack mit dem Template hinaus?

Ist es so ein großer Aufwand die einzelnen Fenster einmalig als Trigger einzutragen!

Bei der Aktion kannst Du ja mit einem Template arbeiten, das Dir dann den Sensornamen oder den Raum ausgibt.

Gruß
Osorkon

1 „Gefällt mir“

Erstens bin ich relativer Neuling in YAML und möchte dort weiterkommen.

Zweitens habe ich noch nicht an allen Fenstern Sensoren. Das mache ich nach und nach.
So muss ich bei jedem neuen Sensor daran denken, die Entität in der Automation eintragen.

Aber wenn es hier keine Lösung gibt, wird mir nichts anderes übrig bleiben.

Du kannst leider keine Wildcatd als Auslöser verwenden.
Eine Gruppe funktioniert nur bedingt. Da die Gruppe offen ist wenn einer der Fenster in der Gruppe geöffnet ist. Somit wird ausgelöst wenn während der Zeit von 10 Minuten ununterbrochen eines der Fenster offen steht.

Auch müsstest Du auch immer dran denken, bei jedem neuen Fenster Sensor, diesen in die Gruppe zu packen.

Gruß
Osorkon

Ach, ich dachte Wildcard geht in einem Yaml immer so.
Gehen tut das vielleicht irgendwie mit einer Schleife oder so.
Fragt sich nur, wie. Kann man sich bestimmt Tage dransetzen.
Oder einfach mal die Fleissarbeit machen und die Fenster eingeben.

Hi, löse es doch einfach mit einer custom-card. Diese zeigt dir dann die aktuell offnen Fenster in einer Liste an. Wenn geschlossen bleibt die Card leer, bis auf die Überschrift Fensterstatus. Den Sensor kannst du noch anpassen, falls du nicht alle Fenster mit binary_sensor.fenster_* abrufen kannst. Manchmal haben die noch ein Zahl hinten dran, wenn z.B. mehrfach angelernt wurde. Dann müsste der Sensor binary_sensor.fenster__ lauten. Kannst auch beide Entities angeben.

 - entity_id: binary_sensor.fenster_*
 - entity_id: binary_sensor.fenster_*_*

Custom Card Beispiel, sollte sofort bei die funktionieren.

type: custom:auto-entities
card:
  type: entities
  title: Fensterstatus
filter:
  include:
    - entity_id: binary_sensor.fenster_*
  exclude:
    - state: "off"
sort:
  method: name

Die custom-auto-entities Card kannst du über HACS installieren.

Damit hat er eine Liste aller offenen Fenster.

Die Aufgabe war aber, sobald ein Fenster 10 Minuten lang offen steht. Diesen Zustand als Auslöser für eine Automatisierung zu verwenden.

Gruß
Osorkon

1 „Gefällt mir“

Ah, ok sorry, dann habe ich wieder zu schnell gelesen. Müsste man dann aber nicht über einen template sensor in der config.yaml die Fenster dynamisch einlesen können und im Anschluss den Sensor als Trigger in der Automatisierung nutzen können? Sollte doch machbar sein.

Nachtrag:
Hier mal meine Lösung mit Template Sensor. Aktuell werden so alle Fenster auf den Status Offen oder Geschlossen geprüft und der Sensor gibt dann On oder Off als Zustand aus. Damit kann dann eine Automatisierung ausgelöst werden. Habe hier einfach mal eine erstellt und nach 10min bekommt man in HA eine Benachrichtigung das ein Fenster offen ist.
Leider habe ich es bisher nicht hinbekommen, dass auch ausgegeben wird, welches Fenster geöffnet ist. Dafür reichen meine Kenntnisse wohl nicht aus (aber die der KI schon, weiter unten).

Beim Sensor darauf achten, was ihr für Zustände für Offen und Geschlossen habt. Bei mir ist Offen = on und Geschlossen = off. Gegebenenfalls im Sensor anpassen.

Template Sensor:

template:
  - sensor:
    - name: "Fenster Geöffnet"
      state: >
        {% set fenster_entities = states.binary_sensor | selectattr('entity_id', 'search', '^binary_sensor\.fenster_') | list %}
        {% if fenster_entities | selectattr('state', 'eq', 'on') | list | length > 0 %}
          on
        {% else %}
          off
        {% endif %}

Automatisierung:

alias: Fenster offen länger als 10 Minuten
description: Automatisierung für alle Fenster-Sensoren, die mit "fenster_" beginnen
triggers:
  - entity_id: sensor.fenster_geoffnet
    to: "on"
    for: "00:10:00"
    trigger: state
conditions: []
actions:
  - data:
      title: Fenster offen
      message: Ein Fenster ist seit mehr als 10 Minuten geöffnet.
    action: notify.persistent_notification
mode: single

Folgende Lösung wurde durch die nette KI generiert. Die ist wirklich immer wieder nützlich, wenn man den code auch irgendwie versteht. Bin da auch eher Leihe als Profi. Hier die ein angepasste Ausgabe mit “welches Fenster ist geöffnet”.

neues template erstellen:

template:
  - sensor:
      - name: "Geöffnete Fenster"
        state: >
          {% set offene_fenster = states.binary_sensor 
                                  | selectattr('entity_id', 'search', '^binary_sensor\.fenster_') 
                                  | selectattr('state', 'eq', 'on') 
                                  | map(attribute='name') 
                                  | list %}
          {% if offene_fenster | length > 0 %}
            {{ offene_fenster | join(', ') }}
          {% else %}
            Keine Fenster geöffnet
          {% endif %}

einfache Automatisierung:

alias: Fenster Benachrichtigung
description: ""
triggers:
  - entity_id:
      - sensor.geoffnete_fenster
    from: Keine Fenster geöffnet
    trigger: state
    for:
      hours: 0
      minutes: 10
      seconds: 0
actions:
  - data:
      title: Fensterstatus
      message: >
        Folgende Fenster sind noch offen: {{ states('sensor.geoffnete_fenster')
        }}
    action: notify.persistent_notification


habe beide Varianten bei mir getestet und funktioniert einwandfrei. Die KI Lösung habe ich jetzt auch im Einsatz. :slight_smile:

Grüße Jayson

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Schön für Dich und Deine KI.

Trotzdem, Thema verfehlt, setzen, Sechs. :wink:

Es geht nicht darum, dass 10 Minuten lang irgendein der Fenster offen steht .
Sondern ob das einzelne Fenster 10 min lang offen steht.
Deine Automatisierung löst nämlich auch aus, wenn 10 Fenster nacheinander für eine Minute geöffnet werden und immer erst das nächste Fenster geöffnet wird bevor das andere geschlossen wurde.

EDIT:
Hier mal eine Bsp. Automatisierung, garantiert nicht von einer KI generiert. :grin:

alias: Es ist kalt und ein Fester steht länger offen. 
description: ""
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.fenster_1
      - binary_sensor.fenster_2
      - binary_sensor.fenster_3
      - binary_sensor.fenster_4
      - binary_sensor.fenster_5
      - binary_sensor.fenster_6
      - binary_sensor.fenster_7
    for:
      hours: 0
      minutes: 10
      seconds: 0
    from: "off"
    to: "on"
conditions:
  - condition: numeric_state
    entity_id: sensor.outdoor_temperature
    below: 10
actions:
  - action: notify.xyz
    metadata: {}
    data:
      message: >
        Das {{ area_name(trigger.entity_id) }} Fenster steht seit 10 Minuten
        offen.
mode: queued

Gruß
Osorkon

1 „Gefällt mir“

Thema verfehlt, sein Ansatz war doch die Fenster im Gesamten auszulesen und nicht die einzelnen Entitäten angeben zu müssen. Da könnte man deiner Automatisierung dasselbe vorwerfen… :wink: Die Automatisierung danach kann man ja basteln, wie man möchte. Du hast aber natürlich Recht mit dem auslösen, habe ich so nicht bedacht.

Den Ansatz finde ich jedenfalls interessant. Natürlich kann man die Entitäten auch alle einzeln angeben und so läuft es bei mir bisher auch. Wenn man das aber mit einem template sensor dynamisch lösen könnte, wäre es doch eine schöne Sache. Deswegen habe ich auch herumprobiert, würde ich bei mir auch gern einsetzen.

Grüße Jayson

Hallo,
ich würde sogar jedes Fenster einzeln in die Automation eintragen.
Ich finde das einfach übersichtlicher.
Ich “überwache” damit bei mir 5 Fenster.
Grüße

Ich gebe mich geschlagen und trage die einzelnen Fenster in der Automation ein.
Danke für euer Input.

Da ich noch eher Anfänger in YAML und Automationen bin wollte ich einfach nur mal hören, ob das irgendwie einfach geht - wohl nicht. Ist für mich aber auch kein Problem.