Re: Verbrauch berechnen mit Solaredge und SDM230
Verfasst: Mi 17. Nov 2021, 22:41
Sorry, aber ich verstehe deine Fragen nicht. Ich übersetze aus dem Deutschen ins Italienische, vielleicht ist es schlecht übersetzt
Support Forum für die Anzeige von BMS, Solarreglern, Wechselrichtern, Pelletöfen, Wärmepumpen usw.
https://solaranzeige.de/phpBB3/
Code: Alles auswählen
#!/usr/bin/php
<?php
/*****************************************************************************
// Solaranzeige Projekt Copyright (C) [2015-2016] [Ulrich Kunz]
//
// Dieses Programm ist freie Software. Sie können es unter den Bedingungen
// der GNU General Public License, wie von der Free Software Foundation
// veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß
// Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
//
// Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es
// Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne
// die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN
// BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
//
// Ein original Exemplar der GNU General Public License finden Sie hier:
// http://www.gnu.org/licenses/
//
// Dies ist ein Programmteil des Programms "Solaranzeige"
//
// Es dient dem Auslesen der Regler der Tracer Serie über die USB Schnittstelle
// Das Auslesen wird hier mit einer Schleife durchgeführt. Wie oft die Daten
// ausgelesen und gespeichert werden steht in der user.config.php
//
//
*****************************************************************************/
$path_parts = pathinfo($argv[0]);
$Pfad = $path_parts['dirname'];
if (!is_file($Pfad."/1.user.config.php")) {
// Es ist kein Multi Regler System!
require($Pfad."/user.config.php");
}
require_once($Pfad."/phpinc/funktionen.inc.php");
if (!isset($funktionen)) {
$funktionen = new funktionen();
}
// Im Fall, dass man die Device manuell eingeben muss
if (isset($USBDevice) and !empty($USBDevice)) {
$USBRegler = $USBDevice;
}
$Tracelevel = 7; // 1 bis 10 10 = Debug
$Version = "";
$Device = "ME"; // ME = Smart Meter
$RemoteDaten = true;
if (empty($WR_Adresse)) {
$WR_ID = "01";
}
elseif(strlen($WR_Adresse) == 1) {
$WR_ID = str_pad($WR_Adresse,2,"0",STR_PAD_LEFT);
}
else {
$WR_ID = str_pad(substr($WR_Adresse,-2),2,"0",STR_PAD_LEFT);
}
$funktionen->log_schreiben("WR_ID: ".$WR_ID,"+ ",7);
$Befehl = array(
"DeviceID" => $WR_ID,
"BefehlFunctionCode" => "04",
"RegisterAddress" => "3001",
"RegisterCount" => "0001" );
$Start = time(); // Timestamp festhalten
$funktionen->log_schreiben("--------- Start SDM230_meter.php ------------------------- ","|--",6);
setlocale(LC_TIME,"de_DE.utf8");
$funktionen->log_schreiben("Zentraler Timestamp: ".$zentralerTimestamp," ",8);
$aktuelleDaten = array();
$aktuelleDaten["zentralerTimestamp"] = $zentralerTimestamp;
// Hardware Version ermitteln.
$Teile = explode(" ",$Platine);
if ($Teile[1] == "Pi") {
$Version = trim($Teile[2]);
if ($Teile[3] == "Model") {
$Version .= trim($Teile[4]);
if ($Teile[5] == "Plus") {
$Version .= trim($Teile[5]);
}
}
}
$funktionen->log_schreiben("Hardware Version: ".$Version,"o ",8);
switch($Version) {
case "2B":
break;
case "3B":
break;
case "3BPlus":
break;
case "4B":
break;
default:
break;
}
// Nach em Öffnen des Port muss sofort der Regler ausgelesen werden, sonst
// sendet er asynchrone Daten!
$USB1 = $funktionen->openUSB($USBRegler);
if (!is_resource($USB1)) {
$funktionen->log_schreiben("USB Port kann nicht geöffnet werden. [1]","XX ",7);
$funktionen->log_schreiben("Exit.... ","XX ",7);
goto Ausgang;
}
$i = 1;
do {
$funktionen->log_schreiben("Die Daten werden ausgelesen...","> ",9);
/**************************************************************************
// Ab hier wird der Energy Meter ausgelesen.
//
// Ergebniswerte:
//
//
**************************************************************************/
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0000";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Voltage"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0006";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Current"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "000C";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Power"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0012";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Scheinleistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0018";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Blindleistung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "001E";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["PF_Power_Factor"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0024";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["AC_Phasenverschiebung"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0046";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Frequency"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0048";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Wh_Import"] = ($rc*1000);
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "004A";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Wh_Export"] = ($rc*1000);
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0054";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Total_energy_power-demand"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0058";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Import"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "005C";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Export"] = $rc;
$Befehl["DeviceID"] = $WR_ID;
$Befehl["RegisterAddress"] = "0156";
$Befehl["BefehlFunctionCode"] = "04";
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->sdm_auslesen($USB1,$Befehl);
$aktuelleDaten["Total_active_energy"] = ($rc*1000);
$funktionen->log_schreiben("AC Power: ".$aktuelleDaten["AC_Power"]." Watt"," ",6);
/**************************************************************************
// Falls ein ErrorCode vorliegt, wird er hier in einen lesbaren
// Text umgewandelt, sodass er als Fehlermeldung gesendet werden kann.
// Die Funktion ist noch nicht überall implementiert.
**************************************************************************/
$FehlermeldungText = "";
/****************************************************************************
// Die Daten werden für die Speicherung vorbereitet.
****************************************************************************/
$aktuelleDaten["Regler"] = $Regler;
$aktuelleDaten["Objekt"] = $Objekt;
$aktuelleDaten["Firmware"] = 0;
$aktuelleDaten["Produkt"] = "SDM230";
$aktuelleDaten["WattstundenGesamtHeute"] = 0; // dummy
$aktuelleDaten["zentralerTimestamp"] = ($aktuelleDaten["zentralerTimestamp"]+10);
if ($i == 1)
$funktionen->log_schreiben(var_export($aktuelleDaten,1)," ",8);
/****************************************************************************
// User PHP Script, falls gewünscht oder nötig
****************************************************************************/
if ( file_exists ("/var/www/html/SDM230_meter_math.php")) {
include 'SDM230_meter_math.php'; // Falls etwas neu berechnet werden muss.
}
/**************************************************************************
// Alle ausgelesenen Daten werden hier bei Bedarf als mqtt Messages
// an den mqtt-Broker Mosquitto gesendet.
// Achtung! Die Übertragung dauert ca. 30 Sekunden!
**************************************************************************/
if ($MQTT and $i == 1) {
$funktionen->log_schreiben("MQTT Daten zum [ $MQTTBroker ] senden."," ",1);
require($Pfad."/mqtt_senden.php");
}
/****************************************************************************
// Zeit und Datum
****************************************************************************/
// Der Regler hat keine interne Uhr! Deshalb werden die Daten vom Raspberry benutzt.
$aktuelleDaten["Timestamp"] = time();
$aktuelleDaten["Monat"] = date("n");
$aktuelleDaten["Woche"] = date("W");
$aktuelleDaten["Wochentag"] = strftime("%A",time());
$aktuelleDaten["Datum"] = date("d.m.Y");
$aktuelleDaten["Uhrzeit"] = date("H:i:s");
/****************************************************************************
// InfluxDB Zugangsdaten ...stehen in der user.config.php
// falls nicht, sind das hier die default Werte.
****************************************************************************/
$aktuelleDaten["InfluxAdresse"] = $InfluxAdresse;
$aktuelleDaten["InfluxPort"] = $InfluxPort;
$aktuelleDaten["InfluxUser"] = $InfluxUser;
$aktuelleDaten["InfluxPassword"] = $InfluxPassword;
$aktuelleDaten["InfluxDBName"] = $InfluxDBName;
$aktuelleDaten["InfluxDaylight"] = $InfluxDaylight;
$aktuelleDaten["InfluxDBLokal"] = $InfluxDBLokal;
$aktuelleDaten["InfluxSSL"] = $InfluxSSL;
$aktuelleDaten["Demodaten"] = false;
/*********************************************************************
// Daten werden in die Influx Datenbank gespeichert.
// Lokal und Remote bei Bedarf.
*********************************************************************/
if ($InfluxDB_remote) {
// Test ob die Remote Verbindung zur Verfügung steht.
if ($RemoteDaten) {
$rc = $funktionen->influx_remote_test();
if ($rc) {
$rc = $funktionen->influx_remote($aktuelleDaten);
if ($rc) {
$RemoteDaten = false;
}
}
else {
$RemoteDaten = false;
}
}
if ($InfluxDB_local) {
$rc = $funktionen->influx_local($aktuelleDaten);
}
}
else {
$rc = $funktionen->influx_local($aktuelleDaten);
}
if (is_file($Pfad."/1.user.config.php")) {
// Ausgang Multi-Regler-Version
$Zeitspanne = (9 - (time() - $Start));
$funktionen->log_schreiben("Multi-Regler-Ausgang. ".$Zeitspanne," ",2);
if ($Zeitspanne > 0) {
sleep($Zeitspanne);
}
break;
}
else {
$funktionen->log_schreiben("Schleife: ".($i)." Zeitspanne: ".(floor((56 - (time() - $Start))/($Wiederholungen-$i+1)))," ",9);
sleep(floor((56 - (time() - $Start))/($Wiederholungen-$i+1)));
}
if ($Wiederholungen <= $i or $i >= 6) {
$funktionen->log_schreiben("OK. Daten gelesen."," ",9);
$funktionen->log_schreiben("Schleife ".$i." Ausgang..."," ",8);
break;
}
$i++;
} while (($Start + 56) > time());
if (isset($aktuelleDaten["Firmware"]) and isset($aktuelleDaten["Regler"])) {
/*********************************************************************
// Jede Minute werden bei Bedarf einige Werte zur Homematic Zentrale
// übertragen.
*********************************************************************/
if (isset($Homematic) and $Homematic == true) {
$funktionen->log_schreiben("Daten werden zur HomeMatic übertragen..."," ",8);
require($Pfad."/homematic.php");
}
/*********************************************************************
// Sollen Nachrichten an einen Messenger gesendet werden?
// Bei einer Multi-Regler-Version sollte diese Funktion nur bei einem
// Gerät aktiviert sein.
*********************************************************************/
if (isset($Messenger) and $Messenger == true) {
$funktionen->log_schreiben("Nachrichten versenden..."," ",8);
require($Pfad."/meldungen_senden.php");
}
$funktionen->log_schreiben("OK. Trasferimento dati riuscito."," ",7);
}
else {
$funktionen->log_schreiben("Nessun dato valido ricevuto.","!! ",6);
}
Ausgang:
$funktionen->log_schreiben("--------- Stop SDM230_meter.php ----------------------- ","|--",6);
return;
?>
Code: Alles auswählen
if (date( "i" ) == '00' or date( "i" ) == '10' or date( "i" ) == '20' or date( "i" ) == '30' or date( "i" ) == '40' or date( "i" ) == '50') {
// if (1 == 1) {
//$this->log_schreiben("Aktuelle Statistik:\n".print_r($daten,1)," ",9);
$this->log_schreiben( "Alle 10 Minuten werden die Statistikdaten übertragen.", " ", 5 );
$query = "Statistics Description=\"WhTag\",Date=\"".$daten['Datum']."\",Week=".$daten['Woche'].",Month=".$daten['Monat'];
$query .= ",Value=".$daten["WattstundenGesamtHeute"].",Weekday=\"".$daten['Wochentag']."\"";
$query .= ",Today_TS=".mktime( 0, 0, 0, date( "m" ), date( "d" ), date( "Y" ))."000000000";
$query .= ",Yesterday_TS=".mktime( 0, 0, 0, date( "m" ), date( "d" ) - 1, date( "Y" ))."000000000";
$query .= ",This_Year_TS=".mktime( 0, 0, 0, 1, 1, date( "Y" ))."000000000";
$query .= ",Last_Year_TS=".mktime( 0, 0, 0, 1, 1, date( "Y" ) - 1 )."000000000";
$query .= ",This_Month_TS=".mktime( 0, 0, 0, date( "m" ), 1, date( "Y" ))."000000000";
$query .= ",Last_Month_TS=".mktime( 0, 0, 0, date( "m" ) - 1, 1, date( "Y" ))."000000000";
$query .= ",This_Week_TS=".strtotime( "last monday" )."000000000";
$query .= ",Last_Week_TS=".strtotime( "last monday -7 days" )."000000000";
$query .= ",Day_of_month=".date( "j" );
$query .= ",Day_of_year=".(date( "z" ) + 1);
$query .= ",Year=".date( "Y" );
$query .= ",Hour=".date( "G" );
$query .= " ".$daten["zentralerTimestamp"];
$ch = curl_init( 'http://localhost/write?db='.$daten["InfluxDBLokal"].'&precision=s' );
$i = 1;
//
//
//
//
////// SD230
if (date( "i" ) == "01" or $daten["Demodaten"] or date( "H" ) == date( "H", $Sonnenaufgang )) {
$query .= "Info ";
$query .= "Firmware=\"".$daten["Firmware"]."\"";
$query .= ",Product=\"".$daten["Modell"]."\"";
$query .= ",Object=\"".$daten["Objekt"]."\"";
$query .= ",Date=\"".$daten["Datum"]."\"";
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n";
}
$query .= "AC ";
if ($daten["Regler"] == 50) {
$query .= "Voltage=".$daten["AC_Voltage"];
}
else {
$query .= "Voltage=".$daten["AC_Spannung_R"];
}
$query .= ",Current=".$daten["AC_Current"];
$query .= ",Frequency=".$daten["Frequency"];
$query .= ",Power=".$daten["AC_Power"];
$query .= ",Power_Factor=".$daten["PF_Power_Factor"];
if ($daten["Regler"] == 34 or $daten["Regler"] == 51 or $daten["Regler"] == 53 or $daten["Regler"] == 54 or $daten["Regler"] == 61) {
$query .= ",Voltage_R=".$daten["AC_Spannung_R"];
$query .= ",Voltage_S=".$daten["AC_Spannung_S"];
$query .= ",Voltage_T=".$daten["AC_Spannung_T"];
$query .= ",Current_R=".$daten["AC_Strom_R"];
$query .= ",Current_S=".$daten["AC_Strom_S"];
$query .= ",Current_T=".$daten["AC_Strom_T"];
$query .= ",Power_R=".$daten["AC_Leistung_R"];
$query .= ",Power_S=".$daten["AC_Leistung_S"];
$query .= ",Power_T=".$daten["AC_Leistung_T"];
$query .= ",Power_Factor_R=".$daten["PF_R"];
$query .= ",Power_Factor_S=".$daten["PF_S"];
$query .= ",Power_Factor_T=".$daten["PF_T"];
}
if ($daten["Regler"] == 50 or $daten["Regler"] == 51 or $daten["Regler"] == 54 or $daten["Regler"] == 61) {
$query .= ",Import=".$daten["Import"];
$query .= ",Export=".$daten["Export"];
}
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n"; // *
$query .= "Total_energy ";
$query .= "Total_active_energy=".$daten["Total_active_energy"];
$query .= ",Wh_Import=".round( $daten["Wh_Import"], 1 );
$query .= ",Wh_Export=".$daten["Wh_Export"];
$query .= ",Total_energy_requirement=".$daten["Total_energy_power-demand"];
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n";
break;
//
//
//
//
//
// Solaredge
/* SolarEdge */
case 16:
if (date( "i" ) == "01" or $daten["Demodaten"] or date( "H" ) == date( "H", $Sonnenaufgang )) {
$query .= "Info ";
$query .= "Firmware=".$daten["Firmware"];
$query .= ",Product=\"".$daten["Modell"]."\"";
$query .= ",Object=\"".$daten["Objekt"]."\"";
$query .= ",Date=\"".$daten["Datum"]."\"";
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n"; // *
}
if (isset($daten["Batterie1Modell"])) {
$query .= "Batterie ";
$query .= "SOC=".$daten["Batterie1StatusSOE"];
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n"; // * $query .= "Batterie_1 ";
$query .= "Batterie_1 ";
$query .= "Temperature=".$daten["Batterie1Temp"];
$query .= ",Voltage=".$daten["Batterie1Spannung"];
$query .= ",Current=".$daten["Batterie1Strom"];
$query .= ",Power=".$daten["Batterie1Leistung"];
$query .= ",SOH=".$daten["Batterie1StatusSOH"];
$query .= ",SOE=".$daten["Batterie1StatusSOE"];
$query .= ",Status=".$daten["Batterie1Status"];
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n"; // *
}
if (isset($daten["Batterie2Modell"])) {
$query .= "Batterie_2 ";
$query .= "Temperature=".$daten["Batterie2Temp"];
$query .= ",Voltage=".$daten["Batterie2Spannung"];
$query .= ",Current=".$daten["Batterie2Strom"];
$query .= ",Power=".$daten["Batterie2Leistung"];
$query .= ",SOH=".$daten["Batterie2StatusSOH"];
$query .= ",SOE=".$daten["Batterie2StatusSOE"];
$query .= ",Status=".$daten["Batterie2Status"];
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n"; // *
}
$query .= "AC ";
$query .= "Voltage=".$daten["M1_AC_Spannung"];
$query .= ",Voltage_R=".$daten["AC_Spannung_R"];
$query .= ",Voltage_S=".$daten["AC_Spannung_S"];
$query .= ",Voltage_T=".$daten["AC_Spannung_T"];
$query .= ",Frequency=".$daten["AC_Frequenz"];
$query .= ",Power=".$daten["AC_Leistung"];
$query .= ",Apparent_power=".$daten["AC_Scheinleistung"];
$query .= ",Real_power=".$daten["AC_Wirkleistung"];
$query .= ",Efficiency=".$daten["AC_Leistung_Prozent"];
$query .= ",Consumption=".$daten["AC_Verbrauch"];
$query .= ",Import=".$daten["AC_Bezug"];
$query .= ",Export=".$daten["AC_Einspeisung"];
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n"; // *
$query .= "PV ";
$query .= "Voltage=".$daten["DC_Spannung"];
$query .= ",Power=".$daten["PV_Leistung"];
$query .= ",Current=".$daten["DC_Strom"];
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n"; // *
$query .= "Service ";
$query .= "Temperature=".$daten["Temperatur"];
$query .= ",Status=".$daten["Status"];
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n"; // *
$query .= "Total_energy ";
$query .= "Wh_Today=".round( $daten["WattstundenGesamtHeute"], 1 );
$query .= ",Wh_Total=".$daten["AC_Wh_Gesamt"];
$query .= ",Wh_Total_Export=".$daten["M1_AC_Exportgesamt_Wh"];
$query .= ",Wh_Total_Import=".$daten["M1_AC_Importgesamt_Wh"];
if (isset($daten["M2_Version"])) {
$query .= ",Wh_Total_Export_M2=".$daten["M2_AC_Exportgesamt_Wh"];
$query .= ",Wh_Total_Import_M2=".$daten["M2_AC_Importgesamt_Wh"];
}
if (isset($daten["M3_Version"])) {
$query .= ",Wh_Total_Export_M3=".$daten["M3_AC_Exportgesamt_Wh"];
$query .= ",Wh_Total_Import_M3=".$daten["M3_AC_Importgesamt_Wh"];
}
$query .= " ".$daten["zentralerTimestamp"];
$query .= "\n";
break;
Vielen Dank für Ihre Antwort.solarfanenrico hat geschrieben: ↑Do 18. Nov 2021, 09:12Inteso,
Io parlo tedesco e tu parli italiano.
dobbiamo iniziare lentamente.
parliamo con frasi semplici.
Faccio solo una domanda al giorno.
Dopodiché aspetto la risposta corretta.
Se questa risposta è sbagliata, non reagirò.
se la risposta è corretta, viene visualizzata la domanda o l'attività successiva.
Il compito è legato alla tua collaborazione.
Continuerò solo se collaborerai anche tu.
Enrico
Danke TeamO für die Antwort.TeamO hat geschrieben: ↑Do 18. Nov 2021, 09:39Das ist hier mal wieder sinnfrei was Du machst Enrico. Zwei Seite geschrieben ohne das Du überhaupt was verstanden hast oder helfen konntest.
Zwei Punkte von mir:
1. ist es nicht hilfreich jetzt hier auf einmal mit Italienisch anzufangen
2. ist das was StepSolar möchte ganz einfach und mit zwei Dateien erledigt.
Ich habe so etwas schon für jemand anderen gebaut und schreibe das um.
Gebt mir bitte etwas Zeit, dann stelle ich die Dateien zum testen für StepSolar ein.
Gruß
Timo
Vielen DankTeamO hat geschrieben: ↑Do 18. Nov 2021, 13:48Eine mehrsprachige Konfigurations-Datei würde hier nicht viel helfen, da hier ja spezielle Abfragen gewünscht sind,he auf die festen Namen in der Datenbank gehen. Dazu müssten alle Dateien und Bezeichungen angepasst werden. Das ist zu viel Aufwand.
Anbei mal zwei Dateien zum testen. Beide müssen direkt in /var/www/html
Mit der SDM230_meter_math.php wird der letzte Wert "Power" von der Datenbank "solarmonitor" aus dem Measurement "PV" ausgelesen und mit dem aktuellen Wert "AC_Power" vom SDM230 addiert. Das Ergebnis wird dann mit der eigenenfunktionen.php in die Datenbank "HomeManager" im Measurement "Power" als Wert "Power_consumption" gespeichert.
Gruß
Timo
SDM230_meter_math.phpeigenefunktionen.php
Ihre Datei funktioniert, aber sie liest keine Daten aus zwei Datenbanken.TeamO hat geschrieben: ↑Do 18. Nov 2021, 13:48Eine mehrsprachige Konfigurations-Datei würde hier nicht viel helfen, da hier ja spezielle Abfragen gewünscht sind,he auf die festen Namen in der Datenbank gehen. Dazu müssten alle Dateien und Bezeichungen angepasst werden. Das ist zu viel Aufwand.
Anbei mal zwei Dateien zum testen. Beide müssen direkt in /var/www/html
Mit der SDM230_meter_math.php wird der letzte Wert "Power" von der Datenbank "solarmonitor" aus dem Measurement "PV" ausgelesen und mit dem aktuellen Wert "AC_Power" vom SDM230 addiert. Das Ergebnis wird dann mit der eigenenfunktionen.php in die Datenbank "HomeManager" im Measurement "Power" als Wert "Power_consumption" gespeichert.
Gruß
Timo
SDM230_meter_math.phpeigenefunktionen.php
Code: Alles auswählen
$i = 1;
{
$Datenbank1 = "solarmonitor";
$Measurement1 = "PV";
$ch = curl_init('http://localhost/query?db='.$Datenbank1.'&precision=s&q='.urlencode('select * from '.$Measurement1.' order by time desc limit 1'));
$Datenbank2 = "SDM_SSP";
$Measurement2 = "AC";
$ch = curl_init('http://localhost/query?db='.$Datenbank2.'&precision=s&q='.urlencode('select * from '.$Measurement2.' order by time desc limit 1'));