Website-Suche

Mein Smart Home schickt mir jeden Tag einen brutal ehrlichen Bericht—so habe ich es mit einem lokalen LLM eingerichtet


Mein Smart Home weiß viel über mich, und nicht alles davon ist gut. Es weiß, wie lange ich in meinem Bürostuhl gesessen habe, wie wenige Schritte ich gemacht habe, wie wenig Bewegung ich gehabt habe und mehr. In dem Versuch, mich selbst zu beschämen, um mich zu verbessern, beschloss ich, ein lokales KI-Modell zu verwenden, um jeden Tag einen spöttischen Zeugnisbericht zu erstellen.

Meine Gesundheitsdaten in Home Assistant einpflegen

Eine Abkürzung hat mich davor bewahrt, bezahlen zu müssen







Der kniffligste Teil bei der Einrichtung war, meine Gesundheitsdaten in Home Assistant zu bekommen. Mein iPhone und meine Apple Watch zeichnen viele Gesundheitsinformationen auf, aber da dies Apple ist, kann der Zugriff auf diese Informationen eine Herausforderung sein. Es gibt einige Apps, die Apple Health-Daten an Home Assistant weitergeben können, aber viele davon sind kostenpflichtige Apps, und ich wollte kein weiteres Abonnement.

Stattdessen habe ich die Shortcuts-App verwendet. In Shortcuts gibt es Aktionen, die Informationen wie meine Schrittzahl, Trainingsminuten und Stehstunden abrufen können, und ich kann die Home Assistant REST-API verwenden, damit der Shortcut die Daten an Home Assistant sendet. Der /api/states-Endpunkt ermöglicht es mir, die Schrittzahl, Trainingsminuten und Stehstunden in bestimmten Home Assistant-Sensoren zu speichern.

Die Methode, um diese Automatisierung auszulösen, ist entscheidend; die Gesundheitsdaten können nur dann zuverlässig gelesen werden, wenn das iPhone entsperrt ist, daher funktioniert das Ausführen über einen Timer nicht immer. Stattdessen habe ich eine Automatisierung eingerichtet, die ausgeführt wird, wenn ich mein iPhone vor dem Schlafengehen zum Laden anschließe, sodass ich sicher sein kann, dass das Telefon beim Anschließen entsperrt ist. Eine einfache »Wenn«-Aktion stellt sicher, dass die Automatisierung nur nach einer bestimmten Uhrzeit am Abend ausgeführt wird, anstatt jedes Mal, wenn ich mein Telefon lade.

Ein n8n-Workflow erstellt den Prompt

Die Daten werden aus vier Quellen zusammengestellt

Meine Verknüpfung stellt sicher, dass meine Gesundheitsdaten Home Assistant zur Verfügung stehen, der eine Informationsquelle für mein Zeugnis bietet. Der Präsenzsensor in meinem Arbeitszimmer liefert eine weitere Quelle. Ich habe eine Zone um meinen Bürostuhl eingerichtet, und indem ich bestimme, wie lange Präsenz in dieser Zone erkannt wurde, erhalte ich eine genaue Angabe darüber, wie lange ich in meinem Bürostuhl gesessen habe.

Ich habe auch eine Aufgabenliste in Home Assistant mit Fälligkeitsdaten für jede Aufgabe. Anhand dieser Fälligkeitsdaten kann ich sehen, welche Elemente überfällig sind.

Das letzte Puzzleteil kommt von außerhalb von Home Assistant. Ich habe eine Notion-Seite mit allen Artikeln, die ich für die Arbeit schreiben muss, zusammen mit den Fälligkeitsdaten. Da diese Informationen nicht in Home Assistant gespeichert sind, habe ich mich entschieden, n8n zu verwenden, um das Prompt für mein lokales LLM zu erstellen.

Eine n8n-Automatisierung ruft alle Daten ab, die ich von Home Assistant benötige, und fragt dann die entsprechende Notion-Seite ab, um zu sehen, ob ich bevorstehende oder überfällige Artikel habe. Alle Daten werden dann in einem einzigen Prompt zusammengeführt.

Das LLM wecken und den Prompt ausführen

Ollama arbeitet in der Nacht und fährt sich dann wieder herunter

Die letzte Stufe meiner n8n-Automatisierung besteht darin, den Prompt an ein lokales LLM zu übergeben, das auf meinem Mini-PC mit Ollama läuft. Da das Modell eine beträchtliche Menge an RAM verwendet, habe ich in der Automatisierung Schritte vorgesehen, um den Ollama-Container in Proxmox zu starten, bevor der Prompt an das LLM zur Verarbeitung übergeben wird.

Ich habe llama3.2:3b als Modell in Ollama verwendet, da es klein genug ist, um ohne zu viele Probleme zu laufen, aber dennoch fähig genug, um eine vernünftige Antwort zu erzeugen. Die Ausgabeerstellung dauert mehrere Minuten, aber da ich dies mitten in der Nacht ausführe, ist das Warten kein Problem.

Sobald der Berichtskartentext vom LLM erzeugt wurde, wird er an einen input_text-Helfer in Home Assistant übergeben, und der Ollama-Container wird wieder heruntergefahren, um RAM freizugeben. Ein Problem ist, dass der input_text-Helferstatus nur bis zu 255 Zeichen speichern kann. Attribute haben jedoch nicht dasselbe 255-Zeichen-Limit, sodass eine gekürzte Version der Berichtskarte als Status gespeichert wird, während der vollständige Text als Attribut festgelegt wird.

Meine Zeugnisnoten in einem Dashboard anzeigen

Mein intelligenter Lautsprecher liest es mir auch jeden Morgen vor

Wenn die n8n-Automatisierung abgeschlossen ist, enthält das Attribut full_report meines input_text-Helpers den vollständigen Text, der vom LLM generiert wurde. Alles, was ich brauchte, war eine Möglichkeit, ihn zu verwenden.

Am Ende hatte ich zwei Lösungen. Der Bericht wird auf einem speziellen Dashboard geschrieben, sodass ich jederzeit von meinem Telefon oder Computer darauf zugreifen kann.

Der Bericht wird mir auch vorgelesen, wenn ich mich morgens zum Arbeiten an meinen Schreibtisch setze. Eine Automatisierung wird von demselben Präsenzsensor ausgelöst, der verfolgt, wie lange ich in meinem Bürostuhl sitze, und sie liest die gesamte Zeugnisnote über meinen Smart-Lautsprecher vor.


Mein Zeugnis ist wirklich nützlich

Dieses Projekt begann als ein bisschen Spaß, um zu sehen, ob ich es schaffen könnte, aber es war tatsächlich wirklich nützlich. Zu hören, wie viel Zeit ich jeden Tag am Schreibtisch sitze, war ein echter Augenöffner, selbst wenn ich versuche, alle halbe Stunde aufzustehen und mich zu bewegen. Es hat mich dazu gebracht, meinen Stehschreibtisch viel mehr zu benutzen, was nur eine gute Sache sein kann.

Verwandte Artikel