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

Home Assistant 2. Sep. 2025

Einleitung
In der heutigen Zeit, in der Smart-Home-Technologien immer mehr in den Alltag integriert werden, ist es wichtig, individuelle Lösungen für spezifische Anwendungsfälle zu finden. Ein häufiges Szenario ist das Vorlesen von Wörtern oder Sätzen durch Text-to-Speech (TTS) Systeme. Dieser Artikel beschreibt, wie man eine Wortliste erstellt, die durch einen Knopfdruck nacheinander vorgelesen wird, und wie man diese Lösung effizient gestaltet.

Problem
Der Benutzer möchte für seine Tochter mehrere Listen mit Wörtern definieren, die durch einen Auslöser (z.B. einen Knopf) nacheinander vorgelesen werden. Der aktuelle Ansatz verwendet zwei separate Variablen für die Listen, was die Wartung und Anpassung der Automatisierung erschwert. Der Benutzer sucht nach einer Möglichkeit, die Listen in einer einzigen Variablen zu referenzieren, um die Wartung zu vereinfachen.

Lösung
Die Lösung besteht darin, die Wortlisten in einer einzigen Variablen zu speichern und die Auswahl der Liste über eine input_select-Entität zu steuern. Dadurch kann der Benutzer die Liste, die vorgelesen werden soll, einfach ändern, ohne den Automatisierungscode an mehreren Stellen anpassen zu müssen.

Hier ist der angepasste Automatisierungscode:

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

Schritte zur Umsetzung
1. Erstelle zwei input_select-Entitäten für die Auswahl der Wortliste und einen input_number für den Index.
2. Füge den oben genannten Automatisierungscode in deine Home Assistant-Konfiguration ein.
3. Stelle sicher, dass der TTS-Dienst korrekt konfiguriert ist und der Media Player verfügbar ist.
4. Teste die Automatisierung, indem du den Knopf drückst und überprüfe, ob die Wörter nacheinander vorgelesen werden.

Hintergrundwissen
- Text-to-Speech (TTS): TTS-Systeme wandeln Text in gesprochene Sprache um. In Home Assistant kann dies über verschiedene Dienste wie Google TTS erfolgen.
- Variablen und Bedingungen: In Automatisierungen können Variablen verwendet werden, um Daten zu speichern und Bedingungen zu prüfen, um die Logik der Automatisierung zu steuern.
- Input-Entitäten: input_select und input_number sind nützliche Entitäten in Home Assistant, um Benutzereingaben zu verwalten und zu speichern.

Zusätzliche Infos

FunktionErklärung
`input_select`Ermöglicht die Auswahl einer Option aus einer vordefinierten Liste.
`input_number`Speichert numerische Werte, die in Automatisierungen verwendet werden können.
`tts.speak`Führt die Text-to-Speech-Funktion aus und gibt den Text über einen Media Player aus.

Hinweise & Best Practices
- Stelle sicher, dass die input_select- und input_number-Entitäten korrekt konfiguriert sind, bevor du die Automatisierung testest.
- Verwende aussagekräftige Namen für deine Variablen und Entitäten, um die Wartbarkeit zu erhöhen.
- Teste die Automatisierung gründlich, um sicherzustellen, dass alle Bedingungen und Aktionen wie gewünscht funktionieren.
- Berücksichtige mögliche Fehlerquellen, wie z.B. nicht verfügbare Media Player oder falsche Entitätsnamen.