Nabu Casas Cloud ist praktisch, aber auch langsam

Home Assistant und Amazon Alexa ohne Nabu Casa: Schneller und zuverlässiger

Mit Home Assistant und Amazon Alexa kann man viele Dinge auch per Sprachbefehl steuern. Die aktuellen Schwierigkeiten beim Angebot von Nabu Casa habe mir jedoch gezeigt, dass man damit auch Geschwindigkeit einbüßt.

Wir haben in fast jedem Raum einen Amazon Echo stehen, über den wir nicht nur Radio und Musik hören, sondern auch viele Dinge im Haus steuern können. Home Assistant und die kostenpflichtige, jedoch einfach Anbindung des Sprachassistenten über die Nabu Casa Cloud, machen es in kürzester Zeit möglich. Nabu Casa ist eine Firma, die aus den Home Assistant Machern entstanden ist. Für 5 Euro pro Monat erhält man darüber nicht nur eine einfache Möglichkeit, Sprachassistenten wie Alexa oder den Google Assistant anzubinden, sondern auch einen abgesicherten Fernzugang. Zusätzlich unterstützt man damit die Weiterentwicklung von Home Assistant, was eine hervorragende Sache ist.

So sah bislang meine Liste an Geräten für Alexa über die Nabu Casa Cloud aus

Seit einiger Zeit gibt es jedoch Probleme mit der Anbindung der Sprachassistenten über Nabu Casa. Offenbar hat der große Erfolg von HA dafür gesorgt, dass der Dienst, der Home Assistant und die Assistenten ohne großen Konfigurationsaufwand mit den entsprechenden Anbietern verbindet, sehr langsam und unzuverlässig geworden ist. Möchte man einen Befehl ausführen, dauert es oft mehrere Sekunden. Zusätzlich quittiert Alexa den Befehl damit, dass das entsprechende Gerät nicht reagieren würde. Kurze Zeit darauf wird der Befehl trotzdem ausgeführt.

Das ist nicht nur nervig, sondern reduziert den WAF (Womens Acceptance Factor) deutlich. Da wir diese Dienste jedoch regelmäßig nutzen, weil wir auch beide im Homeoffice arbeiten, habe ich meine Alexa-Anbindung umgestellt.

NGINX Proxy Manager für den externen Zugriff auf Home Assistant

Eine vollständige Anleitung dazu gibt es bei Home Assistant und auch dieses Video hilft dabei, die recht komplexe Konfiguration zu meistern.

Man benötigt dazu einen kostenlosen Amazon Developer-Account, um auf die AWS-Dienste zugreifen zu können. Außerdem muss Home Assistant per SSL über den Port 443 und einer festen Adresse erreichbar sein. Wir haben hier eine feste IP-Adresse für unseren DSL-Anschluss, die ich im DNS meines Domain-Providers über eine Subdomain auflöse. Auf meinem Server läuft vor Homeassistant ein Docker-Container mit einem NGINX-Proxy-Server, der die Verwaltung der Zertifikate und auch einiges an Absicherung übernimmt.

Home Assistant selbst bietet im Supervisor ähnliche Funktionen und auch DuckDNS kann hier genutzt werden, falls man eine dynamische IP-Adresse nach außen hat. Die Erreichbarkeit von außen samt gültigen SSL-Zertifikaten muss vor der weiteren Einrichtung funktionieren und getestet sein.

Addons für NGINX, Let’s Encrypt und Duck DNS im Addon Store von Home Assistant

Ich habe für die komplette Einrichtung etwa 45 Minuten benötigt. Man erstellt in diesem Zusammenhang auch einen eigenen Alexa Skill, der die zukünftige Steuerung übernimmt. Das ist insgesamt sehr interessant, weil man damit auch ein bisschen Einblick in die Grundlagen der Skill-Entwicklung für Alexa bekommt.

Hat man alles getestet, fällt die bisherige Konfiguration der Geräte und Entitäten, die zu Alexa synchronisiert und dort erreichbar sein sollen weg und muss durch eine Erweiterung der HA configuration.yaml ersetzt werden. Damit kann man allerdings auch sehr viel granularer und gezielter einstellen, welche Dienste mit welchem Namen und Sprachbefehl mit Alexa genutzt werden können.

Der eigene Alexa Skill zur Steuerung von Home Assistant

Ich habe diese Konfiguration in eine eigene Datei alexa.yaml ausgelagert und diese in meiner configuration.yaml eingebunden. Dabei habe ich zunächst alle Domains, also Lampen, Schalter, Sensoren etc. mit exclude_domains: von Alexa ausgeschlossen, um sie dann gezielt per include_entities einzubinden.

smart_home: locale: de-DE client_id: amzn1.application-oa2-client.40cd01 client_secret: 062e0ca88560015b9ee filter: exclude_domains: - automation - alert - input_boolean - media_player - binary_sensor - switch - camera - light - automation - script - sensor - device-tracker - lock - fan - remote - alarm_control_panel - input_select - input_number - person - sun - climate - weather - zone - persistent_notification - air_quality include_entities: - group.schlafzimmerlicht - group.wohnzimmerlicht - group.kuechenlicht - group.buerolicht - group.studiolicht - group.badlicht - group.werkstattlicht - group.aussenlicht # Lampen Küche - light.kuchenlicht - light.kuche_insel - light.kuche_haupt - light.kuche_fenster - light.kuche_theke
Code-Sprache: YAML (yaml)

Mit der entity_config lässt sich dann auch bestimmen, wie die Entität in Alexa angesprochen werden soll – ganz unabhängig vom Namen der Entität in Home Assistant:

entity_config: light.burolicht: name: Bürolicht description: Büro Beleuchtung display_categories: LIGHT light.buro_markus: name: Büro Markus description: Büro Beleuchtung Markus display_categories: LIGHT light.wz_leselicht: name: Leselicht description: Leselicht Wohnzimmer display_categories: LIGHT light.wz_spots: name: Deckenspots description: Spots Wohnzimmerdecke display_categories: LIGHT light.kuche_theke: name: Theke description: Licht Küchentheke display_categories: LIGHT
Code-Sprache: YAML (yaml)

Die display_categories sorgen dafür, dass die Entität einer Geräteklasse in Alexa (z. B. LIGHT, COVER, SWITCH, LOCK etc.) zugeordnet wird, was wiederum für die Übersicht gut ist. Dieser Teil der Konfiguration nimmt fast noch mehr Zeit in Anspruch, als die eigentliche Konfiguration – lohnt sich aber!

Da man für die manuelle Anbindung von Alexa ohnehin einen sicheren Zugang von außen auf HA benötigt, erübrigt sich damit auch der von Nabu Casa angebotene Dienst dafür.

Alles so schnell auf einmal!

Tatsächlich war ich überrascht, wie schnell die Befehle nun ausgeführt werden, ohne dass sie den Umweg über einen (derzeit überlasteten) Drittserver gehen müssen. Auch als bei mir noch Symcon im Einsatz war, lief die Kommunikation über den Service von Symcon ab. Ich hatte also noch nie den direkten Vergleich. Aber auch andere Dienste wie Philips Hue etc. waren langsamer als diese Lösung.

Die Befehle werden sofort ausgeführt, ohne dass man dabei eine merkliche Verzögerung beobachten könnte und werden brav mit “PALIM!” quittiert. Seitdem gab es keine Meldungen mehr, dass ein Gerät nicht reagieren würde.

Flash Briefings für Alexa

So euphoriert, habe ich mich auch gleich noch an ein eigenes Flash Briefing für Alexa gemacht, das mir auf die Frage “Alexa, was gibt es Neues?” eine Übersicht über wichtige Werte und Zustände liefert. So etwa welche Außentemperatur gerade herrscht, ob es regnet und wie der Ladestand unseres Tesla Model 3 (unser McFly) ist:

flash_briefings: password: xxxxxxxx wetter: title: Wie ist das Wetter? text: > Momentan hat es außen {{ states("sensor.wih_temp_aussen") }} Grad {% if is_state('binary_sensor.wih_regen', 'on') %} und es regnet. {% else %} und es ist trocken. {% endif %} Die gefühlte Temperatur beträgt {{ states("sensor.weewx_gefuehlte_temperatur")}} Grad. {% if is_state('binary_sensor.garage_geschlossen', 'on') %} Das Garagentor ist geschlossen. {% else %} Das Garagentor ist offen. {% endif %} {% if is_state('binary_sensor.werkstattfenster', 'off') %} Das Werkstattfenster ist geschlossen. {% else %} Das Werkstattfenster ist offen. {% endif %} {% if is_state('switch.studio_sd_rack', 'on') %} Der Strom im Studio ist an. {% if is_state('switch.nachbelichtet', 'on') %} und der PC im Studio ist noch an. {% endif %} {% endif %} {% if is_state('binary_sensor.haustur', 'off') %} Die Haustüre ist geschlossen. {% else %} Die Haustüre ist offen. {% endif %} McFly hat {{states("sensor.mcfly_battery_sensor")}} Kilowatt geladen und seine Reichweite liegt bei {{states("sensor.mcfly_range_sensor")}} Kilometern. Der Gasverbrauch lag heute bisher bei {{states("sensor.gasverbrauch_kwh")}} Kilowattstunden und es werden gerade {{states("sensor.strom_stats_w")}} Watt Strom verbraucht.
Code-Sprache: YAML (yaml)

Für diesen Bereich habe ich noch jede Menge Ideen und ich werde ihn noch so verfeinern, dass bestimmte Zustände nur angesagt werden, wenn eine Handlung erforderlich ist, z. B. “Bitte das Werkstattfenster schließen!”. Auch kommen hier alle Fenster- und Türsensoren dazu.

Fazit

Die direkte Anbindung von Alexa an Home Assistant ist eine nicht ganz triviale Sache und erfordert einiges an Zeit und Muse. Belohnt wird man aber mit einem sehr schnellen System. Die Home Assistant Entwickler bei Nabu Casa sind laut Reddit bereits an einer Lösung für das Problem mit ihrer Cloud dran. Diese wird aber wohl erst Ende Februar 22 fertig. Ich werde jedoch auf jeden Fall bei meiner individuellen Anbindung bleiben. Das hat zwei Gründe:

  • Sie ist schneller, weil ein weiterer Server dazwischen wegfällt
  • und sie ist zuverlässiger, weil ein weiterer Server dazwischen wegfällt.

Es gab bei Nabu Casa auch schon ein paar Ausfälle, die dann eben alle Homeassistant-Anwender betreffen, die auf diese Lösung setzen. Die 5 Euro pro Monat bekommen sie weiterhin, weil ich damit die Weiterentwicklung von Home Assistant unterstützen möchte.


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. 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.

13 Kommentare

  1. Hi,
    danke dir für diesen Beitrag. Genau das, was mir noch fehlte.
    Die Einrichtung hat soweit gut geklappt. Einzige Ausnahme: AWS hat scheinbar die GUI etwas geändert, so das ich eine Weile gesucht habe, bis ich die Umgebungsvariablen gefunden hatte.
    Was noch nicht funktioniert, sind deine Filter und entity Anpassungen oben. Aus irgendeinem Grunde greifen die bei mir nicht und es wird immer alles übertragen. Hast du da vielleicht einen Tip für mich?

    Grüße aus BW

    Ralf

    • Ja, die Oberfläche ändern die ständig …

      Falls du vorher Nabu Casa hattest, hast du das sicher deaktiviert?
      Ansonsten die alexa.yaml anlegen (und in der configuration.yaml mit alexa: !include alexa.yaml verbinden). In der alexa.yaml dann diesen Teil:

      smart_home: locale: de-DE client_id: amzn1.application-oa2-client.40cd01 client_secret: 062e0ca88560015b9ee filter: exclude_domains: - automation - alert - input_boolean - media_player - binary_sensor - switch - camera - light - automation - script - sensor - device-tracker - lock - fan - remote - alarm_control_panel - input_select - input_number - person - sun - climate - weather - zone - persistent_notification - air_quality
      Code-Sprache: CSS (css)

      anlegen. Damit schließt du aus, dass alle Entitäten zu Alexa übertragen werden. Falls in deiner configuration.yaml noch eine cloud.yaml verbunden ist (die manuelle Konfiguration für Nabu Casa), solltest du diese entfernen.

      • Das ging ja mal Schnell 🙂 Danke dir.
        Ich hatte gar kein NaBu.
        Deine Config hab ich so übernommen. Das Einzige, was ich mir noch vorstellen kann, ist dass ich irgendwo falsch einrücke. YAML ist für mich Neuland und wird definitiv niemals mein Freund werden 🙁

        • Dann bitte auch nicht meinen Code von unten übernehmen, denn die Code-Ansicht in den Kommentaren rückt auch falsch ein 🙂
          Hast du das “Check Home Assistant configuration” Add-On installiert? Das prüft dir vor jedem Neustart, ob deine Config okay ist. Das ist sehr hilfreich 🙂
          Ansonsten mal einen Blick ins Log werfen, ob du da was sehen kannst.

  2. Vielen Dank für den Beitrag!
    Es hat alles mit dem Video bis zu dem Punkt geklappt, wo der Skill in der Alexa-App aktiviert werden muss.
    Hier erhalte ich immer die Meldung “Skill-Name” konnte nicht mit Alexa verknüpft werden.

    Ich bin alle Einrichtungsschritte mehrfach durchgegangen.

    Irgendeine Idee, woran die Aktivierung scheitern könnte bzw. wo man eventuelle Fehlermeldungen sehen kann (debug im HA-Log zeigt nichts an).

    VG
    Gerd

  3. Hallo, das ist ja ein wirklich guter Beitrag! Gibt es es vielleicht auch eine Kurze Erklärung zur 45 minütigen Anbindung und Erstellung der eigenen Skills? Ich bin bislang davor immer zurück geschreckt und habe in HA „emulated_hue“ für ein paar Lichter angelegt.

    • Ein sehr gutes Videos ist im Beitrag enthalten. Es gibt zig andere Anleitungen, daher muss ich das hier nicht noch einmal erklären, denke ich.
      Als Homeassistant-Anwender ist man Recherche ja gewöhnt 😉

      • Ja das stimmt, das Video ist gut und ich konnte es als Grundlage für meine eigenes Skill nutzen.
        Die Anbindung funktioniert prima und schnell. Im Weiteren muss ich mich wohl dann nochmal den „Flash Briefings“ widmen. 🙂

        • Super! Ich war extrem erstaunt, wie viel schneller diese Variante im Vergleich zur Nabu Casa Cloud funktioniert. Die Flash Briefings sind schon sehr praktisch und haben auch einen hohen WAF 🙂

  4. Hi, cooler Beitrag. Ich würde client_id und client_secret aus der configuration.yaml vielleicht nicht mit uns allen teilen 🙂 . Grüße

Schreibe einen Kommentar

Cookie Consent mit Real Cookie Banner