solcast Etragsprognose. Wie mache ich daraus einen Graphen?

Begonnen von westgate, 09 November 2020, 11:05:15

Vorheriges Thema - Nächstes Thema

westgate

Hallo,
ich habe die PV Ertragsprognose von Solcast gefunden. https://solcast.com/

Ich habe es jetzt geschafft die Daten für meine Anlage mit httpmod abzurufen.
Das Ergebniss sind folgende Readings:

forecasts_01_period    PT30M 2020-11-09    08:35:36
forecasts_01_period_end    2020-11-09T08:00:00.0000000Z    2020-11-09 08:35:36
forecasts_01_pv_estimate    2.4609 2020-11-09    08:35:36
forecasts_01_pv_estimate10    0.9762 2020-11-09    08:35:36
forecasts_01_pv_estimate90    2.8927 2020-11-09    08:35:36
forecasts_02_period PT30M    2020-11-09   08:35:36
forecasts_02_period_end    2020-11-09T08:30:00.0000000Z    2020-11-09 08:35:36
forecasts_02_pv_estimate    3.7461    2020-11-09 08:35:36
forecasts_02_pv_estimate10    1.4971    2020-11-09  08:35:36
forecasts_02_pv_estimate90    4.3934    2020-11-09 08:35:36
usw.


Hier die Bedeutung der Attribute aus der Doku von Solcast:
Attributes    Description    Details
pv_estimate    double    PV power estimated in kilowatts (kW)
pv_estimate10    double    PV power estimate in kilowatts (kW) 10th percentile (low scenario)
pv_estimate90    double    PV power estimate in kilowatts (kW) 90th percentile (high scenario)
period_end    datetime    End of the averaging period in ISO8601 datetime format in UTC timezone
period    string    Length of the averaging period in ISO8601 duration format


Wie kann ich hierraus jetzt einen Plot machen?
Mit Filelog und dann Plotten wird es ja wohl nicht funktionieren weil alle Readings zur gleichen Zeit erfasst wurden.

Gruß
Westgate

ch.eick

Hi Westgate,

mit jedem Update des Devices werden die Daten ins Filelog geschrieben und ergeben somit eine Zeitfolge von jedem Wert.
Mit SVG kannst Du dann jeden Wert in zeitlicher Folge plotten.

Wenn Du Daten einer Solaranlage langfristig plotten möchtest, empfehle ich auf die DbLog umzustellen, das geht auch parallel.
Grafana bietet Dir noch umfassendere Möglichkeiten aus der Datenbank zu plotten.

Gerne kannst Du hier und hier Kostal_Plenticore_10_Plus mitmachen.

Prognose/Forcast, Diagramme und DbLog geht auch ohne Plenticore ;-)

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Bette stell auch noch die Definition vom Device hier ein, damit andere auch experimentieren können.

Sind die Daten besser als die vom DWD (Rad1h) auf Stundenbasis?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

westgate

Hallo,

Bei jedem Update werden forecast_01_... bis forecast_99_... abgefragt.
Man bekommt also ab der Anfrage die Vorhersage im Halbstundenrhytmus für ca. 2 Tage.
Allerdings alle mit dem gleichen Zeitstempel.

Beim nächsten Update werden forecast_01_... bis forecast_99_... mit den neuen Werten überschrieben.
Logen macht also keinen Sinn. Ich brauche die alten Forecasts nicht.

forecasts_01_period_end ist der Zeitstempel zum zugehörigen Forecast.

Man müsste also eine Grafik daraus bauen x-Achse die estimates und y-Achse forecasts_01_period_end.

Aber wie geht das mit fhem?

westgate

Solcast scheint auch Wolkendaten Standortgenau mit einzubeziehen. Das sieht sehr interessant aus.
Man kann auch die Tatsächlich erreichten Werte dort hochladen wodurch die Vorhersagen dann besser auf die Anlage angepasst werden sollen.Habe ich allerdings noch nicht versucht.

Bis jetzt schaut die Vorhersage besser aus als die Kostenpflichte Funktion von Fronius Solar Web.

Wie schon geschrieben benutze ich HTTPMOD zur abfrage:
{sprintf("<html><table border=2 bordercolor='darkgreen' cellspacing=0>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
<tr>
<td style='padding-right:5px;padding-left:5px'>%s</td>
<td style='padding-right:5px;padding-left:5px'>%f</td>
</tr>
</table>
</html>",
ReadingsVal("$name","forecasts_01_period_end", ""),
ReadingsVal("$name","forecasts_01_pv_estimate", ""),
ReadingsVal("$name","forecasts_02_period_end", ""),
ReadingsVal("$name","forecasts_02_pv_estimate", ""),
ReadingsVal("$name","forecasts_03_period_end", ""),
ReadingsVal("$name","forecasts_03_pv_estimate", ""),
ReadingsVal("$name","forecasts_04_period_end", ""),
ReadingsVal("$name","forecasts_04_pv_estimate", ""),
ReadingsVal("$name","forecasts_05_period_end", ""),
ReadingsVal("$name","forecasts_05_pv_estimate", ""),
ReadingsVal("$name","forecasts_06_period_end", ""),
ReadingsVal("$name","forecasts_06_pv_estimate", ""),
ReadingsVal("$name","forecasts_07_period_end", ""),
ReadingsVal("$name","forecasts_07_pv_estimate", ""),
ReadingsVal("$name","forecasts_08_period_end", ""),
ReadingsVal("$name","forecasts_08_pv_estimate", ""),
ReadingsVal("$name","forecasts_09_period_end", ""),
ReadingsVal("$name","forecasts_09_pv_estimate", "")
)}


2020-11-09T10:00:00.0000000Z 4.487600
2020-11-09T10:30:00.0000000Z 6.371300
2020-11-09T11:00:00.0000000Z 6.180800
2020-11-09T11:30:00.0000000Z 7.767600
2020-11-09T12:00:00.0000000Z 7.590000
2020-11-09T12:30:00.0000000Z 7.076600
2020-11-09T13:00:00.0000000Z 6.837000
2020-11-09T13:30:00.0000000Z 6.326000
2020-11-09T14:00:00.0000000Z 6.21660


Gruß
Westgate

ch.eick

Dazu könntest Du Dir mal Solar_forecast() von meiner Wiki Seite anschauen.

Du musst in diesem Fall die Einzelnen Werte in einer myUtils Funktion umformatieren und sie wie in meinem Beispiel dann in die DbLog mit dem zugehörigen Zeitstempel schreiben.
Dann kannst Du im Diagramm mit einem einheitlichen reading Namen alle Werte mit den erzeugten Zeiten anzeigen.


forecast_01_... wird dann als "forecast" mit dem TIMESTAMP '2020-11-07 01:00:00' in DbLog geschrieben
forecast_02_... wird dann als "forecast" mit dem TIMESTAMP '2020-11-07 01:30:00' in DbLog geschrieben
forecast_03_... wird dann als "forecast" mit dem TIMESTAMP '2020-11-07 02:00:00' in DbLog geschrieben


Da kommt dann z.B. sowas bei raus, fc0 wird am aktuellen tag geschrieben und fc1 wird heute , für morgen geschrieben.
Sind fc0 und fc1 vorhanden, dann ist das fc1 bereits gestern geschrieben worden. So kann ich die beiden Forecast auch noch miteinander im Diagramm gegenüber stellen.
Im SELECT werden bereits zu erwartende Watt angezeigt.

MySQL [fhem]> select * from history where TIMESTAMP>'2020-11-09 00:04:01' and DEVICE='PV_Anlage_1'and READING like 'Solar_Calculation_fc%' order by READING,TIMESTAMP;
+---------------------+-------------+--------+-----------------------------+-----------------------+-------+------+
| TIMESTAMP           | DEVICE      | TYPE   | EVENT                       | READING               | VALUE | UNIT |
+---------------------+-------------+--------+-----------------------------+-----------------------+-------+------+
| 2020-11-09 07:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 0    | Solar_Calculation_fc0 | 0     |      |
| 2020-11-09 08:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 0    | Solar_Calculation_fc0 | 0     |      |
| 2020-11-09 09:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 987  | Solar_Calculation_fc0 | 987   |      |
| 2020-11-09 10:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 1173 | Solar_Calculation_fc0 | 1173  |      |
| 2020-11-09 11:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 1366 | Solar_Calculation_fc0 | 1366  |      |
| 2020-11-09 12:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 1270 | Solar_Calculation_fc0 | 1270  |      |
| 2020-11-09 13:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 1299 | Solar_Calculation_fc0 | 1299  |      |
| 2020-11-09 14:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 1121 | Solar_Calculation_fc0 | 1121  |      |
| 2020-11-09 15:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 837  | Solar_Calculation_fc0 | 837   |      |
| 2020-11-09 16:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 0    | Solar_Calculation_fc0 | 0     |      |
| 2020-11-09 17:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 0    | Solar_Calculation_fc0 | 0     |      |
| 2020-11-09 18:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 0    | Solar_Calculation_fc0 | 0     |      |
| 2020-11-09 19:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc0: 0    | Solar_Calculation_fc0 | 0     |      |
| 2020-11-09 07:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-09 08:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-09 09:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 981  | Solar_Calculation_fc1 | 981   |      |
| 2020-11-09 10:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 1266 | Solar_Calculation_fc1 | 1266  |      |
| 2020-11-09 11:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 1522 | Solar_Calculation_fc1 | 1522  |      |
| 2020-11-09 12:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 1553 | Solar_Calculation_fc1 | 1553  |      |
| 2020-11-09 13:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 1536 | Solar_Calculation_fc1 | 1536  |      |
| 2020-11-09 14:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 1275 | Solar_Calculation_fc1 | 1275  |      |
| 2020-11-09 15:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 1010 | Solar_Calculation_fc1 | 1010  |      |
| 2020-11-09 16:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-09 17:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-09 18:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-09 19:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-10 07:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-10 08:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-10 09:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 683  | Solar_Calculation_fc1 | 683   |      |
| 2020-11-10 10:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 819  | Solar_Calculation_fc1 | 819   |      |
| 2020-11-10 11:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 908  | Solar_Calculation_fc1 | 908   |      |
| 2020-11-10 12:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 939  | Solar_Calculation_fc1 | 939   |      |
| 2020-11-10 13:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 866  | Solar_Calculation_fc1 | 866   |      |
| 2020-11-10 14:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 662  | Solar_Calculation_fc1 | 662   |      |
| 2020-11-10 15:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 465  | Solar_Calculation_fc1 | 465   |      |
| 2020-11-10 16:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-10 17:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-10 18:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
| 2020-11-10 19:00:00 | PV_Anlage_1 | addlog | Solar_Calculation_fc1: 0    | Solar_Calculation_fc1 | 0     |      |
+---------------------+-------------+--------+-----------------------------+-----------------------+-------+------+


Beim DbLog gibt es auch Funktionen, um bestimmte Werte direkt aus der Datenbank zu lesen, die dann z.B. in einem DOIF verwendet werden können.
Siehe dazu auch das Wiki.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

westgate

@ch.eick
Wow sehr schönes Projekt https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus. Da ich keinen Kostal Wechselrichter habe hatte ich da noch nie hinein gesehen.
Auch deine Doku ist seh schön, dass fehlt ja leider bei vielen FHEM Projekten.

Ich hatte auch einmal mit dem Proplanta Wetter (Globalstrahlung und Wolken) herum experimentiert. Hat leider nur bei klaren Tagen gut funktioniert.

Es gibt noch einen Zweiten Dienst der so ähnlich wie solcast ist. Dieser ist http://forecast.solar/
Aber auch da das gleiche Problem mit der Darstellung.

Gibt es den keine einfachere Lösung das ganze in einem Graphen Darzustellen?
Ich will nicht auch noch eine Datenbank einrichten müssen.  :(

ch.eick

Zitat von: westgate am 09 November 2020, 15:23:22
Gibt es den keine einfachere Lösung das ganze in einem Graphen Darzustellen?
Ich will nicht auch noch eine Datenbank einrichten müssen.  :(
Da habe ich dann auch keine Idee
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

eurofinder

Hallo,

danke für den Hinweis auf solcast, sehr interessant.

Es würde denke ich schon helfen, wenn der "Zeitstempel" für alle Readings von forecasts_XX_period_end im notwendigen Timestamp-Format zum Schreiben in eine DBLog korrekt vorliegen würde. Kann man nicht irgendwie bereits beim Einlesen oder durch userReadings (ist zwar eine Menge Aufwand) das umformatieren?
Also das der Wert von forecasts_01_period_end mit "2020-11-12T15:00:00.0000000Z" umgewandelt wird in "2020-11-12 15:00:00" usw.
Entweder in das gleiche Reading oder die jeweiligen Readings erhalten einen neuen Namen.
Dann könnte man direkt über ein DbLogInclude alle forecasts_XX_period_end + forecasts_XX_pv_estimate in das DBLog schreiben und graphisch ausgeben lassen.

Bin leider nicht so fit im "umformatieren", aber vielleicht ist hier ja jemand, der eine Idee hat.

Gruß
eurofinder
RPI3+; Raspbian Buster Lite; RPI-RF-MOD; piVCCU3, HMIP-eTRV-2, HmIP-SWDO, HmIP-SRH, HmIP-STHO, HmIP-SLO

jual

Hallo Zusammen,

ich bin auch gerade dabei, für mich eine Lösung zu finden, mit der ich eine möglichst gute Prognosefunktion abbilden kann. Dabei bin ich zufälligerweise auch auf Solcast aufmerksam geworden. Leider habe ich das Problem, dass ich eine Ost/West-Ausrichtung mit unterschiedlichen Belegungen habe. Daher experimentiere ich gerade mit eine "Durchschnittsausrichtung" und will demnächst auch das Tuning möglichst automatisiert laufen lassen. Mal sehen, wie gut die Prognose dann ist.

Meine Basis war auch HTTPMOD und ich habe die Json Api genutzt, um mir automatisiert durch HTTPMOD die Readings erzeugen zu lassen. Hier werden jetzt 336 Readings erzeugt, die u.a. die halbstündigen Werte der prognostizierten Leistung darstellen. Nun stand ich auch vor dem Problem, diese Ergebnisse in eine graphische Darstellung zu überführen. Hier bin ich zwar noch nicht ganz fertig, möchte euch aber gerne über meinen Lösungsansatz informieren. Eine gute Basis waren hier die ausführlichen Beschreibungen von ch.eik mit sein "Kostal-Lösung". Für mich war das Thema Plotgrafik und Datenbanklogs allerdings komplett neu. Bisher habe ich nur ein paar recht einfache Grafiken mit dem Editor erstellt.

Die größte Herausforderung aber war es nun, die Daten so zu loggen, dass sie auf der Zeitachse richtig dargestellt werden. Also nicht einen Zeitstempel zu nutzen, der sonst mitgeloggt wird, sondern die Daten von Hand in die DB zu schreiben. Zusätzlich mußß die UTC-Zeit von Solcat in die eigene Zeitzone umgewandelt werden. Ich bin dabei wie folgt vorgegangen:

  • Datenbanken und Phpmyadmin sowie Apache Server auf meinem Raspi installiert (ja, hatte ich bisher noch nicht genutzt)
  • Eine Datenbank zum Loggen in FHEM eingerichtet (siehe auch den Kostal Beitrag bzw. Wiki oder Cmdref)
  • Eine DBRep Datenbank eingerichtet, wie auch im "Kostal Beitrag", damit man einen SQL Delete Befehl absetzen kann
  • Im Netz nach einer Perl Funktion gesucht, die die UTC Umrechnung macht. Hier habe ich echt lange gebraucht, weil das alles nicht so funkioniert bis ich dann selbst eine Lösung hatte

Nachdem also alles für das Logging war vorbereitet, musste nur noch der Code für die Umsetzung realisiert werden. Den Ablauf habe ich mir wie folgt vorgestellt:

  • Jedesmal, wenn HTPMOD neue Daten hat, dann werden die Readings (pv_estimate) in die Datenbank geschrieben
  • Vor dem Log in die Datenbank wird das Reading period_end von utc umgewandelt und so formatiert, wie es für den Timestamp beim Loggen benötigt wird
  • Vor jedem Loggen in die DB lösche ich grundsätzlich alle bisherigen Werte. Damit ggf. die alten Werte noch vorhanden bleiben, lösche ich nur alles, was in der Zukunft liegt. Ich war mir auch nicht sicher, ob bei einem Abruf von Solcast um 12:00 Uhr nochmal die Werte vor 12:00 geladen wurden.
  • mit einem doif rufe ich dann die Logfunktion auf, wenn sich das HTTPMOD Device aktualisiert hat (notify würde auch gehen)

Nun hat man alle Werte in der Datenbank und kann damit entsprechende Plots erzeugen. Nachfolgend mal die beiden wichtigsten Funktionen, die ich in die myutils99 geschrieben habe. Einmal die Zeitumwandlung und dann die Logfunktion.

Mein HTTPMOD Device heißt "SolcastForecast". Der Name im Code müsste also gegen euer Device-Namen ausgetauscht werden. DBLog_PV ist meine DB zum Loggen und DBRep_PV das Device für den DB-Löschbefehl.

In die myutils99 am Anfang einfügen:
use Time::Piece;

Die Funktion zur Zeitumwandlung:
sub utc_to_local {
    my ($utc_ts) = @_;

$utc_ts = substr($utc_ts,0,19);
$utc_ts =~ s/[T]/ /;

    my $utc_tp = Time::Piece->strptime( $utc_ts, '%Y-%m-%d %H:%M:%S' );
    my $local_tp = localtime($utc_tp->epoch);
    return $local_tp->strftime('%Y-%m-%d %H:%M:%S');
}


Die Funktion zum Loggen in die Datenbank:
#
# Forecastwerte aus HTTPMOD SolarForecast in die DB schreiben, um damit ein Plot zu erstellen
#
sub PVForecast_log()
{
   # alle 336 Readings des HTTPMOD Device durchlaufen
   for(my $i=1; $i <= 336; $i++)
   {
      my $reading = "forecasts_";

  # Alte Einträge erst einmal löschen aber nur diejenigen, die in der Zukunft liegen
  my $timedelete  = POSIX::strftime("%Y-%m-%d %H:00:00",localtime()) ;
  fhem "set DBRep_PV sqlCmd delete from history where DEVICE = 'SolcastForecast' AND TIMESTAMP>='".$timedelete."'";

      # die Readings mit der Nummerierung richtig zusammen bauen (führende Nullen bei < 10)
      if($i < 10)
  {
     $reading = $reading."0".$i;
  }
  else
  {
     $reading = $reading.$i;
  }

  # Werte aus dem HTTPMOD Device ermitteln
  my $timestamp = ReadingsVal("SolcastForecast",$reading."_period_end",0);
  my $value = ReadingsVal("SolcastForecast",$reading."_pv_estimate",0);

  #utc Datum in timestamp für dblog umwandeln
  $timestamp = utc_to_local($timestamp);

      # Anmerkung für mich: hier nochmals prüfen, was wirklich richtig ist. Jetzt werden nur die Werte in DB geschrieben, die in der Zukunft liegen
  if(time_str2num($timedelete) < time_str2num($timestamp))
  {
     fhem "set DBLog_PV addCacheLine ".$timestamp."|SolcastForecast|addlog|newForecast:".$i."|pv_estimate|".$value."|";
  }
   }
}


Jetzt werde ich mal testen, wie ich einen optimalen Plot erstellen kann. Dann würde ich meinen SMA Wechselrichter auslesen, um daraus einerseits Vergleichswerte zu den Forecast-Werten zu erstellen (halbstündige PV-Erträge) und die API für das Tuning der PV-Anlage bei Solcast idealerweise automatisiert täglich aufrufen kann.

Ich hoffe, es hilft dem einen oder anderen weiter.

ch.eick

Hey,
hier die Implementierung der Kostal PV Anwender :-)
Kostal Plenticore 10 Plus Wetter Leistungs-Prognose
Das läuft natürlich auch ohne Plenticore.
Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Aurel_B

Ich habe eine kleine Funktion geschrieben die eine Vorschau ermöglicht, Details siehe im "Solcast Thread": https://forum.fhem.de/index.php/topic,122440.15.html

satprofi

Hallo.
Hat wer erklärung wie man die Werte bekommt? Kann nur File downloaden, das nur Zahlen beinhaltet.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Aurel_B


satprofi

Hallo ansguru.
Danke, aber wo finde ich manual für solcast? wie schaffe ich es dort 24h vorhersagen zu erhalten?
Proplanta ist in letzter zeit wirklich unbrauchbar, sagt sonne vorraus die dann nie scheint.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram