ZitatNun ist es so, dass für die Berechnung der Heizkurve (d.h. Abweichung SOLL zu IST) eben diese Durchschnittstemperatur verwendet wird, für die Wärmeleistung, die die Wärmepumpe gerade liefern kann, ist aber die tatsächliche Außentemperatur relevant.Ihr lasst am Besten nur die gemessene Temperatur mitteilen. Diese Werte werden für jede Stunde in den Rohdaten gespeichert. Daraus werden dann aber 1h / 3h Deltas oder bei Bedarf und Feature-Implementierung rollierende 3h / 6h oder 12h Durchschnitte der KI zur Verfügung gestellt. Das passiert aber alles bei der Semantik/Feature-Implementierung die ich gemeinsam mit euch baue und testen... Schritt für Schritt.
Was macht für die KI nun Sinn "bekanntzumachen"?
ZitatWas ist künftig mit der Kühlung über die Wärmepumpe? Auch die habe ich in einem separaten Gerät abgebildet. Zum Einen, weil die Leistungsaufnahme im Kühlbetrieb höher ist, und zum Anderen um der Prognose die Chance zu geben die Abhängigkeiten richtig zu lernen.Ja, genau eine Kombination. Auch wenn der heatpump-Consumer ein paar Besonderheiten hat, gelten die grundsätzlichen Schlüssel-Möglichkeiten. Also hier speziell der pcurr-Schlüssel, den man mit einem <Schwellenwert> (W) angeben kann, ab dem der Verbraucher als aktiv gewertet wird. Über swstate bekommt das Modul mit dass der Consumer "physisch" on/off ist und über den optionalen Schwellenwert ob er logisch! on/off ist.
Allerdings - und das ist der große Unterschied zum Heizen - ist der Kühlbetrieb da auch "ein", wenn der Verdichter nicht läuft:
Im Kühlbetrieb wird permanent das Wasser durch die Kühlkreise gepumpt, der Verdichter schaltet zyklisch ein, um es abzukühlen. Ein/Aus über "swstate" zu erkennen, wäre dann eher kontraproduktiv, weil das die Info zum Stromverbrauch ad absurdum führt. Hierfür wäre dann doch die Schwelle des Energiebedarfs sinnvoll, von mir aus auch eine Kombination aus beidem?
ZitatFür mich ist noch nicht klar, wie die realen Werte der Energie in den KI-Algorithmus eingehen. Stellt die aktuelle Gesamtleistung die Berechnungsgrundlage dar oder fließen die einzelnen Verbraucher - also nicht nur type=heatpump - mit ihren jeweils aktuell anstehenden Leistungen getrennt ein?Das ist generell ein schwieriges Thema. Grundsätzlich kann man dem neuronalen Netz nur Verknüpfungen/Sematiken bereitstellen, die das Verhandensein eines bestimmten Energieverbrauchs erklären. Das sind zum Beispiel:
# --------------------------------------------------------
# Semantik: Menschlicher Tagesrhythmus (PV-unabhängig)
# --------------------------------------------------------
semantics_human_rhythm => sub {
my ($f) = @_;
return [
# --- MORGEN ---
softplus($f->{delta1_norm_pos} * $f->{hour_class_morning}), # Aufstehen / Geräte an
# --- MITTAG ---
softplus($f->{delta1_norm_pos} * $f->{hour_class_noon}), # Kochen / Haushalt
# --- ABEND ---
softplus($f->{delta1_norm_pos} * $f->{hour_class_evening}), # Kochen / Abendaktivität
# --- SPÄTER ABEND ---
softplus($f->{delta1_norm_neg} * $f->{hour_class_lateevening}), # Geräte gehen aus
];
},
ZitatBei getrennter Erfassung könnte die Auswertung von EIN/AUS-Signalen auch anderer großer Verbraucher durch die eindeutige Zuordnung der Verbräuche die Mustererkennung und damit die Treffsicherheit der Prognose für die Wärmepumpe aber auch insgesamt u U. weiter verbessern.
Downloading https://rm.byterazor.de/upd-fhem-ntfy/controls_byterazor-fhem-ntfy.txt
byterazor-fhem-ntfy
https://rm.byterazor.de/upd-fhem-ntfy/controls_byterazor-fhem-ntfy.txt: Can't connect(1) to https://rm.byterazor.de:443: IO::Socket::INET: Bad hostname 'rm.byterazor.de:443'Zitat von: birdy am 19 Januar 2026, 19:29:51Es geht darum das Log zu aggregieren bzw. zu verkleinern. Also viele einzelne Einträge aus der DB zu entfernen
defmod at_reduceLog2 at *{at_ultimo} set dbrep_2 reduceLog average=day
defmod dbrep_2 DbRep logDb2
attr dbrep_2 comment used for reducelog on ultimo
attr dbrep_2 timestamp_begin previous_month_begin
attr dbrep_2 timestamp_end previous_month_end
Zitat von: rudolfkoenig am 18 Januar 2026, 12:06:10Das Verhalten von steps habe ich geaendert, siehe https://forum.fhem.de/index.php?topic=143203, insb. der Beitrag von xenos1984Ja, aber mit der Änderung (die in der HEAD-revision des SVN steht) wird die letzte Linie nach links (in die Vergangenheit) gezogen, wenn man Daten darstellt, die zukünftig zur Ploterzeugung sind.
$ret .= sprintf(" %d,%d %d,%d", $lx,$ly, $x+$nx,$ly);geändert würde zu$ret .= sprintf(" %d,%d %d,%d", $lx,$ly, $x+$nx,$ly) if ($lx < $x+$nx);Wenn die zu plottenden Werte aufsteigend nach x geordnet sind, dürfte das keine Nebenwirkungen haben.