Skip to content

Ess.SaxPower: add single-phase ESS and integrated grid meter - #3873

Open
Hans-4 wants to merge 48 commits into
OpenEMS:developfrom
Hans-4:feature/ess-saxpower
Open

Ess.SaxPower: add single-phase ESS and integrated grid meter#3873
Hans-4 wants to merge 48 commits into
OpenEMS:developfrom
Hans-4:feature/ess-saxpower

Conversation

@Hans-4

@Hans-4 Hans-4 commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Implements the SAX Power Home Plus (5.8 / 7.7 kWh) as two components:

  • Battery read and write functions
  • Built-in grid meter

Modbus register documentation and manual:
https://sax-power.net/download/Handbuch_SAX_Home_Plus_7,7_DE.pdf

Tested on real hardware (7.7 kWh) for all registers

Not implemented yet: reactive power, energy channels, grid mode detection.

@Hans-4

Hans-4 commented Aug 11, 2026

Copy link
Copy Markdown
Contributor Author

@Sn0w3y I’ve now unlocked my battery and, in my tests, it responded quite quickly. Not immediately, but quickly.

@Sn0w3y

Sn0w3y commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

@Sn0w3y I’ve now unlocked my battery and, in my tests, it responded quite quickly. Not immediately, but quickly.

see my discussion here:

evcc-io/evcc#22155

to be hones i don't think they fixed this issue already?

@Hans-4

Hans-4 commented Aug 11, 2026

Copy link
Copy Markdown
Contributor Author

No you are right @Sn0w3y . I completely overlooked that in my first test.

Its exactly the same as in the discussion. After 2–3 minutes, it stops writing and remains at the current discharge/charge level.

026-08-11T20:43:32,427 [modbus0 ] ERROR [e.modbus.api.task.AbstractTask] Execute failed FC16WriteRegisters [ess0;unitid=64;ref=41/0x29;length=1;request=3a88] ModbusIOException: Executing transaction 01 96 00 00 00 09 40 10 00 29 00 01 02 3A 88 failed (tried 2 times) Executing transaction failed (tried 2 times)

What sould i do now? A read mode only switch as long as they don’t release an update? I think it still works when you got it in mode 1 you just get an error saying it couldnt write, but you can still read all the read addresses.

image

@Sn0w3y

Sn0w3y commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

No you are right @Sn0w3y . I completely overlooked that in my first test.

Its exactly the same as in the discussion. After 2–3 minutes, it stops writing and remains at the current discharge/charge level.

026-08-11T20:43:32,427 [modbus0 ] ERROR [e.modbus.api.task.AbstractTask] Execute failed FC16WriteRegisters [ess0;unitid=64;ref=41/0x29;length=1;request=3a88] ModbusIOException: Executing transaction 01 96 00 00 00 09 40 10 00 29 00 01 02 3A 88 failed (tried 2 times) Executing transaction failed (tried 2 times)

What sould i do now? A read mode only switch as long as they don’t release an update? I think it still works when you got it in mode 1 you just get an error saying it couldnt write, but you can still read all the read addresses.

image

Hi,

tbh o can not answer that question - defacto a "read only" implementation is not really helpful for users without Grid Meter and "only" OpenEMS - i tried to reach out to the Support more than once and they do not really care about it so I gave this Project a stop.

Greetings!

@Hans-4

Hans-4 commented Aug 11, 2026

Copy link
Copy Markdown
Contributor Author

Yeah, you’re probably right, and we might have to wait ages for the update or it might never come. They are even selling their own power manager, so why would they?

@Sn0w3y

Sn0w3y commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Yeah, you’re probably right, and we might have to wait ages for the update or it might never come. They are even selling their own power manager, so why would they?

Well.. you see thats the Point. Fenecon also sells their FEMS and their Storage and still provides a free OpenSource alternative to FEMS and their Storages. Others just try to sell and not Improve 😉

@sfeilmeier

Copy link
Copy Markdown
Contributor

So what does this mean? Should we proceed with this PR or wait for SAX Power?

@Hans-4

Hans-4 commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

I dont know @sfeilmeier . We can proceed, and if you like, I can add a warning to the README saying that address 41 doesnt work, or we can wait for Sax. Whichever suits you best.

@sfeilmeier

Copy link
Copy Markdown
Contributor

From my side we can proceed 👍

@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

❗ There is a different number of reports uploaded between BASE (d0655ca) and HEAD (39261e5). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (d0655ca) HEAD (39261e5)
java 1 0
Additional details and impacted files
@@              Coverage Diff               @@
##             develop    #3873       +/-   ##
==============================================
- Coverage      55.62%   28.55%   -27.06%     
==============================================
  Files           3670      404     -3266     
  Lines         171475    12905   -158570     
  Branches       14127     2324    -11803     
==============================================
- Hits           95362     3684    -91678     
+ Misses         72337     9059    -63278     
+ Partials        3776      162     -3614     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@Hans-4

Hans-4 commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

Could someone please restart the workflows? Had to fix one checkstyle error.

@Hans-4

Hans-4 commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

Ive added several tests they should now run if someone restarts the workflows

@Sn0w3y

Sn0w3y commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

I dont know @sfeilmeier . We can proceed, and if you like, I can add a warning to the README saying that address 41 doesnt work, or we can wait for Sax. Whichever suits you best.

It is not only Register 41.. the whole Controlling Mechnanism from SAX side has this Issue.

@Howaner

Howaner commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Nice to see a implementation for SAX power - it's really interesting to produce AC 230V Sinus Waves with Battery Cells and Mosfets without the need for an inverter.

@juergen-weber mentioned in the EVCC discussion (evcc-io/evcc#22155 (comment)) that he got a new firmware installed on his battery and it seems like they have a new modbus protocol (https://github.com/user-attachments/files/29573813/Modbus._Sunspec_Dokumentation.pdf). Maybe that is fixing the modbus problem?

Comment thread io.openems.edge.ess.saxpower/src/io/openems/edge/ess/saxpower/ess/Config.java Outdated
@Hans-4
Hans-4 requested a review from Howaner August 21, 2026 18:26
@Hans-4

Hans-4 commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

As @Howaner pointed out, I’ve removed Modbus_target. I also added another test that should bring the Grid Meter file up to 100% code cov. Its actually my first time working with code cov and Im wondering what percentage of coverage is actually required? Ive noticed that many PRs are accepted even if the code cov test is failing, so if the current coverage is enough, I think the PR can be reviewed.

@Howaner

Howaner commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

As I understood, the current implementation stops working after a few minutes because of the transaction_id limitation, right?
How do we want proceed?
A) Add a way to modify the transaction_id of our modbus frames and cap them to 8-bit. I can help you with that.
B) Implement the newly updated SAX-Power protocol specification and hope everyone gets this update

@Hans-4

Hans-4 commented Aug 29, 2026

Copy link
Copy Markdown
Contributor Author

B) Implement the newly updated SAX-Power protocol specification and hope everyone gets this update

You mean the protocol @LaRaven97 an the firmware update @juergen-weber mentioned in the evcc-io discussion?

I will get in touch with the customer support to get the firmware updated and then test the new Sunspec protocol.

Die Schnittstelle wie hier beschrieben, steht ab der Firmwarekombination Master V61 und Gateway
V54 zur Verfügung!

If this works i would prefer option B.

image

@Hans-4

Hans-4 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

I go my battery updated and tested it with a little Python script, and the write error is gone. I will experiment a bit more with the new register and, if everything works out, integrate it into OpenEMS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants