Hauptmenü

Neueste Beiträge

#11
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 17 Januar 2026, 22:24:13
So, du bist ja nun schon Experte ... würdest du jetzt davon ableiten dass einen weiteren Key einzubauen sinnvoll wäre um User die Einstellung zu ermöglichen - mit der Notwendigkeit einen entsprechenden Hilfetext zu erstellen der dem User hilft das richtige zu tun - oder wäre es diese Mühe nicht wert?  ;) 
#12
Anfängerfragen / Aw: FHEM goes Gemini
Letzter Beitrag von passibe - 17 Januar 2026, 22:06:11
Hm, es scheint als würden die Dateien unter /usr/share/perl5 installiert (klick). Und das ist anscheinend nicht in @INC (wieso auch immer, ist das vielleicht ein Bug des Containers?).

Das heißt entweder du machst 1x einen Symlink (der aber, wenn du den FHEM-Ordner neu erstellst, wieder weg ist; ich nehme aber mal an, dass das nicht passiert):
mkdir /opt/fhem/lib/Text && ln -s /usr/share/perl5/Text/Levenshtein.pm /opt/fhem/lib/Text/Levenshtein.pm
Oder du nutzt tatsächlich CPAN im Dockerfile, das scheint die Dateien an die richtigen Stellen zu legen:
RUN cpan install Text::Levenshtein
#13
Server - Linux / Aw: Debian 13 mini iso mit kna...
Letzter Beitrag von betateilchen - 17 Januar 2026, 21:58:32
Super, danke!
#14
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von 300P - 17 Januar 2026, 21:53:26
Hier das Ergebnis:

letztes KI-Training: 17.01.2026 21:46:14 / Laufzeit in Sekunden: 2137
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 57.92 ms
Verbrauchernummer Wärmepumpe: 08

=== Modellparameter ===

Normierungsgrenzen: PV=16071 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 7128 Datensätze (Training=5702, Validierung=1426)
Architektur: Inputs=94, Hidden Layers=64-32, Outputs=1
Hyperparameter: Learning Rate=0.005, Momentum=0.6, BitFail-Limit=0.35
Aktivierungen: Hidden=ELLIOT_SYMMETRIC, Steilheit=1.0, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_heatpump_active_pv
Zufallsgenerator: Mode=1, Periode=20

=== Trainingsmetriken ===

bestes Modell bei Epoche: 496 (von max. 15000)
Training MSE: 0.002673
Validation MSE: 0.006374
Validation MSE Average: 0.016013
Validation MSE Standard Deviation: 0.000849
Validation Bit_Fail: 0
Model Bias: 857 Wh
Model Slope: 0.5
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 467.56 Wh
MedAE: 374.03 Wh
RMSE: 558.18 Wh
RMSE relative: 24 %
RMSE Rating: good
MAPE: 21.51 %
MdAPE: 17.57 %
R²: 0.49

Und hier der KI Kommentar dazu  ;) 

Sehr gut, danke für den Lauf – das ist ein interessanter, leicht ,,anderer" Fortschritt.
Ich analysiere ihn bewusst gegen den besten vorherigen Stand, nicht isoliert.
1️⃣ Kurzfazit vorweg
👉 Prognosefehler so gut wie nie zuvor
👉 R² bleibt auf Top-Niveau (0.49)
👉 Modell wird konservativer (Slope ↓, Bias ↑)
Das ist kein klarer Schritt vor oder zurück, sondern ein Trade-off.


2️⃣ Direktvergleich: vorheriger Bestlauf vs. jetzt
Kennzahl    Bestlauf (17:47)    Neuer Lauf (21:46)    Bewertung
BitFail-Limit    0.25    0.35    ⚠️ weicher
Best Epoch    223    496    ⚠️ später
Validation MSE    0.00636    0.00637    ≈ gleich
BitFail    3    0    ✅ stabiler
Bias    802 Wh    857 Wh    ❌ schlechter
Slope    0.6    0.5    ❌ gedämpfter
MAE    479 Wh    468 Wh    ✅
RMSE    588 Wh    558 Wh    🔥
RMSE rel.    25 %    24 %    🔥
MAPE    22.1 %    21.5 %    🔥
R²    0.49    0.49    ➖ gleich


3️⃣ Was hier wirklich passiert ist
🧠 Weicheres BitFail-Limit (0.35)
➡️ Das Modell darf mehr Mittelwert-Lernen
➡️ Weniger Risiko → geringere Fehler
➡️ Aber:
Slope sinkt
Bias steigt
➡️ Klassischer Bias–Varianz-Trade-off.
📉 Fehlermaße (sehr stark!)
RMSE −30 Wh
MAE −12 Wh
MAPE −0.6 %
➡️ Rein prognostisch ist das euer fehlerärmster Lauf bisher.
📈 Aber: Slope = 0.5
Das heißt:
Lastspitzen werden systematisch unterschätzt
Modell reagiert defensiver
Regelungslogik wird ,,vorsichtig"
➡️ Für reine Prognose ok
➡️ Für aktive Steuerung / Peak-Shaving suboptimal
4️⃣ Stabilität & Training
Validation StdDev ~ gleich
BitFail = 0 → sehr stabil
Best Epoch später → Modell nutzt mehr Kapazität
➡️ Kein Overfitting, eher leichtes Underfitting.
5️⃣ Einordnung: Welches Modell ist ,,besser"?


🔵 Wenn dein Ziel minimaler Prognosefehler ist:
👉 DIESER Lauf ist besser
niedrigster RMSE
niedrigster MAE
niedrigste MAPE

🔵 Wenn dein Ziel dynamische Lastabbildung ist:
👉 Der vorherige Lauf (BitFail 0.25) ist besser
höherer Slope (0.6)
geringerer Bias
bessere Peak-Reaktion
6️⃣ Klare Empfehlung (ehrlich & praxisnah)

✅ Ich würde beide Modelle behalten
Modell A (BitFail 0.25)
→ Steuerung / Regelung / Peak-Logik
Modell B (dieses)
→ Verbrauchsprognose / Optimierung / Reporting
Das ist kein Overkill, sondern Standard in Energiesystemen.


7️⃣ Wenn du dich für EIN Modell entscheiden musst
Dann sag ich klar:
👉 Nimm dieses Modell + Post-Korrektur
Mit:
P_korr = (P_raw − 857) / 0.5
Damit bekommst du:
niedrige Fehler
korrigierte Dynamik
effektives R² > 0.55


8️⃣ Was du jetzt NICHT mehr tun solltest
❌ BitFail weiter erhöhen
❌ Momentum weiter senken
❌ Architektur ändern
❌ weiter ,,auf Verdacht" trainieren
➡️ Das ist Feintuning-Ende, nicht Anfang.

9️⃣ Mein Gesamturteil
👉 Sehr reifes Modellniveau
👉 Unterschiede jetzt im einstelligen Prozentbereich
👉 Alles Weitere ist Use-Case-Optimierung, keine Modellqualität mehr


Wenn du willst, machen wir als Nächstes:
📊 direkten Modellvergleich auf gleichem Datensatz
🧮 automatische Online-Bias/Slope-Korrektur
🧠 Hybridlogik: Modell + Regelheuristik
Sag einfach, wie wir weitermachen.

#15
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 17 Januar 2026, 21:50:29
Frage an WP-User ...
Um weitere WP Semantiken einzubauen, müsste ich die Länge der On/Off-Zyklen der WP ermitteln.
Im Consumer Stammsatz gibt es dazu den verpflichtenden Schlüssel pcurr:

pcurr=<Readingname>:<Einheit>[:<Schwellenwert>]


Nun nehme ich an, dass pcurr auch im Off-Zustand der WP nicht 0 ist. Über den Schwellenwert kann man bei pcurr aber als User mitteilen, ab welchem Leistungswert der Consumer als "on" gewertet wird.
Ist dieses Verfahren über die Schwellenwert-Auswertung bei einer WP gut machbar?

Danke und LG,
Heiko
#17
Codeschnipsel / Canon 7150 Füllstände und ande...
Letzter Beitrag von curiosus - 17 Januar 2026, 21:31:32
Hallo,

nachdem mein hp sich leider in ein einen Ziegelstein verwandelt hatte (permanenter blue screen), hatte ich hier im Forum nach Möglichkeiten gesucht, Füllstände und andere Daten von meinem neuen Canon 7150 zu ermitteln. Ich bin aber nicht fündig geworden. Mit den Daten der Webseite des Druckers war ich nicht zufrieden. Letztlich habe ich dann die relevante Werte per snmp gewonnen.

Per snmpwalk lassen sich eine eine Menge Daten ausgegraben und in eine Datei schreiben:
snmpwalk -v1 -c public <ip Drucker> 1.3.6.1 > canon
Die für mich interessanten MIBs habe ich dann über das SYSSTAT Modul ausgelesen:

defmod canon7150 SYSSTAT 900 900 192.168.100.240
attr canon7150 DbLogExclude .*
attr canon7150 event-on-change-reading .*
attr canon7150 icon it_printer
attr canon7150 mibs 1.3.6.1.2.1.43.11.1.1.9.1.1:Schwarz\
1.3.6.1.2.1.43.11.1.1.9.1.2:Cyan\
1.3.6.1.2.1.43.11.1.1.9.1.3:Magenta\
1.3.6.1.2.1.43.11.1.1.9.1.4:Gelb\
1.3.6.1.2.1.43.11.1.1.9.1.5:Wartungskit\
1.3.6.1.4.1.1602.1.11.2.1.1.3.1:Seiten\
1.3.6.1.4.1.1602.1.11.2.1.1.3.31:Scans\
1.3.6.1.2.1.43.5.1.1.17.1:Seriennummer\
1.3.6.1.4.1.1602.1.11.2.1.1.3.5:SeitenSW\
1.3.6.1.4.1.1602.1.11.2.1.1.3.13:SeitenColor\
1.3.6.1.4.1.1602.1.11.2.1.1.3.18:Kopien\
1.3.6.1.4.1.1602.1.11.2.1.1.3.20:KopienSW\
1.3.6.1.4.1.1602.1.11.2.1.1.3.22:KopienColor\
1.3.6.1.4.1.1602.1.11.2.1.1.3.10:zweiseitig
attr canon7150 noSSH 1
attr canon7150 readings Schwarz Cyan Magenta Gelb Wartungskit Seiten Scans Seriennummer SeitenSW SeitenColor Kopien KopienSW KopienColor zweiseitig
attr canon7150 room Buero
attr canon7150 snmp 1
attr canon7150 snmpVersion 1
attr canon7150 stateFormat Seitenzahl Seiten
attr canon7150 userReadings einseitig {return (ReadingsNum("canon7150", "Seiten", 0)-(ReadingsNum("canon7150", "zweiseitig", 0)*2));;}\
\

attr canon7150 verbose 0

setstate canon7150 Seitenzahl 37
setstate canon7150 2026-01-17 14:51:16 Cyan 86
setstate canon7150 2026-01-17 14:51:16 Gelb 87
setstate canon7150 2026-01-17 14:51:16 Kopien 8
setstate canon7150 2026-01-17 14:51:16 KopienColor 2
setstate canon7150 2026-01-17 14:51:16 KopienSW 6
setstate canon7150 2026-01-17 14:51:16 Magenta 87
setstate canon7150 2026-01-17 14:51:16 Scans 9
setstate canon7150 2026-01-17 14:51:16 Schwarz 88
setstate canon7150 2026-01-17 14:51:16 Seiten 37
setstate canon7150 2026-01-17 14:51:16 SeitenColor 27
setstate canon7150 2026-01-17 14:51:16 SeitenSW 10
setstate canon7150 2026-01-17 14:51:16 Seriennummer KRUJ03008
setstate canon7150 2026-01-17 14:51:16 Wartungskit 76
setstate canon7150 2025-12-31 18:06:28 connection disconnected
setstate canon7150 2026-01-17 14:51:26 einseitig 23
setstate canon7150 2026-01-17 14:51:26 status online
setstate canon7150 2026-01-17 14:51:16 zweiseitig 7

In meinem Fall wurden die Daten dann über SmartVISU angezeigt  muss man natürlich nicht so machen.


#18
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von 300P - 17 Januar 2026, 21:04:35
Zitat von: DS_Starter am 17 Januar 2026, 20:34:44Zur Kontrolle kannst du nochmal trainieren und NUR! my $bit_fail_limit = 0.35; wieder aktivieren. Die anderen Params so lassen.
Wenn das einen Effekt hat, kann ich noch einen Schlüssel einbauen, damit man als User eine Anpassung im Setup durchführen kann.

Okay - mach ich 👍
...und berichte danach kurz
#19
Server - Linux / Debian 13 mini iso mit knapp 7...
Letzter Beitrag von betateilchen - 17 Januar 2026, 20:56:58
Moin,

vor einiger Zeit (genauer: am 15.12.2025) habe ich von den Debian Seiten ein minimalistisches Installations-ISO für Debian 13 heruntergeladen, das eine Größe von unter 70MB hatte.

(Nein, ich meine NICHT das netinst-ISO mit ca. 700 MB)

Heute habe ich lange Zeit damit verbracht, das Ding nochmal irgendwo zu finden - ohne Erfolg.

Weiß jemand, was ich meine und wo ich das nochmal finden kann?


---

#20
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 17 Januar 2026, 20:34:44
ZitatIch finds aber schon "spooky", dass wir hier versuchen, "unvorhersehbare Ereignisse" vorherzusagen
:) ... nun stell dir mal vor wir würden es hinbekommen  ;)

@300P,

Zitat##-300P Anzahl Epochen max von 15000 auf 3000 reduziert.  (Empfehlung KI)

Die Epochen reduzieren zu wollen, ist überflüssig. der Wert 15000 ist ein Maximalwert der durch die eingebaute Early-Stopping Logik fast nie zum Tragen kommt. Sobald ein Modell sich nicht mehr seit AIIMPPATIENCE Epochen verbessert, wird der Trainingslauf beendet. -> Zeitersparnis

Zitat##-300P BitFail-Limit geändert von 0.35 auf 0.25
Ich müßte einen Schlüssel in aiControl einbauen, damit man als User diesen Wert anpassen kann.

ZitatJetzt finde ich die Stelle im Programmcode hierzu aber nicht - ich glaube außer der Temperatur wird bei der WP noch nichts übergeben ??

...Anpassung von "slope"
...Anpassung von "Hausverbrauch auf max Wert WP limitieren
...Anpassung Bias.... Formel evtl. Ergänzen....
slope kann man nicht anpassen, das ist ein Modellwert der berechnet wird. -> Zeile 23685

  my $model_slope = $mx_den != 0                                                             # Steigung der Regression (Vorhersage vs. Ziel), Originalskala
                    ? ($mx_n * $mx_sum_xy - $mx_sum_x * $mx_sum_y) / $mx_den
                    : 0;

Anpassung von "Hausverbrauch auf max Wert WP limitieren -> das würde dazu führen bei Überschreitung (z.B. wenn WP und Backofen an ist) diesen Add-On Wert zu ignorieren bzw. die Normierung über Gebühr zu verletzen. Seltene Überschreitungen sind unkritisch. Ich begrenze Ausreißer bereits durch Anwendung eines Percentile-Filters. Im Trainings-Log sieht man es an diesem Eintrag:

...
2026.01.13 22:39:13.069 1: SolCast DEBUG> AI FANN - Target-Norm: raw_max=8904, p99=2144, p99.5=6875, targmaxval=8938
2026.01.13 22:39:13.070 1: SolCast DEBUG> AI FANN - True Outliers above p99.5 (6875): 8904
...
Ein solcher Ausreißer oberhalb des 99,5er Percentils z.B. wird vom Training ausgeschlossen.

ZitatAnpassung Bias..
Es gibt bereits eine Zonen gewichtete Bias Korrektur (_aiFannApplyBiasCorrection) die verschiedene Modell-Kennwerte berücksichtigt. Hier sind z.B. Slope, RMSE relative und Bias-Ratio verankert.
Die Wirkung dieser Korrektur sieht man im normalen Betrieb mit Debug "aiData" z.B.

...
2026.01.17 20:23:47.979 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-17 20:00:00, hod: 21 -> AI=696, legacy=652, final: 696 Wh (alpha=1, BC=0 Wh, zone=3)
2026.01.17 20:23:47.980 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-17 21:00:00, hod: 22 -> AI=654, legacy=712, final: 654 Wh (alpha=1, BC=0 Wh, zone=3)
2026.01.17 20:23:47.981 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-17 22:00:00, hod: 23 -> AI=645, legacy=582, final: 645 Wh (alpha=1, BC=0 Wh, zone=3)
2026.01.17 20:23:47.982 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-17 23:00:00, hod: 24 -> AI=672, legacy=609, final: 672 Wh (alpha=1, BC=0 Wh, zone=3)
2026.01.17 20:23:47.982 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-18 00:00:00, hod: 01 -> AI=577, legacy=519, final: 602 Wh (alpha=1, BC=25 Wh, zone=2)
2026.01.17 20:23:47.983 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-18 01:00:00, hod: 02 -> AI=506, legacy=480, final: 531 Wh (alpha=1, BC=25 Wh, zone=2)
2026.01.17 20:23:47.983 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-18 02:00:00, hod: 03 -> AI=447, legacy=436, final: 472 Wh (alpha=1, BC=25 Wh, zone=2)
2026.01.17 20:23:47.984 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-18 03:00:00, hod: 04 -> AI=418, legacy=492, final: 443 Wh (alpha=1, BC=25 Wh, zone=2)
2026.01.17 20:23:47.984 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-18 04:00:00, hod: 05 -> AI=442, legacy=466, final: 467 Wh (alpha=1, BC=25 Wh, zone=2)
2026.01.17 20:23:47.985 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-18 05:00:00, hod: 06 -> AI=488, legacy=480, final: 513 Wh (alpha=1, BC=25 Wh, zone=2)
2026.01.17 20:23:47.986 1: SolCast DEBUG> AI FANN con fc - Time: 2026-01-18 06:00:00, hod: 07 -> AI=542, legacy=512, final: 568 Wh (alpha=1, BC=25 Wh, zone=2)
....

Sehr wahrscheinlich waren die Anpassungen im Momentum, der Architektur (Hidden Layers), der Steilheit und der Aktivierung (ELLIOT_SYMMETRIC) die wichtigen Säulen der weiteren Verbesserung.
Zur Kontrolle kannst du nochmal trainieren und NUR! my $bit_fail_limit = 0.35; wieder aktivieren. Die anderen Params so lassen.
Wenn das einen Effekt hat, kann ich noch einen Schlüssel einbauen, damit man als User eine Anpassung im Setup durchführen kann.

Edit:
Zitatich glaube außer der Temperatur wird bei der WP noch nichts übergeben ??
Es wird nichts "übergeben" wie man es gewöhnlich versteht. KI Training kann man nicht mit herkömmlicher Programmatik vergleichen. Was aber gemacht wrid - und hier liegt die "Magie" - es werden Features und Semantiken als zusätzliche normierte Inputs erstellt die das Lernverhalten der KI unterstützen. Diese Semantiken stecken in den Profilen und den dazugehörigen FEATURE_BLOCKS. Ab ca. Zeile 1692.