Lovely - I’ll be a happy beta-tester
![]()
Hi Michal,
Thanks for your reply! I completely understand your point — normally we only have the standard Modbus registers, and those indeed write to EEPROM.
However, for the newer models like G4 & Ultra (as mentioned recently in the forum), SolaX actually provides an additional set of runtime-only control registers which do not touch the EEPROM at all.
You mentioned “if you have any other doc, please provide”, so here it is:
SolaX Official Documentation for VPP / Modbus Remote Control:
https://kb.solaxpower.com/solution/detail/2c9fa4148ecd09eb018edf67a87b01d2
This document describes a second control path using registers 0x007C–0x008A, called Modbus Power Control / Remote Control Mode.
These registers are specifically designed for automations and energy management systems:
No EEPROM writes
The document states that these commands override the working mode temporarily, and the inverter automatically returns to the original mode after the timeout. Persistent configuration is not changed.
Intended for frequent automation
The text explicitly says these remotecontrol_xxx commands can be executed as often as needed because they are not stored in EEPROM.
This is exactly why Home Assistant uses them for G4 hybrids.
Identical functionality without the downside
With these registers you can:
-
Force charge
-
Force discharge
-
Set power export/import setpoints
-
Control battery based on SoC, time or energy
-
Temporarily override the mode just like “Charge Use Mode”, but safely
So in practice:
everything the current “Charge Use Mode” card does can also be done via the remotecontrol_xxx registers, but without EEPROM wear.
About the “autorepeat” mechanism
SolaX specifies that remote control commands expire after a timeout.
That’s why the Home Assistant integration (wills106) includes an autorepeat function.
A Homey card could do the same — or just let the user manage the re-triggering in flows.
Suggestion for the Homey app
Would it be possible to add an alternative set of capabilities/cards that use the remotecontrol_xxx registers from the VPP section of the G4 documentation?
Benefits for users:
-
Safe for high-frequency automations (dynamic prices, PV surplus, etc.)
-
No EEPROM wear
-
More robust behaviour for battery control
-
Matches what other integrations (HA, Node-RED, Solarman API users) are already doing for G4 and newer models
I think this would be a huge improvement for anyone using a battery system with real-time control.
Happy to help test or provide additional details!
Cheers,
Jacco
Hi Jacco, thank you for your feedback. I will add this to my todo list, but first I am working on Ultra version.
Hi, please try this build.
I added PV3 and Battery Power 2. You must remove current modbus and add new Ultra.
So will lose history. Also it is not finished, I also have to add other batteries params. Btw, can you share docs with me?
Hello Michael,
Bat Power 2 seems fine, currently no sun here so all pv=0 (but hey
)
Load power seems to be off. If this is calculated then likely it’s just based on bat pow 1 ?
Self-consumed year, self-sufficient year, generation total, battery power/voltage/soc/temperature, discharge today, and charge today - all returns a “-” (guess this is “not resolved”)
No errors ![]()
Hi,
I will fix load and battery level, because I did not have time to do it yesterday.
But can you tell me what is register for BATTERY_2_SOH? For BATTERY_1_SOH = 00BF.
Without it I can´t provide it to UI. Also, would be possible to share doc with me?
It could help me improve app.
M.
Found SOH:
0x00BE BMS2_UserSOH BMS2_UserSOH 1% U int16 1
0x00BF BMS1_UserSOH BMS1_UserSOH 1% U int16 1
Best I can do re document right now is this: https://github.com/user-attachments/files/23740570/Solax.Hybrid.X3-ULTRA.Modbus.RTU.V1.00-English.pdf
Checkking with their support if a newer version exist.
Cheers
Hi Michal.
The link is indeed the latest version
Best regards
Jørgen
man. 24. nov. 2025 20.41 skrev Michal Stráník via Homey Community Forum <notifications@athom.discoursemail.com>:
Hi,
thank you for docs.
I just uploaded new build with changes for SOH1, SOH2.
But I think you will have to remove device and add it again to be able see that.
Please check if everything works as expected, like load, power, etc.
It should, but I can´t test it.
Regards
M.
Thx michal! Appreciated! When you are ready with a test version. Let me know and I will dive into it!
Hi Michael,
The ones I can test seems to work correctly. SOH2/SOC2 I cannot test because I do not have a secondary battery, but just one battery connected to both battery connectors (this way you can pull 2*30A).
PV1-3, load power, grid power, batt power 1+2 all good.
Only puzzle is the inverter temperature reported to be 256 degrees celsius. Perhaps this value should be in 0.1 rather than 1 (giving it 25.5 degrees) ?
Cheers
Jørgen
Hi,
I just released new build where I changed how temperature is calculated for Ultra only.
Please try and let me know. If everything will be ok, I will release public build.
Regards
Michal
Yes, confirmation. Temp now show inverter temperature 24.3
Some cleanup at the bottom of the values page might be in order.
Bat pow/vol/soc/temp likely leftover from std solax
Also - for some strange reason discharge/charge today doesn’t resolve ![]()
Med venlig hilsen
Jørgen
tir. 2. dec. 2025 12.06 skrev Michal Stráník via Homey Community Forum <notifications@athom.discoursemail.com>:
Perhaps the charge today should be
Function code 0x04, register 0x0091
and discharge today should be 0x0050
( as shown on page 21 button)?
Med venlig hilsen
Jørgen
ons. 3. dec. 2025 07.06 skrev Joergen Seemann <jorgen@seecom.dk>:
Ah. No. That’s the energy im/export which you show below. My bad. Sorry ![]()
I cannot see any registers for battery charge/discharge total today (its not in history data section), so I guess this isn’t supported on the Ultra ![]()
Med venlig hilsen
Jørgen
ons. 3. dec. 2025 07.12 skrev Joergen Seemann <jorgen@seecom.dk>:
