Skip to content
View in the app

A better way to browse. Learn more.

Power Forum - Renewable Energy Discussion

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Infinisolar / MPI 10K / Voltronic hybrid inverter and BMS communication with DIY battery

Featured Replies

I always wanted that my 280Ah/16S LiFePo4 battery pack with it's JK BMS fully communicates with my MPI 10k inverter.

Because I did not find any hints regarding this in the net, I started reverse engineering the official BMS card from voltronic, designed for pylontech batteries. 

Conclusion: You simply need to send a ^D054BMS... string periodically to the inverter.

Format looks like this:

D054BMS.jpg.7357c45bfc8208eb248cd55a1e8d564e.jpg

I created a script to read bms data from a mqtt server (I used a ESP32 to read from JK BMS, any others BMS should be possible with little adaptions) and create the ^D054BMS string that can be sent to the inverter: readmqttbms.php
Sending this periodical to the inverter (I adapted my script infinipoll10k) let's the display show the "LI-bAt" and battery values read from BMS.

DisplayLiBat.jpg.ed467c3af472b8430fed3b9258961a1d.jpg

The inverter get's informed about BMS stoped charging/discharging and can react correctly:BMSfault.thumb.png.00fc7aa9f2ef013742dd4980db6aa299.png

Reading the actual bms values from the inverter can be done with the ^P004BMS<CR> command.

There are for sure some values that I missed so far (e.g.the bms fault codes), but I do not own a pylontech battery, so reverese engineering without help from others is impossible.

 

  • 2 years later...

It is the PCB i posted the picture from. That was a PCB i quickly soldered together so i could start writing software for the PIC controller.

The PCB contains a PIC16F88 from microchip, a MAX232 levelshifter for the serial port to the inverter, a MAX485 to drive the RS485 bus to the battery, and a CD4052 analog 4x2 multiplexer to switch toe PIC's hardware the serial port to the inverter ot the battery.

It reads the battery data and puts the Pylontech ASCII data to HEX in the corresponding values in an array. When all data is gathered the string is prepared and the hex data translated to ASCII values. The portspeed is changed from 115200bps to 2400bps and the string is sent to the inverter.

All of this is powered by the serial port DB-9 connector pin 6 of the IGRID TT 10kW inverter (Infinisolar) and works on itself, without adapter. The only thing i need to do is draw the final PCB and put some extra datavalidation in the code. Was thinking to put a second RJ-45 connector on the board to let the battery data being sniffed by a large battery indicator build with LED's to put on the wall in the livingroom.

Any extra handy ideas are welcome :)

Was also playing with the idea that i and someone else had to reduce the charge current gradually when SOC reaches almost 100%... It's an option. Also have some spare pins, maybe for jumpers to let's say, choose battery communication speed selection of 155200 bps or 9600 bps (Pylontech has both)

 

But questions to you Rio,

The charge/discharge value to the inverter that you get from the total battery current, is the '1' charge and '0' discharge? And the Charge Voltage and Float voltage, i keep them the same, bc the BMS lowers the value if float mode is activated. But did not test this yet.

IMG_20250102_133648.jpg

Edited by Wiebo

  • 1 month later...

And the module is finished, programmed and tested.

 

Next is a smartmeter to RS485 adapter to connect the smart meter to this module on the 2nd port and establish communication with bms and smart meter over a single serial port. Zero injection (nulleinspeisung) could also be performed with BMS communication on a single PCB. 

 

IMG_20250224_223411.jpg

IMG_20250224_223341.jpg

IMG_20250224_223646.jpg

  • 2 months later...
  • Author

@stefanschoenmaker Yes, I guess this could fix your issue.

@Wiebo Nice work! Smartmeter connection should be a simple task compared what you've done already. But as far as I understand, you are simple rebuiling the dual-modbus-server from voltronic, right?

I remember I planned something similar too, some month ago. I added wifi and BT to make it possible to communicate with other BMS (old jk-bms with BT connection) and push all data to mqtt for my HA. I added a webif for simple changes (ip, etc.) too.
Design and code were done within some hours (thx to AI), but I've never cobbled together all components.

  • 2 weeks later...

No, this doesn't use modbus. It only gets the BMS data from the battery via Pylontech protocol, and it puts the data in a table, and translates this table to the string to send every 5 seconds. Got not much time to work on it lately to combine it with the smartmeter, but i'll certainly finish it someday :) The smartmeter data is also filtered and the injection and extraction power is also put into the "^S026EMINFO" string and sent to the inverter every second, combined with the BMS string every 5 seconds.

Edited by Wiebo

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.