Wortliste definieren und via Knopfdruck immer das nächste Wort sprechen

Hi zusammen.

Ich habe folgenden Anwendungsfall : Ich möchte für meine Tochter eine (bzw. mehrere) Listen mit Wörtern definieren, die durch einen Auslöser nacheinander bei jedem Knopfdruck vorgelesen werden (via TTS). Dafür habe ich mir eine Variable in einer Automation gemacht (bzw. zwei, weil es zwei Listen sind), und einen Counter-Helfer, der den Index speichert, auf welchem Wort man steht.

Was ich noch nicht hinbekommen habe : Ich würde die Liste gerne in einer Variablen referenzieren, damit ich nur an einer Stelle umstellen muss, mit welcher Liste zu arbeiten ist.

Hat vielleicht jemand eine Idee, wie ich das am schönsten machen kann ? Derzeit muss ich in der Automation an 2 Stellen die liste ändern…

alias:  Wortliste
triggers:
  - entity_id: sensor.hmbtn1
    to: closed
    trigger: state
    id: Button
actions:
  - if:
      - condition: trigger
        id:
          - Button
    then:
      - variables:
          word_list:
            - frühstück / müsli
            - ananas
            - käse
          lernwoerter:
            - in den Ferien
            - oft
            - der Schnorchel
          index: "{{ states('counter.tts_sarah_english') | int }}"
          maxlen: "{{ lernwoerter | length | int }}"
      - action: tts.speak
        metadata: {}
        data:
          cache: true
          media_player_entity_id: media_player.hampd
          message: "{{ lernwoerter[index] }}"
        target:
          entity_id: tts.google_translate_de_de
      - if:
          - condition: template
            value_template: "{{ index >= maxlen }}"
        then:
          - action: tts.speak
            data:
              cache: true
              message: Du hast es geschafft
              media_player_entity_id: media_player.hampd
            target:
              entity_id: tts.google_translate_de_de
          - action: counter.reset
            target:
              entity_id: counter.tts_sarah_english
        else:
          - action: counter.increment
            target:
              entity_id: counter.tts_sarah_english
mode: restart

Danke schonmal für eure Anregungen.

Versuche es mal so. :slight_smile:

alias: Wortliste
triggers:
  - entity_id: sensor.hmbtn1
    to: closed
    trigger: state
    id: Button
actions:
  - if:
      - condition: trigger
        id: Button
    then:
      - variables:
          word_lists:
            lernwoerter:
              - in den Ferien
              - oft
              - der Schnorchel
            wortliste:
              - frühstück / müsli
              - ananas
              - käse
          selected_list: "{{ states('input_select.wortliste_auswahl') }}"
          index: "{{ state_attr('input_number.wortliste_index', 'state') | int }}"
      - action: tts.speak
        metadata: {}
        data:
          cache: true
          media_player_entity_id: media_player.hampd
          message: "{{ word_lists[selected_list][index] }}"
        target:
          entity_id: tts.google_translate_de_de
      - if:
          - condition: template
            value_template: "{{ index >= (word_lists[selected_list] | length) }}"
        then:
          - action: tts.speak
            data:
              cache: true
              message: Du hast es geschafft
              media_player_entity_id: media_player.hampd
            target:
              entity_id: tts.google_translate_de_de
          - action: input_number.set_value
            target:
              entity_id: input_number.wortliste_index
              value: 0
        else:
          - action: input_number.set_value
            target:
              entity_id: input_number.wortliste_index
              value: "{{ index + 1 }}"
mode: restart
1 „Gefällt mir“

Super. Das funktioniert wie gewünscht :+1: Wieder was gelernt :grinning:
Danke @jayjojayson

1 „Gefällt mir“