Eigene Erweiterungen als verkürzte Version (verständlich)

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen.

Moderatoren: Ulrich, TeamO

Antworten
solarfanenrico
Beiträge: 447
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 26 Mal
Danksagung erhalten: 30 Mal

Eigene Erweiterungen als verkürzte Version (verständlich)

Beitrag von solarfanenrico »

viewtopic.php?f=4&t=1494&p=9445&hilit=b ... rray#p9445

in diesem Thread wurde mir gesagt : es wird wohl nicht gehen.

eine funktionierende Variante:

Code: Alles auswählen

$Datenbank1 = "solaranzeige750";
$Measurement1 = "Summen";
$Measurement2 = "AC";
$ch = curl_init('http://localhost/query?db='.$Datenbank1.'&precision=s&q='.urlencode('select * from '.$Measurement1.' order by time desc limit 1').'&precision=s&q='.urlencode('select * from '.$Measurement2.' order by time desc limit 1'));

 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_TIMEOUT, 15);           //timeout in second s
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 12);
curl_setopt($ch, CURLOPT_PORT, 8086);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

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

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

curl_close($ch);
unset($ch);


if (!isset($Ergebnis["JSON_Ausgabe"]["results"][0]["series"])) {
  log_schreiben("Es fehlt die Datenbank solaranzeige750 mit dem Measurement Summen ist leer.","|- ",3);
  log_schreiben("Fehler: ".$Ergebnis["JSON_Ausgabe"]["results"][0]["error"],"|- ",4);
}
else {
  for ($h = 1; $h < count($Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["columns"]); $h++)  {
    $DB1[$Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["columns"][$h]] = $Ergebnis["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][$h];
  }
  log_schreiben("Datenbank: solaranzeige DB1 ".print_r($DB1,1),"  ",10);
}
      }
Dies war erst der Anfang meiner Suche nach einer verständlichen Lösung.

Mein komplettes script besteht aus zwei Dateien.
eine mathe.php, die für alle Geräte gilt und eine
growatt_math.php in welcher meine Datenbanken und Measurements enthalten sind.
Es funktioniert jedoch nur imZusammenspiel beider Datein, weil die mathe.php includiert wird.

im Grunde müssen nur die entsprechenden fields und Namen geändert werden.
growatt_math_array.php
(5.52 KiB) 29-mal heruntergeladen
mathe.php
(1.21 KiB) 26-mal heruntergeladen

solarfanenrico
Beiträge: 447
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 26 Mal
Danksagung erhalten: 30 Mal

Re: Eigene Erweiterungen als verkürzte Version (verständlich)

Beitrag von solarfanenrico »

Eine Formular-Version ist gerade fertig geworden.
eigeneErweiterung.png
es sind 5 files, die in da s/var/www/html kopiert werden müßten.

entweder man benennt die allgemeine_math.php in seine "eigeneWR_math.php" um oder verändert in seiner
"eigenerWR.php eine kleine Passage um.

in meinem Fall mußte ich
von
if ( file_exists ("/var/www/html/growatt_math.php")) {
include 'growatt_math.php'; // Falls etwas neu berechnet werden muss.

auf

if ( file_exists ("/var/www/html/allgemeine_math.php")) {
include 'allgemeine_math.php'; // Falls etwas neu berechnet werden muss.

umgeschreiben.

Ich brauche Tester und Hinweisgeber, was alles in das Formular aufgenommen werden könnte.

Danke fürs MItmachen
Enrico
mathe.php
(1.2 KiB) 27-mal heruntergeladen
erweiterungen.php
(1.14 KiB) 29-mal heruntergeladen
allgemeine_math.php
(5.39 KiB) 22-mal heruntergeladen
test.php
(271 Bytes) 25-mal heruntergeladen
PS: leider kann ich das Hauptformular nicht hochladen,
Ich könnte es mal in anderen Dateiformaten versuchen. Mal sehen wie der Bedarf ist. Notfalls per email.

solarfanenrico
Beiträge: 447
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 26 Mal
Danksagung erhalten: 30 Mal

Re: Eigene Erweiterungen als verkürzte Version (verständlich)

Beitrag von solarfanenrico »

Hallo und hier ist die wichtigste Datei.
in Form eines pdf-files
eigene.php.pdf
(22.01 KiB) 49-mal heruntergeladen
den Inhalt mit STRG+A alles auswählen
STRG+C alles kopieren
Konsole öffen und
sudo nano eigene.php
öffnen

Mit rechter Maustaste die Kopie aus dem RAM einfügen.

Mit STRG+X speichern mit J bestätigen und schließen

mit
sudo chmod a+rw /var/www/html/eigene.php
die Rechte vergeben.

Die 4 Dateien aus dem vorherigen Beitrag nicht vergessen.

Browser öffnen und IP/eigene.php das Formular öffnen, 3 Dateinamen eingeben, Senden, fertig

Enrico
PS: Der Text im PDF ist extra so klein, damit keine ungewollten Zeilenumbrüche in der Kopie entstehen

solarfanenrico
Beiträge: 447
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 26 Mal
Danksagung erhalten: 30 Mal

Re: Eigene Erweiterungen als verkürzte Version (verständlich)

Beitrag von solarfanenrico »

Heute habe ich das letzte "Rätsel" um meine vereinfachte und array-bezogene EigeneErweiterungen-Abfrage gelöst.
Es ist nur noch ein einziger Query hierfür nötig.

Code: Alles auswählen

#!/usr/bin/php
<?php
/////////////////////////////////////////////////////////////////////////////
// Raspberry Temperatur in die Infux Datenbank speichern
// Die Temperatur steckt in der Variable $RaspiTemp
//$funktionen->log_schreiben(print_r($aktuelleDaten,1)," ",1);

//Wenn der Wert auch in die LOG Datei geschrieben werden soll.
$funktionen->log_schreiben("Rasperry Temperatur: ".round($RaspiTemp,1)." °C",">",1);

  $Datenbank[1] = "solaranzeige750";
  $Datenbank[2] = "solaranzeige1650";
// $Datenbank[3] = "solaranzeige1000";
// $Datenbank[x] = "yz";

$Measurement[1] = "Summen";
$Measurement[2] = "AC";
$Measurement[3] = "PV"; 
// $Measurement[x] = "abcyz";

//////////////////////////////////////////////////////////////////////
// Datenbanknamen und Measuremnts müssen an die eigenen Einstellungen angepaßt werden
//    Measurement[1]: Summen, Measurement[2]: AC, Measurement[3]: PV
//  Hier wird der neueste Eintrag der Datenbank ausgelesen und im Array $DB[1], $DB[2] usw. gespeichert.
// Beispiel: $Datenbank[1] = "solaranzeige750" ist die Datenbank, welche mit 1.user.config.php bearbeitet wird
//             $Datenbank[2] = "solaranzeige1650" ist die Datenbank, welche mit 2.user.config.php bearbeitet wird
//Die Measurements &  Datenbanken durchlaufen zwei for-Schleifen und werden in Arrays zwischengespeichert
//               $Datenbank[3] = "solaranzeige1000" ist die Datenbank, welche mit 3.user.config.php bearbeitet wird, und für das Hinzufügen der $aktuellenDaten verwendet wird
// möchte man weitere  Datenbanken & Measurements hinzufügen, so ergänzt man nach obigen Muster 


// ab hier darf und braucht nichts geändert werden

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

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("Es fehlt die Datenbank  mit dem Measurement ist leer.","|- ",3);
  log_schreiben("Fehler: ".$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("Datenbank: solaranzeige DB1 ".print_r($DB[$i],1),"  ",10);
}
      }
}


// bis hier durfte nichts geändert werden

// ab hier kommen die log_schreiben und $aktuellenDaten, welche man nach eigene Wünschen ändern muß

// meine Daten lauten wie unten
log_schreiben(" Leistung1: ".$DB[1]["Leistung"],"",8);
log_schreiben(" Leistung2: ".$DB[2]["Leistung"],"",8);
//log_schreiben(" Leistung3: ".$DB[3]["Leistung"],"",8);
//log_schreiben(" Leistung4: ".$DB[4]["Leistung"],"",8);
//log_schreiben(" Leistung5: ".$DB[5]["Leistung"],"",8);
log_schreiben(" Leistung_aktuell: ".$aktuelleDaten["AC_Leistung"],"",8);
//log_schreiben(" Gesamt_Leistung2: ".$DB[1]["Leistung"]+$aktuelleDaten["AC_Leistung"],"",8);
//log_schreiben(" Gesamt_Leistung3: ".$DB[1]["Leistung"]+$DB[2]["Leistung"]+$aktuelleDaten["A$
//log_schreiben(" Gesamt_Leistung4: ".$DB[1]["Leistung"]+$DB[2]["Leistung"]+$DB[3]["Leistung"$
//log_schreiben(" Gesamt_Leistung5: ".$DB[1]["Leistung"]+$DB[2]["Leistung"]+$DB[3]["Leistung"$
//log_schreiben(" Gesamt_Leistung6: ".$DB[1]["Leistung"]+$DB[2]["Leistung"]+$DB[3]["Leistung"$
/*
log_schreiben(" Leistung1: ".$DB[1]["Leistung"],"",8);
log_schreiben(" Leistung2: ".$DB[2]["Leistung"],"",8);
//log_schreiben(" Leistung2: ".$DB[3]["Leistung"],"",8);
log_schreiben(" Leistung3: ".$aktuelleDaten["AC_Leistung"],"",8); 
log_schreiben(" Gesamt_Leistung: ".($DB[1]["Leistung"]+$aktuelleDaten["AC_Leistung"]),"",8);
log_schreiben(" Gesamt_Leistung3: ".($DB[1]["Leistung"]+$DB[2]["Leistung"]+$aktuelleDaten["AC_Leistung"]),"",8);
//log_schreiben(" Gesamt_Leistung4: ".($DB[1]["Leistung"]+$DB[2]["Leistung"]+$DB[3]["Leistung"]+$aktuelleDaten["AC_Leistung"]),"",8);
*/
log_schreiben(" Ertrag1: ".$DB[1]["Wh_Gesamt"],"",8);
log_schreiben(" Ertrag2: ".$DB[2]["Wh_Gesamt"],"",8);
log_schreiben(" Ertrag3: ".$aktuelleDaten["WattstundenGesamt"],"",8);
log_schreiben(" Gesamt_Ertrag: ".($DB[1]["Wh_Gesamt"]+$aktuelleDaten["WattstundenGesamt"]),"",8);
log_schreiben(" Gesamt_Ertrag3: ".($DB[1]["Wh_Gesamt"]+$DB[2]["Wh_Gesamt"]+$aktuelleDaten["WattstundenGesamt"]),"",8);

log_schreiben(" ErtragH1: ".$DB[1]["Wh_Heute"],"",8);
log_schreiben(" ErtragH2: ".$DB[2]["Wh_Heute"],"",8);
log_schreiben(" ErtragH3: ".$aktuelleDaten["WattstundenGesamtHeute"],"",8);

log_schreiben(" Gesamt_ErtragH: ".($DB[1]["Wh_Heute"]+$aktuelleDaten["WattstundenGesamtHeute"]),"",8);
log_schreiben(" Gesamt_ErtragH3: ".($DB[1]["Wh_Heute"]+$DB[2]["Wh_Heute"]+$aktuelleDaten["WattstundenGesamtHeute"]),"",8);

log_schreiben(" PVLeistung1: ".$DB[1]["String1_Leistung"],"",8);
log_schreiben(" PVLeistung2: ".$DB[2]["String1_Leistung"],"",8);
log_schreiben(" PVLeistung3: ".$aktuelleDaten["PV_Leistung1"],"",8); 
log_schreiben(" Gesamt_PVLeistung: ".($DB[1]["String1_Leistung"]+$aktuelleDaten["PV_Leistung1"]),"",8);
log_schreiben(" Gesamt_PVLeistung3: ".($DB[1]["String1_Leistung"]+$DB[2]["String1_Leistung"]+$aktuelleDaten["PV_Leistung1"]),"",8);


$aktuelleDaten["ZusatzQuery"] = "Dashboard Ertrag1=".$DB[1]["Wh_Gesamt"].",Ertrag2=".$DB[2]["Wh_Gesamt"].",Ertrag3=".$aktuelleDaten["WattstundenGesamt"];
$aktuelleDaten["ZusatzQuery"] .= ",ErtragH1=".$DB[1]["Wh_Heute"].",ErtragH2=".$DB[2]["Wh_Heute"].",ErtragH3=".$aktuelleDaten["WattstundenGesamtHeute"];
$aktuelleDaten["ZusatzQuery"] .= ",Gesamt_Ertrag3=".($DB[1]["Wh_Gesamt"]+$DB[2]["Wh_Gesamt"]+$aktuelleDaten["WattstundenGesamt"]); 
$aktuelleDaten["ZusatzQuery"] .= ",Gesamt_ErtragH3=".($DB[1]["Wh_Heute"]+$DB[2]["Wh_Heute"]+$aktuelleDaten["WattstundenGesamtHeute"]); 
$aktuelleDaten["ZusatzQuery"] .= ",Leistung1=".$DB[1]["Leistung"].",Leistung2=".$DB[2]["Leistung"].",Leistung3=".$aktuelleDaten["AC_Leistung"]; 
$aktuelleDaten["ZusatzQuery"] .= ",Gesamt_Leistung3=".($DB[1]["Leistung"]+$DB[2]["Leistung"]+$aktuelleDaten["AC_Leistung"]); 
//$aktuelleDaten["ZusatzQuery"] .= ",Gesamt_Leistung4=".($DB[1]["Leistung"]+$DB[2]["Leistung"]+$DB[3]["Leistung"]+$aktuelleDaten["AC_Leistung"]);
$aktuelleDaten["ZusatzQuery"] .= ",PVLeistung1=".$DB[1]["String1_Leistung"].",PVLeistung2=".$DB[2]["String1_Leistung"].",PVLeistung3=".$aktuelleDaten["PV_Leistung1"]; 
$aktuelleDaten["ZusatzQuery"] .= ",Gesamt_PVLeistung3=".($DB[1]["String1_Leistung"]+$DB[2]["String1_Leistung"]+$aktuelleDaten["PV_Leistung1"]); 
$aktuelleDaten["ZusatzQuery"] .= ",RaspiTemp=".round($RaspiTemp,1);
$aktuelleDaten["ZusatzQuery"] .= "   ".$aktuelleDaten["zentralerTimestamp"];
?>
Enrico

Antworten