Home Assistant mit Alexa steuern

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 trage profile 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.

Schreibe einen Kommentar

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