Waschmaschine, Strommesser und KI um die Laufzeit abzuschätzen

Begonnen von enno, 26 Mai 2024, 16:55:58

Vorheriges Thema - Nächstes Thema

enno

Moin zusammen,

seit mehreren Jahren meldet sich meine dumme Waschmaschine mit der Hilfe eines Leistungsmessers (Shelly) und Signal wenn sie fertig ist. (Bsp hier: https://forum.fhem.de/index.php?topic=48877.0) Klappt sehr zuverlässig aber nun gibt es hier im Haushalt den Wunsch nach der geschätzten Laufzeit. Hat jemand schon mal versucht FHEM und eine einfache KI zu nutzen um die Laufzeit zu schätzen? Müsste doch eigentlich machbar sein? Ideen?

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

betateilchen

ZitatHat jemand schon mal versucht FHEM und eine einfache KI zu nutzen um die Laufzeit zu schätzen?

Das hat für mich überhaupt nichts mit KI zu tun, das ist einfach eine statistische Auswertung von gesammelten Daten.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Aurel_B

Für die Laufzeit müsstest du ja wissen, welches Programm gewählt wurde? KI wäre für mich: ESP32-Cam die den Drehwähler filmt und dann via KI oder was weiss ich erkennt, welches Programm gewählt wurde (analog zu AI-on-the-edge).
Simple Lösung für mich wäre: Logge doch mal den Stromverbrauch im 20s Takt oder so. Dann kannst du - nix KI - selber eventuell gewisse Muster im Stromverbrauch erkennen: bei 40° Sparprogram zieht sie 2300W über 4min, bei 60° normal über 6min, bei 95° 10min etc. etc. Dann könntest du z.B. anhand eines DOIFs darauf triggern. Oder du machst dann wirklich KI, da kenne ich mich 0 aus. Gibt sicher Möglichkeiten, dein geloggter Stromverbrauch einzulesen und dann statistische Auswertung zu machen wie von betateilchen geschrieben?

enno

Ich dachte, ich könnte einfach die vorhanden Daten nutzen um mit der Zeit zu einer genauen Prognose der Endzeit des Programms zu kommen. Ohne selbst noch weitere Parameter einzugeben.

Ich habe: Startzeit, Endzeit und ein Muster vom Stromverbrauch.
Welches Programm gewählt wurde und wie viel Wäsche nicht.
Wenn ich häufig genug die Istdaten mit den Prognosedaten vergleiche, dann sollte das System eigentlich lernen über die Zeit eine gute Prognose abzugeben. ChatGPT meint das auch. Mal sehen ob ich aus dem Code den es mir gegeben hat etwas lauffähiges zu basteln.

"Es ist möglich ein Programm so zu schreiben, dass es durch maschinelles Lernen die Prognose der Endzeit basierend auf historischen Daten und Istwerten verbessert. Eine einfache Möglichkeit besteht darin, ein Modell zu verwenden, das Muster im Stromverbrauch erkennt und daraus Vorhersagen trifft. In Perl kann dies durch die Verwendung von CPAN-Modulen wie AI::MXNet oder PDL (Perl Data Language) erreicht werden. Hier ist eine einfache Implementierung, die die gemessenen Istwerte verwendet, um die Vorhersage der Endzeit zu verbessern. Diese Implementierung verwendet das Perl-Modul PDL zur Datenanalyse und -verarbeitung. Beachte, dass dies nur ein einfaches Beispiel ist und für eine ernsthafte Vorhersage ein ausgefeilteres Modell erforderlich ist"

Damit würde ich den Titel ändern in: "Waschmaschine, Strommesser und maschinellen Lernen um die Laufzeit abzuschätzen"
Einfacher FHEM Anwender auf Intel®NUC

dyna

Moin Enno,

ich vermute der Verlauf der benötigten Leistung hat ein charakteristisches Muster. Dann könntest Du sowas hier benutzen https://datascientest.com/de/sarimax-modell-verstaendnis-und-anwendung-in-der-zeitreihenanalyse.

Abe dass ist hier imo mit Kanonen auf Spatzen geschossen.

Grüße
Jens

Aurel_B

Daher mein KISS Vorschlag: anhand der Einschaltdauer des Heizstabes denke ich kann man grob abschätzen, mit welcher Temperatur gewaschen wird (30-90°). Ob man dann das genaue Programm (Eco, Normal, Intensiv etc.) alleine am Stromverbrauch abschätzen kann weiss ich nicht...

Im Screenshot unsere Waschmaschine, man sieht den Heizstab und danach den Trommelmotor (nur gerine Auflösung von 1min)

Du darfst diesen Dateianhang nicht ansehen.

enno

Bei mir sieht ein Tag mit drei mal Waschen wie im Anhang aus. Gelb der Bereich, der als "Maschine läuft" erkannt wird. Die Werte sind die "current" Werte eines HM-ES-PMSW1-PL-DN-R1. Muster gibt es...
Einfacher FHEM Anwender auf Intel®NUC

DS_Starter

Hallo enno,

du benutzt doch SolarForecast wenn ich nicht irre.
Wenn die WaMa als Consumer eingebunden ist, steht momentan die letzte Zykluszeit als Statistikwert zur Verfügung.
Es wäre aber kein Problem die Ausgabe bzgl. "durchschnittliche Gesamtlaufzeit pro Tag" oder "durchschnittliche Laufzeit pro Zyklus" zu erweitern bei Bedarf.
Das wäre zwar keine KI, aber erfüllt vllt. den Zweck.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

juergen012

Hallo.
ich habe mir da was gebastelt... nicht fachmännisch, funktioniert aber..
Ein DOIF:
defmod di_WaschmaschineZeit DOIF ([tasmota_Waschmaschine:running] eq "on") (set at_counter_Waschmaschine active) (setreading di_WaschmaschineZeit Start {(time)})\
DOELSEIF ([tasmota_Waschmaschine:running] eq "off") (set at_counter_Waschmaschine inactive)(setreading di_WaschmaschineZeit zeit [di_WaschmaschineZeit:Start] )
attr di_WaschmaschineZeit DbLogExclude .*
attr di_WaschmaschineZeit alias Laufzeit<br>Waschmaschine
attr di_WaschmaschineZeit do always
attr di_WaschmaschineZeit group Sensor
attr di_WaschmaschineZeit room DOIF,Home
attr di_WaschmaschineZeit sortby 015a
attr di_WaschmaschineZeit stateFormat Laufzeit
attr di_WaschmaschineZeit userReadings Now {ReadingsVal ($name,"zeit","0")-ReadingsVal("$name","Start","0")},\
Laufzeit {my $sec=ReadingsNum("$name","Now",0);;\
my $hour=$sec / 3600;;\
my $h=sprintf('%02s',int($hour));;\
$sec=$sec - ($h * 3600);; \
my $min=$sec / 60;;\
my $m=sprintf('%02s',int($min));;\
my $s=sprintf('%02s',$sec - ($m * 60));;\
"$h Std:$m Min"}
attr di_WaschmaschineZeit wait 0,2:0,3600

Ein at:
defmod at_counter_Waschmaschine at +*00:01:00 setreading di_WaschmaschineZeit zeit {(time)}
attr at_counter_Waschmaschine DbLogExclude .*
attr at_counter_Waschmaschine room Hilfsprogramme

Wenn die Waschmaschine über 40 Watt verbraucht, wird das reading running auf on gestellt. Unter 3 Watt auf off.

Das ganze habe ich aus Beiträgen aus dem Forum zusammengebastelt...

Gruß
Jürgen K.
Fhem unter Proxmox

enno

Moin Stefan,

richtig, ich nutze SolarForecast allerdings hilft mir die durchschnittliche Laufzeit nicht.

@juergen012: Erkennung ob die Maschine läuft oder fertig ist habe ich wie du im Anhang vom 28.05. gelb gefärbt sehen kannst im Griff. Ich hätte jetzt im Display in der Küche gerne die geschätzte Endzeit angezeigt.

Zur Zeit teste ich ein Modul ohne "PDL"-Abhängikeit. Mal sehen ob die Prognose mit der Zeit besser wird. Wird wohl etwas dauern.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC