70 lines
4.0 KiB
Markdown
70 lines
4.0 KiB
Markdown
# Home Assistant Alexa Skill
|
|
|
|
Ein privater, selbst gehosteter Alexa Custom Skill, mit dem du Home Assistant per Sprache abfragen kannst — Stromverbrauch, Stromkosten, sowie Waschmaschine und Trockner. Läuft als **Alexa-hosted Skill** (Node.js), keine eigene AWS-Infrastruktur nötig.
|
|
|
|
**Hinweis:** Raumtemperaturen laufen mittlerweile **nicht mehr** über diesen Custom Skill, sondern über die native Nabu-Casa-Smart-Home-Integration (Entitäten in der Alexa-App den Räumen zugewiesen). Details dazu in [SETUP.md](SETUP.md).
|
|
|
|
**Beispiele:**
|
|
> "Alexa, frag Home Assistant was ist die aktuelle Leistung"
|
|
> → "Der aktuelle Stromverbrauch beträgt 645 Watt."
|
|
|
|
> "Alexa, frag Home Assistant wie hoch sind die Stromkosten diesen Monat"
|
|
> → "Die Stromkosten für diesen Monat betragen 45,23 Euro."
|
|
|
|
> "Alexa, frag Home Assistant wie lange läuft die Waschmaschine noch"
|
|
> → "Die Waschmaschine ist 96 Prozent fertig und endet um 21:30 Uhr."
|
|
|
|
> "Alexa, frag Home Assistant wie lange läuft der Trockner noch"
|
|
> → "Der Trockner ist 40 Prozent fertig und endet um 22:15 Uhr."
|
|
|
|
---
|
|
|
|
## Inhalt dieses Repos
|
|
|
|
```
|
|
home-assistant-skill/
|
|
├── index.js # Config: ruft die Factories mit den echten Entity-IDs auf,
|
|
│ # registriert die Handler
|
|
├── factories.js # makeApplianceIntent, makeSimpleSensorIntent,
|
|
│ # makeSlotSensorIntent, PERIOD_PHRASES
|
|
├── ha-client.js # getHaState() - HA REST API Client
|
|
├── static-handlers.js # Launch/Help/Cancel/Fallback/Error (Pflicht-Handler)
|
|
├── package.json # Node-Abhängigkeiten (ask-sdk-core, dotenv, ...)
|
|
├── .env.example # Vorlage für HA_URL / HA_TOKEN
|
|
├── ARCHITECTURE.md # Details zur Factory-Struktur, Beispiele für neue Sensoren
|
|
├── SETUP.md # Vollständige Schritt-für-Schritt-Anleitung
|
|
└── README.md # diese Übersicht
|
|
```
|
|
|
|
---
|
|
|
|
## Warum ein Custom Skill (statt nur die native Nabu-Casa-Integration)?
|
|
|
|
Home Assistant über Nabu Casa bietet bereits einen offiziellen **Smart Home Skill**, der native Sprachbefehle wie "Alexa, wie warm ist es im Wohnzimmer" *ohne* Skill-Namen unterstützt — das funktioniert zuverlässig, sobald die Entität freigegeben und einem Raum in der Alexa-App zugeordnet ist. Für **Temperatur** ist das die einfachste Lösung, und genau darüber laufen Temperaturabfragen bei uns inzwischen — nicht mehr über diesen Custom Skill.
|
|
|
|
Für alles darüber hinaus (Stromverbrauch, Stromkosten, Gerätestatus wie Waschmaschine/Trockner) hat Alexa aber **keine eingebaute Sprachgrammatik** — die native Integration unterstützt praktisch nur Temperatursensoren. Dafür ist dieser Custom Skill gedacht. Nachteil: Du musst immer den Invocation Name sagen (z.B. "frag Home Assistant ..."), das ist eine feste Grammatikregel von Alexa für alle Custom Skills und lässt sich nicht umgehen.
|
|
|
|
---
|
|
|
|
## Voraussetzungen
|
|
|
|
- Amazon Developer Account (Identitätsverifizierung ggf. erforderlich)
|
|
- Home Assistant Instanz, die per HTTPS von außen erreichbar ist (Nabu Casa Cloud, eigener Reverse Proxy oder Tunnel)
|
|
- Long-Lived Access Token aus Home Assistant
|
|
|
|
Die vollständige Schritt-für-Schritt-Anleitung (Skill anlegen, Intents, Slots, Code einrichten, Testen) steht in **[SETUP.md](SETUP.md)**.
|
|
|
|
Details zur Code-Architektur (Factory-Funktionen, wie man neue Sensoren/Geräte ergänzt) stehen in **[ARCHITECTURE.md](ARCHITECTURE.md)**.
|
|
|
|
---
|
|
|
|
## Status
|
|
|
|
✅ `GetPowerUsageIntent` — aktueller Stromverbrauch (Netzbezug + Keller)
|
|
✅ `GetPowerKammerUsageIntent` — aktueller Stromverbrauch Kammer-Serverschrank
|
|
✅ `GetEnergyCostIntent` — Stromkosten nach Tag/Woche/Monat
|
|
✅ `GetEnergyCostKammerIntent` — Stromkosten Kammer-Serverschrank nach Tag/Woche/Monat
|
|
✅ `GetWashingMachineIntent` — Waschmaschinen-Fortschritt und Endzeit
|
|
✅ `GetDryerIntent` — Trockner-Fortschritt und Endzeit
|
|
✅ Temperatur — läuft über native Nabu-Casa-Smart-Home-Integration, nicht mehr über diesen Skill
|