-
Notifications
You must be signed in to change notification settings - Fork 152
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Full BMS support for PI17 #219
Comments
Seems like you could achieve something with a specific output module, i.e
this type of output hasnt been implemented yet, but shouldnt be a problem (with a lot of testing) |
Ok, thx. |
After a long research I've finally found out, how PI17/PI18 inverters (10k, 15k) get the BMS values. Conclusion: You simply need to send a ^D054BMS... string periodically to the inverter. @jblance Maybe you can implement this in your work - reading data from jk-bms (I do that currently with a extra ESP32 from https://forum.drbacke.de/viewtopic.php?t=982) and send it to mpp solar inverter. |
Hello, |
I have MPI 10k, and successfully used this command to set charge and discharge limits, and alarms. |
Hi, slightly off-topic because I don't need/have any BMS. Edit: I managed to communicate using protocol 17!
|
It would be wonderfull, that we could communicate like a BMS to MPP-inverters! |
In fact BMS comms to MPP/FSP/Voltrinic hybrid inverters (10/15k) is quite easy. I run it with my php scripts since more than 2 years witout any issue. All you need is the information from my post above. As far as I understand this project, it's "simply" pulling data from inverters and bms' for using this data in 3rd pty visualization. For bms comms to work, data from bms need to be processed and sent to the inverter. @jblance Is bms->inverter comms on the 2do list, or will it never be implemented anyway. Off course, pulled data from bms (e.g. jk) would have to be temporarily stored on the machine and then be sent to the inverter while quering production data. |
Hi riogrande75, I have noticed, you are the one from Dr. Backe. :) |
The link doesn't work anymore. |
This is pretty close - it simply runs a command (any inverter or other device command) and outputs it (to a variety of outputs including mqtt)
It is, probably in the powermon codebase though (as mppsolar is creaking at the seams a bit) How does you php logic work? |
There is no start command, etc. for BMS comms to start working. I created this php script that pulls data from jk bms and prepares the BMS string in a shared mem obj as well as pushing values to mqtt for my hassio battery monitoring. There is in fact no communication in direction downwards from the inverter to bms. Obviously not needed. |
Hi, i will use my words: Einfach Endgeil hier.... |
Well, I guess that shouldn't be a big deal with the code I posted. Big difference to the query command 's is to prepare the BMS string's CRC (crc16-xmodem). |
Do you get a response to the following command?
In my case the log looks like this: (BMS1 without CRC, BMS2 with CRC) I'm sending just 'BMS_2' |
I have changed your code in readmqttbms.php from: Result |
I have now the following datapackage this package is going thrue your script
output in console: But inverter don't switch to LI-Mode |
What FW version is on your inverter? |
2024-06-08 22:58:51: BMS_1: ^D054BMS0531,090,0,0015,0,0,0560,0560,1500,1,1,0504,2000 for the BMS_1 string I have used Python to 'verhexen' . DSP-Version: 211222123000 |
FW version is ok. When I do it with your BMS string and my code the hex string looks like this. |
The hex value is converted into a chr and transferred.
My guess is that the MPI12k does not recognize the ^D054... command, I don't get a response to the ^P004BMS request either. |
Ahhh, a MPI 12k WP.... If you have a firmware update for your inverter, I can disassamble it and check if the command is really missing or it has been modified. |
you can also look at my script which sends the bms command: https://github.com/rene-dev/solar/blob/master/mqtt.py#L102 |
I have testet a snipset of your pythoncode with serial.
I have to add "big", without I have got an error message from Python
With ^P003ID --> b'^D0251496162206100759000000@\x90\r' Thank you very much for your kind help. |
Did you activate BMS and set battery mode to LiFe in solarpower? If you have a RS485 BMS port on your MPI 12k WP, why do you frickle arround with bms command instead of using a esp32 for directly connecting jk with the inv? You could also use a simple serial2eth converter and send reply's via bms port as a last resort. |
I have tried everything, the commands was sendind more than 12h. |
We're OT for a long time 🫣 Pls. leave this git issue and read how to connect a seplos directly to your inverter. SEPLOS "speaks" pylontech protocol, it can be connected with a simple cable, and the correct setup, off course. |
With later firmware versions (>2017) of the infini-/mpp-solar 10+15kw inverters, full bms support was implemented.
Only supported BMS I'm aware of is pylontech via RS485 bus. You need a extra modbus-card (with modified fw on it) so the inverter can communicate with the bms. See http://www.mppsolar.com/manual/ACCESSORIES%20(FOR%20MONITORING)/BMS%20RS485%20Card/RS485-Card-Box-for%20BMS-manual-20181106.pdf
While pylontech's rs485 bms commandos are well know, the internal communication between the (bms-)modbus card and the inverter is secret.
To disclose the secret I disassamled the slave firmware of the 10k and noticed 2 PI17 commands that might be involved:
BMS
BMSV
The BMSV command just reads out the fw-version (date) from the plugged bms-card - so quite uninterresting.
The BMS commando seems to be more usefult to let any BMS communicate with the inverter.
This is what I explored so far:
Anyone here interrested in getting together this 2 scripts (mpp-solar + jkbms)?
The text was updated successfully, but these errors were encountered: