Die frage mit Längengrad, Breitengrad und Höhe bezog sich auf die Wetterstation die theoretisch für mich besser wäre, also sollte ich am selben Längengrad oder am selben Breitengrad suchen. Oder ist die Höhe über dem Meer wichtiger das die zu meinen Daten passt?
Das hat nichts mit Längen/Breiten grad zu tun, sonder mit vergleichbarem Wetter und Klima.
ich muss mit dem elevation auf 0.16 gehen, damit er mir den wert auf 0 runterschaltet bei 8 uhr.
Ich glaube ich werde da dann korrekturwerte für die einzelnen Stunden hinterlegen.
0.16 ist warscheinlich zu scharf, wähle ruhig einen Wert, mit mehr Nachkommastellen. Der große glühende Reaktor ist weit weg und die Zahlen der Astrologie riesig :-)
In einer Funktion für Winkelberechnung hat das nichts zu suchen, da geht es nur um Gültigkeitsbereiche.
Für die Korrekturwerte gibt es dann die Autokorrektur, die anhand der Abweichung der letzten Tage dynamisch eingreift. Auch dort habe ich einen Allgemeinen Faktor eingebaut.
Es müsste dann nur auf Deinen WR mit dem passenden reading konfiguriert werden.
Ich habe mal die 2 Wetterdienste angehalten, damit sich die Werte nicht änderen, (beim DWD verschwinden ja dann irgendwann mal die vergangenen Rad1h werte)
dann werde ich heute abend wenn die PV ISt Kurve fertig ist, mal mit Korrekturwerten spielen.
Das DbRep solltest Du haben:
@days 3 berechnet die Korrektur über die letzten drei tage, das reagiert etwas schneller
@corr 0.7 dämpft die Autokorrektur, damit nicht zu sehr übersteuert wird
@device wäre dann Dein WR
@reading1 die Summe über Deine Realleistung. Ich verwende da die DC Seite, weil bei mir am String 3 ein Speicher hängt.
@reading2 ist der Stundenweise Forecast fc0 , der erstmalig am Morgen erstellt wird. Daraus wird die Abweichung von den Vortagen berechnet.
@readingname ist die Namensbasis der Autokorrektur readings, die dann in der DB beim WR Device eingetragen werden.
defmod LogDBRep_PV_Forecast_SQL DbRep LogDB
attr LogDBRep_PV_Forecast_SQL DbLogExclude .*
attr LogDBRep_PV_Forecast_SQL allowDeletion 1
attr LogDBRep_PV_Forecast_SQL room System
attr LogDBRep_PV_Forecast_SQL sqlCmdHistoryLength 5
attr LogDBRep_PV_Forecast_SQL sqlCmdVars SET @days:=3, @corr:=0.7, @diff:=0, @temp:=0, @device:='PV_1', @reading1:='Total_DC_Power_(sumOfAllPVInputs)', @reading2:='Solar_Calculation_fc0', @readingname:='Solar_Correction_Faktor_auto' ;;
Der Forecast wird dann so gestartet:
PV_1 wäre Dein WR
{Solar_forecast("LogDB","LogDBRep_PV_Forecast_SQL","PV_1","Solar_Calculation_fc","DWD_Forecast",0)}
## auch für den nächsten Tag wird es verwendet
{Solar_forecast("LogDB","LogDBRep_PV_Forecast_SQL","PV_1","Solar_Calculation_fc","DWD_Forecast",1)}
In Deiner *_config musst Du dann die Autokorrektur aktivieren
setreading <Deine>_config forecast_factor_autocorrection 1
Die Autokorrektur kann sofort verwendet werden und hat auch sofort ein Ergebnis, da es direkt auf die letzten "drei" Tage in der Datenbank zugreift. Es muss also nicht erst lange gewartet werden, damit diese "lernt".
Gruß
Christian