
Home Assistant: Entitäten sauber in Amazon Alexa integrieren
Ich wiederhole mich zwar an dieser Stelle wieder, aber ein Smarthome hat den Namen nur verdient, wenn es wirklich smart arbeitet und das bedeutet, es muss Dinge nach der jeweiligen Situation und Bedarf automatisch und ohne Nutzereingriff einstellen. Manchmal ist es jedoch auch notwendig, Lampen, Jalousien, Schalter usw. manuell steuern zu können. Dazu will man natürlich nicht jedes Mal auf eine Taste drücken oder die Home Assistant App bemühen müssen, sondern sie bequem per Sprachbefehl steuern.

Über den Dienst von Nabu Casa, lassen sich Amazon Alexa und Google Assistant mit wenigen Klicks an Home Assistant anbinden, zudem unterstützt man durch das kostenpflichtige Angebot die Weiterentwicklung von Home Assistant.
Allerdings werden die Namen der Entitäten dabei so übernommen, wie sie auch in Home Assistant angelegt wurden und bei Namen wie „WZ Decke“ für die Lampen der Wohnzimmerdecke, ist das weder einfach zu merken, noch besonders sicher in der Nutzung. Gerade Alexa versteht da gerne mal etwas falsch. Zudem möchte man nicht alle Entitäten als Geräte in Alexa zur Verfügung haben, sondern diejenigen, die man auch nutzen möchte. Ohne diese Einschränkung würde Home Assistant bei uns über 900 Entitäten in Alexa verfügbar machen.
Entitäten und Alexa Geräte aufräumen und löschen
In der Standardeinstellung überträgt Home Assistant alle möglichen Entitäten zu Alexa, die es findet. Bei den meisten Anwendern dürfte das bereits der Fall gewesen sein, sodass man erst einmal aufräumen sollte. Ich beschränke mich hier auf die Nutzung von Amazon Alexa, der Ablauf ist bei Google Assistant jedoch grundsätzlich vergleichbar.

Zunächst geht man dazu in Home Assistant unter Einstellungen -> Home Assistant Cloud auf die Einstellungen der Sprach-Assistenten. Unter Entitäten verwalten erhält man eine Liste aller Entitäten, die an Alexa zur Sprachsteuerung übertragen wurden und das können jede Menge sein. Hier kann man alle Entitäten deaktivieren, die man nicht zur Sprachsteuerung benötigt.
Allerdings würde Home Assistant alle neu hinzukommenden Entitäten automatisch an Alexa übertragen. Um das zu verhindern, wählt man oben rechts Domains verwalten und deaktiviert alle Domains, die man nicht in Alexa benötigt. Dazu gehören häufig Binärsensoren oder Boolsche Werte. Ich habe alle Domains deaktiviert, da ich selbst bestimmen möchte, was ich mit Alexa nutzen möchte. Klickt man auf Entitäten zurücksetzen, werden alle Entitäten dieser Domain deaktiviert und man muss nicht jede einzeln einstellen.

Hat man diese Einstellungen gemacht, kann man unnötige Geräte, die bereits übertragen wurden, in Alexa löschen. Dazu geht man nicht in die Alexa App, sondern auf https://alexa.amazon.com, meldet sich mit seinen Amazon Zugangsdaten an und klickt auf Smart Home. Unter Geräte, werden alle derzeit verfügbaren Geräte anzeigt, die Home Assistant (und auch andere Dienste) zu Alexa übertragen hat. Nun kann man entweder einzelne Geräte entfernen oder die komplette Liste löschen. Dazu klickt man am Ende der Liste auf Alle entfernen. Zum Zeitpunkt des Beitrags, quittierte die Seite das immer mit einer Fehlermeldung, löschte aber trotzdem einen Großteil der Geräte. Um die komplette Liste zu leeren, musste ich mehrfach auf den Button klicken.

Damit hat man einen sauberen Ausgangspunkt, ab dem man mit der zielgerichteten und klar definierten Einrichtung beginnen kann.
Alexa Entitäten und Namen selbst definieren
Um nun die Entitäten auszuwählen, die man per Sprachsteuerung zur Verfügung haben möchte und deren Namen zu definieren, muss man die configuration.yaml bearbeiten. Damit die configuration.yaml übersichtlich bleibt, ist es sinnvoll, diese auf mehrere Dateien aufzusplitten. Dazu legt man eine neue Datei cloud.yaml an und trägt dann in der configuration.yaml folgendes ein:
cloud: !include cloud.yaml
Code-Sprache: YAML (yaml)
Damit teilt man der Config mit, dass es die neue Datei cloud.yaml einbinden soll. Ich habe z. B. alle Sensoren, Schalter, Szenen etc. in eigene Dateien ausgelagert, was dann in der configuration.yaml so aussieht:
light: !include lights.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
switch: !include switch.yaml
cloud: !include cloud.yaml
sensor: !include sensors.yaml
lcn: !include lcn.yaml
Code-Sprache: YAML (yaml)
Damit wird die ganze Konfiguration deutlich übersichtlicher und einfacher zu handhaben. Die neue cloud.yaml beinhaltet ab sofort all die Entitäten, die wir an Amazon übergeben wollen.
Die calud.yaml Datei beginnt im Falle von Amazon Alexa einmalig mit
Der nachbelichtet-Newsletter
Alle Beiträge und exklusive Infos kostenlos per Mail erhalten - wie über 10.000 andere treue Leser!
Kein Spam - versprochen! Und du kannst dich jederzeit wieder abmelden!alexa:
entity_config:
Code-Sprache: YAML (yaml)
Nun definiert man alle Entitäten, deren Namen und Kategorie in Alexa z. B.
alexa:
entity_config:
light.kuche_insel:
name: Insel
description: Kücheninsel Beleuchtung
display_categories: LIGHT
Code-Sprache: YAML (yaml)
light.kuche_insel ist dabei der Name der Entität in Home Assistant. Darunter folgt der Name, unter dem wir diese Entität zukünftig mit Alexa ansprechen wollen. Alexa, schalte Insel ein!
Die description ist optional, hilft aber später, entsprechende Geräte zu identifizieren. Mit display_categories kann man die unterschiedlichen Entitäten den Gerätekategorien von Alexa zuordnen. Damit schafft man Übersicht in der App oder wenn man Alexa Geräte mit Display nutzt. Mögliche Kategorien sind hier aufgelistet: Alexa.Discovery Interface | Alexa Skills Kit (amazon.com). Hier ist ein Auzug aus meiner cloud.yaml
light.badschrank:
name: Badschrank
description: Beleuchtung Badschrank
display_categories: LIGHT
light.bad_dusche:
name: Dusche
description: Licht Dusche
display_categories: LIGHT
light.bad_decke:
name: Baddecke
description: Licht Bad Decke
display_categories: LIGHT
light.sz_markus:
name: Nachttisch Markus
description: Nachtischlicht Markus
display_categories: LIGHT
switch.kaffeemaschine:
name: Kaffeemaschine
description: Siebträger
display_categories: COFFEE_MAKER
switch.terrasse_sd:
name: Steckdosen Terrasse
description: Steckdosen Terrasse
display_categories: SWITCH
switch.lotkolben_werkstatt:
name: Lötkolben
description: Lötkolben Werkstatttisch
display_categories: SWITCH
vacuum.rockrobo:
name: Staubi
description: Roborock EG
display_categories: VACUUM_CLEANER
vacuum.staubi_2:
name: Vorwerk
description: Vorwerk Roboter
display_categories: VACUUM_CLEANER
cover.jalousie_buro_terrasse:
name: Bürotür
description: Jalousie Bürotüre
display_categories: EXTERIOR_BLIND
cover.jalousie_bad:
name: Badfenster
description: Jalousie Badfenster
display_categories: EXTERIOR_BLIND
Code-Sprache: YAML (yaml)
Und das sieht dann so in der Alexa App aus:

Nachdem man die neue Konfiguration gespeichert und Home Assistant neu gestartet hat, werden diese Geräte automatisch zu Alexa übertragen und auch NUR diese. Entscheidet man sich später einmal, dass man ein Gerät mit einem anderen Namen aufrufen möchte, ändert man einfach den entsprechenden Eintrag in der cloud.yaml. Zwar ist das bei der ersten Einrichtung etwas Aufwand, dafür wird man aber mit einem übersichtlichen System belohnt, das auch auf die Sprachbefehle hört, die man nutzen möchte – und die man sich merken kann.
Ein weiterer nicht zu unterschätzender Effekt ist, dass die Sprachbefehle sehr viel schneller ausgeführt werden, da nicht zig unnütze Geräte durchsucht und interpretiert werden müssen.
Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Für dich verändert sich der Preis nicht und du unterstützt damit meine Arbeit. Preisänderungen und Irrtümer vorbehalten.
Hallo und Danke für die übersichtliche Erläuterung!
Für mich ist es gut nachvollziehbar – gerade das Argument der Übersichtlichkeit und Vereinfachung sticht!
Allerdings geht es mir wie Tobias: Folge ich deiner Anleitung, wird NICHTS zu Alexa übermittelt.
Ich verstehe natürlich, dass du keinen Support leisten kannst/möchtest.
Aber in diesem Fall solltest du du Seite vielleicht einfach offline stellen, denn offensichtlich funktioniert ja nicht, was du hier schreibst.
Jörg
Der Teil, welcher nicht funktioniert, ist bei mir aber gar nicht aufgeführt, sondern zeigt auf externe Inhalte. Und natürlich kann sich nach 1 1/2 Jahren auch etwas ändern – zumal bei Home Assistant.
Vielleicht hilft ein Blick in die offizielle Doku: https://www.home-assistant.io/integrations/alexa.smart_home/#:~:text=IMPORTANT%20-%20Alexa%20Skills,English%20(CA)%20skills
Hej,
gibt es eigentlich eine Möglichkeit für ein Gerät mehrere Namen zu definieren?
Hallo und danke zunächst für diesen gut geschriebenen Beitrag.
Ich habe mich an die hier geschriebenen Worte gehalten und die cloud.yaml mit meinen Entitäten nachgebaut, jedoch findet meine Alexa kein einziges Gerät. Hier ein Auszug meiner cloud.yaml
alexa:
entity_config:
light.yeelight_ceiling1_0x4a19e53:
name: Küche
description: Deckenlicht Küche
display_categories: LIGHT
light.yeelight_color_0x2e07094:
name: Stehlampe
description: Stehlampe
display_categories: LIGHT
Innerhalb der configuration.yaml habe ich
cloud: !include cloud.yaml angegeben. Leider bleibt das ganze ohne Erfolg. Ich würde mich über Hilfe sehr freuen.
LG
Tobias
Ich kann hier leider keinen individuellen Support leisten, da das überhandnehmen würde. Einrückungsfehler kannst du ausschießen? Das „check Home Assistant configuration“ Addon hast du im Einsatz? https://github.com/home-assistant/addons/blob/master/check_config/README.md
Hi und vielen dank für die schnelle Rückmeldung.
Das verstehe ich vollkommen und war gar nicht meine Intention.
Check Config habe ich im Einsatz, dort wird auch erst einmal nichts bemängelt. Einrückfehler werde ich später nochmals prüfen, dadurch das ich mich aber an der Anleitung orientiert habe würde ich diese erstmal ausschließen wollen.
Der Teufel ist ein Eichhörnchen 🙂
Du könntest natürlich auch einfach mal einen Fehler in die cloud.yaml einbauen und sehen, ob der von Check Config erkannt wird. Dann bist du zumindest schon mal sicher, dass die Datei eingebunden wird.