Monatsauswertung

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

Antworten
Gerd
Beiträge: 137
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 5 Mal
Danksagung erhalten: 7 Mal

Monatsauswertung

Beitrag von Gerd »

nachdem ich mich die letzten Tage erneut über die unglückliche „Monatsauswertung“ ein wenig geärgert habe.
Das Problem das vorherrscht, liegt an unserer Datenbank, die keine Abgrenzung nach Monaten kann.
Sondern kennt nur vier Wochen oder alternativ 30 Tage. Was zu einer täglichen Verfälschung der Ergebnisse in die Vergangenheit führt.
2022-09-27_11h48_27 (2).png
So habe ich mich gestern hingesetzt und eine für mich einfache Lösung geschrieben.
An dieser möchte ich euch teilhaben lassen.

Da ich wirklich kein PHP beherrsche, könnte dieses kleine Script vielleicht auch eine Anregung an unsere Künstler hier sein.

Hier die Zeilen, die mir die Informationen in eine DB schreiben
Das komplette Script, findet ihr später unten im Anhang.

Code: Alles auswählen

$date = new DateTime(date('Y-m-01'));  		//Tag auf den 1st des Monats setzten

$query .= "longM-0=\"".$date->format('Y-m-d')."\"";
$query .= ",medM-0=\"".$date->format('m-d')."\"";
$query .= ",shortM-0=\"".$date->format('My')."\"";

for ($i = 1; $i <= 12; $i++ )
  {
	$fieldN1 = ",longM-". $i;
  	$fieldN2 = ",medM-". $i;
  	$fieldN3 = ",shortM-". $i;
	
	$date->modify("-1 month");
	
	$query .= $fieldN1 . "=\"".$date->format('Y-m-d')."\"";	//  2022-09-01
	$query .= $fieldN2 . "=\"".$date->format('m-d')."\"";	//  09-01
	$query .= $fieldN3 . "=\"".$date->format('My')."\"";	//  Sep22
	
  }	

$query .= "/n";

// echo $query;

  $result = writeData($query, $InfluxPar);
   log_schreiben("Lokal: ".$result,"|* ",$Tracelevel);

// Echo $result;

return;

  function writeData($postData, $InfluxPar )  {

Über die Variablen, die man in Grafana anlegen kann, stehen diese Zeitbereiche für Abfragen zur Verfügung.
2022-10-01_11h38_55.png
2022-10-01_11h38_55.png (25.83 KiB) 811 mal betrachtet
Im Grafana Editor können diese Variablen in der Abfrage als auch Alias verwendet werden.
2022-10-01_11h37_32.png
Diese Lösung läuft seit gestern auf meinem Testsystem.
Jetzt nach dem Monatswechsel sieht es schon mal nicht so schlecht aus ;)

Es lassen sich auch zur Beschriftung unterschiedliche Arten verwenden, die ihr auch selbst anpassen könnt.
2022-10-01_11h42_35.png
2022-10-01_11h42_35.png (20.06 KiB) 811 mal betrachtet
2022-10-01_11h43_07.png
2022-10-01_11h43_07.png (22.87 KiB) 811 mal betrachtet
2022-10-01_11h44_03.png
2022-10-01_11h44_03.png (16.21 KiB) 811 mal betrachtet
Damit der Batch automatisch zum Monatsletzten ausgeführt wird hier der Cronjob
2022-10-01_11h48_53.png
2022-10-01_11h48_53.png (2.07 KiB) 811 mal betrachtet
Die Endung ".txt" der Anhängenden Datei entfernen und in euer "html" Verzeichnis unter : ../var/www/html speichern.

Zum testen und zum Anlegen der Variablen, einmalig ausführen ...und schon kann es losgehen

CU
Dateianhänge
myPeriod.php.txt
(4.86 KiB) 143-mal heruntergeladen
Cu Gerd
My Coffee is always #000000!

Benutzeravatar
ps1304@fn.de
Beiträge: 102
Registriert: Mi 7. Okt 2020, 17:59
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Monatsauswertung

Beitrag von ps1304@fn.de »

Hallo Gerd, php kopiert und gestartet - Werte wurden in DB geschrieben. Varaiablen angelegt:
php-variable.png
Mit folgender Abfrage:
SELECT integral("Verbrauch",1h) FROM "AC" WHERE time >= '$(shortM_1)' AND time < '$(shortM_0)' tz('Europe/Berlin')
stoße ich auf einen Fehler:
InfluxDB Error: invalid operation: time and *influxql.StringLiteral are not compatible

Hast Du ne Idee?

Gruß Peter
Peter - (E3DC S10 + ext.WR / Akku 13kWh / 22,525 kwp)

kai9555
Beiträge: 40
Registriert: Di 1. Nov 2022, 20:03
Danksagung erhalten: 3 Mal

Re: Monatsauswertung

Beitrag von kai9555 »

Gerd hat geschrieben:
Sa 1. Okt 2022, 11:54
nachdem ich mich die letzten Tage erneut über die unglückliche „Monatsauswertung“ ein wenig geärgert habe.
Das Problem das vorherrscht, liegt an unserer Datenbank, die keine Abgrenzung nach Monaten kann.
Sondern kennt nur vier Wochen oder alternativ 30 Tage. Was zu einer täglichen Verfälschung der Ergebnisse in die Vergangenheit führt.

2022-09-27_11h48_27 (2).png

So habe ich mich gestern hingesetzt und eine für mich einfache Lösung geschrieben.
An dieser möchte ich euch teilhaben lassen.

Da ich wirklich kein PHP beherrsche, könnte dieses kleine Script vielleicht auch eine Anregung an unsere Künstler hier sein.

Hier die Zeilen, die mir die Informationen in eine DB schreiben
Das komplette Script, findet ihr später unten im Anhang.

Code: Alles auswählen

$date = new DateTime(date('Y-m-01'));  		//Tag auf den 1st des Monats setzten

$query .= "longM-0=\"".$date->format('Y-m-d')."\"";
$query .= ",medM-0=\"".$date->format('m-d')."\"";
$query .= ",shortM-0=\"".$date->format('My')."\"";

for ($i = 1; $i <= 12; $i++ )
  {
	$fieldN1 = ",longM-". $i;
  	$fieldN2 = ",medM-". $i;
  	$fieldN3 = ",shortM-". $i;
	
	$date->modify("-1 month");
	
	$query .= $fieldN1 . "=\"".$date->format('Y-m-d')."\"";	//  2022-09-01
	$query .= $fieldN2 . "=\"".$date->format('m-d')."\"";	//  09-01
	$query .= $fieldN3 . "=\"".$date->format('My')."\"";	//  Sep22
	
  }	

$query .= "/n";

// echo $query;

  $result = writeData($query, $InfluxPar);
   log_schreiben("Lokal: ".$result,"|* ",$Tracelevel);

// Echo $result;

return;

  function writeData($postData, $InfluxPar )  {

Über die Variablen, die man in Grafana anlegen kann, stehen diese Zeitbereiche für Abfragen zur Verfügung.

2022-10-01_11h38_55.png

Im Grafana Editor können diese Variablen in der Abfrage als auch Alias verwendet werden.

2022-10-01_11h37_32.png

Diese Lösung läuft seit gestern auf meinem Testsystem.
Jetzt nach dem Monatswechsel sieht es schon mal nicht so schlecht aus ;)

Es lassen sich auch zur Beschriftung unterschiedliche Arten verwenden, die ihr auch selbst anpassen könnt.

2022-10-01_11h42_35.png

2022-10-01_11h43_07.png

2022-10-01_11h44_03.png

Damit der Batch automatisch zum Monatsletzten ausgeführt wird hier der Cronjob

2022-10-01_11h48_53.png

Die Endung ".txt" der Anhängenden Datei entfernen und in euer "html" Verzeichnis unter : ../var/www/html speichern.

Zum testen und zum Anlegen der Variablen, einmalig ausführen ...und schon kann es losgehen

CU
Hallo Gerd, auch mich würde die Monatsauswertung interessieren. Könntest du die Anleitung noch etwas Anfängersicherer gestalten? Wo soll z.B. der Cronjob gespeichert werden? Ich würde mich über eine kleine stichpunktartige Anleitung freuen.Grundkenntnisse sind natürlich vorhanden, sonst würde meine Multiregleranlage nicht laufen :)

Danke dir

Antworten

Zurück zu „Allgemeines“