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
Code: Alles auswählen
43 fc 10 88 00 00 00 00 00 00 00 00 00 00 d7
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
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
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

Turn On Request:
Code: Alles auswählen
43 c1 10 88 00 00 41 00 15 03 00 00 00 01 f6
Turn On Response:
Code: Alles auswählen
43 c1 10 88 00 00 41 00 15 03 00 00 00 01 f6 00
Turn Off Request:
Code: Alles auswählen
43 c1 10 88 00 00 41 00 15 03 00 00 00 02 f7
Turn Off Response:
Code: Alles auswählen
43 c1 10 88 00 00 41 00 15 03 00 00 00 02 f7 00
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
Reboot Inverter Response:
Code: Alles auswählen
43 c1 10 88 00 00 41 00 15 03 00 00 00 03 f8 00
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
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 64 5b 00
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 5f 56
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 5f 56 00
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 32 29
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 32 29 00
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 19 10
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 19 10 00
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 0a 01
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 0a 01 00
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 01 f8
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 01 f8 00
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 02 f9
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 03 fa
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 04 fb
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 05 fc
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 06 fd
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 07 fe
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 08 ff
Code: Alles auswählen
43 c3 10 88 00 00 41 00 15 03 00 00 00 09 00
Zu NodeRed:
Für den ersten Teil habe ich einen serialnode konfiguriert:
Port:
Code: Alles auswählen
/dev/ttyUSB1
Code: Alles auswählen
9600 8 N 1
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"]
Code: Alles auswählen
["0x43", "0xc0 ", "0x10", "0x88", "0x00", "0x00", "0x41", "0x00", "0x15", "0x03", "0x00", "0x00", "0x00", "0x00", "0xf4"]
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!