seit geraumer Zeit zweifle ich an meinen Fähigkeiten die *_math.php korrekt zu programmieren.
Vor lauter Verzweiflung suche ich schon workarounds in Grafana. Was ja nicht wirklich sinnvoll ist...
Jetzt hoffe ich auf die ”Schwarmintelligenz” mir die Augen zu öffnen und meinen (Denk)Fehler aufzuzeigen.
Folgendes Phänomen:
ich definiere in der _math.php die ”Standardparameter” von Uli und ein neues measurement namens ’Byte’ wie folgt
Code: Alles auswählen
<?php
$aktuelleDaten["ZusatzQuery"] = "Service RaspiTemp=".round($RaspiTemp,1);
$aktuelleDaten["ZusatzQuery"] .= ",RaspiFreierSpeicher=\"".$FreierSpeicher."\"";
$aktuelleDaten["ZusatzQuery"] .= " ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["ZusatzQuery"] .= "\n";
//-------------------
$aktuelleDaten["ZusatzQuery"] = "Byte bit00=".substr($aktuelleDaten["StatusBit"],-1,1);
$aktuelleDaten["ZusatzQuery"] .= ",bit01=".substr($aktuelleDaten["StatusBit"],-2,1);
$aktuelleDaten["ZusatzQuery"] .= ",bit02=".substr($aktuelleDaten["StatusBit"],-3,1);
$aktuelleDaten["ZusatzQuery"] .= ",bit03=".substr($aktuelleDaten["StatusBit"],-4,1);
$aktuelleDaten["ZusatzQuery"] .= ",bit04=".substr($aktuelleDaten["StatusBit"],-5,1);
$aktuelleDaten["ZusatzQuery"] .= ",bit05=".substr($aktuelleDaten["StatusBit"],-6,1);
$aktuelleDaten["ZusatzQuery"] .= ",bit06=".substr($aktuelleDaten["StatusBit"],-7,1);
$aktuelleDaten["ZusatzQuery"] .= ",bit07=".substr($aktuelleDaten["StatusBit"],-8,1);
$aktuelleDaten["ZusatzQuery"] .= ",bit0-7=".$aktuelleDaten["StatusBit"];
$aktuelleDaten["ZusatzQuery"] .= " ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["ZusatzQuery"] .= "\n";
//-------------------
// Abfrage bit_02: Batterie wird entladen?
if (substr($aktuelleDaten["StatusBit"],-3,1) == "1") {
$aktuelleDaten["Batterie_Strom"] = ($aktuelleDaten["Batterie_Strom"]*-1);
$aktuelleDaten["Batterie_Leistung"] = ($aktuelleDaten["Batterie_Leistung"]*-1);
}
// Abfrage bit_04: Einspeisung?
if (substr($aktuelleDaten["StatusBit"],-5,1) == "1") {
$aktuelleDaten["Einspeisung"] = ($aktuelleDaten["Einspeisung"]);
$aktuelleDaten["Bezug"] = "0";
}
// Abfrage bit_05: Bezug?
if (substr($aktuelleDaten["StatusBit"],-6,1) == "1") {
$aktuelleDaten["Bezug"] = abs($aktuelleDaten["Einspeisung"]);
$aktuelleDaten["Einspeisung"] = "0";
}
// Gesammelte Daten in's Log schreiben
$funktionen->log_schreiben("bit0-7: ".$aktuelleDaten["StatusBit"]);
$funktionen->log_schreiben("Einspeisung: ".$aktuelleDaten["Einspeisung"]);
$funktionen->log_schreiben("Bezug: ".$aktuelleDaten["Bezug"]);
$funktionen->log_schreiben("Ras freier Speicher: ".$FreierSpeicher);
$funktionen->log_schreiben("Rasperry Temperatur: ".round($RaspiTemp,1)." °C");//,"> ",5
?>
Code: Alles auswählen
04.09. 21:32:01 -Multi Regler Auslesen [Start].
04.09. 21:32:01 -Verarbeitung von: '1.user.config.php' Regler: 70
04.09. 21:32:01 |---------------- Start sungrow.php --------------------------
04.09. 21:32:01 -Sungrow: 10.0.0.26 Port: 502 GeräteID: 1
04.09. 21:32:01 + -Die Daten werden ausgelesen...
04.09. 21:32:01 -Firmware: ARM_SAPPHIRE-H_V11_V01_B
04.09. 21:32:02 -Seriennummer: A2341702505
04.09. 21:32:02 -ModellGruppe: SH
04.09. 21:32:11 -Modell: SH10.0RT
04.09. 21:32:19 -bit0-7: 0000000000001100
04.09. 21:32:19 -Einspeisung: 0
04.09. 21:32:19 -Bezug: 5
04.09. 21:32:19 -Ras freier Speicher: 48G
04.09. 21:32:19 -Rasperry Temperatur: 56.9 °C
04.09. 21:32:19 * -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet.
04.09. 21:32:19 -Multi-Regler-Ausgang. -11
04.09. 21:32:19 -OK. Datenübertragung erfolgreich.
04.09. 21:32:19 |---------------- Stop sungrow.php --------------------------
04.09. 21:32:21 -Multi Regler Auslesen [Stop].
> select * from Service order by time desc limit 1
name: Service
time Anz_MPPT Effizienz Modell Modell_ID RaspiFreierSpeicher RaspiTemp Status Temperatur WR_Fehler
---- -------- --------- ------ --------- ------------------- --------- ------ ---------- ---------
1725476711000000000 2 0 ARM_SAPPHIRE-H_V11_V01_B 3599 40 42.7 0
> exit
Dem kann ich abhelfen, indem ich die ersten vier Zeilen der _math-php HINTER die Definition meiner Statusbits setze.
Prima
Aber dann hab ich die Statusbits NICHT MEHR in der Datenbank
100% reproduzierbar — die Definition, die zuerst deklariert wird, wird zwar ausgelesen und in die log-Datei geschrieben
aber sie kommt nicht mehr in der Datenbank an.
Wer weiß hier Abhilfe und — wer kann mir erklären was ich falsch mache???
Und by the way, kann ich die deklarierten Variablen aus der _math.php auch gleich weiter in der Datei zu Abfragen verwenden?
Ich freu mich auf eine Erleuchtung,
schon jetzt besten Dank und Grüsse
Markus