[APP][PRO] Connect Solar Solax Inverter to Homey

Lovely - I’ll be a happy beta-tester :slight_smile: :slight_smile:

1 Like

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:

:backhand_index_pointing_right: 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:

:check_mark: 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.

:check_mark: 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.

:check_mark: 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.

:check_mark: 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.


:star: 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

1 Like

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 :slight_smile: )

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 :slight_smile:

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

1 Like

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>:

1 Like

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 :thinking:

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 :grin:

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 :thinking:

Med venlig hilsen
Jørgen

ons. 3. dec. 2025 07.12 skrev Joergen Seemann <jorgen@seecom.dk>: