Files

4.8 KiB

Setup-Anleitung: Home Assistant Alexa Skill

Schritt-für-Schritt-Anleitung

1. Skill in der Alexa Developer Console anlegen

  1. Auf developer.amazon.com einloggen → AlexaAlexa Skills Kit
  2. Create Skill
  3. Namen vergeben (z.B. "HomeAssistantSkill")
  4. Locale: German (DE)
  5. Modell: Custom
  6. Hosting-Methode: Alexa-hosted (Node.js)
  7. Hosting-Region: EU (Ireland)
  8. Template: Start from Scratch
  9. Create Skill klicken

2. Invocation Name festlegen

  • Build-Tab → Invocations → Invocation Name setzen, z.B. home assistant
  • Save klicken

3. Slot Type anlegen

PeriodList (für Stromkosten-Abfragen, wird von mehreren Intents wiederverwendet):

  • Build-Tab → Slot Types+ Add → Namen PeriodList → "Create custom slot type"
Value ID
Tag tag
Woche woche
Monat monat

Tipp: Beim Value "Tag" als Synonym z.B. "heute" ergänzen.

Die ID ist wichtig: Der Code liest den sauberen, festen Wert über die Slot-Resolution aus.

  • Save klicken

4. Intents anlegen

Build-Tab → IntentsHelloWorldIntent löschen. Danach folgende Intents anlegen:

GetPowerUsageIntent (kein Slot):

wie hoch ist der aktuelle stromverbrauch
was ist die aktuelle leistung
wie viel strom verbrauchen wir gerade

GetPowerKammerUsageIntent (kein Slot):

wie hoch ist der aktuelle stromverbrauch in der kammer
was ist die aktuelle leistung in der kammer

GetEnergyCostIntent (mit Slot {Period}, Slot Type PeriodList):

wie hoch sind die stromkosten diesen {Period}
wie hoch sind die stromkosten {Period}
was kostet der strom diesen {Period}

Beim Eintippen von {Period} Popup "Create a new slot" → Add. Danach bei Intent Slots Period als Slot Type PeriodList.

GetEnergyCostKammerIntent (mit Slot {Period}, Slot Type PeriodList):

wie hoch sind die stromkosten für die kammer diesen {Period}
was kostet die kammer diesen {Period}

GetWashingMachineIntent (kein Slot):

wie lange läuft die waschmaschine noch
wann ist die waschmaschine fertig
ist die waschmaschine fertig

GetDryerIntent (kein Slot):

wie lange läuft der trockner noch
wann ist der trockner fertig
ist der trockner fertig

Die Standard-Intents (Cancel/Help/Stop/NavigateHome/Fallback) bleiben unverändert.

5. Modell bauen

  • Oben rechts Build Skill klicken
  • Nach jeder Änderung an Utterances/Intents/Slots muss neu gebaut werden.

6. Long-Lived Access Token erstellen

  • Home Assistant: Profil → runterscrollen zu "Long-lived access tokens" → Token erstellen → sofort kopieren

7. Code einrichten

  • Skill → Tab Code
  • index.js, factories.js, ha-client.js, static-handlers.js aus diesem Repo übernehmen (per New File anlegen)
  • package.json ersetzen
  • Neue Datei .env anlegen, Inhalt aus .env.example mit echten Werten:
    HA_URL=https://deine-ha-domain.de
    HA_TOKEN=dein-long-lived-access-token
    
  • Entity-IDs in index.js an deine Installation anpassen
  • SaveDeploy

8. Temperaturabfragen (native Integration)

  1. Home Assistant → Einstellungen → Sprachassistenten → Alexa → climate-Entitäten freigeben
  2. Alexa-App: Gerät dem passenden Raum zuweisen
  3. Falls nötig: Geräte neu suchen lassen
  4. Danach: "Alexa, wie warm ist es im Wohnzimmer" — ohne Skill-Namen

9. Testen

  • Tab Test → Development
  • Simulator, z.B.: frag home assistant was ist die aktuelle leistung

Entity-Referenz

Stromverbrauch:

GetPowerUsageIntentHandler: 'sensor.kammer_netzbezug_plus_keller_power_calc'
GetPowerKammerUsageIntentHandler: 'sensor.kammer_serverschrank_leistung'

Stromkosten:

// GetEnergyCostIntentHandler
tag: 'sensor.netzbezug_kosten_tag',
woche: 'sensor.netzbezug_kosten_woche',
monat: 'sensor.netzbezug_kosten_monat',

// GetEnergyCostKammerIntentHandler
tag: 'sensor.kammer_serverschrank_kosten_tag',
woche: 'sensor.kammer_serverschrank_kosten_woche',
monat: 'sensor.kammer_serverschrank_kosten_monat',

Waschmaschine:

statusEntity: 'sensor.waschmaschine_betriebszustand'
progressEntity: 'sensor.waschmaschine_programm_fortschritt'
endTimeEntity: 'sensor.waschmaschine_programm_endzeit'

Trockner:

statusEntity: 'sensor.trockner_betriebszustand'
progressEntity: 'sensor.trockner_programm_fortschritt'
endTimeEntity: 'sensor.trockner_programm_endzeit'

Fehlersuche

  • Fehlermeldung im Simulator: JSON Output rechts prüfen
  • Fallback direkt nach neuem Intent: "Build Skill" vergessen
  • Keine Verbindung: HA_URL prüfen (kein Pfad, kein Slash am Ende), HA von außen erreichbar?
  • Zahlen falsch vorgelesen: Werte runden bzw. mit Komma formatieren (bereits umgesetzt)
  • Ausführliche Logs: Code-Tab → CloudWatch Logs