Hallo zusammen,
Bin gerade dabei, einen Victron MPPT Solar-Controller mit dem VE.Direct Protocol über einen Wemos D1 Mini auszulesen.
Von Victron gibt es eine Open-Source seite dazu: Open source [Victron Energy]
Unter Punkt 4.2 und Arduino sind 3 Lösungsmöglichkeiten die ich aber leider alle nicht zum laufen gebracht habe.
Es gibt auch eine PDF mit dem Protokollaufbau. Die habe ich hier mal als Anhang angefügt!
Möchte es später gerne über MQTT als JSON-String versenden.
Hat dies jemand vielleicht schon so realisiert?
Ich habe jetzt schon alles mögliche ausprobiert. Von Serial.readString() bis Char einlesen. Jedoch leider gar keinen Erfolg.
Ein Auszug aus dem Protokollaufbau:
Newline: A carriage return followed by a line feed (0x0D, 0x0A).
Field-Label: Den Namen des Wertes (z.B. PID, V, I, VPV, PPV)
Tab: A horizontal tab (0x09).
Field-Value: Der auszulesende Wert
Dieses Protokoll() kommt 20 mal hintereinander.
Jedes Mal mit einem anderen Wert (Solarspannung, Seriennummer, ...)
Weiß jemand wie ich dieses Protokoll am Besten eingelesen bekomme?
Bei liefern bis jetzt alle Tests leider gar kein Ergebniss.
Nutze eine SoftwareSerial-Schnittstelle am Wemos (Baud=19200, D2=Rx, D4=Tx Nicht verwendet).
Vielen Dank für die Hilfe!
Victron VE.Direct Protocol.pdf (252 KB)
Dieses dämliche (weil NL vorn dran) Protokoll hatten wir doch gerade erst hier.
Gruß Tommy
Hallo Tommy,
vielen Dank für den hilfreichen Link!
Der Sketch aus Post Nr #44 klappt auf meinem Arduino Mega nicht direkt.
Wenn ich SoftwareSerial gegen den HardwareSerial 1 tausche funktioniert der Sketch einwandfrei!
Eingelesen: PID 0xA05F
PID
0xA05F
Eingelesen: FW 146
FW
146
Eingelesen: SER# HQXXXXXXXXX
SER#
HQXXXXXXXXX
Eingelesen: V 12750
V
12750
Eingelesen: I -250
I
-250
Eingelesen: VPV 40
VPV
40
Eingelesen: PPV 0
PPV
0
Eingelesen: CS 0
CS
0
Eingelesen: MPPT 0
MPPT
0
Eingelesen: OR 0x00000001
OR
0x00000001
Eingelesen: ERR 0
ERR
0
Eingelesen: LOAD ON
LOAD
ON
Eingelesen: IL 200
IL
200
Eingelesen: H19 1156
H19
1156
Eingelesen: H20 10
H20
10
Eingelesen: H21 49
H21
49
Eingelesen: H22 0
H22
0
Eingelesen: H23 0
H23
0
Eingelesen: HSDS 190
HSDS
190
Wenn ich den Sketch mit Software Serial wie in dem Sketch teste, bekomme ich keine Daten!
Auch wenn ich Andere Pins (getestet mit 2=Rx 3=Tx) bekomme ich auch keine Daten.
Scheint also am Software Serial zu legen.
Hast du dafür eine Lösung oder eine Idee woran das liegen könnte? Vielleicht auch gleich eine für den Wemos D1 Mini (ESP8266)
Gruß
Theo
Hallo noiasca,
Das ist der erste Link gewesen, den ich gefunden und getestet habe (Habe ja dazu auch einen Link gepostet auf der man den Link findet...).
Dort bekomme ich als Output keinen einzigen Wert. Habe auch schon zum Debuggen Serial commands gesendet, damit ich sehe, wo er gerade ist. Auch habe ich schon den Teil mit der Checksumme auskommentiert, um zu sehen, ob dies der Auslöser ist.
Leider ohne Erfolg!
Gruß
Theo
Hat niemand dafür eine Idee?
Wieso funktioniert die Hardware Schnittstelle aber die Software-Serial nicht?
Bei meinem anderen Projekt, wo ich zwei Kaco Powador PV-Wechselrichter auslese (über ein RS485 zu TTL Modul) funktioniert es mit der Software-Schnittstelle problemlos. Allerdings bei 9600 Baud!
Und das Victron-Gerät kann leider nur die 19200 Baud!
Gibt es noch irgendwelche anderen Alternativen wie ich die Werte übers Netzwerk (MQTT oder auch http-get requests o.Ä) auslesen kann?
Die Original-Lösung von Victron (Venus GX) für ca. 300€ ist mir etwas zu teuer für diesen einen Controller. Da tüftel ich lieber heraus, wie ich es mit einem arduino ausgelesen bekomme.
Wäre über eine Antwort sehr dankbar!
Edit: Hier habe ich meine Lösung vorgestellt: https://forum.arduino.cc/t/victron-mpppt-75-15/860103/3?u=theo416
Gruß
Theo