nathanmarlor / foxess_modbus

FoxESS inverter integration. Connect directly to your FoxESS inverter (no cloud!) for real-time status and control.
MIT License
118 stars 21 forks source link

K series manager 1.33 upgrade breaks integration #678

Open williamjeccles opened 1 month ago

williamjeccles commented 1 month ago

KH inverters upgraded to manager 1.33 and now seeing the following error in HA:

Error connecting to inverter (friendly name: "KHM"). Error reading registers. Type: RegisterType.HOLDING; start: 31039; count: 10; slave: 247 from tcp://192.168.1.164:502: Exception Response(131, 3, IllegalAddress)

williamjeccles commented 1 month ago

So @TonyM1958 confirmed that address 31039 is PV3 voltage, moving a solar string over to pv3 and I can confirm that the address is showing 0v in home assistant using tony's project so assume this manager update has broken pv3 in someway. Happy to test if someone can confirm how I can comment out the pv voltage registers and see if I get overcome the blocking faulty register?

williamjeccles commented 1 month ago

Currently, the following are failing to respond and blocking the integration from loading cleanly.

Broken left / working right Pv3 & PV4 31039 - 39074 31040 - 39075 31041 - 39283 31042

rpower 31045 31046

EPSpower 31047 31048

Gridct 31049 - 39168 31050

ct2 31051 31052

loadpower 31053

With these addresses commented out the integration loads.

williamjeccles commented 1 month ago

Ok so Tony pointed me to a new v2 address register, I've tested out the new address on the pv3 voltage address which is the first failing address and it's working. I'm going to test out updating them each with the new values but it looks like more of an improvement to the address consistency than bugs introduced at this stage.

image

canton7 commented 1 month ago

Yay, I hate it when they break things. Looks like they're bringing it into line with the H3 Pro perhaps? That's the other inverter which uses 39074.

I think we're going to need to start selecting which registers to use based on the firmware version... We can't just keep breaking all KH users because one person upgrades. I'll try and find some time to implement something.

williamjeccles commented 1 month ago

thanks @canton7, do you want me to commit a PR so we can offer a beta version for those who have upgraded while you work on a switch of some kind?

canton7 commented 1 month ago

Sure, if you've got the time to update the register map, that would be helpful!

Can you do what we did for the KH, and at least keep the old register map around? (For the KH, we did that as KH_PR119).

williamjeccles commented 1 month ago

@canton7 versions are completely messed up also :(

image

I feel like this is going to need proper reengineering, maybe a switch in the config wizard or maybe we only support the latest firmware?

canton7 commented 1 month ago

🀦

TonyM1958 commented 1 month ago

Looks like the encoding of the versions has changed, it seems unlikely they got this wrong?

Previously, they have used decimal and then hex encoding. Don't think they expected to get to version 2.55. You may need to write out the values you read in binary to see if you can make any sense it.

canton7 commented 1 month ago

Re the version... We're currently interpreting this as hex, which seems to be the "new" standard. That means that "31.31" is 0x3131.

I can't work out any way in which that maps onto "1.33"....

It seems more likely to me that they've gone and moved the version registers, particularly if they're moving to parity with the H3 Pro. @williamjeccles can you check registers:

please?

TonyM1958 commented 1 month ago

ah OK. I just assumed you would have already tried that... may be not. There are other examples of versions in Modbus v2 as well, such as Protocol Version Code that is 32-bit hex byte encoded.

canton7 commented 1 month ago

I've started having a crack at the KH-1.33 support. See https://github.com/nathanmarlor/foxess_modbus/pull/681.

I haven't put in anything which the spec says has 3 phases, as I'm not sure what the inverter reports there. @williamjeccles if you could have a poke around that would be great!

I also haven't decided how best to not break everyone who's on an older KH firmware version. They've gone and moved the version registers, which is very annoying.

williamjeccles commented 1 month ago

FoxESS Modbus Protocol--20240516 (V1.05.00.00)(1).pdf

@canton7 new modbus spec as I've been blessed to share it.

I'll test those changes and report back

williamjeccles commented 1 month ago

image

So good news is that the integration loads when using commit #681, but fews things we need to fix.

As you can see from the attached, grid CT even when putting grid load on is showing 0

canton7 commented 1 month ago

Cool! Yep, as I said, I haven't put in anything which the latest spec says has 3 phases, as the KH is only single phase. If you can figure out how ids actually exposing that data (just using the R phase etc), I'll put them in.

canton7 commented 1 month ago

Could you also check the versions? The spec also claims to support force charge /discharge work modes natively, so I've enabled them and haven't enabled the remote control stuff - mins testing?

williamjeccles commented 1 month ago

@canton7 any chance you push to a beta branch so I can easily import via hac instead of having to pull the commit?

TonyM1958 commented 1 month ago

Could you also check the versions? The spec also claims to support force charge /discharge work modes natively, so I've enabled them and haven't enabled the remote control stuff - mins testing?

Definitely worth testing those work modes before you commit any changes. I don't expect writing Force Discharge to work without other parameters to set fdPwr and fdSoc and time, similarly Force Charge without a time limit does not make sense.

I think Fox may have added work modes that are read-only to reflect what is going on in schedules? In schedule mode, the work mode Modbus register is read-only and I think that is when you might see these new work modes being shown?

williamjeccles commented 1 month ago

I also have access to the old 1.31 so I can switch between 1.31 and 1.33 with ease.

williamjeccles commented 1 month ago

@canton7 so using that commit, the biggest issues right now that I think we need to fix is the grid ct isn't working for me. I believe the address should be 39168. If you can update that and I'll pull the change and try it out again.

canton7 commented 1 month ago

@williamjeccles As soon as you can have a play with modpoll and let me know what the KH exposes on the R/S/T phase registers (i.e. what register of those 3 (if any) actually contains the information we need), I can get that in

williamjeccles commented 1 month ago

@canton7 so if i've understood the ask correctly I've tested out the following: image

Meter1/CT1 RPhase Active Power address: 38816 appears to be the ct1 negative number for export, positive for import

Meter1/CT1 SPhase Active Power address: 38818 - appears to respond but with no data

Meter1/CT1 TPhase Active Power address: 38820 - appears to respond but with no data

I hope that helps resolve the K series grid related registers in the next release.

FozzieUK commented 1 month ago

@williamjeccles not sure if you have looked at this, but i'm intrigued to know if the BMS registers that went missing after the 1.19 update may actually have been moved to meet the new modbus spec

Could you have a poke around at these addresses and see if you get a response please - particularly the items 24 - 32 & 39, 40, 42 on this list

11111

williamjeccles commented 1 month ago

Looks like it @FozzieUK - 37632 is giving me data. Going to check them all and report back image

williamjeccles commented 1 month ago

Yeh so mV high low, Cell temps high low, remaining kWh all working. SOH I can't test as I've not got a v2 battery to test with but the modbus address works it just returns 0 for me.

I think it's safe to say they've moved and are all working.

FozzieUK commented 1 month ago

Thanks, that’s great - be nice to have them working again πŸ‘

williamjeccles commented 1 month ago

@FozzieUK are you able to push a fix for the grid side stuff and these extra battery addresses?

canton7 commented 1 month ago

Thanks! I'll get those in when I get the chance (I'm afraid I'm a bit swamped until the middle of next week).

I'm keen not to release this until we have a way to switch between H3 Pro versions (either automatically or manually), as I don't want an update to just break our existing H3 Pro users.

FozzieUK commented 1 month ago

No problem - I'll leave it to Antony - he'll be much quicker when he gets to it πŸ‘

(also in the middle of fixing Nathan's EM which has stopped working on 2024.10.x)

williamjeccles commented 1 month ago

Thanks! I'll get those in when I get the chance (I'm afraid I'm a bit swamped until the middle of next week).

I'm keen not to release this until we have a way to switch between H3 Pro versions (either automatically or manually), as I don't want an update to just break our existing H3 Pro users.

Thanks

ApronCricket commented 6 days ago

Hi, any guidance on how to get a KH10 working again with fw Master:1.35? If there is any information you might need that I can help with, let me know. Or, if I'm best just waiting for a new release, is there any chance of an ETA? Thanks.

ApronCricket commented 6 days ago

Yeh so mV high low, Cell temps high low, remaining kWh all working. SOH I can't test as I've not got a v2 battery to test with but the modbus address works it just returns 0 for me.

I think it's safe to say they've moved and are all working.

image

I've a brand new V2 battery and get 100(%) at the SOH address, so looks correct.

williamjeccles commented 6 days ago

Yeh so mV high low, Cell temps high low, remaining kWh all working. SOH I can't test as I've not got a v2 battery to test with but the modbus address works it just returns 0 for me. I think it's safe to say they've moved and are all working.

image

I've a brand new V2 battery and get 100(%) at the SOH address, so looks correct.

thanks for confirming

ocl80 commented 3 days ago

Hi, I'm new here.. but just had a KH8 inverter installed, which has firmware Master: 1.39, Slave: 1.01, Manager: 1.35, and I encountered this issue where the integration wouldn't load. To get it up and running, I forked it here, with some "quick fixes" of the addresses which have moved.

I haven't fully understood how the model and version identification is working, so this very much a quick and dirty fix, but it seems to be working for me, so thought I would share here.

rand12345 commented 2 days ago

Thank you for creating a fix @ocl80, it's working well here.

@FozzieUK Do you have time to help bring these changes into @canton7 work and create a PR for this? I think many users are affected by this issue.

FozzieUK commented 2 days ago

@rand12345 I think @williamjeccles has also done a lot of work on this as well to merge.

The biggest challenge is not to break the integration with earlier releases of firmware before 1.33 and @canton7 has already started work on that. Sadly i'm away for a couple of weeks so won't be able to get to look it for a while, I can see a number of users are needing this so hopefully @canton7 can find a bit of spare time to push this out πŸ‘