Einkaufslisten-Benachrichtigung in der Nähe von Geschäften

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:

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
Video-Anleitung der hier beschriebenen Automation

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
( 571 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

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

4 Gedanken zu „Einkaufslisten-Benachrichtigung in der Nähe von Geschäften“

  1. 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.

  2. 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
    
  3. 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

Die Kommentare sind geschlossen.