Bring Einkaufliste mit Alexa füllen über HA

Bis jetzt habe ich immer so meine Bring Liste gefüllt:

Alexa ↔ ioBroker ↔ Bring ↔ Home Assistant

Mittlerweile geht es auch mit HA und ist sogar besser.

Hier meine erstellte Automaten.
Bitte Anpassen:
Eure Alexa - entity_id: todo.ALEXA
Eure Bring - entity_id: todo.BRING

alias: Alexa-Einkaufsliste zu Bring übertragen
description: >-
  Überträgt neue Alexa-Einkaufseinträge nach Bring! und setzt sie
  anschließend in Alexa auf erledigt.
triggers:
  - trigger: todo.item_added
    target:
      entity_id: todo.ALEXA

conditions: []

actions:
  - alias: Neue Alexa-Einträge übernehmen
    variables:
      neue_ids: "{{ trigger.item_ids | default([], true) }}"

  - alias: Prüfen ob neue Einträge vorhanden sind
    condition: template
    value_template: "{{ neue_ids | count > 0 }}"

  - alias: Alexa-Einkaufsliste abrufen
    action: todo.get_items
    data:
      entity_id: todo.ALEXA
      status: needs_action
    response_variable: alexa_antwort

  - alias: Neu hinzugefügte Alexa-Einträge bestimmen
    variables:
      neue_alexa_eintraege: >-
        {{
          alexa_antwort[
            'todo.ALEXA'
          ]['items']
          | selectattr('uid', 'in', neue_ids)
          | list
        }}

  - alias: Neue Alexa-Einträge einzeln verarbeiten
    repeat:
      for_each: "{{ neue_alexa_eintraege }}"
      sequence:
        - alias: Aktuelle Bring-Einkaufsliste abrufen
          action: todo.get_items
          data:
            entity_id: todo.BRING
            status: needs_action
          response_variable: bring_antwort

        - alias: Vorhandene Bring-Artikel aufbereiten
          variables:
            vorhandene_bring_artikel: >-
              {{
                bring_antwort['todo.BRING']['items']
                | map(attribute='summary')
                | map('trim')
                | map('lower')
                | list
              }}

        - alias: Artikel nur hinzufügen wenn noch nicht in Bring vorhanden
          if:
            - condition: template
              value_template: >-
                {{
                  repeat.item.summary | trim | lower
                  not in vorhandene_bring_artikel
                }}
          then:
            - alias: Artikel zu Bring hinzufügen
              action: todo.add_item
              data:
                entity_id: todo.BRING
                item: "{{ repeat.item.summary | trim }}"

        - alias: Alexa-Eintrag auf erledigt setzen
          action: todo.update_item
          data:
            entity_id: todo.ALEXA
            item: "{{ repeat.item.uid }}"
            status: completed

        - alias: Amazon-Anfragen begrenzen
          delay:
            seconds: 2

mode: queued
max: 10

Empfehlung: Zuerst die Alexa-Einkaufsliste leeren.
Ich habe Alexa dazu gesagt: „Setze bitte die komplette Einkaufsliste auf erledigt.“

Die Automation arbeitet damit so:

  1. Neuer Artikel wird per Alexa eingetragen.
  2. Home Assistant prüft, ob er bereits in Bring! vorhanden ist.
  3. Falls nicht, wird er zu todo.BRING hinzugefügt.
  4. Anschließend wird er in Alexa auf erledigt gesetzt.
  5. Schlägt das Hinzufügen zu Bring! fehl, wird der Alexa-Eintrag nicht erledigt und bleibt erhalten.
    Wegen der Alexa-Abfrage kann die Übertragung bis zu ungefähr fünf Minuten dauern.
2 „Gefällt mir“

Hallo.

Also ich mache das seit Jahren so:

”Alexa, füge bla bla bla hinzu.”

Fertig, kein ioBroker, kein HA. Einfach den Bring-Skill in Alexa aktivieren.

Wenn ich mehrere Artikel hinzufügen möchte, sage ich “Alexa, öffne Bring”. Dann kann ich mehrere Artikel nacheinander zu Alexa sagen.

1 „Gefällt mir“

Früher, seit ein paar Jahren musst Du immer sagen:

Alexa, öffne Bring und setzte Butter auf die Einkaufsliste.

Sonst landet es auf der Amazon Einkaufsliste. Da hat Amazon was bei den Einkaufslisten und ToDo-Listen angepasst, auch bei Dir… :wink:

Kannst du mir bitte kurz erläutern, wie du die Bring Liste aus HA fütterst? Reicht der Bring-Skill in Alexa aus?
Ich nutze aktuell auch noch den Umweg über den ioBroker.

Klar :slightly_smiling_face: Seit HA 2026.7 geht das bei mir direkt ohne ioBroker. Ich nutze in Home Assistant die Integrationen „Alexa Devices“ und „Bring!“. Dadurch stehen beide Einkaufslisten als To-do-Listen in HA zur Verfügung.

Eine Automation übernimmt neue Einträge aus der Alexa-Einkaufsliste nach Bring und setzt sie anschließend bei Alexa auf erledigt. Der Bring-Skill in Alexa wird dafür nicht benötigt. Ich sage einfach weiterhin: „Alexa, setze Milch auf die Einkaufsliste.“ Die Übernahme nach Bring erfolgt bei mir praktisch sofort.

Okay,

aber lt. @FrankP sollte es mit dem Bring-Skill auch ohne Automation gehen.

@FrankP : habe ich Dich da richtig verstanden?

Ja das geht, ABER:
Das Wichtigste in Kürze: Der Schlüssel zum Erfolg liegt darin, Alexa immer zuerst zu sagen, dass sie Bring! öffnen soll, bevor du deine Artikel nennst.

Und dazu habe ich keine Lust.
Ich nutzt die Alexa Liste und übertrage automatisch mit HA.
Bring-Skill habe ich gelöscht.

1 „Gefällt mir“

Nicht erst mit Alexa+, das geht seit 2024 definitiv nicht mehr.

Deine Automation ist daher wirklich gold wert. Danke dafür.

1 „Gefällt mir“

Habe ich eingerichtet und teste ich. Mir geht es genau wie dir: Ich habe auch keine Lust immer “öffne Bring” bla bla zu sagen.
Ich gebe dir morgen eine Rückmeldung. Danke für das Script, nun kann ich es im ioBroker ablösen.
Gruß
Martin

@harryp ja, bei mir geht es ohne Automation.
mit “… öffne Bring und füge xyz hinzu” klappt das gut.
Und wenn du mehrere Artikel nacheinander eintragen lassen willst, musst du zuerst “Öffne Bring” sagen. Das quittiert Alexa und ab dann kannst du nacheinander Artikel hinzufügen.
Man muss aber immer zwischendurch warten, bis Alexa gesagt hat “ok, ich habe xyz hinzugefügt”.

1 „Gefällt mir“

Coole Lösung. Das Alexa die Integration gestoppt hatte, hat mich immer geärgert.

Das Script funktioniert. Vielen Dank. Ich habe jetzt das Script im ioBroker deaktiviert.
:+1:

Coole Sache, danke! :+1:
Muss ich gleich morgen mal versuchen.

Was ist denn, wenn ich dann Alexa frage, was auf der Einkaufsliste steht? Die ist ja quasi immer leer, oder? Dann bräuchte man aber doch noch den Skill, um die ja dann aktuelle Bring-Liste per Alexa abfragen zu können. Denkfehler meinerseits am späten Abend? :upside_down_face:

Die Alexa-Liste ist dadurch quasi immer leer. Wenn du die Einkaufsliste per Sprache abfragen möchtest, benötigst du vermutlich weiterhin den Bring-Skill.

Ich selbst nutze das nicht. Ich sehe auf dem Tablet in der Küche, was auf der Liste steht, oder schaue direkt in die Bring-App.

Die Frage von knuti1960 hat mich noch auf eine zusätzliche Idee gebracht:

Was passiert eigentlich, wenn HA gerade offline ist, zum Beispiel wegen eines Neustarts oder Updates, und der Chef im Haus trotzdem etwas auf die Einkaufsliste setzt? :grinning_face_with_smiling_eyes:

Dafür habe ich die Automation noch erweitert.

Falls Home Assistant oder Bring gerade offline ist, geht trotzdem nichts verloren. Sobald HA neu startet oder Bring wieder erreichbar ist, werden alle noch offenen Alexa-Einträge nachträglich übertragen. Bereits vorhandene Artikel werden dabei nicht doppelt in Bring eingetragen.

alias: Alexa-Einkaufsliste nach Bring übertragen - V2
description: >-
  Überträgt alle offenen Einträge aus der Alexa-Einkaufsliste nach Bring
  und setzt sie anschließend bei Alexa auf erledigt.

triggers:
  - trigger: todo.item_added
    alias: Neuer Alexa-Eintrag
    target:
      entity_id: todo.greyfuchs_gmail_com_einkaufsliste

  - trigger: homeassistant
    alias: Home Assistant wurde gestartet
    event: start

  - trigger: state
    alias: Alexa-Liste wieder verfügbar
    entity_id: todo.greyfuchs_gmail_com_einkaufsliste
    from: "unavailable"

  - trigger: state
    alias: Bring-Liste wieder verfügbar
    entity_id: todo.zuhause
    from: "unavailable"

actions:
  - alias: Auf Alexa und Bring warten
    wait_template: >-
      {{
        states('todo.greyfuchs_gmail_com_einkaufsliste')
          not in ['unknown', 'unavailable']
        and
        states('todo.zuhause')
          not in ['unknown', 'unavailable']
      }}
    timeout: "00:05:00"
    continue_on_timeout: false

  - alias: Alle offenen Alexa-Einträge abrufen
    action: todo.get_items
    target:
      entity_id: todo.greyfuchs_gmail_com_einkaufsliste
    data:
      status: needs_action
    response_variable: alexa_antwort

  - alias: Vorhandene Bring-Einträge abrufen
    action: todo.get_items
    target:
      entity_id: todo.zuhause
    data:
      status: needs_action
    response_variable: bring_antwort

  - alias: Listen vorbereiten
    variables:
      alexa_eintraege: >-
        {{
          alexa_antwort
            .get('todo.greyfuchs_gmail_com_einkaufsliste', {})
            .get('items', [])
        }}
      bring_namen: >-
        {{
          bring_antwort
            .get('todo.zuhause', {})
            .get('items', [])
            | map(attribute='summary')
            | map('lower')
            | list
        }}

  - alias: Prüfen ob offene Alexa-Einträge vorhanden sind
    condition: template
    value_template: "{{ alexa_eintraege | count > 0 }}"

  - alias: Alle Alexa-Einträge nacheinander bearbeiten
    repeat:
      for_each: "{{ alexa_eintraege }}"
      sequence:
        - alias: Prüfen ob Artikel bereits in Bring vorhanden ist
          if:
            - condition: template
              alias: Artikel ist noch nicht in Bring
              value_template: >-
                {{ repeat.item.summary | lower not in bring_namen }}
          then:
            - alias: Artikel zu Bring hinzufügen
              action: todo.add_item
              target:
                entity_id: todo.zuhause
              data:
                item: "{{ repeat.item.summary }}"

        - alias: Alexa-Eintrag auf erledigt setzen
          action: todo.update_item
          target:
            entity_id: todo.greyfuchs_gmail_com_einkaufsliste
          data:
            item: "{{ repeat.item.uid }}"
            status: completed

        - alias: Amazon-Anfragen begrenzen
          delay:
            seconds: 2

mode: queued
max: 10
3 „Gefällt mir“

Danke! Als das damals entfernt wurde, fand ich das ziemlich nervig. Gefühlt landete ständig irgendwas auf der falschen Liste, weil vorher niemand dran gedacht hatte, Bring zu starten.

Die Familie wird die Lösung lieben, endlich läuft der Sync im Hintergrund, ohne dass man selbst aktiv werden muss.

Funktioniert perfekt! :+1:
Habe gleich die V2 genommen.
Den Skill habe ich trotzdem noch am Laufen. Erstens, weil wir uns bestimmt erstmal daran gewöhnen müssen, nicht mehr ein “Öffne Bring” voranzustellen und das somit auch noch funktioniert.
Zweitens wegen der Möglichkeit die (Bring-)Einkaufsliste per Sprachbefehl abfragen zu können, das wird bei uns halt recht häufig benutzt.
Der Parallelbetrieb schadet nicht, nach ersten Tests jedenfalls klappt alles so, wie man es sich vorstellt. Und das geht ja echt flott, anscheinend findet durch Devices eine Push-Synchronisierung statt.

Ein lange bestehendes Ärgernis endlich beseitigt, super, freue ich mich echt drüber :heart_eyes:

Ich nutze zum Befüllen meiner Bring! Einkaufsliste die App “Alexa Sync”

in Verbindung mit der Integration von Bring!

Ich sage “Alexa füge Butter zur Einkaufsliste hinzu” und sie landet erst auf der Amazon-Einkaufsliste und wird dann über Alexa-Sync via HA zu Bring! gesynct. Funktioniert super und hat noch den schönen Nebeneffekt, dass ich die Bring!-Liste auch direkt in HA habe und von dort auch verwalten kann.