Disclaimer:
Das hier ist nur gedacht für Leute, die Grundkenntnisse in SQL, MQQT und Python haben, die wissen wie man sich via SSH auf dem HA bewegt und an ihrem System Außentemperatursensoren haben .
Szenario:
Meine Frau kam eines Tages mit der Frage " Sag mal kann mir der HA nicht eine Kleidungsempfehlung geben und nicht nur Temperaturen anzeigen?
Challenge acceptet und so trainierte ich ein Modell und schrieb die Skripte nun hat die Dame des Hauses ein selbstlernendes Modell das ihr rät was sie anziehen soll.. das Beste ist sie kann bewerten wie gut die Empfehlung gewesen ist und das System lernt ständige dazu
Wen es interessiert wie man ein solches Projekt umsetzt, der ist in diesem Thread herzlich willkommen… Aber noch einmal, es kein Projekt für Personen die gerade mit HA angefangen haben!
Grundschritte:
Daten aus der Datenbank extrahieren
Ein Modell in Python schreiben
Modell trainieren
cronjobs einrichten
Service basteln
Topic und payload für MQTT erstellen
Finales Skript mit integrierter Discovery-Funktion für den Home Assistant MQQT Broker..
8 Automation erstellen die Rückmeldung erstatten
Klingt interessant. Mein Szenario wäre nicht die Frage, was die Frau anzieht, sondern wie man die Kinder am besten anzieht. Herangehensweise bleibt aber die gleiche.
Hallo Bacardi
zunächst einmal vielen Dank für deinen Hinweise - aber das sind zwei gänzlich unterschiedliche Dinge. Das eine ist ein " YAML " Projekt. Ich habe es mit Machine-Learning umgesetzt, das auch noch selbstlernend ist, über SQL und MQTT mit Verschiedenen Parametern und einer Kombinatorik die "Oberbekleidung , Unterbekleidung, Kopfbedeckung , Zusätzliche Dinge abhängig von lokalen Bedingungen (durch Außensensoren), Wolkendichte, Voraussage, Tageszeit, Prognose und dem Wetterdienst betrachtet.
Es ist also nicht starr wie YAML-Code sondern ein persönlicher Assistent der deine Vorlieben kennt und ständig verfeinert.
@tarag Danke für das Verschieben!!! - Ich war mir einfach unsicher wo es nun genau hingehört, da es mehrere Aspekte betrifft.
*Zu deinem Einwand, " Zeigen" da ich weder einen YouTube-Kanal unterhalte noch sonstiges muss ich mich auf Screen-Shots und Text beschränken. * Da nur zwei Screen-Shots pro Post möglich sind und ein Kopieren von mehreren 100 Zeilen Code sicherlich viele nerven wird, erkläre ich hier noch einmal was die Skripte machen, wie sie funktionieren, welches Problem sie lösen und wie das ganze umgesetzt ist. - Den Code stelle ich gern zur Verfügung!
Hardware und Fragestellung:
HA auf einem alten Laptop
PI 4 mit SSD (ganz klassisch via USB) und PIOS Lite x64 ohne Desktop-Umgebung
EcoWitt Wetterstation (das alte Modell)
EcoWitt Integration im HA
DWD Wetterdienst Integration (die vermutlich beste für den HA)
HA auf MariaDB umgestellt
Ur-Alt Tablet das die Werte dauerhaft anzeigt
Kann man die vorhandenen Sensoren nicht dazu nutzen um eine Kleidungsempfehlung auszugeben, die verschiedenen Kleidungsstücke miteinander kombiniert und zwischen Morgens, Nachmittag, Abend und Jahreszeit unterscheidet und eine Prognose mit Erfahrungswerten alter Prognosen, persönlicher Vorlieben und IST-Daten abgleicht?
Gleichzeit eine Qualitätsprüfung der Ausgabe durchführt und daran lernt es besser zu machen, bzw. persönliche Präferenzen zu lernen?
Lösungsansätze:
YAML-Code > nicht praktikabel da statisch und nicht in der Lage zu lernen / mehrere Variablen zu kombinieren
SQL-Sensoren kombinieren > nicht praktikabel da sehr hohe Last auf dem System und zu unflexibel
Machine-Learning Ansatz mit Korrekturschleife > BINGO
Grundannahme / Umsetzung
Die Sensoren der Wetterstation schreiben kontinuierlich Daten in die MariaDB ( LUX, Luftdruck, Temperatur, Windgeschwindigkeit, Windböen, Regen, Luftfeuchtigkeit, Sonnenenergie pro Quadratmeter,..
Das bedeutet, die Sonnenenergie gibt Aufschluss über die Bewölkung, der Wind über die tatsächlich gefühlte Temperatur, UV über die intesitäte, LUX mit Time-Stamp über die Jahreszeit und Tageszeit) > kombiniert man dieses nun mit der Vorhersage von DWD lässt sich das Quantifizieren.
Also ein klassischer Prognose / IST Vergleiche dem durch Sammeln von Daten und deren Gewichtung eine deutlichere Genauigkeit für den eigenen Standort entnehmen kann.
Wenn man mehrere Variablen kombiniert und Wichtet, kann man eine enorme Anzahle von Kleidungskombinationen schaffen, die zur Jahreszeit, Prognose, Vorlieben passen.
Da wir hier von einem permanenten Training sprechen, wäre es fatal diese komplexe Aufgabe auf dem HA selbst zu erledigen. Bei einem Absturz / Neuinstallation / Backup wären die Daten redetet > Also die benötigenden Datenbanken / Skripte sollten extern laufen unabhängig vom HA selbst um den CORE zu schonen und Datensicherheit zu erhalten.
HA ist eingeschränkt in der Möglichkeit Skripte auszuführen, zwar kann man einige Bibliotheken nachinstallierten - aber nach einem Neustart sind diese wieder weg. > ein weiterer Grund es auf PI laufen zu lassen.
Das Ergebnis der Kombinatorik muss an den HA zurückgeben werden, so das er es als Sensor akzeptiert und darstellen kann > Bester Ansatz MQTT mit Topic und Payload
Umsetzung:
PI den Zugriff auf die Datenbank des HA gewähren
Relevanten Meta_ID`s aus der Datenbank abfragen und speichern
Ein Trainingsmodell erstellen und mit den relevanten Daten trainieren
Variablen erstellen ( Hose, Lange Hose, Short, Pullover, T-Shirt,…)
Eine Nutzer-Interaktion die unklare Situationen beim Training abfragt um die Vorlieben zu berücksichtigen
Eine Schleife einbauen, die dem Nutzer erlaubt ein Feedback zu geben, dass beim nächsten Lauf berücksichtig wird und die Gewichtungskoeffizienten dynamisch anpasst.
Wenn alles fertig ist, das Ergebnis via MQTT an den HA zurückgeben und Sensoren erstellen.
das ganze mit Watchdog und Cronjobs absichern
Genau das habe ich gebaut und lasse es auf dem PI laufen.. die Skripte laufen in einer Virtualisierungsumgebung (venv).
Zusammenfassung:
Das Skript lernt und wird immer intelligenter, je länger es läuft. Es bezieht persönliche Vorlieben , sowie Jahreszeiten und Tageszeiten mit ein. Es kombiniert verschiedene Kleidungsstücke und läuft 3x am Tag ( Morgens, Mittags, Abend). Um Last zu reduzieren überprüft es die letzte Ausgabe und ändert diese nur wenn diese sich verändert hat. Es ist keine KI die auf externe Daten zugreift, sondern ein Machine-Learning Modell das rein lokal läuft und keine Daten an Dritte weitergibt. Es erstellt eine LOG-Datei zur Überprüfung
Ich kann die Skripte und basics hier gern kostenlos zur Verfügung stellen… wer daran Interesse hat! - Auf eigenen Verantwortung und unter der Bedingung sie ausschließlich für sich zu nutzen