Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Bereich rings rum zum Thema Yaml und seine Tücken.


Antworten
Benutzeravatar
PX80
Beiträge: 583
Registriert: Do 21. Okt 2021, 13:09
2
Has thanked: 62 times
Been thanked: 16 times

Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Beitrag von PX80 »

Hallo,

da ich leider noch keine Berührungspunkte mit YAML programmierung habe, frage ich euch, wie ich das lösen kann.

In meinem Beispiel, habe ich 2 Türsensoren, möchte aber abhängig davon auch die richtige Meldung erhalten "Haustrür" bzw "Kellertür" offen.

Code: Alles auswählen

alias: Erinnerung Offene Tür
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.magnetic_contact_access_control_window_door_is_open_2
    id: leftopen
    to: 'on'
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - platform: state
    entity_id: binary_sensor.magnetic_contact_access_control_window_door_is_open
    id: leftopen
    to: 'on'
    for:
      hours: 0
      minutes: 0
      seconds: 10
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: leftopen
        sequence:
          - service: notify.whatsapp
            data:
              target: <id>
              message: Tür steht offen!
    default: []
mode: parallel
max: 10
Wie kann man so etwas realisieren?
Jim_OS

Re: Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Beitrag von Jim_OS »

Ich schon wieder. :) Wieso yaml Programmierung, dass kann man doch auch über die GUI machen. Auch hier habe ich das eben mal für Dich durchgespielt. Wobei ich hoffe das ich richtig verstanden habe was Du versuchst.

Damit ich nicht immer zur Tür rennen muss um das zu testen, habe ich für diesen Test einfach mal einen BWM benutzt, den ich bereits in HA eingebunden, aber hier noch auf dem Schreibtisch liegen habe. :mrgreen:

Erst einmal haben die beiden Türsensoren ja unterschiedliche Entitäten, sodass für jeden eine Automatisierung erstellt wird. Dann musst Du Dir überlegen welche Art von Benachrichtigung Du haben möchtest. Da gebe es ja die unterschiedlichsten Möglichkeiten: https://www.home-assistant.io/integrati ... ifications
Wenn Du einfach nur eine Benachrichtigung im HA WebGUI haben möchtest kann Du z.B. Persistent Notification nehmen.

Dann erstellst Du einfach für den jeweiligen Türsensor eine Automatisierung. Im meinem Beispiel für den BWM:
Auslöser = BWM hat Bewegung erkannt
Aktion = Den von Dir gewüschten Dienst auswählen - hier: Persistent Notification - Message z.B. Bewegung wurde erkannt
Bei Dir dann also für den Sensor der Haustür = "Haustür offen" und für den Sensor der Kellertür = "Kellertür offen"
Aktion.png
Abspeichern und Fertig. Sobald Bewegung erkannt wird gibt es im WebGUI von HA die Benachrichtung
Benachrichtung.png
Bei den auswählbaren Diensten gibt es dann natürlich auch noch alle möglichen Spielarten. Einfach mal durchscrollen. ;) Das ganze lässt sich dann natürlich auch noch mit den unterschiedlichsten Bedingungen kombinieren.

Wie gesagt hoffe ich das es auch das ist was Du suchst bzw. meinst mit "möchte aber abhängig davon auch die richtige Meldung erhalten"

Nachtrag: Der yaml Code für diese Automatisierung sieht schlicht und einfach so aus:

Code: Alles auswählen

alias: BWM Test Benachrichtigung
description: ''
trigger:
  - type: motion
    platform: device
    device_id: f9b5c2a4a895f982bc2736cbcc002d11
    entity_id: binary_sensor.bwm_01_occupancy
    domain: binary_sensor
condition: []
action:
  - service: notify.persistent_notification
    data:
      message: Bewegung wurde erkannt !
mode: single
Nachtrag 2: Weil es so schön war hier der Code für die gleiche Automatisierung, allerdings jetzt für den Sensor (lidl_tfs_01) an meiner Haustür.
Auslöser = lidl_tfs_01 --> Kontakt geöffnet
Aktion ---> Dienst ausführen --> notify.persistent_notification --> Message = Haustür ist offen

Code: Alles auswählen

alias: Kontakt Haustür
description: ''
trigger:
  - type: opened
    platform: device
    device_id: 137c8eb1694482462e2e423c4369573c
    entity_id: binary_sensor.lidl_tfs_01_contact
    domain: binary_sensor
condition: []
action:
  - service: notify.persistent_notification
    data:
      message: Haustür ist offen
mode: single
VG Jim
Benutzeravatar
PX80
Beiträge: 583
Registriert: Do 21. Okt 2021, 13:09
2
Has thanked: 62 times
Been thanked: 16 times

Re: Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Beitrag von PX80 »

Das hast du falsch verstanden, ich möchte gerne wissen, welcher Auslöser es war. Ich habe multiple Auslöser in einer Automation und möchte dies in die Nachricht verpackt bekommen ;)
Benutzeravatar
PX80
Beiträge: 583
Registriert: Do 21. Okt 2021, 13:09
2
Has thanked: 62 times
Been thanked: 16 times

Re: Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Beitrag von PX80 »

Ich meinte soetwas in der Richtung wie ich es bei den Rauchmeldern eingebaut habe

viewtopic.php?p=872#p872

Scheint aber, dass ich die Türsensoren alle in eine Gruppe packen muss
Jim_OS

Re: Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Beitrag von Jim_OS »

Ok jetzt habe ich verstanden was Du meinst, :) aber da bin ich (im Moment) dann leider auch überfragt. Ich würde das in dem Fall einfach über zwei Automatisierungen lösen. Aber wenn es nicht nur um zwei Türen geht, sondern z.B. um 10 Fenster, wäre es natürlich schon gut wenn man das alles zusammen in eine Automatisierung packen könnte, statt 10 Stück dafür erstellen zu müssen. :) Irgendwie wird das bestimmt gehen ...
Benutzeravatar
Friedi
Beiträge: 440
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 36 times
Been thanked: 21 times

Re: Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Beitrag von Friedi »

Du könntest das so realisieren:

Code: Alles auswählen

 alias: Erinnerung Offene Tür
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.magnetic_contact_access_control_window_door_is_open_2
    id: leftopen
    to: 'on'
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - platform: state
    entity_id: binary_sensor.magnetic_contact_access_control_window_door_is_open
    id: leftopen
    to: 'on'
    for:
      hours: 0
      minutes: 0
      seconds: 10
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: leftopen
        sequence:
          - service: notify.whatsapp
            data:
              target: <id>
              message: >-
                {% set oid = trigger.to_state.object_id %} 
                {{ 'Kellertür' if 'open_2' in oid else 'Haustür' }} steht offen!
    default: []
mode: parallel
max: 10
Kann nicht garantieren, ob es genauso klappt. Ist Code aus dem Kopf raus ohne Test :geek:
Benutzeravatar
PX80
Beiträge: 583
Registriert: Do 21. Okt 2021, 13:09
2
Has thanked: 62 times
Been thanked: 16 times

Re: Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Beitrag von PX80 »

Danke @Friedi

Scheint das dies über Templates realisiert wird. Welche Programmiersprache wird hier nachgeahmt, Python?

https://www.home-assistant.io/docs/auto ... emplating/
https://www.home-assistant.io/docs/conf ... ate_object


Ich haben es jetzt stark zusammenkürzen können:

Code: Alles auswählen

alias: Erinnerung Offene Tür

trigger:
  - platform: state
    entity_id: 
      - binary_sensor.magnetic_contact_access_control_window_door_is_open_2
      - binary_sensor.magnetic_contact_access_control_window_door_is_open
    to: 'on'
    for: "00:05:00"

action:
  - service: notify.whatsapp
    data:
      target: <key chatbot>
      message: >
          {{ trigger.from_state.attributes.friendly_name }} länger offen als 5 Minuten!
Benutzeravatar
Friedi
Beiträge: 440
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 36 times
Been thanked: 21 times

Re: Notifier sollte Entitätsnamen enthalten, welcher der Auslöser war

Beitrag von Friedi »

PX80 hat geschrieben: Di 11. Jan 2022, 13:49 Danke @Friedi

Scheint das dies über Templates realisiert wird. Welche Programmiersprache wird hier nachgeahmt, Python?
Gerne 8-)
Da wird nichts nachgeahmt. Letztlich ist alles in HA Python :geek:
Antworten