Wie funktionert das Schreiben von Werten in die Datenbank?

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

Seb01
Beiträge: 67
Registriert: Mo 20. Mär 2023, 11:11
Hat sich bedankt: 6 Mal
Danksagung erhalten: 6 Mal

Wie funktionert das Schreiben von Werten in die Datenbank?

Beitrag von Seb01 »

Hallo Gemeinde,

ich versuche gerade, die Solaranzeige zu verstehen.

Wie Werte aus meinem "Huawei_LAN" Wechselrichter ausgelesen werden, habe ich schon verstanden. [Wie aus dem Hex-Sting die einzelnen Werte in das Array kommen.]
Aber jetzt stehe ich auf dem Schlauch:
Für Jeden Wert gibt es einen Eintrag im Array:

Code: Alles auswählen

$aktuelleDaten["NameXY"] 
Bei meiner Huawei_LAN.php wird dann mit

Code: Alles auswählen

$rc = $funktionen->influx_local( $aktuelleDaten );
das Array in die Datenbank geschubst.

Das geht in der funktionen.inc.php mit curl. Aber da hören meine php-Kenntnisse leider auf.

Wo und wie wird die Verknüpfung zwischen NameXY und dem Measurements in der Datenbank genau gemacht?

Ich habe das Gefühl, das es im NameXY steckt.

Code: Alles auswählen

$aktuelleDaten["AC_Spannung_R"]
wir aus dem Register 32069 ausgelesen, steht Wahrscheinlich unter Measurement "AC".

Code: Alles auswählen

$aktuelleDaten["AC_Spannung_Zaehler_R"]
wir aus dem Register 37101 ausgelesen, seht wahrscheinlich unter Mesurement "Zaehler".

Code: Alles auswählen

$aktuelleDaten["WattstundengesamtExport"]
steht unter "Summen", aber woher weiß die Datenbank, das da hinzuschreiben?

Code: Alles auswählen

$aktuelleDaten["SOC"]
seht unter "Batterie"....

Vielleicht kann mir da jemand helfen? Ich möchte meine Abfrage um weitere Werte aus den "Modbus Interface Definitions" von Huawei erweitern,
z.B. den SOC der einzelenen Batterieblöcke usw. etc. pp

Gruß Sebastian

Benutzeravatar
Ulrich
Administrator
Beiträge: 6320
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 159 Mal
Danksagung erhalten: 933 Mal

Re: Wie funktionert das Schreiben von Werten in die Datenbank?

Beitrag von Ulrich »

In der funktionen.inc.php gibt es eine "Tabelle" die dafür sorgt, wie die Daten in die Datenbank geschrieben werden. Die Daten werden bei der Influx Datenbank mit einer URL geschrieben und diese URL wird hier zusammengestellt:

Code: Alles auswählen

        /* Huawei Wechselrichter   */
      case 46:
        $query .= "AC ";
        $query .= "Spannung_R=".$daten["AC_Spannung_R"];
        $query .= ",Spannung_S=".$daten["AC_Spannung_S"];
        $query .= ",Spannung_T=".$daten["AC_Spannung_T"];
        $query .= ",Frequenz=".$daten["AC_Frequenz"];
        $query .= ",Strom_R=".$daten["AC_Strom_R"];
        $query .= ",Strom_S=".$daten["AC_Strom_S"];
        $query .= ",Strom_T=".$daten["AC_Strom_T"];
        $query .= ",Leistung=".$daten["AC_Leistung"];
        $query .= ",Powerfactor=".$daten["AC_Powerfactor"];
        $query .= "  ".$daten["zentralerTimestamp"];
        $query .= "\n"; // *
        
Das ist jetzt nur ein Beispiel für Regler 46.

In der URL muss zuerst das Measurement kommen "AC" , dann eine Leerstelle und dann die Werte getrennt mit einem Komma.
Also das Feld "Spannung_R = $aktuelleDaten["AC_Spannung_R"], Spannung_S = $aktuelleDaten["AC_Spannung_S"], " usw.

Diese zusammengestellte URL wird dann für das Speichern der Daten in die Influx Datenbank benutzt.

[ Das ist die alte Methode. Ab Regler Nummer 80 ist es nicht mehr so starr, sondern funktioniert flexibler, ist aber noch verwirrender]
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]

Seb01
Beiträge: 67
Registriert: Mo 20. Mär 2023, 11:11
Hat sich bedankt: 6 Mal
Danksagung erhalten: 6 Mal

Re: Wie funktionert das Schreiben von Werten in die Datenbank?

Beitrag von Seb01 »

Danke Ulrich,

das schaue ich mir an. Ich habe den Regeler 62, also sollte es noch mit der Tabelle gehen. Vielen Dank!

Gruss Sebastian

Seb01
Beiträge: 67
Registriert: Mo 20. Mär 2023, 11:11
Hat sich bedankt: 6 Mal
Danksagung erhalten: 6 Mal

Re: Wie funktionert das Schreiben von Werten in die Datenbank?

Beitrag von Seb01 »

Hallo Ulrich,

gleich noch eine weitere Frage (und zu dem Projekt):

wenn ich die Abfrage aufblase (um noch viele andere Werte aus der "Modbus Interface Defintions"-Tabelle von Huawei zu bekommen), wie sollte ich für
das Projekt vorgehen?

1) Die Huawei_LAN.php anpassen?
2) Die Huawei_math.php anpassen?
3) eine user_device.php anlegen und anpassen ? (Ist aber glaube ich blöd, wenn man Multi-Regler hat)

4) weitere Zeilen für die Tabelle in funktionen.inc.php dazuschreiben?

Einen Fehler in der orginal Huawei-LAN.php habe ich auch schon gefunden , hier die korrekte Linie:

Code: Alles auswählen

$aktuelleDaten["Firmware"] = $funktionen->hex2string(substr($rc["Wert"], 200, 34));
In der funktionen.inc.php ist auch einer: (kann aber sein das ich veraltete Files habe)
Zeile 3887 (zusammenbau Service / Modell für Regler 62) sollte wohl heißen:

Code: Alles auswählen

$query .= ",Modell=\"" . $daten["Modell"] . "\"";
Vielleicht möchte der eine oder andere auch "alle" Werte bekommen.
Einige der Werte benötige ich auch für einen Button "Zwangsladen des Akkus auf 100%".

Gruss Sebastian

Benutzeravatar
Ulrich
Administrator
Beiträge: 6320
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 159 Mal
Danksagung erhalten: 933 Mal

Re: Wie funktionert das Schreiben von Werten in die Datenbank?

Beitrag von Ulrich »

Am besten es mit einer _math Datei machen, dann kann es jeder benutzen, der möchte.
Das mit der Firmware habe ich geändert.
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]

Seb01
Beiträge: 67
Registriert: Mo 20. Mär 2023, 11:11
Hat sich bedankt: 6 Mal
Danksagung erhalten: 6 Mal

Re: Wie funktionert das Schreiben von Werten in die Datenbank?

Beitrag von Seb01 »

Hallo Ulrich,

sorry, das ich Dich nochmal aufschrecken muss.

Kannst Du mir bitte die aktuelle Huawei_LAN.php hier 'reinstellen?

Ich habe angst, das ich schon zu viel in meiner herumgewurschtelt habe und daher nicht sagen kann, was alles offiziell schon "drin" ist.

Vielen Dank

Sebastian

Benutzeravatar
Ulrich
Administrator
Beiträge: 6320
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 159 Mal
Danksagung erhalten: 933 Mal

Re: Wie funktionert das Schreiben von Werten in die Datenbank?

Beitrag von Ulrich »

Auf der Raspberry Konsole das ausführen:

Code: Alles auswählen

rsync -a -v --no-recursive --no-links --no-perms --no-owner --no-group rsync://solaranzeige.de:12000/ftp/Bookworm/huawei_LAN.php   /home/pi/
Danach ist die Datei in /home/pi/
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]

Zurück zu „Allgemeines“

Wer ist online?

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