Verbrauch berechnen mit Solaredge und SDM230

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

Moderator: Ulrich

StepSolar
Beiträge: 51
Registriert: So 9. Mai 2021, 16:02
Hat sich bedankt: 6 Mal

Verbrauch berechnen mit Solaredge und SDM230

Beitrag von StepSolar »

Hallo an alle,
seit mehreren tagen versuche ich meine _math.php Datei zu erstellen um den Stromverbrauch zu berechnen.
Als ich hierher ging, habe ich viel Material gefunden und alle Anweisungen im PDF-Format gelesen, aber ich kann die Ergebnisse nicht erhalten.
Anfangs kenne ich PHP nicht, ich habe nur versucht zu verstehen, was andere gemacht haben und es an meine Bedürfnisse anzupassen.
Grundsätzlich möchte ich den letzten "Power"-Wert aus der "solarmonitor"-Datenbank (solaredge-Wechselrichter) und den letzten "Power"-Wert aus der "SDM_SSP"-Datenbank (SDM230-Wechselzähler) nehmen und addieren, ich möchte den erhaltenen Wert wird in der Protokolldatei angezeigt und den Wert in einer neuen "HomeManager"-Datenbank (die ich erstellt habe) auf Influxdb gespeichert.
Ich hänge die von mir erstellten Dateien an, ich weiß nicht, ob ich Fehler gemacht habe, und möchte dann wissen, welchen Namen ich der php-Datei im html-Ordner geben muss.
Und wie es laufen soll, muss ich eine neue Datei 4.user.config.php erstellen (da habe ich schon 3, 1 für Wechselrichter, 1 für SDM_SSP, 1 für SDM_PDZ (Produktionszähler)). Vielen Dank

Code: Alles auswählen

#!/usr/bin/php
<?php
/*****************************************************************************
//  Calcolo dei singoli valori per poterli visualizzare in una dashboard
//
*****************************************************************************/
// Salva la temperatura del lampone nel database di Infux
// La temperatura è nella variabile $RaspiTemp
// Se il valore deve essere scritto anche nel file LOG.
$funktionen->log_schreiben("Rasperry Temperatur: ".round($RaspiTemp,1)." °C",">",5);

//  $DB[1] = database dell'inverter Misura: PV
//  $DB[2] = database SDN_230 Misura: AC
//  $DB[3] = database HomeManager di scrittura
//  L'ultima voce dal database viene letta qui e salvata nell'array $DB[1] e $DB[2].

$Datenbank[1] = "solarmonitor"; // database inverter solaredge file 1.user.config.php
$Datenbank[2] = "SDM_SSP";      // database SDM230 meter di scambio file 2.user.config.php
$Datenbank[4] = "HomeManager";  // database di scrittura 4.user.config.php

$Measurement1 = "PV";
$Measurement2 = "AC";


for ($i=1; $i <= count($Datenbank); $i++) {
$ch[$i] = curl_init('http://localhost/query?db='.$Datenbank[$i].'&precision=s&q='.urlencode('select * from '.$Measurement1.' order by time desc limit 1'));

include "mathe.php";
      }

for ($i=1; $i <= count($Datenbank); $i++) {
$ch[$i] = curl_init('http://localhost/query?db='.$Datenbank[$i].'&precision=s&q='.urlencode('select * from '.$Measurement2.' order by time desc limit 1'));

include "mathe.php";
      }

// Qui è stato letto il Datenbank[1] "solarmonitor" Misura "PV" e il Datenbank[2] "SDM_SSP" Misura "AC".
// I dati sono ora nell'array $DB[1] e$DB[2]
// Tutti i dati si trovano nell'array $aktuelleDaten[]

/*****************************************************************************/
//  Il calcolo è ora avviato
//  A scopo di controllo, i valori a livello di traccia = 8 vengono scritti nel file LOG.
/*****************************************************************************/

log_schreiben(" Power_Inverter: ".$DB[1]["Power"],"",8);    // value inverter
log_schreiben(" Power_SSP: ".$DB[2]["Power"],"",8);    // value SDM230
log_schreiben(" Consumo: ".($DB[1]["Power"]+$DB[2]["Power"],"",8); // somma value

// Ecco come viene composta la query aggiuntiva.
// Tutti i dati vengono scritti in una nuova misurazione "Dashboard" nel database di HomeManager.
// Il timestamp è il "timestamp centrale"
// Questo rende la visualizzazione in Grafana molto semplice.
$aktuelleDaten["ZusatzQuery"] = "Dashboard Power_SSP=".$DB[2]["Power"].",Power_PV=".$DB[1]["Power"];
$aktuelleDaten["ZusatzQuery"] .= ",Consumo=".($DB[1]["Power"]+$DB[2]["Power"]);
$aktuelleDaten["ZusatzQuery"] .= ",RaspiTemp=".round($RaspiTemp,1);
$aktuelleDaten["ZusatzQuery"] .= "   ".$aktuelleDaten["zentralerTimestamp"];

?>
mathe.php

Code: Alles auswählen

<?php
curl_setopt($ch[$i], CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch[$i], CURLOPT_TIMEOUT, 15);           //timeout in second s
curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, 12);
curl_setopt($ch[$i], CURLOPT_PORT, 8086);
curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, true);

$Ergebnis["result"] = curl_exec($ch[$i]);
$Ergebnis["rc_info"] = curl_getinfo ($ch[$i]);
$Ergebnis["JSON_Ausgabe"] = json_decode($Ergebnis["result"],true,10);
$Ergebnis["errorno"] = curl_errno($ch[$i]);

if ($Ergebnis["rc_info"]["http_code"] == 200 or $Ergebnis["rc_info"]["http_code"] == 204) {
  $Ergebnis["Ausgabe"] = true;
}

curl_close($ch[$i]);
unset($ch[$i]);


if (!isset($Ergebnis["JSON_Ausgabe"]["results"][0]["series"])) {
  log_schreiben("Manca il database con la misura, è vuoto.","|- ",3);
  log_schreiben("Fallimento: ".$Ergebnis["JSON_Ausgabe"]["results"][0]["error"],"|- ",4);
}
else {
  for ($h = 1; $h < count($Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["columns"]); $h++)  {
    $DB[$i][$Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["columns"][$h]] = $Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][$h];
  }
  log_schreiben("Database: HomeManager DB4 ".print_r($DB[$i],1),"  ",10);
}
?>
  
  
SSP.jpg
Inverter.jpg

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von solarfanenrico »

Hallo,
Du versuchst mein abgewandeltes script zu verwenden.
Ich werde versuchen es zu erklären.

Wenn Du Werte aus zwei Datenbanken (entsprechen zwie Geräten) addieren möchtest, so wird nur die Datenbank[1] als Angabe benötigt.

Der zweite Wert wird aus den $aktuelleDaten-Werte bezogen.



Die include mathe.php wirst Du nach meinem neuen Vorschlag nicht mehr brauchen.

In der Zwischenzeit habe ich zwei Schleifen eingebaut, die es letzlich ermöglichen sehr viele QuellDatenbanken und auch mehrere Measuremts zu addieren.

Du möchtest jedoch nur 2 Werte aus zwei Geräten verbinden.

Das ist relativ einfach, wenn ich folgende Angaben erhalte.

Regler Nr. des 1. und 2. Reglers.

sind wirklich die Measurements PV und AC beteiligt, und wie heißen diese Spalten, die addiert werden sollen ?

Muß dafür eine neue Datenbank gemacht werden, oder genügt es nicht wenn diese 1 Summe in einem Measuremt "Dashboard" zusammen mit der Raspi-Temperatur in beiden Datenbanken abgefragt wird?

Edit:
habe in den Bildern gesehen, daß PV und AC beteiligt ist.
Enrico

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von solarfanenrico »

Hallo,
aus den Bildern konnte ich zusätzlich entnehmen, daß diese Statistik nicht aus der solaranzeige.de stammen kann.

In den Measurements der InfluxDB's der Regler-Nr. 16, 20 und 34 tauchen die Begriffe "Power" nicht auf, bzw. ich finde sie nicht.

Enrico

StepSolar
Beiträge: 51
Registriert: So 9. Mai 2021, 16:02
Hat sich bedankt: 6 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von StepSolar »

Ich möchte jetzt wirklich den Verbrauch abrufen und auf influxdb speichern, aber ich möchte andere Werte abrufen und speichern, wie zum Beispiel:
Prozent des Tagesverbrauchs, Eingabe des Tages, Eigenverbrauch des Tages des Monats und des Jahres, und vieles mehr, um die Grafik mit Monat, Jahr erstellen und auch die Differenzen zwischen Monaten und Jahren vornehmen zu können

StepSolar
Beiträge: 51
Registriert: So 9. Mai 2021, 16:02
Hat sich bedankt: 6 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von StepSolar »

solarfanenrico hat geschrieben:
Mi 17. Nov 2021, 18:14
Hallo,
aus den Bildern konnte ich zusätzlich entnehmen, daß diese Statistik nicht aus der solaranzeige.de stammen kann.

In den Measurements der InfluxDB's der Regler-Nr. 16, 20 und 34 tauchen die Begriffe "Power" nicht auf, bzw. ich finde sie nicht.

Enrico
Ich kann kein Deutsch, und ich habe es vorgezogen, die Begriffe auf Englisch zu ändern, indem ich auch die Datei funktionen.inc.php editiere (ich weiß gut, dass es mit einem Update monisiert werden könnte)

StepSolar
Beiträge: 51
Registriert: So 9. Mai 2021, 16:02
Hat sich bedankt: 6 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von StepSolar »

solarfanenrico hat geschrieben:
Mi 17. Nov 2021, 17:55
Hallo,
Du versuchst mein abgewandeltes script zu verwenden.
Ich werde versuchen es zu erklären.

Wenn Du Werte aus zwei Datenbanken (entsprechen zwie Geräten) addieren möchtest, so wird nur die Datenbank[1] als Angabe benötigt.

Der zweite Wert wird aus den $aktuelleDaten-Werte bezogen.



Die include mathe.php wirst Du nach meinem neuen Vorschlag nicht mehr brauchen.

In der Zwischenzeit habe ich zwei Schleifen eingebaut, die es letzlich ermöglichen sehr viele QuellDatenbanken und auch mehrere Measuremts zu addieren.

Du möchtest jedoch nur 2 Werte aus zwei Geräten verbinden.

Das ist relativ einfach, wenn ich folgende Angaben erhalte.

Regler Nr. des 1. und 2. Reglers.

sind wirklich die Measurements PV und AC beteiligt, und wie heißen diese Spalten, die addiert werden sollen ?

Muß dafür eine neue Datenbank gemacht werden, oder genügt es nicht wenn diese 1 Summe in einem Measuremt "Dashboard" zusammen mit der Raspi-Temperatur in beiden Datenbanken abgefragt wird?

Edit:
habe in den Bildern gesehen, daß PV und AC beteiligt ist.
Enrico
Wie kann ich der Datei sagen, dass sie in die Datenbank "HomeManager" schreiben soll?

Wie bekomme ich diese PHP-Datei zum Laufen?

Was soll ich in der PHP-Datei ändern?

soll ich es SDM230_meter_math.php nennen?

Vielen Dank

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von solarfanenrico »

Wie kann ich der Datei sagen, dass sie in die Datenbank "HomeManager" schreiben soll?
Dies schreibt man in die entsprechende _math.php, leider kann ich es nicht, und meine Rätschläge enden hier.
Ich kann es in beide laufenden InfluxDB als separates Measurement eintragen. Von dort könnte es problemlos wieder ausgelesen werden.
Wie bekomme ich diese PHP-Datei zum Laufen?
indem man sich Hilfe sucht, und die Fragen beantwortet. Inzwischen habe ich eine weitere.
Nutzt Du das solaranzegen-image auf dem Raspberry, oder liest Du anders aus, und bist hier quasi nur angemeldet?
Was soll ich in der PHP-Datei ändern?
Das kann man erst nach der Beantwortung der entsprechenden Fragen sagen
soll ich es SDM230_meter_math.php nennen?
Die _math.php wird nach der ersten auszulesenden Datei benannt, solange das Auslesen über solaranzeige. de erfolgt
Die zweite liefert nur die aktuellen Daten.

Summand(DB[1]) + Summand($aktuelleDaten) = Summe (mehr ist es nicht)
Ohne Speicherung kann man sich dies sogar mit select im akuellen Dashboard anzeigen.
aber dies kann ich nur das das Auslesen mit dem Pi über solaranzeige realisieren. Aber auch erst, wenn ich Antworten habe

Enrico

StepSolar
Beiträge: 51
Registriert: So 9. Mai 2021, 16:02
Hat sich bedankt: 6 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von StepSolar »

Ich verwende ein Solaranzegen-Image, das über Docker auf Himbeere installiert ist.

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von solarfanenrico »

StepSolar hat geschrieben:
Mi 17. Nov 2021, 20:51
Ich verwende ein Solaranzegen-Image, das über Docker auf Himbeere installiert ist.
keine der Fragen beantwortet, ich sehe einen Troll.
Danke und aus.

StepSolar
Beiträge: 51
Registriert: So 9. Mai 2021, 16:02
Hat sich bedankt: 6 Mal

Re: Verbrauch berechnen mit Solaredge und SDM230

Beitrag von StepSolar »

es kann in einen neuen separaten Takt eingefügt werden

Antworten