Wortliste definieren und via Knopfdruck immer das nächste Wort sprechen
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
Funktion | Erklä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.