Im relativ neuen Podcast TechTumult von Stefan und Simon erzählte Stefan von einer Automation, die ich sehr interessant finde: Wann immer man in der Nähe eines Geschäftes ist und in der Bring!-Einkaufsliste für dieses Geschäft Einträge hat, soll Home Assistant eine Push-Notification senden. Diese Automation ist insbesondere dann interessant, wenn man Geschäfte immer wieder aufsucht, die etwas weiter entfernt sind. Dank der Automation wird man nämlich informiert, sofern man sich in der Nähe befindet. Im Idealfall spart man sich hierdurch Fahrten zu diesem Geschäft. An dieser Stelle noch einmal Danke an Stefan und Simon für die Idee der Automation Folge…
Hallo Olli,
hier eine, von Thomas, von Steuer dein Leben, "geklaute" Idee.
Er erweitert die Erinnerung in der Zone, um das zusenden der personalisierten Einkaufsliste.
Das finde ich sehr interesant, hab es umgesetzt und es funktioniert tadellos.
https://www.youtube.com/watch?v=F0Z5ogpMh7M&t=77s
Liebe Grüße Sven
Unter meinem YouTube-Video gab es die Frage, ob/wie man sich die Listeneinträge ebenfalls in der Benachrichtigung anzeigen lassen kann und hierfür habe ich folgende Code-Erweiterung "gebastelt":
actions: - action: todo.get_items target: entity_id: todo.rewe data: status: needs_action response_variable: eintraege - metadata: {} data: message: > {% set shop_list = eintraege['todo.rewe']['items'] %} {%- for item in shop_list -%} - {{ item.summary ~ "\n" }} {%- endfor -%} action: notify.mobile_app_pixel_8_pro
Die Action wird um todo.get_items ergänzt womit wir die Listeneinträge (nur offene, da "needs_action") in die Variable "eintraege" laden. Diese Variable geben wir dann in der Push-Benachrichtigung dynamisch aus.
Der YAML-Code der kompletten Benachrichtigung sieht dann wie folgt aus und kann von dir, sofern du es auf deine Zone, Shoppingliste und dein Handy anpasst, von dir übernommen werden:
alias: Bring-Push-Notification-Obi description: "" triggers: - entity_id: device_tracker.pixel_8_pro zone: zone.obi event: enter trigger: zone conditions: - condition: numeric_state entity_id: todo.rewe above: 0 actions: - action: todo.get_items target: entity_id: todo.rewe data: status: needs_action response_variable: eintraege - metadata: {} data: message: > {% set shop_list = eintraege['todo.rewe']['items'] %} {%- for item in shop_list -%} - {{ item.summary ~ "\n" }} {%- endfor -%} action: notify.mobile_app_pixel_8_pro mode: single
Super! Vielen Dank! Ich habe mich mittlerweile dagegen entschieden, die Einträge in einer Notification anzuzeigen, da das ja doch recht schnell ausufern kann 😉
Stattdessen wird beim "Klick" auf die Notification nun direkt Bring geöffnet.
Bei uns ist es auch so, dass wir verschiedene Listen für verschiedene Geschäfte/Zonen haben und ich habe mir mittlerweile eine recht gute Notification gebaut, die ich teilen möchte:
alias: Einkaufsliste Erinnerung description: "" triggers: - entity_id: - person.christian for: hours: 0 minutes: 1 seconds: 0 trigger: state - entity_id: - person.carina for: hours: 0 minutes: 1 seconds: 0 trigger: state conditions: - condition: and conditions: - condition: template value_template: >- {% set zone_map = { 'Aldi München': 'todo.zuhause', 'Aldi Koblenz': 'todo.zuhause', 'Lidl München': 'todo.zuhause', 'Lidl Koblenz': 'todo.zuhause', 'Netto München': 'todo.zuhause', 'Action': 'todo.action', 'Toom': 'todo.baumarkt', 'Rewe München': 'todo.rewe' } %} {% set current_zone = trigger.to_state.state %} {% set list_entity = zone_map.get(current_zone, none) %} {{ list_entity is not none }} - condition: time after: "09:00:00" before: "20:00:00" - condition: template value_template: "{{ now().weekday() in [0, 1, 2, 3, 4, 5] }}" actions: - variables: notify_service: >- {% set notify_map = { 'person.christian': 'notify.mobile_app_iphone', 'person.carina': 'notify.mobile_app_iphone_carina' } %} {{ notify_map.get(trigger.entity_id, 'notify.mobile_app_iphone') }} zone_name: "{{ trigger.to_state.state }}" list_entity: | {% set zone_map = { 'Aldi München': 'todo.zuhause', 'Aldi Koblenz': 'todo.zuhause', 'Lidl München': 'todo.zuhause', 'Lidl Koblenz': 'todo.zuhause', 'Netto München': 'todo.zuhause', 'Action': 'todo.action', 'Toom': 'todo.baumarkt', 'Rewe München': 'todo.rewe' } %} {{ zone_map[zone_name] }} - action: todo.get_items metadata: {} data: status: needs_action target: entity_id: "{{ list_entity }}" response_variable: eintraege - data: title: Hier ist dein Einkaufsberater! message: > {% set items = eintraege[list_entity]['items'] %} {% set item_count = items | length %} {% if item_count == 0 %} Die Einkaufsliste bei {{ zone_name }} ist leer. {% else %} {% set item_word = 'Ding' if item_count == 1 else 'Dinge' %} {% if trigger.entity_id == 'person.christian' %} Christian, bitte {{ item_count }} {{ item_word }} bei {{ zone_name }} einkaufen! {% else %} Carina, vielleicht kannst du bei {{ zone_name }} vorbeischauen. Da sind {{ item_count }} {{ item_word }} auf der Liste 😘 {% endif %} {% endif %} data: url: bring:// actions: - action: OPEN_BRING title: Bring öffnen action: "{{ notify_service }}" mode: parallel max: 10
Sobald eine der beiden Personen die Zone wechselt wird geprüft, ob für diese Zone eine dementsprechende Einkaufsliste vorhanden ist. Wenn ja und wenn dort mindestens 1 Artikel vorhanden ist, geht eine dementsprechende Benachrichtigung an den "Auslöser" der Automation. Außerhalb der Öffnungszeiten und falls die dementsprechende Liste leer ist, passiert natürlich nichts. Auch nicht, wenn man eine Zone betritt, für die gar keine Liste vorhanden ist.
Produktempfehlungen