Angeregt durch Beispiele hier und YouTube-Videos, setzte ich eine KI in meine Ansagen im Haus ein, um diese “lebendiger” zu gestalten. Dazu muss man erst mal wissen, wie mein Ansagen-System funktioniert und dann welche Vor- und Nachteile der Einsatz einer KI hat.
Unter Umständen interessiert das jemanden, wie ich das gemacht habe. Unter Umständen gibt es von anderen bessere Lösungen.
Hier meine Überlegungen. Bitte seht mir nach, dass dieser Artikel ursprünglich für eher Unwissende geschrieben wurde und ich ihn hierher reinkopiert habe. Er ist auf meiner Webseite zu finden unter "Home Assistant und KI | Mein SmartHome Handbuch ". Und nein, um gleich Wind aus dem Segel eines Users hier zu nehmen: Ich beabsichtige nicht, hier Leser auf meine Seite umzulenken. Deswegen kopiere ich ja auch hier alles rein.
Jetzt geht’s los:
Grundsätzlich muss man unterscheiden, ob man mittels KI Anweisungen an das SmartHome übermittelt, oder ob das smarte Haus die Bewohner intelligent informiert (z. B. über Zustände).
Intelligentes Haus
Wenn dein Haus oder deine Wohnung mit dir interagiert, so als wäre es fast ein intelligentes Wesen, dann macht SmartHome richtig Spaß. So musst du nicht mehr genau wissen, wie ein Gerät heißt, dass du z. B. einschalten willst. Du sagst einfach. „Mir ist es zu dunkel im Wohnzimmer“ und die Zusammenarbeit zwischen KI und Home Assistant schaltet das Licht heller. Auch Status-Ansagen sind nicht mehr die immer gleichen Wörter und Sätze. Nein, die KI verpackt das, so dass du dich oder deine Frau beim Nachhause kommen immer anders begrüßen lassen kannst, abhängig vom Wetter und der Uhrzeit, wenn du willst.
Google und openAI
Die Integration von Google/Gemini oder OpenAI/ChatGPT in Home Assistant ist mittlerweile sehr einfach und wird in vielen Videos auf YouTube erläutert. Doch der Teufel liegt im Detail. Mal schnell einen Lautsprecher einen Spruch ansagen lassen, kein Problem. Was ist aber, wenn der gerade etwas abspielt, eine andere Ansage oder Musik? Was ist, wenn die Nachrichten zu schnell hintereinander kommen? Überschreiben die sich gegenseitig (ja) oder reihen die Lautsprecher von Google und Co. die Nachrichten auf und spielen sie nacheinander ab (nein)? Was ist, wenn die KI ewig braucht, um eine Antwort zu generieren oder gar nicht reagiert?
Sprachbefehle oder Ansagen?
Und wie sieht es mit Sprachbefehlen aus? Das funktioniert sehr gut mit dem Home Assistant Assist und der KI (wobei lange Zeit ChatGPT besser war als Gemini; doch Gemini hat kürzlich aufgerüstet). Doch der will über Handy oder Browser angesprochen werden. Das ist natürlich blöde, wenn man das Haus mit Alexas oder Googles vollgepflastert hat. Mittlerweile werden „Kommunikationszentralen“ auch von NabuCasa angeboten („Home Assistat Voice“), die sind aber recht teuer. Man müsste dann seine „intelligenten“ Lautsprecher von Google und Alexa ersetzen. Will man das? Selbstbauen ist auch noch möglich. Das Thema stelle ich erst mal zurück und wende mich den Ansagen zu.
Ansagen
Um eine KI mittels Home Assistant richtig zu implementieren, braucht es weit mehr als nur die kurzen YouTube-Videos. Ich habe das gemacht, Erfolge sind mäßig. Ich teile euch dennoch mit, wie mein Nachrichtensystem funktioniert, welches auch Ansagen im Haus einschließt. Ich nutze dazu Google. Die Abläufe entwickle ich mit Node-RED (mit einer Home Assistant Automation ist das viel zu komplex).
Mein Nachrichtensystem
Alle selbst-initiierten Nachrichten werden zentral in einen Flow geleitet, den Nachrichten-Flow. Hier wird unterschieden, wo die Nachricht hingeht und welche Charakteriren (z.B. Wichtigkeit, Lautstärke) ihr zugeordnet sind. So kann eine gesprochene (Alarm-) Nachricht aufs Handy gespielt werden, eine normale Nachricht aufs Handy, eine Ansage im Haus, eine Ansage in einem bestimmten Zimmer, eine Nachricht zu Telegram, ein Eintrag in eine Log-Datei und natürlich eine beliebige Kombination dessen.
Erste Umsetzungen mittels KI
Wie bereits weiter oben beschrieben, gibt es Herausforderungen zu meistern. Ich habe festgestellt, dass abhängig von der Tageszeit die KIs innerhalb von 10 Sekunden und weniger antworten, gegen Nachmittag und Abend allerdings, offenbar, wenn die Amis wach werden, auch gerne fünf Minuten brauchen oder gleich auf einen Fehler laufen. Ist Home Assistant nicht nur das Spielzeug des meist männlichen „Kindes“, ist das nicht akzeptabel. Auch gibt es Nachrichten, die sofort raus müssen.
Die KI braucht Zeit
Man muss also Nachrichten nach ihrer Wichtigkeit gruppieren und irgend etwas tun, wenn die KI zu lange braucht oder sich gar nicht meldet.
Das Gute zuerst, auch wenn die KI lange braucht, alle Daten, die man ihr schickt, verarbeitet sie i.d.R. auch. D.h., in der Regel bekommt man Antworten, auch wenn es vielleicht zu lange dauert. Ich habe mir deswegen einen Timer eingebaut: Wenn die KI nicht innerhalb von 10 Sekunden antwortet, wird die Nachricht ohne KI ins Haus gesendet und angesagt.
Das Aufreihen von Nachrichten
Damit sich mehrere Nachrichten hintereinander nicht überschreiben, bedarf es im besten Fall einer Nachrichten-Queue, die abgearbeitet wird. Erst wenn die Nachricht fertig gesprochen wurde, kommt die nächste aus der Queue. Das wiederum ist gar nicht leicht zu lösen. Denn die Nachricht wird z. B. zu Google gesendet und gelangen dann auf die Lautsprecher. Aber wann Google bzw. der Google-Lautsprecher mit seiner Ansage fertig ist, weiß Home Assistant erst mal nicht.
Helfen kann man sich, in den man eine zeitliche Warteschlange anlegt, wenn man weiß, wie lange ungefähr eine Nachricht dauert. So hatte ich es auch lange Zeit (ohne KI). Aber jetzt, wo ich sowieso meinen Nachrichtenflow neu anpacke, arbeite ich intelligenter. Ich prüfe, wann der oder die Lautsprecher fertig mit der Ansage sind und sende dann die nächste Nachricht aus der Queue. Aber auch das ist nicht einfach zu realisieren. Ich muss unterscheiden, ob gerade Musik darauf spielt oder eine Ansage. Musik wird natürlich sofort unterbrochen (und bei mit auch noch ein Snapshot erstellt, so dass sie nach den Ansagen weiter läuft). Außerdem brauche ich die Google-Lautsprecher synchronisiert, wenn sie gleichzeitig (also z. B. im ganzen Haus) sprechen. Das ist alles realisiert.
Die Intelligenz der KI
Ich musste leider feststellen, dass Stand heute (13.02.2025) bei den Ansagen die KI anscheinend nicht weiß, was ich ihr in der Konfiguration in der Home Assistant Integration mitgegeben habe. Denn dort, so dachte ich, gebe ich ihr eine Personalität und sage im Generellen, was ich von ihr will und wer sie sein soll. Nein, dass scheint sie nur für den Home Assistant Assist mitzunehmen. Deswegen muss diese Information mit jedem Nachrichten-Aufruf mitgegeben werden. Das gilt auch für so triviale Dinge wie welcher Tag heute ist und welche Uhrzeit.
Ich werde nun meinen Nachrichten-Flow Schritt für Schritt vorstellen.
Der Code im Einzelnen
Da ich den Prozess nur umrissen darstellen will, werde ich auf Details nicht weiter eingehen. Das hier soll nur ein Denkanstoß sein. Dennoch habe ich etwas unter jedem Screenshot geschrieben.
Nachrichten-Empfang
Details
Etwa 20 Flows mit vielen Prozess-Abläufen, gruppiert in Gruppen, steuern unser Haus. Unter anderem werden Nachrichten kreiert mit u. U. vielen Informationen. Diese werden zentral im Flow “System:Nachrichten” empfangen. Oben befindet sich als erstes die Gruppe “Nachricht-Empfang”, die Schaltzentrale, die entscheidet, wohin die empfangenen Nachrichten geleitet werden. Im weiteren schauen wir uns nur die Nachrichten für “HSt-Nachricht” an. Das sind die Ansagen im Haus. Um das soll es in diesem Artikel gehen.
Eine eingehende Nachricht kann, muss aber nicht, viele Informationen enthalten.
Beispiel 1 (zeigt, was alles eingegeben werden kann, aber nicht muss):
Beispiel 2 (mit Aktoren, so dass auf einer Handy-Nachricht direkt eine Aktion angestoßen werden kann. Das betrifft aber nicht Ansagen im Haus; dort würde der Code nicht berücksichtigt werden):
Beispiel 3 (ganz einfach):
Nachrichtenbegrenzer
Details
Wer jemals die Situation hatte, dass durch einen Bug Home Assistant mit Hunderten von Nachrichten pro Sekunde geflutet wurde, weiß, von was ich rede: mein Nachrichtenbegrenzer. Der begrenzt die Anzahl der Nachrichten und schließt das Tor, wenn es zu viele werden. Es werden dann keine weiteren Nachrichten angenommen, die vorhandenen abgearbeitet, und dann das Tor wieder geöffnet. Natürlich gibt es eine Fehler-Nachricht auf Handy und Log.
Raumaufschlüsselung
Details
Wenn eine Ansage ausgegeben wird, kann diese in einem einzelnen Raum, in Raum-Gruppen oder im ganzen Haus erfolgen. Auch kann neben den Google-Lautsprechern noch Sonos mitbenutzt werden (z. B. bei einer Alarmmeldung). Das alles wird der Nachricht an dem Ort mitgegeben, wo sie generiert wird.
Um das mit den Ansagen in den Räumen nicht zu kompliziert zu machen, wird nicht der Entity-Name des Geräts der Nachricht mitgegeben, sondern im Falle des Arbeitszimmers nur “AZ” (anstelle von “media_player.google_cast_arbeitszimmer”). Ist kein Gerät angegeben, erfolgt die Ansage auf allen Google-Lautsprechern und damit im ganzen Haus. Die Umsetzung der Abkürzungen zu den realen Entitätsnamen erfolgt hier. Raumgruppen sind in Google auch als solche angelegt. Nur so sprechen die Lautsprecher synchron.
Es gibt auch noch spezielle Einstellungen, in diesem Fall unser Gastmodus. Der ist an, wenn Gäste im Haus sind. Dann wird z. B. in den Zimmern, in dem Gäste schlafen, keine Ansagen gemacht.
KI-Ansage
Details
Der KI werden bestimmte weitere Informationen (die Persönlichkeit) mitgegeben, wie weiter oben erläutert. Dann erstellt die KI die Ansage. Allerdings funktioniert das nicht immer, wie ebenfalls weiter oben erläutert. Deswegen wird nach 10 Sekunden oder wenn die KI auf einen Fehler läuft der normale Text ausgegeben.
Zwecks Analyse schreibe ich den Text, den die KI kreiert hat, noch in mein Log.
Nachrichten-Aufreihung (Queueing)
Details
Wie auch schon weiter oben beschrieben, muss man Vorrichtungen schaffen, damit sich Ansagen nicht überschreiben. Hier ist eine Queue aufgebaut. Ist sie leer, geht die Nachricht sofort raus. Die Queue wird dann für Folge-Nachrichten geschlossen, bis alle Lautsprecher aufgehört haben zu sprechen. Dann geht die nächste Nachricht raus.
Sollten aus irgend einem Grund die Lautsprecher nicht signalisieren, dass sie frei sind, wird nach 30 Sekunden die nächste Nachricht raus gesendet. So ist auch gewährleistet, dass nach Abarbeitung aller Nachrichten die Queue wieder geöffnet wird (ansonsten wäre kein Prozess mehr da, der die Queue anstößt; sie liefe voller und voller, aber nichts würde raus gehen).
Lautsprechergruppen
Details
Die Nachricht weiß ja, ob sie an einzelne Lautsprecher geht oder an Lautsprechergruppen. Vordefinierte Lautsprechergruppen sind wichtig, weil ansonsten die einzelnen Lautsprecher nicht synchron ansagen. Bis Ende 2024 durfte Google wegen einem Streit mit Sonos keine Lautsprechergruppen ansprechen, um Lautstärke zu regulieren oder vorzugeben. Deswegen musste, selbst wenn eine Nachrichtengruppe angesprochen wurde, immer für jeden Lautsprecher einzeln die Lautstärke eingestellt werden. Bis hier hin sind also noch alle Lautsprecher mitgegeben und die Lautsprechergruppen. Die Lautsprechergruppen werden hier nun dekodiert, heißt, aus dem Kürzel für die Nachrichtengruppe wird die genaue Entität des Gerätes erzeugt; also z. B. aus “Haus”, was dafür steht, dass im ganzen Haus angesagt werden soll, wird die Entität “media_player.haus” generiert. Diese wurde aus der Google-Lautsprechergruppe so in Home Assistant angelegt und wurde in der Google Home App so definiert.
Nur zur Erinnerung, gebe ich der Nachricht kein Gerät mit, dass genutzt werden soll, wir immer im ganzen Haus angesagt.
Snapshot
Details
Da auf den Lautsprechern, auf denen angesagt wird, gerade Musik laufen könnte, wird ein Snapshot angelegt. Denn ohne Snapshot haben die Lautsprecher aufgehört zu spielen und werden es von alleine auch nicht wieder tun. Der Snapshot wird, wenn alle Nachrichten durch sind, wieder hervorgeholt und die Musik läuft weiter.
Lautstärke
Details
Hier wird nun die Lautstärke eingestellt, in der die Nachricht abgespielt wird. Wichtige Nachrichten werden deswegen immer das Attribut Lautstärke auf “laut” stehen haben. Wird dieses Attribut der Nachricht nicht mitgegeben, wird eine Standard-Lautstärke verwendet, natürlich unterschiedlich für Tag und Nachtbetrieb. Leider braucht Google eine kleine Weile, bis die Lautsprecher neu eingestellt sind, deswegen die Verzögerung, falls das Attribut mitgegeben wird.
Ansage
Details
Nun folgt die Ansage. Sind alle Ansagen durch, wird der Snapshot zurück geholt. Im Falle eines Fehlers, und ja, Google reagiert nicht immer, wird ebenfalls der Snapshot zurück geholt und eine Nachricht ins Log geschrieben.
Warum ich die KI wieder (teilweise) stilllegen werde
Sie ist zu unzuverlässig. Ich habe zwar schon den Code so geschrieben, dass auf alle Fälle nach 10 Sekunden eine Ansage raus geht, wenn die KI nicht antwortet, aber selbst das ist für einige Mitteilungen zu lang. Ich werde deswegen den Code ein wenig umstrukturieren. Ich werde nicht mehr jede Nachricht an die KI senden, sonder nur noch welche, wo 10 Sekunden Warten kein Problem ist.
Ein weiterer Nachteil ist, dass wir als Menschen auf bestimmte (Warn-) Meldungen bereits „programmiert“ sind. Ich muss nicht mehr genau hinhören, denn ich erkenne die Ansage bereits nach den ersten Wörtern. Die KI allerdings formuliert alles um. Ich muss sie genau anhören, um zu wissen, was sie will.
Nichtsdestotrotz, meine Partnerin scheint es zu mögen, wenn sie nach einem „schweren“ Arbeitstag zu Hause so herzlich begrüßt wird. Natürlich weiß meine KI, wann sie arbeitet und was sie tut und kann somit individuelle Texte zugeschnitten auf meine Partnerin ansagen.
Schlusswort
Ich glaube, um Ansagen im Haus ein wenig individueller zu gestalten, ist die KI mit den Verzögerungen weniger geeignet, denn die meisten Ansagen sind Warnungen oder Hinweise, die sofort erfolgen müssen. Da kann man nicht 10 Sekunden warten.
Ein ganz anderes Thema ist die Intelligenz des Hauses, wenn es um Befehle geht. Die Standard-Befehle über die Google-Lautsprecher sind da sehr eingeschränkt und man muss genau wissen, wie das Gerät heißt, das man anspricht. Das funktioniert mit einer KI wesentlich besser, was der Home Assistant Assist beweist (mit der entsprechenden KI-Anbindung). Der ist aber nur über das Handy oder dem Browser auf dem Computer erreichbar; und das ist wirklich uncool, wenn ich das Zeug erst anschmeißen muss. Abhilfe sollte Home Assistant Voice schaffen, ein Gerät, das Befehle für Home Assistant an Google und Co. vorbei annimmt. Der kann nämlich mit KI, wie Assist. Aber das Gerät ist ein Kraus. Der Lautsprecher ist miserabel. Daran hat man keinen Spaß und will auch nicht seine Google- und Co-Landschaft ersetzen. Vielleicht wird es besser, wenn Gemini auf die Google-Lautsprecher kommt.
Apropos Home Assistant Voice: Der hat einen Lautsprecher-Anschluss. Ich werde vielleicht mal ausprobieren, was der kann. Das könnte ein direkter passiver, aktiver oder über ein Bluetooth-Gerät auch ein Bluetooth-Lautsprecher sein. Im Prinzip ist es sogar denkbar, die Ansagen auf dem Voice abzufangen und wieder in mein Nachrichtensystem zu leiten. Aber das sind Projekte für die Zukunft.
Man kann sich auch vorstellen, über ein Telefon mit Assist zu sprechen. Auch alte Handys, die im Raum als Assist-Geräte positioniert sind, sind vorstellbar.
Nun, ich hoffe, ich habe euch mit meinen Ausführungen über unser sprechendes Haus nicht gelangweilt.
lg, gl