Klare Namen und Befehle für die Sprachsteuerung

Home Assistant: Entitäten sauber in Amazon Alexa integrieren

Eine der wohl besten Funktionen eines Smarthome Hubs, ist die Sprachsteuerung per Amazon Alexa oder Google Assistant. Damit das auch wie gewünscht und mit eigenen Namen für die unterschiedlichen Lampen, Jalousien etc. funktioniert, sollten diese in Home Assistant klar definiert werden. So funktioniert es.
Bitte beachte: Dieser Beitrag ist mehr als 3 Jahre alt. Manche Links, Preise, Produkte und Aussagen sind vielleicht nicht mehr aktuell!

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.

Amazon Echo Dot 4

Ü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.

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!

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.yamlCode-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.yamlCode-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

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_BLINDCode-Sprache: YAML (yaml)

Und das sieht dann so in der Alexa App aus:

Alexa App mit Gerätekategorie wie Licht, Schalter oder Saugroboter

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.

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.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.

7 Kommentare

  1. 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

  2. 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

      • 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert