Steuerung Mikrowechselrichter SG-Serie NETek (2,4GHz Variante)

Micro Wechselrichter, die direkt an die 230V Steckdose angeschlossen werden können. ( Balkonkraftwerk )

Moderator: Ulrich

Antworten
Ichirou
Beiträge: 8
Registriert: Mi 17. Jul 2019, 08:43

Steuerung Mikrowechselrichter SG-Serie NETek (2,4GHz Variante)

Beitrag von Ichirou »

Moin zusammen,

meine jüngste Anschaffung war ein Mikrowechselrichter der Firma Newenergytek (NETek) mit DataBox.
der WR: http://www.newenergytek.com/index.php/content-48
die Databox: http://www.newenergytek.com/index.php/content-57
Treiber und Software: http://www.newenergytek.com/index.php/about-23

Benötigt wird nur der WR. Dieser kann auf 2 Kanälen jeweils bis ca. 350W DC verarbeiten. Die Databox mit Software ist der interessante Teil.

Verwendet wird in der Databox der USB-RS232 Konverter PL2303SA. Weiterhin findet sich darin ein PIC16F1947-I/PT.
Der PIC verarbeitet die gesendeten Befehle und empfangenen Daten und gibt diese über eine 2,4GHz serielle Luftbrücke weiter.

Damit der aber überhaupt erstmal reden möchte, muss man ihn Initialisieren. Das wird normal über die Software NETMS gemacht.
Wird diese verwendet, im übrigen für Einsteiger einfach zu bedienen und relativ umfangreich, gibt es keine Probleme mit Installation und Einrichtung.
Einzig sollte man beachten, wenn man es in den normalen x86-Programmordner installiert, werden Adminrechte für das Programm benötigt, da in diesem Verzeichnis auch div. Daten geschrieben werden.

Ich weiß, wir arbeiten auf einem Raspi o.ä. trotzdem hier auch verweise auf Windows-Konfigurationen zum besseren Verständnis :)

Die Initialisierung:
Nach der Installation des Databox-Treiber unter Win10 sind alle nötigen Einstellungen gemacht. 9600/8/N/1 ist gesetzt, Flowcontrol zwar anwesend, aber von der Software nicht verwendet.

Bei meinem Raspi 4B mit einem 8er oder 9er Raspbian war die Installation noch einfacher: dranstecken, Device taucht als ttyUSB1 auf (habe noch einen LiPo-Balancer auf ttyUSB0, dazu später).

Als Software nutze ich aktuell NodeRed. Ein wechsel auf Solaranzeige folgt sicher noch :)

Die ganze Kommunikation findet auf HEX statt.
Der Einfachheit halber lasse ich erstmal das 0x weg. Je nach verwendeter Software ist das nötig oder eben nicht.

Die Databox benötigt das folgende Kommando zum reden:

Code: Alles auswählen

43 fc 00 00 00 00 00 00 00 00 00 00 00 00 3f
Der Rückgabewert ist:

Code: Alles auswählen

43 fc 10 88 00 00 00 00 00 00 00 00 00 00 d7
Die 10 88 sind die Klartext-ID 1088 der Databox und müssen später immer wieder verwendet werden.

Den Status kriegt man mit diesem Befehl:

Code: Alles auswählen

43 C0 10 88 00 00 41 00 15 03 00 00 00 00 F4
Die 43 ist ein Datenpaket-Init und taucht in jeder Abfrage auf.
C0 ist der Befehlssatz, hier kommen noch C1 (reboot, turn on/off) und C3 (Leistungsanpassung). C2 habe ich bisher nicht gesehen.
10 88 ist die Databox-ID
00 00 konnte ich bisher nicht zuordnen
41 00 15 03 ist die ID des WR, diese findet sich so auch auf der Seite des Gerät. Es sind mehrere WR mit der Databox ansprechbar.
00 00 00 00 F4 ist offenbar der Request zur Statusabfrage.

Der Response:

Code: Alles auswählen

43 C0 10 88 00 00 41 00 15 03 3F 03 E3 00 19 09 78 00 00 59 F7 00 00 00 00 37 11
43 - Daten Init
C0 - Befehlssatz
10 88 - Databox-ID
00 00 - unbekannt
41 00 15 03 - WR-ID
3F - bisher unbekannt* anderer Wert 3E
03 - bisher unbekannt* anderer Wert C8
E3 - bisher unbekannt* anderer Wert 4E
00 - bisher unbekannt* anderer Wert 00
19 - bisher unbekannt* anderer Wert 48
09 78 - Spannung PV /100 enspricht hier 2424 mV = 24,24 V
00 00 - Strom DC /100 entspricht hier 0, 0x02 0xDC wären 748 = 7,48 A
59 F7 - Spannung AC /100 entspricht hier 23031 mV = 230,31 V
00 00 - Strom AC /100, Beispiel 00 64 = 100 = 1 A
00 00 - bisher unbekannt* bislang unverändert
37 - bisher unbekannt* anderer Wert 32
11 - bisher unbekannt* anderer Wert 1e

Der WR speichert seine geleisteten Wh/kWh und gibt diese auch aus. An welcher Stelle kann ich noch nicht erkennen.
Von dem China-BMS kenne ich div. kuriose Berechnungsmethoden um auf die Werte zu kommen, die man haben will.
Ob und in wie weit hier etwas Intelligenz drin steckt, kann ich bisher nicht sagen.
Stand bisher im Test sind ca. 0,42kWh produziert worden.

Die Leistungsanzeige an sich (in der Software NETMS) wird berechnet.

Code: Alles auswählen

P=U*I
Aktuell sind 1s-Abfragen kein Problem, wie sich das bei mehreren Invertern verhält, müsste man mal testen...wenn mein 2. dann demnächst da ist :)

Turn On Request:

Code: Alles auswählen

43 c1 10 88 00 00 41 00 15 03 00 00 00 01 f6
Hier finden wir jetzt c1 als Steuerbefehl und das 01 F6 für "Schalte ein".

Turn On Response:

Code: Alles auswählen

43 c1 10 88 00 00 41 00 15 03 00 00 00 01 f6 00
Ebenfalls C1 als Steuerbefehl, die Antwort, welcher Befehl ausgeführt wurde.

Turn Off Request:

Code: Alles auswählen

43 c1 10 88 00 00 41 00 15 03 00 00 00 02 f7
02 F7 für "Schalte aus"...

Turn Off Response:

Code: Alles auswählen

43 c1 10 88 00 00 41 00 15 03 00 00 00 02 f7 00
...und die Bestätigung.
Was das 00 dahinter bedeutet, weiß ich bislang nicht.

Reboot Inverter Request:

Code: Alles auswählen

43 c1 10 88 00 00 41 00 15 03 00 00 00 03 f8
Code 03 F8 für "Neustart"

Reboot Inverter Response:

Code: Alles auswählen

43 c1 10 88 00 00 41 00 15 03 00 00 00 03 f8 00
Die Antwort.

Kommen wir zur Leistungssteuerung:
Die letzten beiden Byte geben jeweils die Leistung in hex (64 ist 100) sowie dezimal 9 weniger (5b ist 91) an.
Der Abstand von 9 ist immer gleich.

100% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 64 5b
100% Response

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 64 5b 00
95% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 5f 56
95% Response

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 5f 56 00
50% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 32 29
50% Response

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 32 29 00
25% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 19 10
25% Response

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 19 10 00
10% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 0a 01
10% Response

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 0a 01 00
1% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 01 f8
1% Response

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 01 f8 00
2% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 02 f9
3% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 03 fa
4% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 04 fb
5% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 05 fc
6% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 06 fd
7% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 07 fe
8% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 08 ff
9% Request

Code: Alles auswählen

43 c3 10 88 00 00 41 00 15 03 00 00 00 09 00
Wie wir hier sehen, ist bei 9 die Differenz 0, bei weniger als 9% starten wir bei dez. 255. Daher mal alle Requests für 1-10%. Die Response sind nur um eine 00 am Ende ergänzt.

Zu NodeRed:
Für den ersten Teil habe ich einen serialnode konfiguriert:
Port:

Code: Alles auswählen

/dev/ttyUSB1
settings:

Code: Alles auswählen

9600 8 N 1
flowcontrol komplett auf auto (DTR, RTS,CTS,DSR)
Für den Input habe ich: wait for start character 0x43, then Split Input after a silence of 200ms and deliver binary buffers
Der Request timeout steht auf 1000ms.

Weiter verwende ich zum Testen:
einen Inject-Node mit einem buffer für Init:

Code: Alles auswählen

["0x43", "0xfc", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x3f"]
sowie einen 2. Inject für Status:

Code: Alles auswählen

["0x43", "0xc0 ", "0x10", "0x88", "0x00", "0x00", "0x41", "0x00", "0x15", "0x03", "0x00", "0x00", "0x00", "0x00", "0xf4"]
Einen Funktionsblock dafür erstelle ich derzeit, wo auch die hier Dokumentierten Dinge einfließen.

Bilder gibt es später auch noch.

Ich hoffe, ihr könnt mit den Infos was anfangen. Die Inverter sind relativ günstig, machen aber von der Elektronik einen guten Eindruck.
Der 700MD (2x350W DC) kostet ca. 140€ bei Y&H, die Databox ca. 42€ und das passende Schuko-Kabel (nur bei Verwendung von 1x Inverter möglich, da an der Weiterleitung zum nächsten Inverter angeschlossen!) kostet ca. 19€.
Leider kommen diese Inverter nicht mit einem Wielandstecker oder Schuko direkt, verwendet wird hier ein M25 3Pol. RC-H19. Diese Stecker/Buchse-Sets findet mal bei Aliexpress für 2-3 USD.
Ändert man den Stecker, ist natürlich nix mehr mit Garantie. Der Stecker ist natürlich angegossen...

Ich hoffe auf viele Antworten und natürlich (Er)Klärung der noch offenen Bytes. :)

Wer bis hier her gelesen hat: Respekt!
Bonus:
Oben erwähnte ich ein BMS aus China, dieses kann bis 100A Ausgang und ist aktiv mit RS232 über USB. In einem anderen Thread wurde dieses kleine Biest bereits erwähnt.
Mein Akku ist ein LG18650-MH1 7S10P selbstbau. Die Daten aus dem BMS sind soweit gut, es schaltet ab und ist komplett konfigurierbar.
Der Preis ist stolz: ca. 70€ zzgl. Bluetooth-Adapter uns USB-Box.
Das Protokoll ist nicht ganz ohne, letztlich aber auch nur RS232.
Entsprechende NodeRed-Blöcke kann ich auf Wunsch bereitstellen, vielleicht kann man sowas auch in die Solaranzeige mit ingegrieren.
Bei Bedarf, unten in die Antworten :)

Viel Spaß beim basteln!

Antworten