Verbrauch berechnen mit Solaredge und SDM230
Verfasst: Mi 17. Nov 2021, 17:20
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
mathe.php
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"];
?>
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);
}
?>