attr SolarForecast consumer16 HM_56E0D2_Sw_02
type=other
power=40
on=on
off=off
auto=Automatik
icon=debian
mode=can
mintime=SunPath:60:-60
interruptable=1
notbefore=09:30
notafter=19:00
locktime=300:300
#Test
Driftstatus:userFn_driftAmpel
:
:
CentralTask:special_runTimeCentralTask
System:arm,disarm blink/sync/WeRu_1/cmd $EVTPART1
Flur:arm,disarm blink/cameras/Flur/cmd $EVTPART1
Terrasse:arm,disarm blink/cameras/Terrasse/cmd $EVTPART1
... is jetzt nicht dein Ernst
Zitatwie lange muss das FC Modul eigentlich laufen bevor ein KI Training erfolgen kann?Es werden aktuell mindestens 2000 Input Datensätze vorausgesetzt. Jede Stunde erzeugt das System einen neuen Datensatz.
Zitat von: DS_Starter am 20 Mai 2026, 09:14:25Kannst mal zeigen was du alles drin stehen hast.
#aktuelle Werte
Netz aktuell:Current_GridConsumption
Einspeisung aktuell:Current_GridFeedIn
Netz Heute bis jetzt:special_todayGridConsumption
Einspeisung Heute bis jetzt:special_todayGridFeedIn
#Verbrauch
Heute bis jetzt:special_todayConsumption
Heute erwartet:special_todayConsumptionForecastDay
Heute bis Sonnenuntergang:special_todayConForecastTillSunset
Heute bis Sonnenaufgang :special_conForecastTillNextSunrise
#
:
:
:
Sonnenuntergang bis Sonnenaufgang :special_conForecastComingNight
#PV
Heute bis jetzt:Today_PVreal
Heute erwartet:Today_PVforecast
Morgen erwartet:Tomorrow_PVforecast
Übermorgen erwartet:special_dayAfterTomorrowPVforecast
#Batterie Gesamt
Ladung aktuell:special_BatPowerIn_Sum
Entladung aktuell:special_BatPowerOut_Sum
Ladung heute:special_todayBatInSum
Entladung heute:special_todayBatOutSum
#Batterie01 | 02
Bat01-Ladeanforderung:Battery_ChargeRequest_01
Bat01-Ladung empfohlen:Battery_ChargeUnrestricted_01
Bat02-Ladeanforderung:Battery_ChargeRequest_02
Bat02-Ladung empfohlen:Battery_ChargeUnrestricted_02
#
MaxPVForecastTime:Today_MaxPVforecastTime
Bat01-Ladeabbruch empfohlen:Battery_ChargeAbort_01
:
Bat02-Ladeabbruch empfohlen:Battery_ChargeAbort_02
#
Bat01-Ladung heute:special_todayBatIn_01
Bat01-Entladung heute:special_todayBatOut_01
Bat02-Ladung heute:special_todayBatIn_02
Bat02-Entladung heute:special_todayBatOut_02
#
Bat01-Ladeleistung aktuell:Current_PowerBatIn_01
Bat01-Entladeleistung aktuell:Current_PowerBatOut_01
Bat02-Ladeleistung aktuell:Current_PowerBatIn_02
Bat02-Entladeleistung aktuell:Current_PowerBatOut_02
#
Bat01-Ladestatus aktuell:Current_BatCharge_01
Bat01-Restapazität aktuell:Current_CapBat_01
Bat02-Ladestatus aktuell:Current_BatCharge_02
Bat02-Restapazität aktuell:Current_CapBat_02
#Settings
Autokorrektur:pvCorrectionFactor_Auto
Wetter:graphicShowWeather
History:graphicHistoryHour
ShowNight:graphicShowNight
#
Beam1:graphicBeam1Content
Beam2:graphicBeam2Content
Überschuss:Current_Surplus
Heater:userFn_HeaterManagement
#
Beam3:graphicBeam3Content
Beam4:graphicBeam4Content
Aussen-T:boiler_data_outdoortemp@MQTT_EMSwp
Set aiDecTree:aiDecTree
#
Beam5:graphicBeam5Content
Beam6:graphicBeam6Content
Debug:ctrlDebug
ContribUpdate:userFn_LoadContribcUpdate
#aiControl
Activate:aiControl->aiConActivate
Alpha:aiControl->aiConAlpha
TrainStart:aiControl->aiConTrainStart
:
#
ActFunc:aiControl->aiConActFunc
HiddenLayers:aiControl->aiConHiddenLayers
LearnRate:aiControl->aiConLearnRate
Momentum:aiControl->aiConMomentum
#
ShuffleMode:aiControl->aiConShuffleMode
ShufflePeriod:aiControl->aiConShufflePeriod
Steepness:aiControl->aiConSteepness
TrainAlgo:aiControl->aiConTrainAlgo
#
Profile:aiControl->aiConProfile
BitFailLimit:aiControl->aiConBitFailLimit
ConAbsOversample:aiControl->aiConAbsOversample
:
#Drift
Retrain Empfehlung:userFn_DriftRetrainRecommendation
:
:
:
#Test
Driftstatus:userFn_driftAmpel
:
:
CentralTask:special_runTimeCentralTask
#WP-Warmwasser
Temperatur aktuell:boiler_data_dhw_curtemp@MQTT_EMSwp
aktuelle max Stoptemperatur:boiler_data_dhw_settemp@MQTT_EMSwp
Programm:thermostat_data_dhw_modetype@MQTT_EMSwp
Mode:thermostat_data_dhw_mode@MQTT_EMSwp
Current_BatCharge999 {((ReadingsNum("SBS37","chargestatus",0) * 10 * ReadingsNum("SBS37","bat_rated_capacity",0)) + (ReadingsNum("SBS25_2","chargestatus",0) * 10 * ReadingsNum("SBS25_2","bat_rated_capacity",0))) / ( (ReadingsNum("SBS37","bat_rated_capacity",0) * 1000) + (ReadingsNum("SBS25_2","bat_rated_capacity",0)*1000))*100},
Current_CapBat_01 {ReadingsNum("SBS37","bat_residual_cap",0)*1},
Current_CapBat_02 {ReadingsNum("SBS25_2","bat_residual_cap",0)*1},
user_presence {if(ReadingsVal("Handy_Guenter","state","") eq "present") {return "present"} elsif (ReadingsVal("Handy_Barbara","state","") eq "present") {return "present"} else {return 0}},
user_wpmodus {if(ReadingsVal("MQTT_EMSwp","boiler_data_hpactivity","") eq "heating") {return "heating"} elsif (ReadingsVal("MQTT_EMSwp","boiler_data_hpactivity","") eq "defrost") {return "defrost"} elsif (ReadingsVal("MQTT_EMSwp","boiler_data_hpactivity","") eq "hot water") {return "hotwater"} elsif (ReadingsVal("MQTT_EMSwp","boiler_data_hpactivity","") eq "off") {return "off"} elsif (ReadingsVal("MQTT_EMSwp","boiler_data_hpactivity","") eq "cooling") {return "cooling"} elsif (ReadingsVal("MQTT_EMSwp","boiler_data_hpactivity","") eq "pool") {return "pool"} elsif (ReadingsVal("MQTT_EMSwp","boiler_data_hpactivity","") eq "pool heating") {return "poolheating"} else {return 0}},
userFn_DriftBias,
userFn_DriftBiasLive,
userFn_DriftFlag,
userFn_DriftIndex,
userFn_DriftLastRecalTime,
userFn_DriftRefBias,
userFn_DriftRefSlope,
userFn_DriftRmseRelRatio,
userFn_DriftScore,
userFn_DriftSlope,
userFn_DriftSlopeLive,
userFn_DriftWindowsize,
userFn_ModelAgeHours,
userFn_RetrainReason,
userFn_RetrainRecommendation
# BEGIN ############# Driftdaten ###################
{
my $fanntyp = 'con';
my $drift_window = AiNeuralVal ($name, $fanntyp, 'DriftWindowSize', '0');
$drift_window = (sprintf("%.2f", $drift_window));
my $drift_score = AiNeuralVal ($name, $fanntyp, 'DriftScore', '0');
$drift_score = (sprintf("%.2f", $drift_score));
my $drift_index = AiNeuralVal ($name, $fanntyp, 'DriftIndex', '0');
$drift_index = (sprintf("%.2f", $drift_index));
my $drift_rmserel = AiNeuralVal ($name, $fanntyp, 'DriftRmseRelRatio', '0');
$drift_rmserel = (sprintf("%.2f", $drift_rmserel));
my $bias_ref = AiNeuralVal ($name, $fanntyp, 'DriftRefBias', '0');
$bias_ref = (sprintf("%.2f", $bias_ref));
my $drift_bias_live = AiNeuralVal ($name, $fanntyp, 'DriftBiasLive', '0');
$drift_bias_live = (sprintf("%.2f", $drift_bias_live));
my $drift_bias = AiNeuralVal ($name, $fanntyp, 'DriftBias', '0');
$drift_bias = (sprintf("%.2f", $drift_bias));
my $drift_flag = AiNeuralVal ($name, $fanntyp, 'DriftFlag', '0');
##$drift_flag = (sprintf("%.2f", $drift_flag));
my $slope_ref = AiNeuralVal ($name, $fanntyp, 'DriftRefSlope', '0');
$slope_ref = (sprintf("%.2f", $slope_ref));
my $slope_live = AiNeuralVal ($name, $fanntyp, 'DriftSlopeLive', '0');
$slope_live = (sprintf("%.2f", $slope_live));
my $drift_slope = AiNeuralVal ($name, $fanntyp, 'DriftSlope', '0');
$drift_slope = (sprintf("%.2f", $drift_slope));
my $model_age = AiNeuralVal ($name, $fanntyp, 'ModelAgeHours', 'fresh_modell');
$model_age = (sprintf("%.2f", $drift_slope));
my $last_recaltm = AiNeuralVal ($name, $fanntyp, 'DriftLastRecalTime', '0');
$last_recaltm = (sprintf("%.2f", $last_recaltm));
my $drift_retrecomd = AiNeuralVal ($name, $fanntyp, 'RetrainRecommendation', 'keine');
my $drift_retreason = AiNeuralVal ($name, $fanntyp, 'RetrainReason', 'keiner');
storeReading ('userFn_DriftWindowsize', $drift_window);
storeReading ('userFn_DriftRmseRelRatio', $drift_rmserel);
storeReading ('userFn_DriftRefSlope', $slope_ref);
storeReading ('userFn_DriftSlopeLive', $slope_live);
storeReading ('userFn_DriftSlope', $drift_slope);
storeReading ('userFn_DriftRefBias', $bias_ref);
storeReading ('userFn_DriftBiasLive', $drift_bias_live);
storeReading ('userFn_DriftBias', $drift_bias);
storeReading ('userFn_DriftScore', $drift_score);
storeReading ('userFn_DriftIndex', $drift_index);
storeReading ('userFn_DriftFlag', $drift_flag);
storeReading ('userFn_DriftModelAgeHours', $model_age);
storeReading ('userFn_DriftLastRecalTime', $last_recaltm);
storeReading ('userFn_DriftRetrainRecommendation', $drift_retrecomd);
storeReading ('userFn_DriftRetrainReason', $drift_retreason);
}
# END ################# Driftdaten Ende
The AI for forecasting con is not yet operational.
Cause: the neural network for consumption forecasting is just being trained