Damit Alexa deine Geräte auch über das Internet ansprechen kann, muss eine Verbindung zwichen Home Assistant und Alexa hergestellt werden. Hierfür erstellst du dir zunächst einen Amazon Developer Account sowie einen Amazon Web Service (AWS) Account. Aber keine Sorge, das geht ganz einfach und ist kostenlos. Außerdem muss dein Home Assistant über das Internet erreichbar sein. Hierfür musst du DuckDNS installieren und einrichten. Wie du das machst, erfährst du auf der Seite Home Assistant einrichten.
Erstelle dir zunächst einen Alexa Entwickler Account (logge dich mit deinem bestehnden Amazon Konto ein), und klicke auf Create Skill
. Dort gibst du einen beliebigen Namen für deinen Skill ein und wählst als Model Smart Home
aus:

Zum Erstellen des Skills danach oben rechts auf Create Skill
klicken. Auf der nächsten Seite oben bei Payload version
V3
auswählen. Die restlichen Felder erst einmal offen lassen, sie werden später ausgefüllt. Als nächstes benötigst du eine Lambda Funktion in AWS. Dein Sprachbefehl an Alexa wird über deinen gerade erstellten Alexa Smart Home Skill an deine AWS Lambda Funktion geschickt, die sie wiederum an deine Home Assistant Instanz sendet. Daraufhin wird Home Assistant die Antwort an die Lambda Funktion schicken, die sie durch den Alexa Smart Home Skill an Alexa weiterleitet.
Als nächstes loggst du dich in deinen AWS Developer Account ein, falls du noch keinen hast, erstelle dir einen. Keine Sorge wegen der Kosten, in dem gratis Account sind (Stand Juni 2020) 1 Million Aufrufe pro Monat sowie genügen Rechenzeit enthalten (für die aktuellen Preiskonditionen siehe AWS Lambda Preise). Das ist mehr als ausreichend für deinen Smart Home Skill.
Im nächsten Schritt loggst du dich in deine AWS Konsole ein. Dann wählst du im Menu oben links Services
und unter Sicherheit, Identität & Compliance
den Punkt IAM
. Anschließend wählst du links im Menu unter Zugriffsverwaltung
den Punkt Rollen
aus. Auf der nächsten Seite klickst du auf Rolle erstellen
. Auf der folgenden Seite wählst du die Optionen AWS-Service
und Lambda
aus und klickst auf Weiter: Berechtigungen
. Auf der nächsten Seite wählst du die Berechtigung AWSLambdaBasicExecutionRole
und bestätigst mit Weiter: Tags
. Diese Seite kannst du überspringen und direkt auf Weiter: Prüfen
klicken. Anschließend gibst du der Funktion noch einen Namen und klickst auf Rolle erstellen
. Anschließend erstellst du eine Lambda Funktion und fügst den notwendigen Code in diese Funktion ein. Hierzu klickst du wieder oben im Menu auf Services
und wählst dann in der Sektion Datenverarbeitung
den Punkt Lambda
aus (oder du nutzt die Suchfunktion). Bevor du die Funktion erstellst, stelle sicher, dass oben rechts in der Menuleiste Irland
ausgewählt ist (links von Support
). Anschließend erstellst du eine neue Lambda Funktion indem du auf Funktion erstellen
klickst. Auf der nächsten Seite wählst du Ohne Vorgabe erstellen
und gibst der Funktion einen beliebigen Namen. Unter dem Menupunkt Laufzeit wählst du Python 3.6
aus. Klappe die Sektion Ausführungsrolle wählen oder erstellen
auf, aktiviere Verwenden einer vorhandenen Rolle
und wähle deine zuvor erstellte IAM-Rolle aus. Danach klickst du auf Funktion erstellen
. Stelle auf der nächsten Seite sicher, dass die Sektion Designer
ausgeklappt ist, klicke Auslöser hinzufügen
und wähle Alexa Smart Home
(falls du diese Option nicht findest überprüfe, ob deine Region korrekt auf Irland
eingestellt ist). In das Feld Anwendungs-ID
muss die Skill-ID
aus deinem Alexa Skill den du in der Alexa Developer Console erstellst hast eingetragen werden (zu finden unter Punkt 2 Smart Home service endpoint
. Anschließend klickst du auf hinzufügen
. Klicke nun auf deine Lambdafunktion mittig in der Designer
Sektion und scrolle nach unten zur Sektion Funktionscode
. Lade nun zunächst das zip file unter dieser Seite herunter (z.B. haaska_1.1.0.zip). Anschließend wählst du in deiner Lambda Funktion unter Codeeingabetyp
die Option ZIP-Datei hochladen
und wähle die heruntergeladene Datei aus und ersetze den Wert im Feld Handler
durch „haaska.event_handler“. Klicke anschließend oben rechts auf Speichern
um die Datei hochzuladen. Klicke anschließen im Dateibaum links doppelt auf die Datei config.json
und trage unter url
die Duck DNS Adresse ein, die du zuvor erstellt hast. Wechsle nun in deine HassIO Installation und logge dich ein. Klicke im Menu links ganz unten auf dein Profil und scrolle auf dieser Seite ganz nach unten. Wähle unter Long-Lived Access Tokens
die Option create token
und kopiere diesen und füge wechsle wieder zurück zu deiner Lambda Funktion. Dort fügst du den token in der noch geöffneten json.config
hinter bearer_token
ein und klickst auf speichern.
Lambda Funktion mit Alexa Skill verbinden
Ganz oben auf der Seite deiner Lambda Funktion findest du ARN
. Diese kopierst du und fügst sie in deiner Alexa Developer Console unter dem Punkt Default Endpoint
ein. Außerdem setzt du den Haken bei Europe, India
und fügst hier dieselbe ARN
ein und klickst zum Abschluss auf Save
.
Alexa Skill konfigurieren
Klicke in deinem Alexa Skill unter Punkt 3 Account Linking
auf Setup Account Linking
. Trage bei folgende Werte ein:
- Authorization URI: https://www.amazon.com/ap/oa
- Access Token URI: https://api.amazon.com/auth/o2/token
- Your Client ID: Login with Amazon Client ID*
- Your Secret: Login with Amazon Geheimnis*
- Your Authentication Scheme: HTTP Basic (Recommended)
- Scope: Klicke auf
Add scope
und trageprofile
in das Feld ein
*Um diese Werte zu erhalten klicke in der Alexa Developer Console im Menu oben rechts auf dein Profil und dann auf Einstellungen
. Anschließend im Menu von Amazon Developer auf Dashboard
und dann auf Login with Amazon
und lasse dir dort die Werte anzeigen.
Kopiere dir die URLs, die unter Alexa Redirect URLs
angezeigt werden und klicke im Login with Amazon Fenster Auf das Zahnrad unter Verwalten
und wähle Webeinstellungen
. Dort klickst du auf Bearbeiten
und fügst die URLs unter Zulässige Rückleitungs-URLs
ein.
Somit hast du nun deinen Alexa Skill mit der AWS Lambda Funktion verbunden und dieser wiederum leitet die Anfrage an deine HassIO Installation weiter. Jetzt muss noch dein Smart Home Skill in deinem Alexa Account aktiviert werden. Hierzu öffnest du entweder die Alexa App auf deinem Smartphone oder loggst dich in die Weboberfläche ein. In der App wählst du im Menu Skills und Spiele
, dann Ihre Skills
. In dieser Ansicht siehst dun nun eine Übersicht über deine aktivierten Skills. Schiebe das Menu oben (Aktivierte/Aktualisierte… Skills) nach links, bis du den Eintrag Entwickler
siehst. Dort solltest du nun deinen Smart Home Skill sehen. Klicke ihn an und dann auf Zur Verwendung aktivieren
. In der Webansicht klicke links auf Skills
, dann oben rechts auf Ihre Skills
und dann in dem weißen Fenster auf Entwicklerskills
.
Im letzten Schritt aktivierst du nun das Alexa Addon in deiner HassIO Installation. Hierfür musst du die configuration.yaml
anpassen. Füge im Abschnitt API folgendes ein:
alexa:
smart_home:
locale: en-US
endpoint: https://api.amazonalexa.com/v3/events
client_id: ALEXA_SKILL_CLIENT_ID
client_secret: ALEXA_SKILL_CLIENT_SECRET
Denke daran, wenn du die configuration.yaml
editiert hast, diese zunächst mit dem Checker zu prüfen und anschließend einen Neustart von Homa Assistant durchzuführen.
Deine komplette configuration.yaml
könnte nun beispielsweise so aussehen:
# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
# Text to speech
tts:
- platform: google_translate
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# Xiaomi / Roborock Staubsaugerroboter
vacuum:
- platform: xiaomi_miio
host: 192.168.1.99
token: '11111111111111111111111111111111' (durch deinen token ersetzen!)
maxcube:
gateways:
- host: 192.168.1.100
http:
base_url: https://dein.duckdns.org:8123
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
# WLAN Funksteckdse
tuya:
username: !secret steckdose_user
password: !secret steckdose_secret
country_code: 49
platform: smart_life
api:
# Possible Alexa display_categories:
# alert, group, automation, input_boolean, scene, script, switch, fan, light, cover, media_player, lock, sensor
alexa:
smart_home:
endpoint: https://api.eu.amazonalexa.com/v3/events
client_id: !secret alexa_client_id
client_secret: !secret alexa_client_secret
filter:
include_entities:
- switch.1324567890abcdefghij
- switch.abcdefghij0123456789
- script.good_night
- climate.wohnzimmer_thermostat_wz
- climate.kuche_thermostat_kueche
- climate.bad_thermostat_bad
- climate.schlafzimmer_thermostat_szneu
- script.wohnungsaugen
- script.wohnzimmersaugen
- script.kuechesaugen
- script.esszimmersaugen
- script.schlafzimmersaugen
- script.flursaugen
include_domains:
- switch
entity_config:
script.good_night:
name: Nachtmodus
display_categories: LIGHT
script.duschen:
name: Bad_heizen
display_categories: SWITCH
climate.wohnzimmer_thermostat_wz:
name: Wohnzimmer
display_categories: CLIMATE
climate.kuche_thermostat_kueche:
name: Küche
display_categories: CLIMATE
climate.bad_thermostat_bad:
name: Bad
display_categories: CLIMATE
climate.schlafzimmer_thermostat_szneu:
name: Schlafzimmer
display_categories: CLIMATE
script.wohnungsaugen:
name: WohnungSaugen
display_categories: input_boolean
script.kuechesaugen:
name: KücheSaugen
display_categories: input_boolean
script.wohnzimmersaugen:
name: WohnzimmerSaugen
display_categories: input_boolean
script.esszimmersaugen:
name: EsszimmerSaugen
display_categories: input_boolean
script.schlafzimmersaugen:
name: SchlafzimmerSaugen
display_categories: input_boolean
script.flursaugen:
name: FlurSaugen
display_categories: input_boolean
Hier siehst du auch schon einige eingebundene Geräte wie WLAN Steckdosen, Max! Heizungsthermostate und den Xiaomi Roborock Staubsaugerroboter.
Nun ist dein Smart Home Skill mit deiner Alexa verbunden und du kannst ihn testen.