Fehler in huawei_LAN.php

Welche Geräter können mit dieser Anzeige benutzt werden?
Laderegler, Wallboxen, Batterie-Management-Systeme, WLAN Schalter mit Tasmota Firmware und Wechselrichter.
Allgemeine Fragen zu all diesen Geräten.

Moderator: Ulrich

HNoll
Beiträge: 35
Registriert: So 25. Dez 2022, 21:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Fehler in huawei_LAN.php

Beitrag von HNoll »

2 kleinere Probleme waren noch vorhanden:

Die PV-Gesamtleistung zeigte sehr oft tagsüber den Wert „0“ an, obwohl die Substrings Werte anzeigten.
Beim prüfen stellte ich fest, dass die Einzelwerte einen anderen Zeitstempel aufwiesen als der Gesamtwert.
Ich habe mit den huawei_LAN.php angesehen und keine Erklärung gefunden.
Ich habe verschiedene Ansätze ausprobiert und schließlich eine Lösung gefunden:

if (hexdec( $aktuelleDaten["Anz_PV_Strings"] ) > 8) {
$funktionen->log_schreiben( "Fehler! Keine gültigen Daten empfangen. ", " ", 5 );
continue;
}
$aktuelleDaten["PV_Leistung"] = 0;
for ($j = 1; $j <= hexdec( $aktuelleDaten["Anz_PV_Strings"] ); $j++) {
$aktuelleDaten["PV".$j."_Spannung"] = 0;
$aktuelleDaten["PV".$j."_Strom"] = 0;
$aktuelleDaten["PV".$j."_Spannung"] = $funktionen->hexdecs( substr( $rc["Wert"], 56 + ($j * 8), 4 )) / 10;
$aktuelleDaten["PV".$j."_Strom"] = $funktionen->hexdecs( substr( $rc["Wert"], 60 + ($j * 8), 4 )) / 100;
$aktuelleDaten["PV".$j."_Leistung"] = round( ($aktuelleDaten["PV".$j."_Strom"] * $aktuelleDaten["PV".$j."_Spannung"]), 2 );
}
$aktuelleDaten["PV_Leistung"] = round(($funktionen->hexdecs( substr( $rc["Wert"], 68, 4 )) / 100 * $funktionen->hexdecs( substr( $rc["Wert"], 64, 4 )) / 10)+($funktionen->hexdecs( substr( $rc["Wert"], 76, 4 )) / 100 * $funktionen->hexdecs( substr( $rc["Wert"], 64, 4 )) / 10), 2 ); //2 Strings
// $aktuelleDaten["PV_Leistung"] = $aktuelleDaten["PV_Leistung"] + round(($funktionen->hexdecs( substr( $rc["Wert"], 76, 4 )) / 100 * $funktionen->hexdecs( substr( $rc["Wert"], 72, 4 )) / 10)+($funktionen->hexdecs( substr( $rc["Wert"], 84, 4 )) / 100 * $funktionen->hexdecs( substr( $rc["Wert"], 72, 4 )) / 10), 2 ); //4 Strings
// $aktuelleDaten["PV_Leistung"] = $aktuelleDaten["PV_Leistung"] + round(($funktionen->hexdecs( substr( $rc["Wert"], 84, 4 )) / 100 * $funktionen->hexdecs( substr( $rc["Wert"], 80, 4 )) / 10)+($funktionen->hexdecs( substr( $rc["Wert"], 92, 4 )) / 100 * $funktionen->hexdecs( substr( $rc["Wert"], 80, 4 )) / 10), 2 ); //6 Strings
// $aktuelleDaten["PV_Leistung"] = $aktuelleDaten["PV_Leistung"] + round(($funktionen->hexdecs( substr( $rc["Wert"], 92, 4 )) / 100 * $funktionen->hexdecs( substr( $rc["Wert"], 88, 4 )) / 10)+($funktionen->hexdecs( substr( $rc["Wert"], 100, 4 )) / 100 * $funktionen->hexdecs( substr( $rc["Wert"], 88, 4 )) / 10), 2 ); //8 Strings

PV_Leistung wird nicht mehr innerhalb der Ausleseschleife ausgerechnet, sondern nach deren Abschluss. Damit sind die Zeitstempel gleich und es kommt keine „0“ mehr vor.
IMG_0801.jpg
Man sieht deutlich, ab wo der geänderte Code wirksam wurde. Der Ausreißer kurz vor 18 Uhr liegt an einem kleinen Fehler, den ich beim aufräumen eingebaut habe.

Die M1-Wechselrichter können höchstens 8 Strings bedienen … die meisten dürften 2 Strings haben.
Die Ausleseschleife besteht weiterhin. Je nach Anzahl der Strings muss man die bis zu auskommentierten Zeilen danach wieder aktivieren.
Ich habe versucht das in einer Schleife zu machen, es hat aber nicht funktioniert, wie gesagt ich verstehe nicht warum, vor allem auch deswegen, weil ich von php fast keine Ahnung habe.

Ich habe bereits früher die Frager gestellt, warum im Measurement PV machmal 10000e Einträge sind. Ich weiß jetzt warum. Wenn die Anzahl der Strings falsch ausgelesen wird, wird die maximale Anzahl an Measurement angelegt.
Das kann man ganz leicht vermeiden:

if (hexdec( $aktuelleDaten["Anz_PV_Strings"] ) > 8) {
$funktionen->log_schreiben( "Fehler! Keine gültigen Daten empfangen. ", " ", 5
continue;
}

Allerdings tritt dieses Probleme in der hier geänderten php-Datei nicht mehr auf.
huawei_LAN.php
(20.68 KiB) 22-mal heruntergeladen

Zurück zu „Fragen zu Reglern, Wallboxen und Wechselrichter“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste