-
Notifications
You must be signed in to change notification settings - Fork 56
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
values for GW5000S-BP don't seem to match up #20
Comments
Have a look at the work i did on the Goodwe SBP5000 and the breakdown of the responses etc - there is a long series of posts on the Australian Whirlpool discussion forums in the energy section about Grid Arbitrage. I also put a lot of debugging stuff i worked through in the issues of this Github repository mletenay/home-assistant-goodwe-inverter#48 Craig |
thanks Craig.. I had found that thread and read through before. its just a pity that values do not link to what they mean. I would have expected PV values to be empty since there is no PV connections. im still trying to work out which sensor items to tally to work out solar production etc since there is a CT clamp there must be some type of sensor to work with |
Did you have a look at the Whirlpool thread on Grid Arbitrage ? There are a couple of guys who are using Modbus on ESP devices to talk to the inverter and pull out stats and control the battery (which one day i will probably get around to as well !) I think you might find that the SBP5000 shares the same registers with the 5048 series - that do support Solar Panels. Craig |
I think you will need to pick apart their Python code and see which registers they are mapping - i think they are lumping the SBP in with the 5048 series and assuming the results are the same (as very few people have these inverters) and hence they are mapping some info incorrectly. Do you have the GM1000D (dual CT clamp sensor with yours) or the GM3000 (3 Phase ?) Craig |
GM1000D Forking and hacking it is :) |
Did you see the one where I list the registers/packets for the gm1000d on the whirlpool thread ??
Get Outlook for Android<https://aka.ms/AAb9ysg>
…________________________________
From: Greg ***@***.***>
Sent: Thursday, July 21, 2022 9:36:19 AM
To: marcelblijleven/goodwe ***@***.***>
Cc: Craig Curtin ***@***.***>; Comment ***@***.***>
Subject: Re: [marcelblijleven/goodwe] values for GW5000S-BP don't seem to match up (Issue #20)
GM1000D
Forking and hacking it is :)
—
Reply to this email directly, view it on GitHub<#20 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AM6OSTZFVAT6CHXYYCV6SLDVVCEPHANCNFSM53R4O2VA>.
You are receiving this because you commented.Message ID: ***@***.***>
|
@craigcurtin-dev yup.. been reading though whirlpool too.. also reverse engineering the PV Master app.. seem that the SBP might be a different type than what it is selected in code in this repo.. might be EH type
|
Pretty sure it does not identify as an EH as I think that is one of their 3 phase newer units – but maybe you are right there and that is the missing piece – I know that it does not respond to Modbus over WIFI/LAN though and pretty sure the EH does ?
Craig
From: Greg ***@***.***>
Sent: Thursday, July 21, 2022 8:07 PM
To: marcelblijleven/goodwe ***@***.***>
Cc: Craig Curtin ***@***.***>; Mention ***@***.***>
Subject: Re: [marcelblijleven/goodwe] values for GW5000S-BP don't seem to match up (Issue #20)
@craigcurtin-dev<https://github.com/craigcurtin-dev> yup.. been reading though whirlpool too..
also reverse engineering the PV Master app.. seem that the SBP might be a different type than what it is selected in code in this repo.. might be EH type
public static int getEHBHSBType() {
byte var0;
if (Constant.Inverter_sn.contains("5000")) {
var0 = 1;
public static boolean is105PlatForm() {
return Constant.Inverter_sn.contains("ESU") || Constant.Inverter_sn.contains("EMU") || Constant.Inverter_sn.contains("ESA") || Constant.Inverter_sn.contains("BPS") || Constant.Inverter_sn.contains("BPU");
}
—
Reply to this email directly, view it on GitHub<#20 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AM6OST2364PIRNGMJTTFZQ3VVEONPANCNFSM53R4O2VA>.
You are receiving this because you were mentioned.Message ID: ***@***.******@***.***>>
|
@marcelblijleven I have the same issues with same inverter, how can we progess resolution, happy to help. |
@Uksa007 (as commented in the other issue) please provide output from the following program (change the ip_address to yours), plus a capture of matching data from semsportal so they can be compared/aligned.
|
@lyricnz @oziee has provided the same info that i can post at top of this issue, I don't see the point in duplicating. |
@Uksa007 when you run with the debug flag turned on, the raw bytes from the inverter are displayed, not just the "processed" key-value. The problem is (I'm assuming) in the interpretation of the bytes, so looking at the known-bad data isn't so helpful. For example, mine is:
With your inverter bytes, we can create a test-case (like this) using it, then iterate on the interpretation until it matches what you know from semsportal. |
@lyricnz it seems to identify as BP inverter which it is. I will try to get matching data with SEMS but it is always behind and think it may do some averaging, as it's update is slow.
|
Copy/past from the HA issue: Uksa007 commented 14 minutes ago • So far I have: e_day: Today's PV Generation = 1.7 kWh should be e_day: Today's Battery output = 1.7 kWh |
Hi @Uksa007 Most of the fields that you see in the sensors are just mapped directly from (runtime) bytes in the hex you saw above. There's some "sensor definition table" which is applied to the bytes - they start at "offset", have a size and unit etc. Here's the sensor table for the ES inverter (which seems to include BP) Actually, I've just noticed there is already a test for your inverter: https://github.com/marcelblijleven/goodwe/blob/master/tests/test_es.py#L300 |
Thats sounds good, how can I test it? |
Hey guys,
Just wanted to jump in here and mention that I was the one that originally got the ball rolling on the SBP integration stuff.
At the time that it was all being put together (prior to it being an official integration) I had just received my 3 x SBP5000 units and was busy decoding them each evening using wireshark
I went backwards and forwards with the developer sending him the outcome of throwing the various 241 and 245 codes at the inverters and I do not believe we ever got to the point of having a working fully decoded stream – so it was just shoe horned into the rest of it.
As I was not a big HA user at the time (and still do not use the integration – as all my stuff is done in Node Red) then I did not worry too much
Bottom line – I do not think this has ever been adequately decoded to the point that you can be comfortable that everything is going to line up.
I am happy to provide more decode dumps etc if people want those. (although I have just changed out my Cisco switch so will have to do some work on how to do that in the Broacade environment with port mirroring etc)
FWIW I send the 241 query code to my 3 inverters and get workable information about 90% of the time – I key off the value of the length of the return packet – if it is 149 bytes I use that and apply the offsets that interest me to decode.
Also note that I do not use consumption monitoring feeding into my units so I can probably assist in what fields these populate as I have the ability to connect and disconnect the GoodWe GM1000D (single phase – dual CT clamps)
Craig
From: Simon Roberts ***@***.***>
Sent: Sunday, October 23, 2022 11:19 AM
To: marcelblijleven/goodwe ***@***.***>
Cc: Craig Curtin ***@***.***>; Mention ***@***.***>
Subject: Re: [marcelblijleven/goodwe] values for GW5000S-BP don't seem to match up (Issue #20)
Hi @Uksa007<https://github.com/Uksa007>
Most of the fields that you see in the sensors are just mapped directly from (runtime) bytes in the hex you saw above. There's some "sensor definition table" which is applied to the bytes - they start at "offset", have a size and unit etc.
Eg:
[image]<https://user-images.githubusercontent.com/122371/197366981-ec1c5902-6d8f-4046-ba74-6b87a8a4a9de.png>
Actually, I've just noticed there is already a test for your inverter: https://github.com/marcelblijleven/goodwe/blob/master/tests/test_es.py#L300
—
Reply to this email directly, view it on GitHub<#20 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AM6OST5D57KUCC3MVWW6FV3WER77BANCNFSM53R4O2VA>.
You are receiving this because you were mentioned.Message ID: ***@***.******@***.***>>
|
@lyricnz @craigcurtin-dev > Hey guys, Just wanted to jump in here and mention that I was the one that originally got the ball rolling on the SBP integration stuff. At the time that it was all being put together (prior to it being an official integration) I had just received my 3 x SBP5000 units and was busy decoding them each evening using wireshark I went backwards and forwards with the developer sending him the outcome of throwing the various 241 and 245 codes at the inverters and I do not believe we ever got to the point of having a working fully decoded stream – so it was just shoe horned into the rest of it. >> Hi, |
Thanks for the tips @craigcurtin-dev. Is the SBP really too much different to the ES/EM/BP as implemented in es.py? (I saw the message about "Response has unexpected length: 149, expected 149" :/) As far at this user is reporting, I haven't quite been able to get to the bottom of what they need. Clearly the labels say PV when it means battery (but so does semsportal - so who's to say when it should be different? may depend on runtime mode) |
@Uksa007 if you don't like the labels in HA, you could just make a new sensor, with the labels you like, which gets its values from the "wrongly named" ones in the Goodwe integration. |
I'll make a PR to make the 149 != 149 error message a bit more sane. |
Way ahead of you there, I pretty much have managed to use the provided data, and calculate a few things, but would be good to fix it, so it's not so broken. |
@Uksa007 I'm in HA discord if you want to chat in more realtime (but I'm not a maintainer of this module) |
@craigcurtin-dev |
No when I was doing it – it did not appear to match up with the Modbus document that most people refer to for the GoodWe.
What I did was basically step through changing individual things in the GoodWe phone app and then capturing what was being sent as output from the phone and the responses from the inverters.
Once I had enough of these I was then able to put the ones I was interested into a spreadsheet and start comparing what was changing each time.
I will try and setup my capture environment again this evening and report back when I can do some more captures.
Do you have anything specific that you need to know or shall I just dump heaps of data at you ?
Craig
From: Uksa007 ***@***.***>
Sent: Sunday, October 23, 2022 12:07 PM
To: marcelblijleven/goodwe ***@***.***>
Cc: Craig Curtin ***@***.***>; Mention ***@***.***>
Subject: Re: [marcelblijleven/goodwe] values for GW5000S-BP don't seem to match up (Issue #20)
@craigcurtin-dev<https://github.com/craigcurtin-dev>
So I take it that there is no documentation to decode the stream, it doesn't follow any of the modbus type data?
—
Reply to this email directly, view it on GitHub<#20 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AM6OST55YEJXWYHLFOPFLZLWESFS3ANCNFSM53R4O2VA>.
You are receiving this because you were mentioned.Message ID: ***@***.******@***.***>>
|
@craigcurtin-dev > I will try and setup my capture environment again this evening and report back when I can do some more captures. The following are a mystery to me:
|
OK will get onto it and report back
P.S. I am still waiting on getting day with 100% battery charge so I can send you over the dump from whirlpool also
From: Uksa007 ***@***.***>
Sent: Sunday, October 23, 2022 1:13 PM
To: marcelblijleven/goodwe ***@***.***>
Cc: Craig Curtin ***@***.***>; Mention ***@***.***>
Subject: Re: [marcelblijleven/goodwe] values for GW5000S-BP don't seem to match up (Issue #20)
@craigcurtin-dev<https://github.com/craigcurtin-dev> > I will try and setup my capture environment again this evening and report back when I can do some more captures.
Thanks craig.
The following are a mystery to me:
vpv1: PV1 Voltage = 377.1 V Inverter Bus?
ipv1: PV1 Current = 1.3 A Inverter Bus?
ppv1: PV1 Power = 490 W Inverter Bus?
e_load_day: Today's Load = 6.1 kWh Maybe Daily imported energy, but seems too high?
e_load_total: Total Load = 395.7 kWh Maybe Total imported energy, but seems too high?
total_power: Total Power = -254 W same as plant_power?
plant_power: Plant Power = -254 W AC power charged/discharged?
xx85: Unknown ***@***.*** = 0
xx87: Unknown ***@***.*** = -319
house_consumption: House Consumption = 191 W Is not house consumption, not sure what it is?
Missing things may or maynot be available in the data stream:
Charging energy, eg how much energy you stored in the battery.
—
Reply to this email directly, view it on GitHub<#20 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AM6OSTYYCJ24DB55QIFMTOLWESNMPANCNFSM53R4O2VA>.
You are receiving this because you were mentioned.Message ID: ***@***.******@***.***>>
|
So answering some of my own questions here, in es.py I found the below, it explains:
|
@lyricnz |
@Uksa007 This module doesn't talk to semsportal, so the sensors can only reflect what the inverter itself knows. You might need to do any additional logic in the custom HA sensor. Re: the commented out - it's more likely the list was cut and pasted from somewhere else, and those weren't applicable/correct for this inverter. You can look at the xx values to see if there's any useful-looking numbers in there. |
@lyricnz > You'd have to be super-careful not to break any of the other inverters supported by the same Inverter class. It looks like there was an old BP model which was a DC only, it sat between Solar panels and inverter with battery. Just trying to figure it out, python it not my native language :-p |
I can see some device-specific kludges happen in DT read_device_info() - maybe it's okay to monkey around with self._sensors in some model-specific way. But the exact stuff you're expecting might also be mode-specific. |
@lyricnz I want to change many things to be more model specific, so I think it might be safer to create new model class. |
@lyricnz @craigcurtin-dev @marcelblijleven |
As mentioned above, since the BP inverters seem to be that different from the (PV) inverters speaking the "ES" protocol, I suggest to go with dedicated class, so it does not break other families. |
How are you going @Uksa007 ? |
@lyricnz Good, I have forked it and clean it up and it's looking good, just a couple of outstanding value I haven't been about to decode, @craigcurtin-dev was going to have a look but I think he has been busy. Please see Uksa007#1 |
Hi.. thanks for the great code.. I have been using this with the home assistant integrations and notice that the values for items don't seem to match with my inverter
the GW5000S-BP doesn't have any PV inputs.. its a battery only ac coupled inverter.
I see in the output that it says there is PV output, with no panels
hopefully some of all this helps to show and narrow down what might be going on. From what I can see I think is happening is that the battery is being linked as the
PV
total PV generation isn't PV generation from the CT meter data.. not sure what it is
Sems shows that there is no PV
![Screen Shot 2022-07-14 at 8 35 28 pm](https://user-images.githubusercontent.com/1471841/178969236-b9f27ba5-15ad-4537-92d4-53155eda88ba.png)
code sensor output..
*this on is while the battery is outputting before hitting its 30% remaining limit
*battery has hit its 30% remaining limit and stopped outputting power
The text was updated successfully, but these errors were encountered: