helgeerbe / OpenDTU-OnBattery

Software for ESP32 to talk to Hoymiles Inverters and Victrons MPPT battery chargers (Ve.Direct)
GNU General Public License v2.0
253 stars 56 forks source link

Feature: Add support for a third Victron MPPT charge controller #1018

Closed schlimmchen closed 3 weeks ago

schlimmchen commented 3 weeks ago

Still not using software based serial, this change makes the serial port manager assign a hardware serial port on a first-come-first-serve basis. All software components requiring a serial port now ask for the index to use at the serial port manager. There may be none left, such that a meaningful message is printed:

[SerialPortManager] HW UART 0 already in use by 'Victron MPPT 1'
[SerialPortManager] HW UART 1 already in use by 'Victron MPPT 2'
[SerialPortManager] HW UART 2 already in use by 'SDM power meter'
[SerialPortManager] Cannot assign another HW UART port to 'JK BMS'

ESP32 without USB CDC (all non-S3 and ESP32-S3 withouth USB CDC) still print their serial messages through hardware UART 0, so that one is reserved at initialization and only two hardware UARTs are freely available:

[SerialPortManager] HW UART port 0 now in use by 'Serial Console'
...
[SerialPortManager] HW UART 0 already in use by 'Serial Console'
[SerialPortManager] HW UART 1 already in use by 'Victron MPPT 1'
[SerialPortManager] HW UART 2 now in use by 'JK BMS'

In particular, this allows to connect up to three Victron MPPT, which was the original motivation for this PR.

[SerialPortManager] HW UART 0 already in use by 'Victron MPPT 1'
[SerialPortManager] HW UART 1 already in use by 'Victron MPPT 2'
[SerialPortManager] HW UART 2 already in use by 'Victron MPPT 3'
[SerialPortManager] Cannot assign another HW UART port to 'JK BMS'
schlimmchen commented 3 weeks ago

@Snusme83 Bitte installiere die Firmware aus dem Build Run dieses PR. Erweitere deine pin_mapping.json um victron.rx3 (ggf. auch victron.tx3). Anschließend sollte der dritte Victron auftauchen im live view, wenn du alles korrekt verkabelt hast bzw. das pin mapping stimmt.

Zur Erinnerung: Das funktioniert nur, wenn du einen ESP32-S3 nimmst, darauf die generic_esp32s3_usb Variante der Firmware einspielst, und weder SmartShunt noch JK BMS noch SDM Power Meter verwendest. Nur dann sind drei Hardware UARTs frei, die dann alle für die MPPTs verwendet werden.

Bitte lass uns wissen, ob das funktioniert.

Snusme83 commented 3 weeks ago

@Snusme83 Bitte installiere die Firmware aus dem Build Run dieses PR. Erweitere deine pin_mapping.json um victron.rx3 (ggf. auch victron.tx3). Anschließend sollte der dritte Victron auftauchen im live view, wenn du alles korrekt verkabelt hast bzw. das pin mapping stimmt.

Zur Erinnerung: Das funktioniert nur, wenn du einen ESP32-S3 nimmst, darauf die generic_esp32s3_usb Variante der Firmware einspielst, und weder SmartShunt noch JK BMS noch SDM Power Meter verwendest. Nur dann sind drei Hardware UARTs frei, die dann alle für die MPPTs verwendet werden.

Bitte lass uns wissen, ob das funktioniert.

@schlimmchen: Danke vorab für deine Hilfe!

Ich hab die Firmware aufgespielt, in dem ich in der openDTUonBattery diese Firmware (generic_esp32s3 OHNE USB) aktualisiert habe: Screenshot Firmwareaktualisierung

und dann habe ich die pin_mapping erweitert:

Screenshot 3xpinmapping

Hab dann neue Kabel gelötet und wie in der "neuen" pin_mapping versucht, den dritten fehlenden Laderegler in der neuen openDTUonBattery anzuschließen.

Leider funktioniert nur rx2 (rx2:5, tx2:4) auf dem gpio 5! rx (rx:44, tx:43) und rx3 (rx3:7, tx3:6) funktionieren nicht!

Schaut dann so aus auf zwei verschiedenen openDTUonBatteries (ein absoluter Traum wäre es halt, wenn ich alles innerhalb einer openDTUonBattery integriert hätte: Screenshot beide OpenDTU gleichzeitig

Könnte sein dass mit den von mir vorgegebenen GPIO in der pin_mapping was nicht passt, oder es daran liegt, dass ich die falsche Firmware upgedated hab! Kann beides nochmal ändern/testen, aber vielleicht siehst du als Profi den Fehler gleich aufgrund meiner Beschreibung. Danke schon mal vorab für deine Unterstützung.

schlimmchen commented 3 weeks ago
Snusme83 commented 3 weeks ago

@Snusme83 Bitte installiere die Firmware aus dem Build Run dieses PR. Erweitere deine pin_mapping.json um victron.rx3 (ggf. auch victron.tx3). Anschließend sollte der dritte Victron auftauchen im live view, wenn du alles korrekt verkabelt hast bzw. das pin mapping stimmt.

Zur Erinnerung: Das funktioniert nur, wenn du einen ESP32-S3 nimmst, darauf die generic_esp32s3_usb Variante der Firmware einspielst, und weder SmartShunt noch JK BMS noch SDM Power Meter verwendest. Nur dann sind drei Hardware UARTs frei, die dann alle für die MPPTs verwendet werden.

Bitte lass uns wissen, ob das funktioniert.

Hab jetzt die generic_esp32s3_usb-firmware aufgespielt, dann funktionierte es mit zwei Ladereglern, im Anschluss noch die pin_mapping geändert (44 und 43 funktionieren nicht). Mit 15 und 16 geht es scheinbar. Muss jetzt noch alle drei gleichzeitig anhängen und dann noch die Speicher anstöpseln.

Snusme83 commented 3 weeks ago

generic_esp32s3_usb hab ich installiert. Die rot hinterlegten Tabellenzeilen sindt rot hinterlegt! Screenshot 3 x Mppt Liveansicht Screenshot pin_mapping rot

schlimmchen commented 3 weeks ago

Dass die Tabellenzeilen rot hinterlegt sind, ist ein Fehler im Code. Warum ich den nicht bemerkt habe, ist mir schleierhaft. Ich hab einen Fix ins Repo ge-push't. Allerdings erklärt das nicht, warum der dritte MPPT bei dir nicht tut. Bist du sicher, dass du Pins/GPIOs 6 und 7 nicht anderweitig schon verwendet hast? Hast du ein NRF24 Funkmodul und kein CMT2003? Kannst du einmal deine pin_mapping.json teilen?

Installiere bitte trotzdem die neue Firmware und probiere nochmal. Hierbei müssten insbesondere alle Zeilen im device manager nicht mehr rot hinterlegt sein.

Snusme83 commented 3 weeks ago

Es funktionierten alle drei Laderegler mit den von mir geänderten pin_mapping (victron 1-3: GPIO 4/5, 6/7, 15/16). Als ich den Speicher angeschlossen hab und die pin_mapping für die battery auf GPIO 17 und 18 geändert hab, hat sich die openDTUonBattery aufgehangen!

6 und 7 werden/ wurden nicht anderweitig verwendet. Ich hab ein NRF24 Funkmodul, da HM-1500!

Hier die pin_mapping.json:

pin_mapping.json

Das mit der neuen Firmware wird gleich nochmal versucht.

Snusme83 commented 3 weeks ago

Sobald ich den US3000C anstecke hängt sich die OpenDTUonBattery auf und es geht nix mehr!

schlimmchen commented 3 weeks ago

Okay, danke für die Rückmeldung. Was diesen Pull Request angeht lese ich: Es funktioniert.

Warum deine OpenDTU sich aufhängt wenn du die Pylontech (?) Batterie anschließt, ist eine andere Geschichte. Bitte mach dazu ein neues Issue auf, und dann versuchen wir der Sache auf den Grund zu gehen.