76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

Begonnen von DS_Starter, 11 Februar 2024, 14:11:00

Vorheriges Thema - Nächstes Thema

TheTrumpeter

Zitat von: DS_Starter am 06 August 2026, 12:37:45Deswegen lösche aiConHiddenLayers und lasse das Modul die Architektur selbst bestimmen.
Dein Modell muß erstmal anfangen richtig zu lernen, momentan passiert das überhaupt nicht.
Erledigt und neu gestartet.

Aber macht es überhaupt Sinn jetzt schon so detailliert zu trainieren?
Meine Daten kennen zwar halbwegs die Laufzeit des "Kühlmodus" der Wärmepumpe, aber den Stromverbrauch dazu gibt es erst seit gestern Nachmittag.
Ähnliches gilt für's Warmwasser, da gibt's noch gar keine Verbrauchswerte, erst vom soeben gestarteten Zyklus wird's dann was geben.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

TheTrumpeter

So:
2026.08.06 12:49:03 1: mySolarForecast DEBUG> AI FANN Training for consumption Forecast BlockingCall PID "31253" with Timeout 86400 s started
2026.08.06 12:49:08 1: mySolarForecast DEBUG> AI FANN - There are 3875 Records skipped due to incomplete or invalid data.
2026.08.06 12:49:08 1: mySolarForecast DEBUG> AI FANN - dataset skipped - 2024040209 -> con=undef dayname=undef
(gelöscht)
2026.08.06 12:49:08 1: mySolarForecast DEBUG> AI FANN - dataset skipped - 2026071915 -> con=undef
2026.08.06 12:49:09 1: mySolarForecast DEBUG> AI FANN - Target-Norm: raw_max=5012, p99=3576, p99.5=4923, targmaxval=5263
2026.08.06 12:49:09 1: mySolarForecast DEBUG> AI FANN - True Outliers above p99.5 (4923): 5012
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12913]: hppf=0.000 d1p=0.000 d1n=0.170 up=0 down=1 upS=0.000 downS=0.170 vol=1 pvX=1 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12913]: tmplag1=0.909 tmplag3=0.931 tmplag24=0.926 tmpd1p=0.024 tmpd1n=0.000 tmpd3p=0.001 tmpd3n=0.000 tmpTrdp=0.012 tmpTrdn=0.000
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12914]: hppf=0.000 d1p=0.265 d1n=0.000 up=1 down=0 upS=0.265 downS=0.000 vol=1 pvX=0 break=1
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12914]: tmplag1=0.932 tmplag3=0.912 tmplag24=0.936 tmpd1p=0.000 tmpd1n=0.012 tmpd3p=0.007 tmpd3n=0.000 tmpTrdp=0.000 tmpTrdn=0.003
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12915]: hppf=0.000 d1p=0.000 d1n=0.222 up=0 down=1 upS=0.000 downS=0.222 vol=1 pvX=0 break=1
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12915]: tmplag1=0.920 tmplag3=0.909 tmplag24=0.925 tmpd1p=0.000 tmpd1n=0.007 tmpd3p=0.004 tmpd3n=0.000 tmpTrdp=0.000 tmpTrdn=0.002
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12916]: hppf=0.000 d1p=0.142 d1n=0.000 up=1 down=0 upS=0.142 downS=0.000 vol=1 pvX=0 break=1
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12916]: tmplag1=0.912 tmplag3=0.932 tmplag24=0.907 tmpd1p=0.000 tmpd1n=0.022 tmpd3p=0.000 tmpd3n=0.042 tmpTrdp=0.000 tmpTrdn=0.032
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12917]: hppf=0.000 d1p=0.000 d1n=0.291 up=0 down=1 upS=0.000 downS=0.291 vol=1 pvX=0 break=1
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12917]: tmplag1=0.890 tmplag3=0.920 tmplag24=0.894 tmpd1p=0.000 tmpd1n=0.030 tmpd3p=0.000 tmpd3n=0.060 tmpTrdp=0.000 tmpTrdn=0.045
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12918]: hppf=0.000 d1p=0.092 d1n=0.000 up=1 down=0 upS=0.092 downS=0.000 vol=1 pvX=0 break=1
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12918]: tmplag1=0.860 tmplag3=0.912 tmplag24=0.880 tmpd1p=0.000 tmpd1n=0.015 tmpd3p=0.000 tmpd3n=0.068 tmpTrdp=0.000 tmpTrdn=0.041
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12919]: hppf=0.000 d1p=0.000 d1n=0.091 up=0 down=1 upS=0.000 downS=0.091 vol=1 pvX=0 break=1
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12919]: tmplag1=0.845 tmplag3=0.890 tmplag24=0.868 tmpd1p=0.000 tmpd1n=0.015 tmpd3p=0.000 tmpd3n=0.060 tmpTrdp=0.000 tmpTrdn=0.037
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12920]: hppf=0.000 d1p=0.000 d1n=0.024 up=0 down=1 upS=0.000 downS=0.024 vol=1 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12920]: tmplag1=0.830 tmplag3=0.860 tmplag24=0.853 tmpd1p=0.000 tmpd1n=0.011 tmpd3p=0.000 tmpd3n=0.041 tmpTrdp=0.000 tmpTrdn=0.026
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12921]: hppf=0.000 d1p=0.003 d1n=0.000 up=0 down=0 upS=0.003 downS=0.000 vol=1 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12921]: tmplag1=0.819 tmplag3=0.845 tmplag24=0.841 tmpd1p=0.000 tmpd1n=0.011 tmpd3p=0.000 tmpd3n=0.038 tmpTrdp=0.000 tmpTrdn=0.024
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12922]: hppf=0.000 d1p=0.006 d1n=0.000 up=1 down=0 upS=0.006 downS=0.000 vol=1 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12922]: tmplag1=0.807 tmplag3=0.830 tmplag24=0.832 tmpd1p=0.000 tmpd1n=0.009 tmpd3p=0.000 tmpd3n=0.031 tmpTrdp=0.000 tmpTrdn=0.020
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12923]: hppf=0.000 d1p=0.004 d1n=0.000 up=0 down=0 upS=0.004 downS=0.000 vol=1 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12923]: tmplag1=0.799 tmplag3=0.819 tmplag24=0.820 tmpd1p=0.000 tmpd1n=0.009 tmpd3p=0.000 tmpd3n=0.029 tmpTrdp=0.000 tmpTrdn=0.019
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12924]: hppf=0.000 d1p=0.000 d1n=0.014 up=0 down=1 upS=0.000 downS=0.014 vol=0 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12924]: tmplag1=0.790 tmplag3=0.807 tmplag24=0.811 tmpd1p=0.000 tmpd1n=0.006 tmpd3p=0.000 tmpd3n=0.024 tmpTrdp=0.000 tmpTrdn=0.015
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12925]: hppf=0.000 d1p=0.000 d1n=0.007 up=0 down=1 upS=0.000 downS=0.007 vol=0 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12925]: tmplag1=0.784 tmplag3=0.799 tmplag24=0.804 tmpd1p=0.000 tmpd1n=0.006 tmpd3p=0.000 tmpd3n=0.021 tmpTrdp=0.000 tmpTrdn=0.014
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12926]: hppf=0.000 d1p=0.012 d1n=0.000 up=1 down=0 upS=0.012 downS=0.000 vol=0 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12926]: tmplag1=0.778 tmplag3=0.790 tmplag24=0.796 tmpd1p=0.031 tmpd1n=0.000 tmpd3p=0.019 tmpd3n=0.000 tmpTrdp=0.025 tmpTrdn=0.000
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12927]: hppf=0.000 d1p=0.000 d1n=0.000 up=0 down=0 upS=0.000 downS=0.000 vol=0 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12927]: tmplag1=0.809 tmplag3=0.784 tmplag24=0.806 tmpd1p=0.020 tmpd1n=0.000 tmpd3p=0.045 tmpd3n=0.000 tmpTrdp=0.032 tmpTrdn=0.000
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12928]: hppf=0.000 d1p=0.016 d1n=0.000 up=1 down=0 upS=0.016 downS=0.000 vol=0 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12928]: tmplag1=0.829 tmplag3=0.778 tmplag24=0.847 tmpd1p=0.029 tmpd1n=0.000 tmpd3p=0.080 tmpd3n=0.000 tmpTrdp=0.054 tmpTrdn=0.000
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12929]: hppf=0.000 d1p=0.313 d1n=0.000 up=1 down=0 upS=0.313 downS=0.000 vol=1 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12929]: tmplag1=0.857 tmplag3=0.809 tmplag24=0.890 tmpd1p=0.030 tmpd1n=0.000 tmpd3p=0.079 tmpd3n=0.000 tmpTrdp=0.054 tmpTrdn=0.000
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12930]: hppf=0.000 d1p=0.584 d1n=0.000 up=1 down=0 upS=0.584 downS=0.000 vol=1 pvX=0 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12930]: tmplag1=0.887 tmplag3=0.829 tmplag24=0.931 tmpd1p=0.020 tmpd1n=0.000 tmpd3p=0.079 tmpd3n=0.000 tmpTrdp=0.049 tmpTrdn=0.000
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12931]: hppf=0.000 d1p=0.000 d1n=0.060 up=0 down=1 upS=0.000 downS=0.060 vol=1 pvX=1 break=1
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12931]: tmplag1=0.907 tmplag3=0.857 tmplag24=0.960 tmpd1p=0.024 tmpd1n=0.000 tmpd3p=0.074 tmpd3n=0.000 tmpTrdp=0.049 tmpTrdn=0.000
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12932]: hppf=0.000 d1p=0.000 d1n=0.084 up=0 down=1 upS=0.000 downS=0.084 vol=1 pvX=1 break=0
2026.08.06 12:49:21 1: mySolarForecast - DBG F[12932]: tmplag1=0.931 tmplag3=0.887 tmplag24=0.955 tmpd1p=0.034 tmpd1n=0.000 tmpd3p=0.078 tmpd3n=0.000 tmpTrdp=0.056 tmpTrdn=0.000
2026.08.06 12:49:21 1: mySolarForecast DEBUG> First attempt 0 with Seed=357984
2026.08.06 12:49:21 1: mySolarForecast DEBUG> AI FANN Training started with Params:
input datasets=12927,
input features=123,
hidden Neurons=12,
Data Parameter Ratio=8.612,
Registry version=v1_heatpump_active_pv,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=SIGMOID,
hidden steepness=1.2,
max. Epoches=15000,
mse_error=0.001,
learning rate=0.00010,
learning momentum=0.5,
BitFail limit: 0.35,
Data sharing=chronological split and AI internal shuffle of training data (Train=10341, Test=2585),
Data shuffle=1 (period=25)
2026.08.06 12:49:22 1: mySolarForecast DEBUG> Epoche 1: Train MSE=0.033435, Val MSE=0.189028, Val MAE=0.415991, Val MedAE=0.475432, Bit_Fail=2095 -> Snap metric improved
2026.08.06 12:49:22 1: mySolarForecast DEBUG> Epoche 3: Train MSE=0.405062, Val MSE=0.156923, Val MAE=0.378966, Val MedAE=0.433431, Bit_Fail=2000 -> Snap metric improved
2026.08.06 12:49:22 1: mySolarForecast DEBUG> Epoche 4: Train MSE=0.156963, Val MSE=0.027121, Val MAE=0.133278, Val MedAE=0.118970, Bit_Fail=141 -> Snap metric improved
2026.08.06 12:49:23 1: mySolarForecast DEBUG> Epoche 8: Train MSE=0.032197, Val MSE=0.027121, Val MAE=0.084417, Val MedAE=0.027278, Bit_Fail=180 -> Snap weighted rmse improved
2026.08.06 12:49:35 1: mySolarForecast DEBUG> Epoche 100: Train MSE=0.006986, Val MSE=7359.102691, Val MAE=24.558229, Val MedAE=0.023713, Bit_Fail=260
2026.08.06 12:49:47 1: mySolarForecast DEBUG> Epoche 200: Train MSE=0.006276, Val MSE=6070.225236, Val MAE=20.267726, Val MedAE=0.020576, Bit_Fail=249
2026.08.06 12:50:01 1: mySolarForecast DEBUG> Epoche 300: Train MSE=0.006218, Val MSE=502.313013, Val MAE=5.792522, Val MedAE=0.020492, Bit_Fail=262
2026.08.06 12:50:02 1: mySolarForecast DEBUG> Early stopping bei Epoche 308 (no improvement since 300 epochs)
2026.08.06 12:50:02 1: === Snapshot-Statistik ===
2026.08.06 12:50:02 1: Metric-Improvement Snapshots:              3 (letzte Epoche: 4)
2026.08.06 12:50:02 1: Weighted-RMSE-Proxy-Improvement Snapshots: 1 (letzte Epoche: 8)
2026.08.06 12:50:02 1: Bit-Improvement Snapshots:                 0 (letzte Epoche: 0)
2026.08.06 12:50:02 1: Bit-Tradeoff Snapshots:                    0 (letzte Epoche: 0)
2026.08.06 12:50:02 1: mySolarForecast DEBUG> Best Snapshot reloaded from Epoche 8: Train MSE=0.032197, Val MSE=0.027121, Val MAE=0.084417, Val MedAE=0.027278, Bit_Fail=180,
2026.08.06 12:50:02 1: mySolarForecast DEBUG> Run Validation Test with 20% of Input data ...
2026.08.06 12:50:02 1: mySolarForecast DEBUG> Validation finished - Best Training MSE=0.032197, Validation MSE=0.025528, Validation Bit_Fail=180
2026.08.06 12:50:02 1: mySolarForecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=0.032197
Val MSE=0.025528
Val Mean=3764.0658762728
VAL/TRAIN MSE Ratio=0.792872 (limit=6.5)
Diff=0.006669 (limit=0.005)
ValStd=2560.0436796576 (limit=941.016469068199)
-- At Original Scale: --
MAE=444.250983960992
RMSE/MAE=1.5621 (limit=2.5)
Slope=0.142307 (limit=0.6 .. 1.3)
Bias=358.37 (limit=+-666.376475941489)
R2=0.04
P95=2149.4946 (limit=1777.00393584397)
P99=3147.9756
-- Robustness Indicators: --
RMSE relative=220 (limit=60)
BitFail=180 (limit=5)
BitFailRate=0.0696 (limit=0.1)
-- Architecture Check: --
Data Parameter Ratio=8.612
DPR Warning: ok
Forecast Quality Score=59 (limit=60)
-> Retrain decision=Retrain
-> Retrain reasons: score=59 < thd_retrain=60
   MSE diff=0.006669 > 0.005
   valstd=2560.04367966 > limit=941.01646907
   bitfail=180 > 5
   slope=0.1423 < slope_min=0.60
   rmse_rel=220.0% > 60% AND p95=2149.5 > 1777.0
2026.08.06 12:50:02 1: mySolarForecast DEBUG> Retry attempt 1 with Seed=13710002
2026.08.06 12:50:02 1: mySolarForecast DEBUG> AI FANN Training started with Params:
input datasets=12927,
input features=123,
hidden Neurons=12,
Data Parameter Ratio=8.612,
Registry version=v1_heatpump_active_pv,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=SIGMOID,
hidden steepness=1.2,
max. Epoches=15000,
mse_error=0.001,
learning rate=0.00010,
learning momentum=0.5,
BitFail limit: 0.35,
Data sharing=chronological split and AI internal shuffle of training data (Train=10341, Test=2585),
Data shuffle=1 (period=25)
2026.08.06 12:50:02 1: mySolarForecast DEBUG> Epoche 1: Train MSE=0.028048, Val MSE=0.385062, Val MAE=0.599701, Val MedAE=0.671091, Bit_Fail=2333 -> Snap metric improved
2026.08.06 12:50:02 1: mySolarForecast DEBUG> Epoche 3: Train MSE=0.786551, Val MSE=0.323266, Val MAE=0.547052, Val MedAE=0.617089, Bit_Fail=2281 -> Snap metric improved
2026.08.06 12:50:03 1: mySolarForecast DEBUG> Epoche 4: Train MSE=0.325197, Val MSE=0.032996, Val MAE=0.163615, Val MedAE=0.157019, Bit_Fail=89 -> Snap metric improved
2026.08.06 12:50:03 1: mySolarForecast DEBUG> Epoche 7: Train MSE=0.046281, Val MSE=0.032996, Val MAE=0.101198, Val MedAE=0.064588, Bit_Fail=182 -> Snap weighted rmse improved
2026.08.06 12:50:03 1: mySolarForecast DEBUG> Epoche 10: Train MSE=0.040577, Val MSE=0.017645, Val MAE=0.079162, Val MedAE=0.037556, Bit_Fail=109 -> Snap metric improved
2026.08.06 12:50:04 1: mySolarForecast DEBUG> Epoche 12: Train MSE=0.018201, Val MSE=0.017645, Val MAE=0.076648, Val MedAE=0.021209, Bit_Fail=172 -> Snap weighted rmse improved
2026.08.06 12:50:16 1: mySolarForecast DEBUG> Epoche 100: Train MSE=0.008564, Val MSE=7360.062953, Val MAE=24.600638, Val MedAE=0.025877, Bit_Fail=296
2026.08.06 12:50:29 1: mySolarForecast DEBUG> Epoche 200: Train MSE=0.006334, Val MSE=7395.469396, Val MAE=24.702319, Val MedAE=0.019386, Bit_Fail=273
2026.08.06 12:50:38 1: mySolarForecast DEBUG> Epoche 264: Train MSE=0.006072, Val MSE=0.017645, Val MAE=0.076648, Val MedAE=0.019600, Bit_Fail=147 -> Snap weighted rmse improved
2026.08.06 12:50:43 1: mySolarForecast DEBUG> Epoche 300: Train MSE=0.005918, Val MSE=0.043406, Val MAE=0.101903, Val MedAE=0.023545, Bit_Fail=215
2026.08.06 12:50:57 1: mySolarForecast DEBUG> Epoche 400: Train MSE=0.005708, Val MSE=0.043745, Val MAE=0.102272, Val MedAE=0.022108, Bit_Fail=219
2026.08.06 12:51:10 1: mySolarForecast DEBUG> Epoche 500: Train MSE=0.006050, Val MSE=0.041895, Val MAE=0.099722, Val MedAE=0.020235, Bit_Fail=223
2026.08.06 12:51:19 1: mySolarForecast DEBUG> Early stopping bei Epoche 564 (no improvement since 300 epochs)
2026.08.06 12:51:19 1: === Snapshot-Statistik ===
2026.08.06 12:51:19 1: Metric-Improvement Snapshots:              4 (letzte Epoche: 10)
2026.08.06 12:51:19 1: Weighted-RMSE-Proxy-Improvement Snapshots: 3 (letzte Epoche: 264)
2026.08.06 12:51:19 1: Bit-Improvement Snapshots:                 0 (letzte Epoche: 0)
2026.08.06 12:51:19 1: Bit-Tradeoff Snapshots:                    0 (letzte Epoche: 0)
2026.08.06 12:51:19 1: mySolarForecast DEBUG> Best Snapshot reloaded from Epoche 264: Train MSE=0.006072, Val MSE=0.017645, Val MAE=0.076648, Val MedAE=0.019600, Bit_Fail=147,
2026.08.06 12:51:19 1: mySolarForecast DEBUG> Run Validation Test with 20% of Input data ...
2026.08.06 12:51:19 1: mySolarForecast DEBUG> Validation finished - Best Training MSE=0.006072, Validation MSE=0.020375, Validation Bit_Fail=147
2026.08.06 12:51:19 1: mySolarForecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=0.006072
Val MSE=0.020375
Val Mean=0.0431614803
VAL/TRAIN MSE Ratio=3.355575 (limit=6.5)
Diff=0.014303 (limit=0.005)
ValStd=0.0012812512 (limit=0.0107903700795714)
-- At Original Scale: --
MAE=408.928063625039
RMSE/MAE=1.4393 (limit=2.5)
Slope=0.596580 (limit=0.6 .. 1.3)
Bias=376.01 (limit=+-613.392095437558)
R2=0.23
P95=1961.6943 (limit=1635.71225450015)
P99=2787.8994
-- Robustness Indicators: --
RMSE relative=187 (limit=60)
BitFail=147 (limit=5)
BitFailRate=0.0568 (limit=0.1)
-- Architecture Check: --
Data Parameter Ratio=8.612
DPR Warning: ok
Forecast Quality Score=64 (limit=60)
-> Retrain decision=Retrain
-> Retrain reasons: MSE diff=0.014303 > 0.005
   bitfail=147 > 5
   slope=0.5966 < slope_min=0.60
   rmse_rel=187.0% > 60% AND p95=1961.7 > 1635.7
2026.08.06 12:51:19 1: mySolarForecast DEBUG> Retry attempt 2 with Seed=13809847
2026.08.06 12:51:19 1: mySolarForecast DEBUG> AI FANN Training started with Params:
input datasets=12927,
input features=123,
hidden Neurons=12,
Data Parameter Ratio=8.612,
Registry version=v1_heatpump_active_pv,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=SIGMOID,
hidden steepness=1.2,
max. Epoches=15000,
mse_error=0.001,
learning rate=0.00010,
learning momentum=0.5,
BitFail limit: 0.35,
Data sharing=chronological split and AI internal shuffle of training data (Train=10341, Test=2585),
Data shuffle=1 (period=25)
2026.08.06 12:51:19 1: mySolarForecast DEBUG> Epoche 1: Train MSE=0.036120, Val MSE=0.189729, Val MAE=0.416764, Val MedAE=0.476299, Bit_Fail=2095 -> Snap metric improved
2026.08.06 12:51:20 1: mySolarForecast DEBUG> Epoche 3: Train MSE=0.369887, Val MSE=0.161930, Val MAE=0.384957, Val MedAE=0.440298, Bit_Fail=2018 -> Snap metric improved
2026.08.06 12:51:20 1: mySolarForecast DEBUG> Epoche 4: Train MSE=0.162040, Val MSE=0.033377, Val MAE=0.165184, Val MedAE=0.167065, Bit_Fail=114 -> Snap metric improved
2026.08.06 12:51:20 1: mySolarForecast DEBUG> Epoche 6: Train MSE=0.045373, Val MSE=0.033377, Val MAE=0.120356, Val MedAE=0.051831, Bit_Fail=260 -> Snap weighted rmse improved
2026.08.06 12:51:20 1: mySolarForecast DEBUG> Epoche 10: Train MSE=0.022636, Val MSE=0.029640, Val MAE=0.087126, Val MedAE=0.023922, Bit_Fail=225 -> Snap metric improved
2026.08.06 12:51:21 1: mySolarForecast DEBUG> Epoche 17: Train MSE=0.016529, Val MSE=0.029640, Val MAE=0.087126, Val MedAE=0.022515, Bit_Fail=221 -> Snap weighted rmse improved
2026.08.06 12:51:22 1: mySolarForecast DEBUG> Epoche 18: Train MSE=0.017177, Val MSE=0.029640, Val MAE=0.087126, Val MedAE=0.020838, Bit_Fail=175 -> Snap weighted rmse improved
2026.08.06 12:51:22 1: mySolarForecast DEBUG> Epoche 19: Train MSE=0.012464, Val MSE=0.029640, Val MAE=0.081448, Val MedAE=0.016288, Bit_Fail=187 -> Snap weighted rmse improved
2026.08.06 12:51:22 1: mySolarForecast DEBUG> Epoche 20: Train MSE=0.013506, Val MSE=0.029640, Val MAE=0.081448, Val MedAE=0.016186, Bit_Fail=152 -> Snap bit tradeoff
2026.08.06 12:51:33 1: mySolarForecast DEBUG> Epoche 100: Train MSE=0.009161, Val MSE=0.144547, Val MAE=0.156690, Val MedAE=0.022618, Bit_Fail=269
2026.08.06 12:51:47 1: mySolarForecast DEBUG> Epoche 200: Train MSE=0.207439, Val MSE=0.800813, Val MAE=0.304809, Val MedAE=0.018549, Bit_Fail=261
2026.08.06 12:52:00 1: mySolarForecast DEBUG> Epoche 300: Train MSE=0.006108, Val MSE=0.024164, Val MAE=0.080396, Val MedAE=0.019460, Bit_Fail=127
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Early stopping bei Epoche 320 (no improvement since 300 epochs)
2026.08.06 12:52:03 1: === Snapshot-Statistik ===
2026.08.06 12:52:03 1: Metric-Improvement Snapshots:              4 (letzte Epoche: 10)
2026.08.06 12:52:03 1: Weighted-RMSE-Proxy-Improvement Snapshots: 4 (letzte Epoche: 19)
2026.08.06 12:52:03 1: Bit-Improvement Snapshots:                 0 (letzte Epoche: 0)
2026.08.06 12:52:03 1: Bit-Tradeoff Snapshots:                    1 (letzte Epoche: 20)
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Best Snapshot reloaded from Epoche 20: Train MSE=0.013506, Val MSE=0.029640, Val MAE=0.081448, Val MedAE=0.016186, Bit_Fail=152,
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Run Validation Test with 20% of Input data ...
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Validation finished - Best Training MSE=0.013506, Validation MSE=0.026724, Validation Bit_Fail=152
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=0.013506
Val MSE=0.026724
Val Mean=0.0236235870
VAL/TRAIN MSE Ratio=1.978698 (limit=6.5)
Diff=0.013218 (limit=0.005)
ValStd=0.0010738409 (limit=0.00590589675828749)
-- At Original Scale: --
MAE=438.763816200264
RMSE/MAE=1.4352 (limit=2.5)
Slope=0.691602 (limit=0.6 .. 1.3)
Bias=333.66 (limit=+-658.145724300396)
R2=-0.01
P95=2057.2352 (limit=1755.05526480106)
P99=3652.3959
-- Robustness Indicators: --
RMSE relative=200 (limit=60)
BitFail=152 (limit=5)
BitFailRate=0.0588 (limit=0.1)
-- Architecture Check: --
Data Parameter Ratio=8.612
DPR Warning: ok
Forecast Quality Score=64 (limit=60)
-> Retrain decision=Retrain
-> Retrain reasons: MSE diff=0.013218 > 0.005
   bitfail=152 > 5
   rmse_rel=200.0% > 60% AND p95=2057.2 > 1755.1
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Retry attempt 3 with Seed=14066457
2026.08.06 12:52:03 1: mySolarForecast DEBUG> AI FANN Training started with Params:
input datasets=12927,
input features=123,
hidden Neurons=12,
Data Parameter Ratio=8.612,
Registry version=v1_heatpump_active_pv,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=SIGMOID,
hidden steepness=1.2,
max. Epoches=15000,
mse_error=0.001,
learning rate=0.00010,
learning momentum=0.5,
BitFail limit: 0.35,
Data sharing=chronological split and AI internal shuffle of training data (Train=10341, Test=2585),
Data shuffle=1 (period=25)
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Epoche 1: Train MSE=0.044069, Val MSE=0.363658, Val MAE=0.581923, Val MedAE=0.652943, Bit_Fail=2319 -> Snap metric improved
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Epoche 3: Train MSE=0.755154, Val MSE=0.303853, Val MAE=0.529626, Val MedAE=0.598942, Bit_Fail=2259 -> Snap metric improved
2026.08.06 12:52:03 1: mySolarForecast DEBUG> Epoche 4: Train MSE=0.305588, Val MSE=0.036046, Val MAE=0.174274, Val MedAE=0.179564, Bit_Fail=106 -> Snap metric improved
2026.08.06 12:52:04 1: mySolarForecast DEBUG> Epoche 7: Train MSE=0.045918, Val MSE=0.036046, Val MAE=0.104014, Val MedAE=0.068667, Bit_Fail=184 -> Snap weighted rmse improved
2026.08.06 12:52:04 1: mySolarForecast DEBUG> Epoche 10: Train MSE=0.045768, Val MSE=0.018827, Val MAE=0.096353, Val MedAE=0.064819, Bit_Fail=125 -> Snap metric improved
2026.08.06 12:52:04 1: mySolarForecast DEBUG> Epoche 11: Train MSE=0.016594, Val MSE=0.018827, Val MAE=0.073815, Val MedAE=0.023853, Bit_Fail=129 -> Snap weighted rmse improved
2026.08.06 12:52:17 1: mySolarForecast DEBUG> Epoche 100: Train MSE=0.007337, Val MSE=7359.102734, Val MAE=24.560012, Val MedAE=0.026342, Bit_Fail=262
2026.08.06 12:52:30 1: mySolarForecast DEBUG> Epoche 200: Train MSE=0.006395, Val MSE=2.735387, Val MAE=0.524690, Val MedAE=0.028795, Bit_Fail=265
2026.08.06 12:52:44 1: mySolarForecast DEBUG> Epoche 300: Train MSE=0.006114, Val MSE=3.696065, Val MAE=0.590682, Val MedAE=0.027009, Bit_Fail=258
2026.08.06 12:52:46 1: mySolarForecast DEBUG> Early stopping bei Epoche 311 (no improvement since 300 epochs)
2026.08.06 12:52:46 1: === Snapshot-Statistik ===
2026.08.06 12:52:46 1: Metric-Improvement Snapshots:              4 (letzte Epoche: 10)
2026.08.06 12:52:46 1: Weighted-RMSE-Proxy-Improvement Snapshots: 2 (letzte Epoche: 11)
2026.08.06 12:52:46 1: Bit-Improvement Snapshots:                 0 (letzte Epoche: 0)
2026.08.06 12:52:46 1: Bit-Tradeoff Snapshots:                    0 (letzte Epoche: 0)
2026.08.06 12:52:46 1: mySolarForecast DEBUG> Best Snapshot reloaded from Epoche 11: Train MSE=0.016594, Val MSE=0.018827, Val MAE=0.073815, Val MedAE=0.023853, Bit_Fail=129,
2026.08.06 12:52:46 1: mySolarForecast DEBUG> Run Validation Test with 20% of Input data ...
2026.08.06 12:52:46 1: mySolarForecast DEBUG> Validation finished - Best Training MSE=0.016594, Validation MSE=0.018633, Validation Bit_Fail=129
2026.08.06 12:52:46 1: mySolarForecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=0.016594
Val MSE=0.018633
Val Mean=32.6580282200
VAL/TRAIN MSE Ratio=1.122899 (limit=6.5)
Diff=0.002039 (limit=0.005)
ValStd=53.3125529465 (limit=8.16450705500493)
-- At Original Scale: --
MAE=388.459047464024
RMSE/MAE=1.5333 (limit=2.5)
Slope=0.301312 (limit=0.6 .. 1.3)
Bias=278.67 (limit=+-582.688571196036)
R2=0.30
P95=1829.9886 (limit=1553.8361898561)
P99=2727.5143
-- Robustness Indicators: --
RMSE relative=189 (limit=60)
BitFail=129 (limit=5)
BitFailRate=0.0499 (limit=0.1)
-- Architecture Check: --
Data Parameter Ratio=8.612
DPR Warning: ok
Forecast Quality Score=62 (limit=60)
-> Retrain decision=Retrain
-> Retrain reasons: valstd=53.31255295 > limit=8.16450706
   bitfail=129 > 5
   slope=0.3013 < slope_min=0.60
   rmse_rel=189.0% > 60% AND p95=1830.0 > 1553.8
2026.08.06 12:52:46 1: mySolarForecast DEBUG> Best model after retries comes from Attempt=1 with:
Seed=13710002,
Model Score=64,
Model Slope=0.60,
Model Bias=376.01,
VAL MedAE=103.15,
VAL MAE=408.93,
VAL weighted RMSE=588.55,
VAL weighted RMSE relative=187 %,
VAL weighted RMSE_Rating=very bad,
VAL R2=0.23,
Val MSE=0.020375
2026.08.06 12:52:46 1: mySolarForecast DEBUG> AI FANN training data successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_mySolarForecast
2026.08.06 12:52:47 1: mySolarForecast DEBUG> AI FANN con Training BlockingCall PID '31253' finished. Trainstate: ok

ZitatDu bewertest die Trainings- und Bewertungskennzahlen eines neuronalen Netzes (FANN),
das den stündlichen Energieverbrauch für einen Haushalt prognostiziert
(FHEM-Modul 76_SolarForecast.pm, FANN-basiertes neuronales Netz).

Wichtiger Domänen-Kontext für deine Bewertung:
- Stochastische Haushalte (ohne Wärmepumpe/BEV) erreichen typischerweise R²=0.25-0.35 –
  das ist kein Modellfehler, sondern physikalisch bedingt durch unvorhersehbares Nutzerverhalten.
- Ein ModelSlope von 0.35-0.45 und ein ModelBias von 400-500 Wh sind bei diesen Haushalten
  strukturell erwartet (Bias ≈ mean_consumption × (1 - Slope)) und kein Kalibrierfehler.
- Haushalte mit Wärmepumpe oder BEV können R²=0.5-0.7 erreichen.
- Ein DriftIndex unter 0.7 gilt als stabil, über 1.0 als kritisch.
- Ein hohes Rauschlevel (NoiseLevel) begrenzt die maximal erreichbare Modellqualität strukturell.
- BitFailLimit (aiConBitFailLimit) definiert die Fehlertoleranz pro Datenpunkt – ein HÖHERER
  Wert bedeutet MEHR Toleranz (mehr Fehler werden akzeptiert, bevor ein Sample als Bit_Fail
  zählt), ein NIEDRIGERER Wert bedeutet strengere Bewertung.
- Zur Diagnose von früher Konvergenz: Wenn Val MSE > Train MSE (Overfitting-Indikator) UND
  wenige Epochen genutzt wurden, deutet das auf eine zu hohe Lernrate hin (Empfehlung:
  Lernrate reduzieren). Nur wenn Val MSE ≈ Train MSE und wenige Epochen genutzt wurden,
  kann eine höhere Lernrate sinnvoll sein.

Beurteile die Metriken ausschließlich vor diesem Domänen-Hintergrund, nicht nach
generischen ML-Benchmarks.

Bitte bewerte die Kennzahlen zusätzlich im Kontext dieser konkreten Haushaltskonfiguration
(siehe Abschnitt "Modellparameter", insbesondere Profile) und beantworte:

1. Wo liegen aktuell die größten Schwachstellen des Modells?
2. Welche 2-3 Maßnahmen versprechen den größten Hebel zur Verbesserung (Datenqualität/-menge,
   Hyperparameter wie aiConLearnRate/aiConMomentum, Architektur/HiddenLayers, Feature-Auswahl,
   Trainingsdauer/Epochen, Rauschen, Drift/Rekalibrierung)? Bitte jeweils mit Richtungsangabe
   (erhöhen/reduzieren).
3. Gibt es Hinweise auf strukturelle Probleme (z.B. zu wenig Trainingsdaten, instabile Slope,
   Bias-Drift, Over-/Underfitting, verrauschte Zielgröße, zu früh konvergiertes Training)?
4. Bitte konkrete, umsetzbare nächste Schritte nennen, keine allgemeinen Floskeln.

Hier die Kennzahlen:
--------------------------------------------------------------------

Allgemeine Informationen
- trainiert mit Modulversion: 2.9.4
- letztes KI-Training: 06.08.2026 12:52:46 (Laufzeit in Sekunden: 222)
- KI Abfragestatus: ok
- letzte KI-Ergebnis Generierungsdauer: 135.04 ms
- Verbrauchernummer Wärmepumpe: 03

Bewertungsüberblick
- Trainingsbewertung: Retrain (MSE diff=0.014303 > 0.005 | bitfail=147 > 5 | slope=0.5966 < slope_min=0.60 | rmse_rel=187.0% > 60% AND p95=1961.7 > 1635.7)
- Data-Parameter-Ratio Bewertung: ok
- Lernverhalten: sehr früh konvergiert (1.8 % Epochenausnutzung)
- Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
- Drift Bewertung: fresh_model
- Empfehlung für Retrain: keine

Modellparameter
- Normierungsgrenzen: PV=15750 Wh, Hausverbrauch: Min=0 Wh / Max=5263 Wh
- Trainingsdaten: 12927 Datensätze (Training=10341, Validation=2586)
- Architektur: Inputs=123, Hidden Layers=12, Outputs=1
- Hyperparameter: Learning Rate=0.0001, Momentum=0.5, BitFail-Limit=0.35
- Aktivierungen: Hidden=SIGMOID, Steepness=1.2, Output=LINEAR
- Trainingsalgorithmus: RPROP, Profile=v1_heatpump_active_pv (Haushalt mit Wärmepumpe und/oder Klimaanlage, PV-gesteuertem Lastmanagement, ausgeprägten Tages-/Verbrauchsrhythmen)
- Zufallsgenerator: Mode=1, Period=25
- Modellalter: 0 h

Trainingsmetriken
- bestes Modell bei Epoche: 264 (max. 15000)
- Training MSE: 0.006072
- Validation MSE: 0.020375
- Validation MSE Average: 0.043161
- Validation MSE Standard Deviation: 0.001281
- Validation Bit_Fail: 147
- Data Parameter Ratio: 8.612
- Model Bias: 376 Wh
- Model Slope: 0.60
- Trainingsbewertung: Retrain

Fehlermaße der Prognosen
- MAE: 408.93 Wh
- MedAE: 103.15 Wh
- RMSE: 588.55 Wh
- RMSE relative: 187 %
- RMSE Rating: very bad
- MAPE: 73.99 %
- MdAPE: 27.15 %
- R2: 0.23

Rauschen
- Rauschen Bewertung: borderline
- Empfehlung für Bit_Fail: 0.34 (Einstellung von aiControl->aiConBitFailLimit)

Drift-Kennzahlen (berechnet ab Modellalter > 6 h)
- Analysefenster: - h
- Drift RMSE Ratio: -
- Semantic Ratio: -
- Slope Reference: 1.00
- Slope Live: -
- Slope Drift: 1
- Bias Reference: 0
- Bias Live: -
- Bias Drift: 0
- Score: -
- Index: -
- Drift Bewertung: fresh_model
- Empfehlung für Retrain: keine
- letzte Rekalibrierung: -
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

DS_Starter

So, DPR passt nun, das Modell friert immernoch auf dem Plateau ein.

Deswegen nun Schritt 2:

 * aiConTrainAlgo=INCREMENTAL

setzen. Wenn wir damit das Plateau verlassen sollten, werden wir aiConHiddenLayers nochmal anpassen.
Aber erstmal so mit dieser Änderung ein neues Training fahren.

Proxmox+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

TheTrumpeter

Zitat von: DS_Starter am 06 August 2026, 13:15:49* aiConTrainAlgo=INCREMENTAL
So:
ZitatDu bewertest die Trainings- und Bewertungskennzahlen eines neuronalen Netzes (FANN),
das den stündlichen Energieverbrauch für einen Haushalt prognostiziert
(FHEM-Modul 76_SolarForecast.pm, FANN-basiertes neuronales Netz).

Wichtiger Domänen-Kontext für deine Bewertung:
- Stochastische Haushalte (ohne Wärmepumpe/BEV) erreichen typischerweise R²=0.25-0.35 –
  das ist kein Modellfehler, sondern physikalisch bedingt durch unvorhersehbares Nutzerverhalten.
- Ein ModelSlope von 0.35-0.45 und ein ModelBias von 400-500 Wh sind bei diesen Haushalten
  strukturell erwartet (Bias ≈ mean_consumption × (1 - Slope)) und kein Kalibrierfehler.
- Haushalte mit Wärmepumpe oder BEV können R²=0.5-0.7 erreichen.
- Ein DriftIndex unter 0.7 gilt als stabil, über 1.0 als kritisch.
- Ein hohes Rauschlevel (NoiseLevel) begrenzt die maximal erreichbare Modellqualität strukturell.
- BitFailLimit (aiConBitFailLimit) definiert die Fehlertoleranz pro Datenpunkt – ein HÖHERER
  Wert bedeutet MEHR Toleranz (mehr Fehler werden akzeptiert, bevor ein Sample als Bit_Fail
  zählt), ein NIEDRIGERER Wert bedeutet strengere Bewertung.
- Zur Diagnose von früher Konvergenz: Wenn Val MSE > Train MSE (Overfitting-Indikator) UND
  wenige Epochen genutzt wurden, deutet das auf eine zu hohe Lernrate hin (Empfehlung:
  Lernrate reduzieren). Nur wenn Val MSE ≈ Train MSE und wenige Epochen genutzt wurden,
  kann eine höhere Lernrate sinnvoll sein.

Beurteile die Metriken ausschließlich vor diesem Domänen-Hintergrund, nicht nach
generischen ML-Benchmarks.

Bitte bewerte die Kennzahlen zusätzlich im Kontext dieser konkreten Haushaltskonfiguration
(siehe Abschnitt "Modellparameter", insbesondere Profile) und beantworte:

1. Wo liegen aktuell die größten Schwachstellen des Modells?
2. Welche 2-3 Maßnahmen versprechen den größten Hebel zur Verbesserung (Datenqualität/-menge,
  Hyperparameter wie aiConLearnRate/aiConMomentum, Architektur/HiddenLayers, Feature-Auswahl,
  Trainingsdauer/Epochen, Rauschen, Drift/Rekalibrierung)? Bitte jeweils mit Richtungsangabe
  (erhöhen/reduzieren).
3. Gibt es Hinweise auf strukturelle Probleme (z.B. zu wenig Trainingsdaten, instabile Slope,
  Bias-Drift, Over-/Underfitting, verrauschte Zielgröße, zu früh konvergiertes Training)?
4. Bitte konkrete, umsetzbare nächste Schritte nennen, keine allgemeinen Floskeln.

Hier die Kennzahlen:
--------------------------------------------------------------------

Allgemeine Informationen
- trainiert mit Modulversion: 2.9.4
- letztes KI-Training: 06.08.2026 13:39:08 (Laufzeit in Sekunden: 953)
- KI Abfragestatus: ok
- letzte KI-Ergebnis Generierungsdauer: 136.74 ms
- Verbrauchernummer Wärmepumpe: 03

Bewertungsüberblick
- Trainingsbewertung: Retrain (MSE diff=0.005290 > 0.005 | bitfail=62 > 5 | slope=0.5145 < slope_min=0.60 | rmse_rel=161.0% > 60% AND p95=1459.9 > 1341.2)
- Data-Parameter-Ratio Bewertung: ok
- Lernverhalten: gesundes Lernverhalten (7.6 % Epochenausnutzung)
- Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
- Drift Bewertung: -
- Empfehlung für Retrain: keine

Modellparameter
- Normierungsgrenzen: PV=15750 Wh, Hausverbrauch: Min=0 Wh / Max=5263 Wh
- Trainingsdaten: 12928 Datensätze (Training=10342, Validation=2586)
- Architektur: Inputs=123, Hidden Layers=12, Outputs=1
- Hyperparameter: Learning Rate=0.0001, Momentum=0.5, BitFail-Limit=0.34
- Aktivierungen: Hidden=SIGMOID, Steepness=1.2, Output=LINEAR
- Trainingsalgorithmus: INCREMENTAL, Profile=v1_heatpump_active_pv (Haushalt mit Wärmepumpe und/oder Klimaanlage, PV-gesteuertem Lastmanagement, ausgeprägten Tages-/Verbrauchsrhythmen)
- Zufallsgenerator: Mode=1, Period=25
- Modellalter: - h

Trainingsmetriken
- bestes Modell bei Epoche: 1144 (max. 15000)
- Training MSE: 0.007266
- Validation MSE: 0.012557
- Validation MSE Average: 0.012393
- Validation MSE Standard Deviation: 0.000008
- Validation Bit_Fail: 62
- Data Parameter Ratio: 8.613
- Model Bias: 303 Wh
- Model Slope: 0.51
- Trainingsbewertung: Retrain

Fehlermaße der Prognosen
- MAE: 335.29 Wh
- MedAE: 103.35 Wh
- RMSE: 506.05 Wh
- RMSE relative: 161 %
- RMSE Rating: very bad
- MAPE: 54.31 %
- MdAPE: 28.17 %
- R2: 0.53

Rauschen
- Rauschen Bewertung: borderline
- Empfehlung für Bit_Fail: 0.34 (Einstellung von aiControl->aiConBitFailLimit)

Drift-Kennzahlen (berechnet ab Modellalter > 6 h)
- Analysefenster: - h
- Drift RMSE Ratio: -
- Semantic Ratio: -
- Slope Reference: -
- Slope Live: -
- Slope Drift: -
- Bias Reference: -
- Bias Live: -
- Bias Drift: -
- Score: -
- Index: -
- Drift Bewertung: -
- Empfehlung für Retrain: keine
- letzte Rekalibrierung: -
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

DS_Starter

Na also ... jetzt kommt Bewegung in die Sache. Du siehst sicher selbst, wie der Lernprozess Fahrt aufnimmt.

Was sagt denn der interne "Berater" und die KI-Analyse zu dem Ergebnis?
Du postest zwar immer die Anfrage mit den Werten, aber nicht die Antwort.

Ansonsten schrittweise! folgende Parameter anpassen und testen:

aiConHiddenLayers=16-8
aiConLearnRate=0.0003
aiConBitFailLimit=0.37

Ziel: Bitfehler auf 5 drücken, R2, Slope weiter erhöhen auf ein mögliches! Maximum.
Unbedingt nur einen Pram ändern und testen.
Proxmox+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

TheTrumpeter

Zitat von: DS_Starter am 06 August 2026, 14:00:26Was sagt denn der interne "Berater" und die KI-Analyse zu dem Ergebnis?
Du postest zwar immer die Anfrage mit den Werten, aber nicht die Antwort.
Ich denke Dein "aiConTrainAlgo=INCREMENTAL" war erstmal der entscheidende Hinweis. Da ist Gemini nicht draufgekommen.

Mittlerweile versuche ich dessen weitere Empfehlungen schrittweise umzusetzen. Ich habe gerade ein Training mit "aiConHiddenLayers=20" laufen, weil Gemini empfohlen hat die "HiddenLayers" auf 20 zu erhöhen.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

DS_Starter

ZitatIch denke Dein "aiConTrainAlgo=INCREMENTAL" war erstmal der entscheidende Hinweis. Da ist Gemini nicht draufgekommen.
Na was für ein Glück, dann sind wir (Menschen) ja noch nicht ganz überflüssig.  ;)
Proxmox+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

DS_Starter

#6817
Hallo zusammen,

wie angekündigt, hatte ich heute meinen ersten produktiven Lauf mit der Implementierung des Ladecontrollers nach dem Konzept von Parallix (bereits in #5467 und in #5199 von ihm aufgezeigt).

Mit diesem Controller wird ein Zellschutz nahe Vollladung in die Ladesteuerung eingebaut. Voraussetzung dafür ist, dass man die einzelnen Zellenspannungen messen und bereitstellen kann. Für Pylontech 48-Volt Series geht das mit meinem PylonLowVoltage Modul.

Das hat heute einwandfrei funktioniert und ich habe den Wiki Artikel komplett überarbeitet und auch das Codebeispiel erneuert. Natürlich ist es speziell auf meine Anlage abgestimmt und nicht einfach ungesehen zu übernehmen.

Man sieht die Wirkung des Controllers im Screenshot ab kurz vor 16:00. Der Eingangswert des OTP wird in Bezug zur höchsten im Verbund vorkommenden Zellenspannung reduziert.
Auffällig ist die starke Oszillation sobald OTP (blaue Kurve) auf den max. Wert geht und als begrenzender Faktor ausfällt. Die Ursache dafür ist durch den Proportionalregler ohne Hysterese bedingt. Hier werde ich mir noch ein Glättung einfallen lassen, aber der Zweck und das Ziel wurde voll erreicht.

Ich würde mich freuen wenn Parallix sich das Ganze auch mal anschaut.

LG,
Heiko
Proxmox+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

peterboeckmann

Hallo Heiko,

Zitat von: DS_Starter am 06 August 2026, 11:51:00Hallo Peter,

Grundsätzlich eine gute Idee – die Frage ist aber, wie ich das sauber ins bestehende Feature-Konzept einbauen könnte.

1. Analogie ist schon im Modul vorhanden
Das ist strukturell dasselbe Problem wie beim Wärmepumpen-Opmode-Tracking (Punkte-System mit gewichteter Sekundenakkumulation). Auch dort wird ein Betriebsmodus als Kategorie-Signal in eine Aggregation gegeben. Ich würde "Modus" der Wallbox genauso behandeln: nicht als rohen String, sondern als Punkte/Anteil pro Stunde (z.B. wie viele Sekunden der Stunde in Aus/Auto/Prio/Manuell verbracht wurden), analog zum HP-Muster. Das lässt sich vermutlich mit wenig Aufwand aus dem bestehenden Ansatz ableiten/kopieren.

2. Das eigentliche Problem: Training vs. Inferenz
Für die Trainingsdaten (Historie) ist das unproblematisch – dort hole ich den historischen Modus/Ladestrom-Wert zur jeweiligen Stunde.

Für die NextHours-Prognose ist das der Knackpunkt: Anders als PV- oder Wetterprognosen gibt es für "Modus in Stunde t+x" keine Vorhersagequelle – man kennt nur den aktuellen Live-Wert. Wenn ich den Wert einfach für alle Prognosestunden konstant fortschreibe, ist das für Nutzer, die selten manuell umschalten, eine brauchbare Näherung, für Nutzer mit häufigem Moduswechsel aber potenziell fehlerhaft – das NN lernt dann eine Abhängigkeit, die zur Prognosezeit oft nicht mehr stimmt.

Was natürlich dafür spricht - wenn der Modus auf Prio steht und sich damit eine Beziehung zum vergangenen/prognostizierten Überschuß ableiten lässt, wäre es ein echtes Signal für das NN.
Vllt. wird deutlich worauf ich hinaus will, der PV-Überschuß in Verknüpfung mit demm Modus "Prio" gibt ein echtes Feature, bei den anderen Status, z.B. "Manuell" -> "kann passieren oder auch nicht" gibt es keine solche Vorhersehbarkeit.

Aber danke für die Idee  :) , ich lasse das bei mir nochmal sacken.

LG,
Heiko

Zu deinen Bedenken bzgl. der NextHours-Prognose habe ich mal in meinen Erinnerungen gekramt. Ich denke, dass sich innerhalb des Ladevorgang der Modus nur äußerst selten ändert. Und wenn, dann ist ja gut erklärt, warum die Prognose nicht (mehr) passen kann.
Was sich ggf. tatsächlich mal ändern wird, ist die Ladestrom-Vorgabe. Diese wirkt aber natürlich nur im Modus "Manuell".

Außerdem ist mir noch eine Lücke aufgefallen, die ich möglicherweise anderen Steuerungen gegenüber habe: ich habe aktuell nicht die Möglichkeit zu steuern, ob einphasig oder dreiphasig geladen werden soll.
Das hätte aber natürlich großen Einfluss auf die CON-Prognose.
Vielleicht schaffe ich mir aber auch nochmal diese Möglichkeit. Zumindest träume ich davon...

Viele Grüße,
Peter
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife