Hinzufügen von Auslesewerten

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

Moderator: Ulrich

Libelle78
Beiträge: 22
Registriert: Sa 7. Mai 2022, 23:10
Danksagung erhalten: 5 Mal

Re: Hinzufügen von Auslesewerten

Beitrag von Libelle78 »

Funktioniert
Vielen Dank

earlybite
Beiträge: 21
Registriert: Fr 29. Jul 2022, 00:07
Hat sich bedankt: 10 Mal
Danksagung erhalten: 1 Mal

Re: Hinzufügen von Auslesewerten

Beitrag von earlybite »

Ulrich hat geschrieben:
So 30. Okt 2022, 19:55
Du hast Recht, da waren noch Fehler enthalten. Kannst du bitte es jetzt noch einmal versuchen? Erst bitte ein Update machen.
Hallo und vielen Dank für diese neue Funktion!

Ist es möglich, alle bisherigen Auslesewerte, die seit Inbetriebnahme erhoben wurden, in die InfluxDB unter WattstundengesamtExport bzw. WattstundengesamtImport nachzutragen? Sind die irgendwo noch auf dem WR gespeichert? -> Auf diese Idee komme ich aus dem Grund, weil mit der Huawei eigenen App FusionSolar unabhängig von solaranzeige und Raspberry Pi auch Daten zu den Produktionsmengen der PV-Anlage angezeigt werden, jedoch leider nicht z.B. zum Eigenverbrauch, den ich mir gerne mithilfe von Solaranzeige berechnen lassen möchte.

Ich würde gerne mit meinem Grafana-Dashboard auf diese beiden neuen o.g. Funktionen umschwenken, weil sie genauer sind. Allerdings habe ich heute erst das Update gemacht und benötige aber alle Daten seit Inbetriebnahme im August 22.

Danke für die Info!!!

Pendragon
Beiträge: 4
Registriert: So 2. Jan 2022, 09:46
Hat sich bedankt: 1 Mal

Re: Hinzufügen von Auslesewerten

Beitrag von Pendragon »

Ulrich hat geschrieben:
So 30. Okt 2022, 12:41

Sind noch weitere Werte wichtig?
Hi!

Seit gestern bin ich OpenWB Besitzer und ärger mich mit dem Huawei WR rum. Da ich die Solaranzeige inzwischen sehr lieb gewonnen habe, möchte ich nicht auf andere Optionen umsteigen und am liebsten alle Werte hier herausbekommen. Ich Empfange die Revelanten Werte aktuell in einem Automationsserver und leite sie dann (ggf. Vorzeichenkorrigiert) zu OpenWB weiter. Bei dem Huawei Lang Dongle Regler (Nr. 62) fehlen jedoch ein paar Werte.

Könntest du die ggf. hinzufügen?
Quelle für die Registerwerte Ist ein anderes Projekt, über welches andere Nutzer direkt über den Wechselrichter die Daten auslesen: Github
Ich wollte es erst in ner _math als zusätzliche Abfrage hinzufügen, bin aber von den offsets doch sehr verwirrt...

Es handelt sich um folgende Werte:

Hier bin ich mir nicht sicher, ob es die eingespeiste Energie ist...

Code: Alles auswählen

rn.PHASE_A_CURRENT: I32Register("A", 1000, 32072, 2), Deutsch: AC_Strom_R
rn.PHASE_B_CURRENT: I32Register("A", 1000, 32074, 2), Deutsch: AC_Strom_S
rn.PHASE_C_CURRENT: I32Register("A", 1000, 32076, 2), Deutsch: AC_Strom_T
Alternative Quelle für AC_Strom_x: (<--Wo ich es schreibe vertraue ich diesen Werten mehr)

Code: Alles auswählen

rn.ACTIVE_GRID_A_CURRENT: I32Register("I", 100, 37107, 2), Deutsch: AC_Strom_Zaehler_R
rn.ACTIVE_GRID_B_CURRENT: I32Register("I", 100, 37109, 2), Deutsch: AC_Strom_Zaehler_S
rn.ACTIVE_GRID_C_CURRENT: I32Register("I", 100, 37111, 2), Deutsch: AC_Strom_Zaehler_T
Dann bitte noch die Leistung pro Phase:

Code: Alles auswählen

rn.ACTIVE_GRID_A_POWER: I32Register("W", 1, 37132, 2), Deutsch: AC_Leistung_Zaehler_R
rn.ACTIVE_GRID_B_POWER: I32Register("W", 1, 37134, 2), Deutsch: AC_Leistung_Zaehler_S
rn.ACTIVE_GRID_C_POWER: I32Register("W", 1, 37136, 2), Deutsch: AC_Leistung_Zaehler_T
Das wäre der Hammer, wenn diese Daten per MQTT rausgeschickt werden könnten. Falls ich noch weitere Intormationen raussuchen soll, bitte gern einfach melden.

Vielen Dank im Voraus
Christian


P.S.: Da ich mich dann doch kurz damit befasst habe, wäre das hier mein Code-Vorschlag. Ich weiß jedoch überhaupt nicht wie weit man das Register auslesen muss. Starke Vermutung wäre 8A. Ich schaue mal ob ich das in _math zum laufen bekomme

Code: Alles auswählen

$rc = $funktionen->modbus_tcp_lesen( $COM1, $WR_ID, "03", "37000", "8A", "Hex", $Timebase );
	if (($rc == false and $i < 2) or  $rc["Wert"] == "0" )  {
		$funktionen->log_schreiben( "Fehler! Keine gültigen Daten empfangen. ", "   ", 5 );
		continue;
	}
	$aktuelleDaten["AC_Strom_R"] = hexdec( substr( $rc["Wert"], 288, 8 ) / 1000);
	$aktuelleDaten["AC_Strom_S"] = hexdec( substr( $rc["Wert"], 296, 8 ) / 1000);
	$aktuelleDaten["AC_Strom_T"] = hexdec( substr( $rc["Wert"], 304, 8 ) / 1000);
	
	$aktuelleDaten["AC_Strom_Zaehler_R"] = hexdec( substr( $rc["Wert"], 428, 8 ) / 100);
	$aktuelleDaten["AC_Strom_Zaehler_S"] = hexdec( substr( $rc["Wert"], 436, 8 ) / 100);
	$aktuelleDaten["AC_Strom_Zaehler_T"] = hexdec( substr( $rc["Wert"], 444, 8 ) / 100);
	
	$aktuelleDaten["AC_Leistung_Zaehler_R"] = hexdec( substr( $rc["Wert"], 528, 8 ));
	$aktuelleDaten["AC_Leistung_Zaehler_S"] = hexdec( substr( $rc["Wert"], 536, 8 ));
	$aktuelleDaten["AC_Leistung_Zaehler_T"] = hexdec( substr( $rc["Wert"], 544, 8 ));

Pendragon
Beiträge: 4
Registriert: So 2. Jan 2022, 09:46
Hat sich bedankt: 1 Mal

Re: Hinzufügen von Auslesewerten

Beitrag von Pendragon »

Um das ganze einfacher zu machen habe ich die Daten identifiziert, die Funktionieren. Die ersten ströme werden anscheinend nicht befüllt, also kann man die weglassen.

Bleiben übrig bei den 37000 Registern:

Code: Alles auswählen

  $aktuelleDaten["AC_Strom_Zaehler_R"] = (hexdec( substr( $rc["Wert"], 428, 8 )) *10);
  $aktuelleDaten["AC_Strom_Zaehler_S"] = (hexdec( substr( $rc["Wert"], 436, 8 )) *10);
  $aktuelleDaten["AC_Strom_Zaehler_T"] = (hexdec( substr( $rc["Wert"], 444, 8 )) *10);
Und dann noch eine Etage weiter:

Code: Alles auswählen

sleep( 1 );
// Registerwerte ab 37000
//Länge des Auslesens: (Letztes Register + Länge)/4 in Hex: dec2hex((144+8)/4)
  $rc = $funktionen->modbus_tcp_lesen( $COM1, $WR_ID, "03", "37100", "38", "Hex", $Timebase );
  if (($rc == false and $i < 2) or  $rc["Wert"] == "0" )  {
    $funktionen->log_schreiben( "Fehler! Keine gültigen Daten empfangen. ", "   ", 5 );
    continue;
  }
  // Position des Wertes bestimmen: Register *4
  $aktuelleDaten["AC_Spannung_Zaehler_R"] = (hexdec( substr( $rc["Wert"], 4, 8 )));		//Int32
  $aktuelleDaten["AC_Spannung_Zaehler_S"] = (hexdec( substr( $rc["Wert"], 12, 8 )));	//Int32
  $aktuelleDaten["AC_Spannung_Zaehler_T"] = (hexdec( substr( $rc["Wert"], 20, 8 )));	//Int32
  $aktuelleDaten["Wirkleistung_Zaehler"] = (hexdec( substr( $rc["Wert"], 52, 8 )));		//Int32
  $aktuelleDaten["Blindleistung_Zaehler"] = (hexdec( substr( $rc["Wert"], 60, 8 )));	//Int32
  $aktuelleDaten["Leistungsfaktor_Zaehler"] = (hexdec( substr( $rc["Wert"], 68, 4 )));	//Int16
  $aktuelleDaten["AC_Frequenz_Zaehler"] = (hexdec( substr( $rc["Wert"], 72, 4 )));		//Int16
  $aktuelleDaten["AC_Leistung_Zaehler_R"] = (hexdec( substr( $rc["Wert"], 128, 8 )));	//Int32
  $aktuelleDaten["AC_Leistung_Zaehler_S"] = (hexdec( substr( $rc["Wert"], 136, 8 )));	//Int32
  $aktuelleDaten["AC_Leistung_Zaehler_T"] = (hexdec( substr( $rc["Wert"], 144, 8 )));	//Int32
Ich weiß nur nicht, wie ich die Zahlen in das Zielformat wandle...
Und meine Tests werden vermutlich durch das nächste Update wieder überschrieben. In der _math habe ich leider keinen Registerabruf hinbekommen.

Werte kommen bei allen an, aber nicht als Float. Ich hoffe die Vorarbeit hilft.

Beste Grüße
Christian

Benutzeravatar
Ulrich
Administrator
Beiträge: 5553
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 154 Mal
Danksagung erhalten: 882 Mal
Kontaktdaten:

Re: Hinzufügen von Auslesewerten

Beitrag von Ulrich »

Ich habe die Änderungen übernommen. Sie werden erst einmal noch nicht in die Datenbank geschrieben, sollten aber in der LOG Datei zu sehen sein. Kannst du Pendragon es einmal ausprobieren?
Dateianhänge
huawei_LAN.php
(18.08 KiB) 38-mal heruntergeladen
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Pendragon
Beiträge: 4
Registriert: So 2. Jan 2022, 09:46
Hat sich bedankt: 1 Mal

Re: Hinzufügen von Auslesewerten

Beitrag von Pendragon »

Vielen Dank!!

Hier ist der Output:

Code: Alles auswählen

05.02. 11:05:01 |----------------   Start  huawei_LAN.php  ----------------------------- 
05.02. 11:05:01    -Huawei: 192.168.50.37 Port: 502 GeräteID: 1
05.02. 11:05:04 >  -Gerätetyp: SUN2000-12KTL-M  Modell ID: 432
05.02. 11:05:13    -Array
(
    [zentralerTimestamp] => 1707127511
    [KeineSonne] => 
    [Modell] => SUN2000-12KTL-M
    [Firmware] => SUN2000-12KTL-M
    [Seriennummer] => HV2170137073
    [PN] => 01074319-002
    [ModellID] => 432
    [Anz_PV_Strings] => 4
    [Anz_MPP_Trackers] => 2
    [Status1] => 6
    [Status1Bit] => 0000000000000110
    [Alarm1] => 0
    [Alarm1Bit] => 0000000000000000
    [PV_Leistung] => 276.82
    [PV1_Spannung] => 522.3
    [PV1_Strom] => 0.21
    [PV1_Leistung] => 109.68
    [PV2_Spannung] => 522.3
    [PV2_Strom] => 0.32
    [PV2_Leistung] => 167.14
    [PV3_Spannung] => 0
    [PV3_Strom] => 0
    [PV3_Leistung] => 0
    [PV4_Spannung] => 0
    [PV4_Strom] => 0
    [PV4_Leistung] => 0
    [AC_Eingangsleistung] => 294
    [AC_Spannung_R] => 221.1
    [AC_Spannung_S] => 222
    [AC_Spannung_T] => 218.7
    [AC_Leistung] => 269
    [AC_Frequenz] => 49.98
    [Effizienz] => 91.52
    [Temperatur] => 40.8
    [DeviceStatus] => 512
    [FehlerCode] => 0
    [WattstundenGesamt] => 26164390
    [WattstundenGesamtHeute] => 370
    [Batterie_Status] => 0
    [Batterie_Leistung] => 0
    [SOC] => 0
    [AC_Strom_Zaehler_R] => 42949671230
    [AC_Strom_Zaehler_S] => 860
    [AC_Strom_Zaehler_T] => 42949672140
    [Einspeisung_Bezug] => -287
    [WattstundengesamtExport] => 21928670
    [WattstundengesamtImport] => 5485890
    [AC_Spannung_Zaehler_R] => 2186
    [AC_Spannung_Zaehler_S] => 2218
    [AC_Spannung_Zaehler_T] => 2213
    [Wirkleistung_Zaehler] => 4294967013
    [Blindleistung_Zaehler] => 483
    [Leistungsfaktor_Zaehler] => 65136
    [AC_Frequenz_Zaehler] => 4997
    [AC_Leistung_Zaehler_R] => 4294967042
    [AC_Leistung_Zaehler_S] => 35
    [AC_Leistung_Zaehler_T] => 4294967232
    [Einspeisung] => 0
    [Bezug] => 287
    [Batterie_Ladung] => 0
    [Batterie_Entladung] => 0
    [Hausverbrauch] => 581
    [Regler] => 62
    [Objekt] => 
    [Produkt] => SUN2000-12KTL-M
)
Wie schon geschrieben, wieß ich nicht wie ich die Zahlen in mit Vorzeichenbehaftete (also INT32) wandeln kann und auch bei der Skalierung bin ich überfragt, ob es jetzt *10 oder durch /100 sein muss. Habe versucht das von den anderen Werten zu übertragen.

Im Anhang sind die Screenshots der 37100er Register.
Dateianhänge
Meter3.jpg
Meter3.jpg (44.4 KiB) 181 mal betrachtet
Meter2.jpg
Meter1.jpg

Benutzeravatar
Ulrich
Administrator
Beiträge: 5553
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 154 Mal
Danksagung erhalten: 882 Mal
Kontaktdaten:

Re: Hinzufügen von Auslesewerten

Beitrag von Ulrich »

Noch eine Version zum Testen. Jetzt sollten die Vorzeichen usw. stimmen.
Dateianhänge
huawei_LAN.php
(18.08 KiB) 39-mal heruntergeladen
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Pendragon
Beiträge: 4
Registriert: So 2. Jan 2022, 09:46
Hat sich bedankt: 1 Mal

Re: Hinzufügen von Auslesewerten

Beitrag von Pendragon »

Jetzt hängt er sich auf:

Code: Alles auswählen

05.02. 11:30:01 |----------------   Start  huawei_LAN.php  ----------------------------- 
05.02. 11:30:01    -Huawei: 192.168.50.37 Port: 502 GeräteID: 1
05.02. 11:30:04 >  -Gerätetyp: SUN2000-12KTL-M  Modell ID: 432
05.02. 11:31:01 |----------------   Start  huawei_LAN.php  ----------------------------- 
05.02. 11:31:01    -Huawei: 192.168.50.37 Port: 502 GeräteID: 1
05.02. 11:31:03 >  -Gerätetyp: SUN2000-12KTL-M  Modell ID: 432
05.02. 11:32:01 |----------------   Start  huawei_LAN.php  ----------------------------- 
05.02. 11:32:01    -Huawei: 192.168.50.37 Port: 502 GeräteID: 1
05.02. 11:32:04 >  -Gerätetyp: SUN2000-12KTL-M  Modell ID: 432
05.02. 11:33:01 |----------------   Start  huawei_LAN.php  ----------------------------- 
05.02. 11:33:01    -Huawei: 192.168.50.37 Port: 502 GeräteID: 1
05.02. 11:33:04 >  -Gerätetyp: SUN2000-12KTL-M  Modell ID: 432
05.02. 11:34:01 |----------------   Start  huawei_LAN.php  ----------------------------- 
05.02. 11:34:01    -Huawei: 192.168.50.37 Port: 502 GeräteID: 1
05.02. 11:34:04 >  -Gerätetyp: SUN2000-12KTL-M  Modell ID: 432
05.02. 11:35:01 |----------------   Start  huawei_LAN.php  ----------------------------- 
05.02. 11:35:01    -Huawei: 192.168.50.37 Port: 502 GeräteID: 1
05.02. 11:35:05 >  -Gerätetyp: SUN2000-12KTL-M  Modell ID: 432
Kann es daran liegen, dass diese Werte nicht in der /phpinc/funktionen.inc.php bekannt sind?

Antworten

Zurück zu „Allgemeines“