Korrektur übermittelter Werte bevor es in die DB geht
Moderator: Ulrich
Korrektur übermittelter Werte bevor es in die DB geht
Moin,
Solaranzeige macht alles was ich brauche, super Sache, danke.
Leider übermittelt mein WR (AX-Serie mit SelbstbauAkku) falsche Werte bezüglich der Batteriekapazität. Ja, klar ist das nur ein Tendenzwert und von vielen Faktoren, wie zB Belastúng, abhängig. Hätte jedoch gerne 0-100% anstatt wie heute 22-70%.
Damit auch bei der MQTT-Übertragung an Homeassist eine mögliche Korrektur greift suche ich eine Idee wie ich den Wert möglichst beim Einlesen vom WR direkt manipulieren kann. Die Korrektur würde wie folgt lauten: (Kapazität% - 22) * 2,08 = korrekter Wert.
Gibt es da eine Möglichkeit?
Bitte helft mir auf die Sprünge
Danke im Voraus
Solaranzeige macht alles was ich brauche, super Sache, danke.
Leider übermittelt mein WR (AX-Serie mit SelbstbauAkku) falsche Werte bezüglich der Batteriekapazität. Ja, klar ist das nur ein Tendenzwert und von vielen Faktoren, wie zB Belastúng, abhängig. Hätte jedoch gerne 0-100% anstatt wie heute 22-70%.
Damit auch bei der MQTT-Übertragung an Homeassist eine mögliche Korrektur greift suche ich eine Idee wie ich den Wert möglichst beim Einlesen vom WR direkt manipulieren kann. Die Korrektur würde wie folgt lauten: (Kapazität% - 22) * 2,08 = korrekter Wert.
Gibt es da eine Möglichkeit?
Bitte helft mir auf die Sprünge
Danke im Voraus
-
- Beiträge: 124
- Registriert: Fr 6. Aug 2021, 07:27
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 16 Mal
Re: Korrektur übermittelter Werte bevor es in die DB geht
/edit/ Die Lösung heißt _math.php und gibt es schon. Somit ist mein Beitrag obsolet
Infini 10k - 15kWp - 16kW LiFePO4 - JK BMS - SDM630 - 10kW WP
-
- Beiträge: 1178
- Registriert: Mi 13. Mai 2020, 10:04
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 134 Mal
Re: Korrektur übermittelter Werte bevor es in die DB geht
Im Prinzip sehr einfach lösbar als 2 Zeiler mit einer xxx_math.php passend zum Wechselrichter. Einfach mal hier nach der Dokumentation suchen oder Themen zur _math.php ansehen...
Re: Korrektur übermittelter Werte bevor es in die DB geht
Hey Prima. Danke für den Tipp mit der _math.php. Da werde ich mich mal reinlesen.
-
- Beiträge: 1178
- Registriert: Mi 13. Mai 2020, 10:04
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 134 Mal
Re: Korrektur übermittelter Werte bevor es in die DB geht
Einfacher Test, du erzeugst die Datei /var/www/html/ax_wechselrichter_math.php und schreibst diese einzelne Zeile dort rein:
oder wie auch immer Dein Datenfeld für den SOC heißt...
Da in der ax_wechselrichter.php leider die Reihenfolge der Bearbeitung ungünstig ist, werden die MQTT-Daten schon gesendet und erst danach wird die _math.php durchlaufen, damit kommt die Änderung nur in der Datenbank aber nicht in MQTT an. Du musst zwischenzeitlich die ax_wechselrichter.php anpassen und die Zeilen für mqtt_senden und die ax_wechselricher_math.php tauschen, damit es richtig funktioniert:
Also oben in der ax_wechselrichter.php die 9 Zeilen rausnehmen und unter dem Block für ax_wechselrichter_math.php wieder einfügen. Anschließend sollte es wie oben aussehen...
@Ulrich, leider sind in der ax_wechselrichter.php die Zeilen für _math.php nach mqtt_senden, das müsste vorher durchlaufen werden. In allen anderen WR_php, die ich angesehen habe ist diese Reihenfolge schon richtig, nur hier noch nicht...
Code: Alles auswählen
$aktuelleDaten["Batteriekapazitaet"] = ($aktuelleDaten["Batteriekapazitaet"] - 22) * 2.08;
Da in der ax_wechselrichter.php leider die Reihenfolge der Bearbeitung ungünstig ist, werden die MQTT-Daten schon gesendet und erst danach wird die _math.php durchlaufen, damit kommt die Änderung nur in der Datenbank aber nicht in MQTT an. Du musst zwischenzeitlich die ax_wechselrichter.php anpassen und die Zeilen für mqtt_senden und die ax_wechselricher_math.php tauschen, damit es richtig funktioniert:
Code: Alles auswählen
/**************************************************************************
// User PHP Script, falls gewünscht oder nötig
**************************************************************************/
if (file_exists( "/var/www/html/ax_wechselrichter_math.php" )) {
include 'ax_wechselrichter_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 strtoupper($MQTTAuswahl) != "OPENWB") {
$funktionen->log_schreiben( "MQTT Daten zum [ $MQTTBroker ] senden.", " ", 1 );
require ($Pfad."/mqtt_senden.php");
}
@Ulrich, leider sind in der ax_wechselrichter.php die Zeilen für _math.php nach mqtt_senden, das müsste vorher durchlaufen werden. In allen anderen WR_php, die ich angesehen habe ist diese Reihenfolge schon richtig, nur hier noch nicht...
Wer ist online?
Mitglieder in diesem Forum: Sonstige [Bot] und 0 Gäste