Skip to content
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

[solax] Support for X3 Ultra inverter (type=25) #18216

Open
VasekCejka opened this issue Feb 2, 2025 · 8 comments
Open

[solax] Support for X3 Ultra inverter (type=25) #18216

VasekCejka opened this issue Feb 2, 2025 · 8 comments
Assignees
Labels
enhancement An enhancement or new feature for an existing add-on

Comments

@VasekCejka
Copy link
Contributor

Please, could you try to implement support for X3 Ultra (type=25). There is already some support in
https://github.com/squishykid/solax/blob/master/solax/inverters/x3_ultra.py
I have tried to implement basic support in the layout of already implemented inverteds, see:
https://github.com/VasekCejka/openhab-addons/tree/Solax_new_X3Ultra_Inverter
This part was easy and seems to work (tested on separate OpenHAB 5.0.0 snapshot from date 2025-02-02). However there are some conceptional issues. This inverter supports 3rd PV line (PV3 Voltage, Current, Power), 2nd battery pack (Battery 2 Voltage, Current, Power, Remaining Capacity, Temperature) and EPS properties (EPS 1, 2, 3 Voltage, Current, Power, EPS Energy total, EPS Energy today), and some minor more. Support for these properties / channels is not implemented in the addon.
I'm able to perform testing, but I'm not experienced in development process, so I'm afraid not to break something.

Here I'm posting example of the raw data.
Retrieved content = {"sn":"SNXXXXXXX","ver":"1.003.11","type":25,"Data":[2366,2330,2365,124,107,121,2906,2472,2839,161,7260,7170,15,16,1114,1193,5009,5005,5004,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4697,64526,60747,4698,65433,0,1,34,0,256,14594,268,6402,100,0,39,8003,0,0,7586,1,0,0,0,0,0,0,0,0,0,0,59,180,0,0,24691,0,23304,0,2,60,2710,1,121,2,0,0,2703,0,20700,8,1,0,1032,0,0,0,0,0,0,0,0,0,1,59,1,21,135,256,5256,3600,310,350,226,207,33,33,101,3268,3260,57271,73,0,0,0,0,0,0,0,0,7875,14,1122,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60747,65535,59,8217,0,0,0,60698,65535,0,0,0,0,21302,14389,19269,12595,20531,12611,14640,0,0,0,0,0,0,0,0,0,512,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Information":[30.000,25,"H3BC30K3065001",13,16.15,0.00,17.12,0.09,0.00,1]}
I'll post more when the sun will shine.
Thanx in advance!
Vasek

@VasekCejka VasekCejka added the enhancement An enhancement or new feature for an existing add-on label Feb 2, 2025
@openhab-bot
Copy link
Collaborator

This issue has been mentioned on openHAB Community. There might be relevant details there:

https://community.openhab.org/t/solax-binding/146326/234

@theater theater self-assigned this Feb 3, 2025
@theater
Copy link
Contributor

theater commented Feb 3, 2025

I'll work on it when I have some free time.

@theater
Copy link
Contributor

theater commented Feb 3, 2025

@VasekCejka I just had a brief look at your implementation...

However there are some conceptional issues. This inverter supports 3rd PV line (PV3 Voltage, Current, Power), 2nd battery pack (Battery 2 Voltage, Current, Power, Remaining Capacity, Temperature) and EPS properties (EPS 1, 2, 3 Voltage, Current, Power, EPS Energy total, EPS Energy today), and some minor more.

Not sure that I get what you mean but I would expect that these voltages/currents/power for the PV, EPS are probably like with the other 3-phase inverters, right? basically you have them for the three phases.
For the second battery pack I think we may need to introduce new channels if there are no existing ones...

@VasekCejka
Copy link
Contributor Author

You are right, it is about new channels. Yes, it is 3-phase inverter.
Should we leave "Battery" channel withou number as Battery1 and add Battery2, or should we duplicate it? More ways are possible, but what would you as the author prefer?

@theater
Copy link
Contributor

theater commented Feb 3, 2025

Wooh....I just see in the coding. Also it will be affected a lot because I always assumed to have only one battery :(
I have to think about it but so far very good job from your side. Checked your branch.

@VasekCejka
Copy link
Contributor Author

No hurry, this is the reason I wrote. I dont like changing basic concepts too fast and without discussion. There are more options. Maybe Addon documentation can contain more precise info for particular inverters, describing what is supported and what is not supported. Actually, neither I have secondary battery pack, I do not need this support now. When someone needs it, he can ask for it.
Actually, I do not have Solax inverter with Solax name on it. I have its brand by Dražice. They are local company here in Czech Republic and they are known for super extra customer support. I can imagine writing them and asking for cooperation, for example for explanation of use cases of different configurations (like 2nd battery pack), so we can understand more of the logic. Maybe even better description of other types, not yet supported in OH addon. It might be good PR for them, and their brand can be named in Addon description.

@theater
Copy link
Contributor

theater commented Feb 9, 2025

Hi. I had too much work last week and couldn't do anything in the weekend. It's good to know that there is no hurry.
Looking the way they model the API response, the only thing we could do is to make new channels. There is no some generic way to retrieve for example - List of Batteries so you get all batteries modelled with their different channels in the API and our model also mimics much or less what Solax is providing.
I wonder if it makes any sense to implement different thing type for the battery (this is going to be a huge change from modelling perspective)....

@VasekCejka
Copy link
Contributor Author

Hi,
I think battery belongs to the inverter. It has no sense alone, too many things in configuration also make the model less understandable. It would be also troublesome managing 2 things sharing the same communication resource.

I would suggest starting with PV lines and make them internally dynamic array with different size for different inverters. Channels could be generated dynamically, not limited to 2 or 3 or 4. There can be different inverters, especially the bigger ones. I'm now preparing another installation, probably with 4 strings. There could be another Solax-like proprietary brand inverter supporting 4 strings. Because there is flat roof, each of the strings could have little bit different panel installation and it could be nice to compare their performance over time.
I'm not sure, if it is problem to implement it such way. If not, we can test it on PV lines and then the same approach can be applied to battery array. However for battery array there are interesting particular remaining capacities, temperatures and power, but there are also total energy flow descriptors for all batteries (like total/today battery charge/discharge energy).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement An enhancement or new feature for an existing add-on
Projects
None yet
Development

No branches or pull requests

3 participants