Falsche Prognosedaten automatisch löschen

Alle zusätzlichen Module, die in die Solaranzeige integriert wurden, wie den Wetterbericht, die Solarprognose, der Messenger Pushover, Sun & Moon, aWATTar Strompreise und weitere Module.

Moderator: Ulrich

Antworten
etofi
Beiträge: 47
Registriert: Fr 27. Nov 2020, 12:15
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Falsche Prognosedaten automatisch löschen

Beitrag von etofi »

Ich habe beobachtet dass ich über die API von Solarprogose immer die Daten für heute und morgen erhalte.
Bei Aktuallisierung der Prognose werden die alten Daten leider nicht gelöscht.

Konkret bedeutet das heute am 06.12.2020 bekomme ich Werte für 07.12.2020 - 17 Uhr.
Wenn die Prognose sich nun ändert und ich am 07.12.2020 dann nur noch Werte bis 16 Uhr bekomme bleibt leider der falsche 17 Uhr Wert in der InfluxDB bestehen.

Das macht dann Probleme wenn man den Vorhersagebetrag für den heutigen Tag abfragen möchte wenn die Vorhersage nach unten korrigiert wurde.

Code: Alles auswählen

SELECT max("Prognose_Wh") FROM "Wetterprognose" WHERE ("Datum" = '${__from:date:DD.MM.YYYY}') AND $timeFilter
Der ausgegeben Wert ist dann nämlich zu hoch.

Kann man in die "wetterdaten.php" noch was einbauen dass die Werte der übermittelten Tage vor dem schreiben löscht?
So was in der Art.

1. Das Array Daten um den Typ "QueryArt" erweitern.

2. In der Funktion "wetterdaten_speichern" den neuen Parameter hier einbauen

Code: Alles auswählen

    $ch = curl_init('https://'.$daten["InfluxAdresse"].'/'.$daten["QueryArt"].'?db='.$daten["InfluxDBName"].'&precision=s');
  }
  else {
    $ch = curl_init('http://'.$daten["InfluxAdresse"].'/'.$daten["QueryArt"].'?db='.$daten["InfluxDBName"].'&precision=s');
  }
3. Dann nur noch einmal vor dem Schreiben der Daten die Löschung veranlassen (die Query kann man bestimmt noch eleganter machen).

Code: Alles auswählen

$aktuelleDaten["Query"]  = "";
$aktuelleDaten["QueryArt"] = "query"
$aktuelleDaten["Query"] ="DELTE FROM 'Wetterprognose' WHERE ('Datum' = '${__from:date:DD.MM.YYYY}')"
$rc = wetterdaten_speichern($aktuelleDaten);

$aktuelleDaten["Query"]  = "";
$aktuelleDaten["QueryArt"] = "write"

for($i=0; $i < count($Einzelwerte["data"]); $i++) {
  $aktuelleDaten["Prognose_Watt"] = $Einzelwerte["data"][$Keys[$i]][0]*1000;
  $aktuelleDaten["Prognose_kWh"] = $Einzelwerte["data"][$Keys[$i]][1]*1000;
Wäre das machbar?

Grüße
Eric

Antworten