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 1 des TechTumult Podcasts. Da ich Bring! als digitale Einkaufsliste schon seit vielen Jahre nutze, ist die beschriebene Automation für mich ein echter Mehrwert. Wie ich vorgegangen bin, teile ich gerne in meinem ersten YouTube-Video:
Voraussetzungen für die Automation
Für die beschriebene Automation benötigst du die Home Assistant Companion App auf deinem Handy, natürlich Einkaufslisten bei Bring und die Zone rund um das von dir besuchte Geschäft.
Die Companion App wird für die Lokalisierung benötigt, also die Ermittlung deines Standortes. Ebenso schicken wir die Benachrichtigung an die Companion App, so dass dir diese auf deinem Handy angezeigt wird.
Die Zone rund um das Geschäft kannst du entweder über den Browser und die GPS-Koordinaten (ich nutze hierfür Google Maps wo dir bei einem Rechtsklick auf den Google Maps-Eintrag die GPS-Koordinaten angezeigt werden) oder über die Companion App, wenn du vor Ort bist, hinzufügen.
Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:
Follow Home Assistant
Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!
Die Automation löst aus, wenn du mit deinem Handy die Zone betrittst. Als Bedingung ergänzen wir aber die Prüfung, ob in der Einkaufsliste in Bring überhaupt Einträge vorhanden sind. Nur wenn der Zustand der Entität größer 0 ist, soll die Benachrichtigung an die Companion App erfolgen.
Hier der YAML-Code der kompletten Automation aus dem Video:
alias: Bring-Push-Notification-Obi description: "" trigger: - platform: zone entity_id: device_tracker.pixel_8_pro zone: zone.obi event: enter condition: - condition: numeric_state entity_id: todo.baumarkt above: 0 action: - action: notify.mobile_app_pixel_8_pro metadata: {} data: message: Geh' bitte bei Obi einkaufen! mode: single
Wenn du den YAML-Code kopierst, musst du natürlich die Entitäten und Zone auf dein Setup anpassen, also (Handy, Zone des Geschäftes, Einkaufsliste und Benachrichtigungs-Gerät)!
Ich liebe (bekanntlich) die Benachrichtigungen in der Companion App. Kennst du schon die Funktion der Actionable Notifications, mit denen du innerhalb der Benachrichtigung direkt reagieren und Befehle auslösen kannst? Schau mal hier:
Produktempfehlungen
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.
@chlmk Sehr cool gelöst, danke fürs teilen mit uns allen! 👍 👍 👍
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“:
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:
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