Erfahrungen mit der Anbindung von Huawei Wechselrichtern?

Begonnen von lingerb, 30 Oktober 2020, 20:02:56

Vorheriges Thema - Nächstes Thema

horchundkuck

#165
Hallo Robert,

Danke für deine Rückmeldung. Das war sehr hilfreich:
ZitatSomit kann es durchaus zu Inkonsistenzen führen, wenn der eine Wert noch alt ist und der andere schon neu.
Genau so ist es. Ja, ich benutze deine tolle Modbus-Definition als Grundlage, mit einigen weiteren Readings von passibe und mir, um meine BAT und WR Steuerung umzusetzen. Da war das Polldelay bei diesen 5 Werten bereits gelöscht. Allerdings hatte ich im Gerät teilweise unterschiedliche attr poll- definiert. Nachdem ich nun den Zusammenhang von Polldelay, attr poll- und Interval besser verstehe, habe ich meine Definitionen korrigiert. Es bleibt dennoch eine positive Differenz. Die Berechnung der Einzelwerte liegt durchweg über 'WR_Leistung_EingangSolar_W', 20-40 W bei annähernd gleicher 'WR_Leistung_EingangSolar_W'. Ursache dafür ist bei mir tatsächlich das Timing der Readings, die Zeitstempel der 5 Werte sind selten exakt gleich. Daher "zappelt" die Berechnung immer mit. Da ich nun eher nicht ständig die beiden Dachflächen zusammenrechnen muss, um sie mathematisch genau mit 'WR_Leistung_EingangSolar_W' zu vergleichen, beende ich diesen "Ausflug". Die Ursache ist mit deiner Info gefunden. Vielen Dank dafür.
Die Berechnung der prozentualen Verteilung auf beide Dachflächen passt mathematisch exakt. Das genügt mir vollkommen.

Herzliche Grüße, Heinz

miguelito

#166
So Leute,

ich wollte in den letzten Wochen mal mit der Smartmeter / DTSU666 "Simulation" beginnen: Die Werte, die ich aus dem Smartmeter des Netzwerkproviders auslese über Modbus dem Sun2000 Inverter zur Verfügung stellen indem ich das DTSU666 Protokoll (Modbus Registerbelegung) nachbaue:

Die Modbusdefintion der DTSU (Gerät von CHINT nicht Huawei wie ich anfänglich glaubte) im Anhang für diejenigen, die es interessiert.

Erster einfacher Ansatz: Bei den Grundeinstellungen über die FusionSolar App kann man dem Inverter mitteilen, dass ein Smartmeter dran hängt.
Dann pollt der Inverter die ersten Register vom Smartmeter um zu schauen, ob da eh einer dran hängt. Konkret beginnt er mit 0x2001 auf Slave ID 11 (11 ist die Standard ID für den Smartmeter). Rx .. Anfrage des Inverters, Tx .. Antwort meines Modbus Slave Tools:

Rx:000036-15:31:54.131-0B 03 07 D1 00 01 D5 ED
Tx:000037-15:31:54.131-0B 83 01 A0 F2

Ich simuliere die ersten paar Register lt. Spec stumpf auf dem PC Tool "ModbusSlave 7.3" mit konstant z.B. 231V. Auf 0x2001, 0x2002 liegt die Spannung als Float.
Allerdings scheint der Inverter nicht mit meiner Response zufrieden denn er frägt das Register (siehe trace oben) 6x ab, dann gibt er auf.

Nun wäre es toll, wenn jemand, der eine DTSU666 im System hat einen Modbustrace machen könnte: USB-RS485 Adapter vorausgesetzt (siehe Bild im Anhang - 7€ Amazon).
Ich habe meinen Trace mit dem sehr einfachen, freien Tool "OpenSerialPortMonitor" gemacht (9600 Baud, 1 Stop, no parity).

Einen Verdacht habe ich jedoch: Mit einem online IEE float converter 231V auf float Repräsentation umgerechnet sehe ich gerade, dass das eigentlich 0x43670000 sein sollten. K.A wie ich auf die 0x83010000 gekommen bin, die ihr im Trace seht. das muss ich nochmal kontrollieren, sobald Zeit ist.

Michael

TheTrumpeter

Zitat von: miguelito am 14 März 2024, 07:55:06konstant z.B. 231V
Zitat von: miguelito am 14 März 2024, 07:55:06Mit einem online IEE float converter 231V auf float Repräsentation umgerechnet sehe ich gerade, dass das eigentlich 0x43670000 sein sollten. K.A wie ich auf die 0x83010000 gekommen bin
2 Gedanken dazu...
1. Der Inverter liefert "seine" Spannungen auf den 3 Phasen ja auch via Modbus, d.h. dort könntest Du die Hex-Werte direkt abgreifen, sofern die Datentypen und Umrechnungen ident sind.
2. Möglicherweise verwirft der Inverter die Antworten, wenn sie unplausibel weit von "seinen" Spannungen abweichen?

Noch eine generelle Frage:
Irgendwo wurde hier vor kurzem mal behauptet, dass Modbus-TCP über das Dongle nicht mehr funktioniert, wenn man zusätzlich den Modbus-Anschluss vom Inverter benutzt. Kannst Du das bestätigen? (Kann ich mir eigentlich nicht vorstellen, weil dann könnten alle, die die DTSU von Huawei dranhängen haben, nicht mehr über Modbus-TCP mitlauschen?)


Zitat von: miguelito am 14 März 2024, 07:55:06USB-RS485 Adapter vorausgesetzt (siehe Bild im Anhang - 7€ Amazon)
Die kann man natürlich auch direkt vom Ali deutlich günstiger beziehen, https://de.aliexpress.com/item/1005005654643638.html
Achtung: Allzu lange Lebensdauer darf man davon nicht erwarten, ich verwende die Teile zur Anbindung meiner proprietären Beschattungssteuerung an den RasPi/FHEM. Nach 1-2 Jahren segnen die das Zeitliche, nicht ohne dabei irgendeinen elektrischen Fehler am Bus zu verursachen, was meine Beschattungssteuerung dann in den Notbetrieb schickt.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

bertl

Zitat von: bertl am 19 Februar 2024, 17:00:22Aber leider gibt es (soweit mir bekannt ist) in FHEM noch kein Modul, welches AES verschlüsselte OBIS Zählerdaten einbindet.

Jetzt gibt es ein passendes Modul für die AMIS-Zähler aus Oberösterreich.

Hier der Link: 98_TD3511_OOE.pm für Siemens AMIS-Zähler vom EVU - Netz Oberösterreich

Gruß Robert

miguelito

Hi,

Zitat von: TheTrumpeter am 14 März 2024, 08:15:092 Gedanken dazu...
1. Der Inverter liefert "seine" Spannungen auf den 3 Phasen ja auch via Modbus, d.h. dort könntest Du die Hex-Werte direkt abgreifen, sofern die Datentypen und Umrechnungen ident sind.
2. Möglicherweise verwirft der Inverter die Antworten, wenn sie unplausibel weit von "seinen" Spannungen abweichen?

Noch eine generelle Frage:
Irgendwo wurde hier vor kurzem mal behauptet, dass Modbus-TCP über das Dongle nicht mehr funktioniert, wenn man zusätzlich den Modbus-Anschluss vom Inverter benutzt. Kannst Du das bestätigen? (Kann ich mir eigentlich nicht vorstellen, weil dann könnten alle, die die DTSU von Huawei dranhängen haben, nicht mehr über Modbus-TCP mitlauschen?)


Trumpeter,
genau, dass der Inverter den gelieferten Spannungswert nicht akzeptiert weil er nicht plausibel ist (out of bounds oder Abweichung) ist eben mein Verdacht - entweder rechne ich falsch um, weil eben doch nicht FLOAT standard oder er plausibilisiert mit eigenen Spannungswerten -> das ist ein sehr guter Hinweis.
Auch das mit dem Auslesen der korrespondierenden Spannungen vom Inverter ist eine gute Idee - wenn die gleich codiert sind.

Zu Deiner Frage Modbus Dongle / Klemmen. Das habe ich selber ausprobiert weil im Netz keine klare Aussage dazu zu finden war. Es ist umgekehrt:

Wenn der Dongle dran hängt, dann reagiert der Inverter auf den Klemmen von Modbus 2 (Pins 5,7,9 - wenn ich das richtig im Kopf habe) nur mehr als MASTER! D.h. Du kannst keine Werte vom Inverter dort abfragen. Er arbeitet als Master um z.B. den DTSU abzufragen. Erst wenn der Dongle wieder abgesteckt wird, kannst Du auf diesem Bus Werte vom Inverter auslesen.

LG Michael

TheTrumpeter

Zitat von: miguelito am 14 März 2024, 12:58:26Auch das mit dem Auslesen der korrespondierenden Spannungen vom Inverter ist eine gute Idee - wenn die gleich codiert sind.
1. Phase ist beispielsweise auf Adresse 32069 als UINT16 mit Quantisierung 10.
Bei z.B. 235,0 Volt würde ich als Rohwert 2350 dezimal bzw. 0x092E erwarten. Das passt aber gar nicht zu dem was Du weiter oben zur DTSU angehängt hast.

Zitat von: miguelito am 14 März 2024, 12:58:26Wenn der Dongle dran hängt, dann reagiert der Inverter auf den Klemmen von Modbus 2 (Pins 5,7,9 - wenn ich das richtig im Kopf habe) nur mehr als MASTER! D.h. Du kannst keine Werte vom Inverter dort abfragen. Er arbeitet als Master um z.B. den DTSU abzufragen. Erst wenn der Dongle wieder abgesteckt wird, kannst Du auf diesem Bus Werte vom Inverter auslesen.
Gut, das passt dann wieder zu meinem Weltbild. Über das Dongle lässt sich immer via Modbus-TCP abfragen. Wenn das Dongle aber dran ist, lässt sich der Inverter nicht mehr über die Modbus-Pins abfragen.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

bertl

Zitat von: miguelito am 14 März 2024, 07:55:06Dann pollt der Inverter die ersten Register vom Smartmeter um zu schauen, ob da eh einer dran hängt. Konkret beginnt er mit 0x2001 auf Slave ID 11 (11 ist die Standard ID für den Smartmeter)

Laut deiner angehängten Modbus-Definition ist die korrekte Adresse 0x2000 (Uab), 0x2002 (Ubc), 0x2004 (Uca).
Nicht wie du schreibst 0x2001

Vielleicht ist das ja auch dein Problem?

TheTrumpeter

Zitat von: bertl am 14 März 2024, 14:52:51Laut deiner angehängten Modbus-Definition ist die korrekte Adresse 0x2000 (Uab), 0x2002 (Ubc), 0x2004 (Uca).
Nicht wie du schreibst 0x2001
Eventuell baut er die 32-Bit Werte ja "von hinten" auf, also erst 0x2001h und dann 0x2000h, gefolgt von 0x2003h und dann 0x2002h?
Allerdings ist die Frage, was dort genau drauf muss?
In dem Dokument steht ja, dass diese Register für 4-Draht-Verkabelungen ungültig sind. Die Werte müssten doch auf 0x2006h und folgende?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

bertl

Zitat von: TheTrumpeter am 14 März 2024, 14:45:24Gut, das passt dann wieder zu meinem Weltbild. Über das Dongle lässt sich immer via Modbus-TCP abfragen. Wenn das Dongle aber dran ist, lässt sich der Inverter nicht mehr über die Modbus-Pins abfragen.

Hallo Trumpeter,

der Modbus-Anschluss vom Inverter hat meines Wissens nichts mit dem SDongleA zu tun.
Sobald der DTSU666 am Modbus-Anschluss vom Inverter hängt, kann man die Daten nicht mehr als Master abfragen, weil der Inverter als Master die Daten vom DTSU666 abfragt.
Maximal mitlauschen wäre möglich (Modbus passive listener) - was ich aber noch nicht zusammengebracht habe.

Lg Robert

miguelito

Fakt ist, dass 2001 als erstes abgefragt wird. Ich dachte zuerst an das Modbus "Offsetproblem" dh in der Spec steht Adresse 2000 adressiert wird aber 2001. Aber vielleicht hat Trumpeter recht und es wird zuerst der nachkommateil ausgelesen. Nur wenn das so ist musste er den Wert eigentlich fressen, denn < 1volt kann das Toleranzfenster wohl nicht sein.. trace wäre cool.

bertl

Hallo Michael,

ich weiß nicht ob du mit dem was anfangen kannst, aber ich habe die Daten des DTSU666 mal für 3 Minuten seriell getraced und dir den Log angehängt.
Nachdem du keine weitern Angaben gegeben hast, einfach als Hex-Wurscht!

Gruß Robert

miguelito

Robert,

das ist voll super damit kann ich sicher etwas anfangen. Noch nicht angesehen..

Ich will den tread nicht mit meinem Smartmeter thema spammen aber vorgestern doch noch etwas weiter gekommen:

- Das "inverted float" hat mich fehlgeleitet - das ist im Modbusjargon offenbar ein Synonym für "big endian" - Aus einem Dokument von Seametrics Modbus Interface Description. Hänge den Ausschnitt bei Zeiten rein. Außerdem sind die ersten Register 2000ff die Werte zwischen den Phasen Uxy und nicht die Linespannungswerte. Also 400V. Mit Faktor 10 Skaliert lt Anhang DTSU spec. 411V reingeschrieben in Register 2001 und das hat den Inverter zufrieden gestellt. Danach möchte er Register 3 - den Anschlusstyp (3/4 Leiter) auslesen. Siehe Trace:

[RTU]>Rx > 18:02:19:332 - 0B 03 07 D1 00 01 D5 ED
[RTU]>Tx > 18:02:19:351 - 0B 03 02 10 0E AC 41
[RTU]>Rx > 18:02:20:989 - 0B 03 00 03 00 01 74 A0
[RTU]>Tx > 18:02:21:023 - 0B 03 02 00 00 20 45
[RTU]>Rx > 18:02:23:899 - 01 03 06 AA 00 01 A4 A2
[RTU]>Tx > 18:02:23:916 - 83 04

Danach will er Register 1706 von Slave #1 auslesen? Da gibts ja no so ne Huawei device für Statistik, externen zugriff etc...
Mal sehen was der Trace von Robert an Erleuchtung bringt ;)

Michael

Phill

Hallo, hier ein Paar Erkenntnisse die ich in letzter Zeit zu meinem SUN2000 sammeln konnte. Falls jemand auf die gleichen Probleme gestoßen ist.

Ich habe festgestellt das die Einbindung des SolarForecast Moduls aus diesem Beitrag nicht ganz korrekt ist. Und zwar Berücksichtigt "WR_Energie_PV_Gesamt_kWh" welches an das SolarForecast Modul übergeben wird auch die umgewandelte Batterieausgabe. Das hat zur folge, vorausgesetzt es hängt eine Batterie mit im System, das die reele Erzeugung verzerrt wird. Um die tatsächliche Erzeugung zu ermitteln müssen die Batterieerträge mit eingerechnet werden.
Hier meine Ergänzung im Userreading:
WR_Energie_PVR_Gesamt_kWh:WR_Energie_PV_Gesamt_kWh.* {
ReadingsNum($NAME,"WR_Energie_PV_Gesamt_kWh",0) + ReadingsNum($NAME,"BAT_Gesamt_Ladung_kWh",0) - ReadingsNum($NAME,"BAT_Gesamt_Entladung_kWh",0)
},
Dazu braucht man aber auch die Gesamterträge der Batterie. Ich habe mein aktuelles Sun2000ModbusModul mal angehängt.
Wird jetzt im SolarForecast Modul auf PVR verwiesen werden die Erträge korrekt angezeigt. Siehe solar.jpg.
currentBatteryDev pv_wr pin=BAT_Leistung_Laden_Momentan_W:W pout=BAT_Leistung_Entladen_Momentan_W:W charge=BAT_Ladestand
currentInverterDev pv_wr pv=WR_Leistung_EingangSolar_W:W etotal=WR_Energie_PVR_Gesamt_kWh:kWh capacity=10000
currentMeterDev pv_wr gcon=PM_Energie_vomNetz_Momentan_W:W contotal=PM_Energie_vomNetz_Gesamt_kWh:kWh gfeedin=PM_Energie_insNetz_Momentan_W:W feedtotal=PM_Energie_insNetz_Gesamt_kWh:kWh

Weiter hatte ich bei schwankender Sonneneinstrahlung bemerkt das "Haus_Leistung_Momentan_W" mir unplausible und falsche Werte anzeigt. Das liegt daran da der Wert über "WR_Leistung_EingangSolar_W" berechnet wird und "BAT_Leistung_W" und "PM_Leistung_Momentan_W" erst zeitversetzt aktualisiert werden um den Schwankungen entgegen zu wirken.
Ich habe dazu folgenden event-aggregator definiert um den Wert zu stabilisieren:
attr pv_wr event-aggregator Haus_Leistung_Momentan_W::none:median:90Siehe Verbrauch in leistung.jpg

Vielleicht hilft es ja jemand weiter, oder vielleicht hat ja jemand auch bessere Lösungen gefunden.

Grüße
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

miguelito

#178
Zitat von: bertl am 14 März 2024, 18:21:35[..] aber ich habe die Daten des DTSU666 mal für 3 Minuten seriell getraced und dir den Log angehängt.
Nachdem du keine weitern Angaben gegeben hast, einfach als Hex-Wurscht!

Robert, danke nochmal bin jetzt dazu gekommen das kurz anzusehen. Beim nächsten Trace: Zeitstempel und Request / Response zeilenweise helfen beim Lesen ;)

Egal, ich habe Deine Datei einfach auf die "Billige" gepimpt indem ich mit search/replace bei jedem 0x0B 0x03 einen Zeilenvorschub eingebaut habe. Damit hat man dann die Lesbarkeit.
Dein Trace gibt folgendes Bild:

0B 03 08 36 00 50 A7 32
0B 03 A0 3F 8A E1 48 3F 8B 22 D1 3F 89 16 87 43 65 19 9A 43 64 4C CD 43 65 19 9A 43 66 19 9A 43 C6 66 66 43 C6 0C CD 43 C6 CC CD 43 C6 73 33 42 48 0A 3D 44 02 F3 33 43 24 19 9A 43 15 4C CD 43 52 66 66 C3 21 E6 66 C2 29 99 9A C2 06 66 66 C2 AB 99 9A 44 37 0C CD 43 6F 4C CD 43 77 66 66 43 75 4C CD BF 37 0A 3D BF 37 0A 3D BF 19 DB 23 BF 5A E1 48 C5 79 0D 9A C4 A5 94 CD C4 E6 56 14 C4 4C 5F 5C 45 39 46 14 44 93 EA 8F 44 41 13 33 44 AE 96 B8 45 D9 29 D7 45 1C BF AE 45 23 6F D7 45 0A 63 33 A4 98

.. (17 oder 18x)

0B 03 08 36 00 50 A7 32
0B 03 A0 3F 8A C0 83 3F 8A C0 83 3F 91 26 E9 43 65 00 00 43 64 66 66 43 64 E6 66 43 65 E6 66 43 C6 59 9A 43 C6 00 00 43 C6 A6 66 43 C6 73 33 42 48 0A 3D 44 08 33 33 43 2D 33 33 43 15 00 00 43 5E 66 66 C3 23 80 00 C2 2A 66 66 C2 06 00 00 C2 AE CC CD 44 3C 39 9A 43 76 80 00 43 76 99 9A 43 81 D9 9A BF 37 CE D9 BF 38 51 EC BF 1A 9F BE BF 5A E1 48 C5 79 0D 9A C4 A5 94 CD C4 E6 56 14 C4 4C 5F 5C 45 39 46 14 44 93 EA 8F 44 41 13 33 44 AE 96 B8 45 D9 29 D7 45 1C BF AE 45 23 6F D7 45 0A 63 33 6C 0B

0B 03 08 A6 00 0A 27 24
0B 03 14 43 22 CF 5C 00 00 00 00 00 00 00 00 00 00 00 00 44 8A 8D C3 03 19

Interpretation. Der Inverter macht 2 unterschiedliche Anfragen an die DTU:
  • Address 0x0836 (2102) 0x50 (80) Register (160 Bytes) -> 18x in Folge
  • Address 0x08A6 (2214) 0xA (10) Register (20 Bytes) -> Dann 1x diese Anfrage dann wieder 18x die Erste

Damit gleich das nächste Rätsel - Die Adressen, die hier abgefragt werden, sind nicht in der Spec / Operation Manual - siehe mein Anhang oben...

Du hast aber schon den DTSU666? Da gibt's ja auch noch ein anderes Modell, das von den Sun2000 unterstützt wird (gemäß Einstell App) - habe den Namen vergessen...

Michael

bertl

Hallo Michael,

ja ich habe den DTSU666-H 250A/50mA.

Robert