home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.99k stars 31.03k forks source link

Solaredge integration doesn't show lifetime energy #98093

Open vmangelschots opened 1 year ago

vmangelschots commented 1 year ago

The problem

TL;DR: Sanity check on lifeTimeData is to strick

I have a new solaredge installation and tried adding it to Home assistant. I don't have any monitoring besides the inverter itself so by default it only loads lifeTimeData and current_power. This is fine but the lifeTimeData value is unkown in home assistant. After enabling debugging I could see that I do get a somewhat sane value:

Ignoring invalid energy value 14167.0 for lifeTimeData

However if I compare it to the other data lifeTimeData does lag behind on the other data:

Updated SolarEdge overview: {'lastUpdateTime': '2023-08-09 07:41:13', 'lastYearData': 17193.0, 'lastMonthData': 17193.0, 'lastDayData': 103.0, 'currentPower': 121.57041, 'measuredBy': 'INVERTER'}

So I assume the sanity check of the data compares the lifeTimeData to the lastYearData and finds that it isn't correct. But I need the LifeTimeData for integration in my energy dashboard.

Any idea how I could resolve this?

What version of Home Assistant Core has the issue?

core-2023.8.1

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Solaredge

Link to integration documentation on our website

https://www.home-assistant.io/integrations/solaredge/

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

2023-08-09 07:41:57.298 DEBUG (SyncWorker_10) [homeassistant.components.solaredge] Updated SolarEdge details: Active, {'name': '*REDACTED*', 'peak_power': 10.0, 'last_update_time': '2023-08-09', 'installation_date': '2023-07-26', 'type': 'Optimizers & Inverters', 'manufacturer_name': 'HYUNDAI', 'model_name': 'HiE-S395VG', 'maximum_power': 395.0, 'temperature_coef': -0.34}
2023-08-09 07:41:57.299 DEBUG (MainThread) [homeassistant.components.solaredge] Finished fetching <homeassistant.components.solaredge.coordinator.SolarEdgeDetailsDataService object at 0x7f5e91fb5bd0> data in 0.002 seconds (success: True)
2023-08-09 07:41:57.618 INFO (SyncWorker_0) [homeassistant.components.solaredge] Ignoring invalid energy value 14167.0 for lifeTimeData
2023-08-09 07:41:57.618 DEBUG (SyncWorker_0) [homeassistant.components.solaredge] Updated SolarEdge overview: {'lastUpdateTime': '2023-08-09 07:41:13', 'lastYearData': 17193.0, 'lastMonthData': 17193.0, 'lastDayData': 103.0, 'currentPower': 121.57041, 'measuredBy': 'INVERTER'}
2023-08-09 07:41:57.619 DEBUG (MainThread) [homeassistant.components.solaredge] Finished fetching <homeassistant.components.solaredge.coordinator.SolarEdgeOverviewDataService object at 0x7f5e89d77d10> data in 0.320 seconds (success: True)
2023-08-09 07:41:57.831 DEBUG (SyncWorker_11) [homeassistant.components.solaredge] Updated SolarEdge inventory: {'meters': 0, 'sensors': 0, 'gateways': 0, 'batteries': 0, 'inverters': 1}, {'meters': {'meters': []}, 'sensors': {'sensors': []}, 'gateways': {'gateways': []}, 'batteries': {'batteries': []}, 'inverters': {'inverters': [{'name': 'Inverter 1', 'manufacturer': 'SolarEdge', 'model': 'SE8K-RWS48BEN4', 'communicationMethod': 'ETHERNET', 'cpuVersion': '4.18.32', 'SN': '*REDACTED*', 'connectedOptimizers': 31}]}}
2023-08-09 07:41:57.832 DEBUG (MainThread) [homeassistant.components.solaredge] Finished fetching <homeassistant.components.solaredge.coordinator.SolarEdgeInventoryDataService object at 0x7f5e89d77bd0> data in 0.213 seconds (success: True)
2023-08-09 07:41:58.027 DEBUG (SyncWorker_1) [homeassistant.components.solaredge] Missing connections in power flow data. Assuming site does not have any
2023-08-09 07:41:58.029 DEBUG (MainThread) [homeassistant.components.solaredge] Finished fetching <homeassistant.components.solaredge.coordinator.SolarEdgePowerFlowDataService object at 0x7f5e8d6892d0> data in 0.196 seconds (success: True)
2023-08-09 07:41:58.216 DEBUG (SyncWorker_9) [homeassistant.components.solaredge] Updated SolarEdge energy details: {'Production': 103.0}, {'Production': {'date': '2023-08-09 00:00:00'}}
2023-08-09 07:41:58.218 DEBUG (MainThread) [homeassistant.components.solaredge] Finished fetching <homeassistant.components.solaredge.coordinator.SolarEdgeEnergyDetailsService object at 0x7f5e8d688910> data in 0.189 seconds (success: True)

Additional information

No response

home-assistant[bot] commented 1 year ago

Hey there @frenck, mind taking a look at this issue as it has been labeled with an integration (solaredge) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `solaredge` can trigger bot actions by commenting: - `@home-assistant close` Closes the issue. - `@home-assistant rename Awesome new title` Renames the issue. - `@home-assistant reopen` Reopen the issue. - `@home-assistant unassign solaredge` Removes the current integration label and assignees on the issue, add the integration domain after the command.

(message by CodeOwnersMention)


solaredge documentation solaredge source (message by IssueLinks)

vmangelschots commented 1 year ago

It suddenly started working after 24 hours. Maybe I was too impatient. If anybody else has this problem with a new installation, I recommend waiting 24 hours.

Thx to all the people involved with the Home assistant project!

vmangelschots commented 1 year ago

Apparently it's still not resolved. The reason I thought it was resolved was because the energy dashboard started to use the production energy statistics (the daily one) The lifeTimeData is still invalid

mbecher-github commented 1 year ago

The same with my system: The integration stopped working after 5 weeks yesterday, lunch time. Until then it worked without any problem. Now no data will be monitored:

sensor.solaredge_current_power => Not available sensor.solaredge_lifetime_energy => Not available

the rest of all entities (provided by the integration) I cannot and could not use up to now.

If you need some details from myside for further help, please let me know, ...

toms0601 commented 1 year ago

I think, the problem is caused by SolarEdge response to ther "overview" API request. It provides incorrect data for last_year (means current_year) and last_month (means current_month) energy. My Solaredge installation was installed in 08/23. The values are always increasing and are always greater as the life_time energy. See these two responses for the API call for my installation below as examples:

\<overview> \<lastUpdateTime>2023-08-11 19:54:07\</lastUpdateTime> \<lifeTimeData> \<energy>43762.0\</energy> \</lifeTimeData> \<lastYearData> \<energy>43798.0\</energy> \</lastYearData> \<lastMonthData> \<energy>43798.0\</energy> \</lastMonthData> \<lastDayData> \<energy>2841.0\</energy> \</lastDayData> \<currentPower> \<power>0.0\</power> \</currentPower> \<measuredBy>INVERTER\</measuredBy> \</overview>

\<overview> \<lastUpdateTime>2023-08-11 20:09:07\</lastUpdateTime> \<lifeTimeData> \<energy>43782.0\</energy> \</lifeTimeData> \<lastYearData> \<energy>43818.0\</energy> \</lastYearData> \<lastMonthData> \<energy>43818.0\</energy> \</lastMonthData> \<lastDayData> \<energy>2861.0\</energy> \</lastDayData> \<currentPower> \<power>241.80513\</power> \</currentPower> \<measuredBy>INVERTER\</measuredBy> \</overview>

I have created an ticket in the SolarEdge portal to fix the API.

tmack8001 commented 1 year ago

I installed/configured this integration recently for my solar install (dated March 2023), though all the sensors were created in a disabled state and upon manually enabling them all they all don't have any value assigned.

toms0601 commented 1 year ago

@tmack8001: You could check what result is provided when sending a SolarEdge Api request in the browser like e.g. https://monitoringapi.solaredge.com/site/your-siteid/overview?api_key=your-apikey modified with your site-ID and API-key. If that does not provide some energy values, the solaredge integation will also not be able to provide results. In addition you should enable debug logging for the integration for > 30 min and ckeck the (detailed) logs for solaredge related entries. The integration provides at least the sensor data it sends towards HA.

Getting no values for ALL solaredge integration sensor seems to be different from the problem for lifetime energy. This should affect the value for "Lifetime energy" and maybe also for "Energy this year", "Energy this month" and "Energy today".

tmack8001 commented 1 year ago

I have checked the API when the solar installer set up that for me so that API is returning data

image

Similarly I see data being fetched in the debug logs as well

image

I was thinking of creating a new ticket, but from the looks of it ... no one is actively maintaining solaredge integration, given that it is a native integration the next thing I was thinking of doing is diving into the code and figuring out what is going on myself.

tmack8001 commented 1 year ago

This is what I mean by no sensors having any assigned data, this was after I manually "enabled" them all one by one. Upon initial installation+configuration all the device entities were disabled for some reason, thought that maybe that is why data wasn't being reported to them... but nope even after enabling and restarting they still aren't assigned values.

image image
toms0601 commented 1 year ago

For testing purpose I have:

  1. Deinstalled the offical solar edge installation.
  2. Copied all files from the solaredge integration github to a folder "solaredge" in my custom_components folder in my homeasstant installation.
  3. Modified the manifest.json a bit (e.g. adding a version field was requied ...)
  4. Releaxed the check for the lifeTimeData in line 98 in file coordinator.py to read "if any(self.data[k] > (self.data[key] +1000) for k in energy_keys[index:]):"
  5. Restarted Homeassistant.
  6. Installed my private solaredge custom component as integration.

With this change my "custom component solaredge" is reading lifeTimeData again.

toms0601 commented 1 year ago

@tmack8001: If you click aon e.g. solaredge(Lifetime energy), what does it show?

tmack8001 commented 1 year ago

@tmack8001: If you click aon e.g. solaredge(Lifetime energy), what does it show?

I swear that this morning this wasn't working at all... no clue what changed, but now I see a value associated. Still doesn't explain why on a fresh install all these entities were disabled 😖 . Knew that as soon as I said something it was going to work.

toms0601 commented 1 year ago

@tmack8001: I was diving into the code myself, for fetching the battery charging and discharging energy values form the solaredge portal, so I can tell you that the sensors are marked with "entity_registry_enabled_default=False" in const.py. So it is intentionally. Maybe the idea is that you enable only the few sensors you neeed. For the energy dashboard you would need only 3 of them.

tmack8001 commented 1 year ago

Interesting, thanks for that additional insight.

In that case I'd expect imported, exported and production to be enabled by default... allowing quick and easy Energy dashboard configuration for new users 🤷‍♂️.

Now that my entities have values I'll be looking to essentially recreate the mobile app into HA dashboards alongside my device consumptions 😉

bdewulfPersonal commented 1 year ago

Someone knows if there is a way to populate the other entities in the SolarEdge integration ? Because now it is indeed very limited :)

toms0601 commented 1 year ago

Probably this is more an own topic, but what "other entities" are you missing after activating entities provided by the integration? Is the information supplied by SolarEdge API? I feel the API does not provide best info if you have a system with DC-coupled battery, because most energy value show energy at the AC side and it is nearly impossibele to calculate the energy coming from the Solar pannels (e.g. Life time energy etc. alsways subtract/add energy to/from batteries). The value is sent by the inverter to SolarEdge (in the statics tab on the web-page it is possible get the energy graph for the lines of solar modules connceted to the inverter), but the value is not provided in the API.

vmangelschots commented 1 year ago

I was able to enable a few of them right from within the UI. However I switched to the unofficial integration to get the information directly from the inverter through modbus via tcp(https://github.com/binsentsu/home-assistant-solaredge-modbus). Works like a charm but you need to switch this option on in your inverter.

bdewulfPersonal commented 1 year ago

Actually I was hoping for additional metrics like Selfconsumption and others, but when using the API calls I get no result either to be honest.

https://monitoringapi.solaredge.com/site/xxx/energyDetails?meters=CONSUMPTION&timeUnit=HOUR&startTime=2023-08-20 11:00:00&endTime=2023-08-20 12:00:00&api_key=xxxx

I just get an empty response back.

{
    "energyDetails": {
        "timeUnit": "HOUR",
        "unit": "Wh",
        "meters": []
    }
}

You got the same result ?

toms0601 commented 1 year ago

@bjorndewulf: Seems there are no meters present. I have them populated in the result and in the integration. As long as no values are coming from proral the integration will not provide them either. Without these values it is not possible to configure the energy dashboard in a meaningful way. Your inverter is connected to internet and on the solaredge portal / APP you see decent values?

bdewulfPersonal commented 1 year ago

Thanks a lot @toms0601 ! Does it require an additional module to be installed ?

toms0601 commented 1 year ago

No, after installation of the integration in HA it should workand provide data to the aktivated sensors after 15 min, but it uses the API and it will not get data as long as your API calls do not provide data.

bdewulfPersonal commented 1 year ago

Thanks @toms0601, this is clear to me, but the fact the solaredge is not producing the data do you need to enable something additionally or add up some hardware ?

toms0601 commented 1 year ago

Not that I would know anything. Because you have an API key and a Side ID, I assume your account at SolarEdge is setup and working and you have accepted the API terms on the administation page. If the Web portal shows decend values it must be some issue on solaredge side,

vmangelschots commented 1 year ago

The solaredge inverter only knows its own production. Not how it is used. For this you need an additional energy meter that sits between the grid and your own house. I myself opted not to take this energy meter because my old analogue utility meter will be replaced with a digital one that I can integrate with HA. As I understand it (but I am by no means an expert on this matter) when you use the solar edge energy meter and link this to the inverter through e.a. a modbus wire then the inverter reports grid import/export and self usage as well to the app and I can only assume that when you do this you would receive these values from the api as well

something like this : https://www.solaredge.com/en/products/metering-and-sensors/energy-meter-with-modbus-connection

toms0601 commented 1 year ago

Up to now, I have no response or progress with my ticket at SolarEdge to fix the LifeTimeEnergy values in the Overview API call response. If anyone whats to use the integration before @frenck as provided an update to the integration or before SolarEdge fixes the API, I guess, it is also possible to use the "Energy this year", "Energy this month" or "Energy today" sensors for the solar production in the energy dashboard instead of "Lifetime energy". Somewhere I read, that HA will take a drop of the sensor value for more than 10% as "sensor reset" and deal with the reset.

frenck commented 1 year ago

Please don't pull people into conversations by mentioning. I get you mean it friendly, but can come across demanding.

Thanks for understanding 👍

../Frenck

kokamoka commented 1 year ago

Hi Guys, I have the same issue since begin augustus. i'm getting the following errors, and the value is ignored.

2023-08-30 14:11:03.723 INFO (SyncWorker_6) [homeassistant.components.solaredge] Ignoring invalid energy value 1241247.0 for lifeTimeData 2023-08-30 14:11:03.724 DEBUG (SyncWorker_6) [homeassistant.components.solaredge] Updated SolarEdge overview: {'lastUpdateTime': '2023-08-30 14:10:27', 'lastYearData': 1241270.0, 'lastMonthData': 859688.0, 'lastDayData': 8213.0, 'currentPower': 1495.4628, 'measuredBy': 'INVERTER'}

Any development on this issue?

toms0601 commented 1 year ago

My ticket at SolarEdge is still "in progress". Their first statement was "Everything looks ok." and asked for more information. I have passed the requested information and stated again that from my point of view the lifeTimeEnergy value is not ok.

kokamoka commented 1 year ago

I have dived in more deeply in this issue. it looks like Solaredge is reporting higer LastYearData than the LifetimeData. In my case. there is a difference of 23 image It looks to me that solaredge is reporting every time a higer lastyear data value than the lifetime data, so the value will never be larger, only next year.

This is the first year of usage, so maye next year the problem is solved automatically. Is it possible the add maybe 100 W to the check in the coordinator.py

All coming values in list should be larger than the current value.

            if any(self.data[k] > self.data[key] for k in energy_keys[index:]):
                LOGGER.info(
                    "Ignoring invalid energy value %s for %s", self.data[key], key
                )
                self.data.pop(key)

Thanks.

ajaxedwin commented 1 year ago

We have exactly the same issue. having the Solaredge since a few months. When I query the SolarEdge, the lastyear value is higher as the lifetime value. "lifeTimeData": { "energy": 726954 }, "lastYearData": { "energy": 726976

Changed the Lifetime value to Production Energy within Home Assistant. This was the only one I could select from the list. Hopefully this will solve the issue till the end of the year :-)

toms0601 commented 1 year ago

My ticket at SolarEdge for this issue has now been escalated to second level support.

toms0601 commented 1 year ago

My ticket at SolarEdge for this issue has now been escalated to third level support.

Miggle007 commented 1 year ago

I'm experiencing the exact same as mentioned by toms0601. I have 2 site-id's (2 inverters). The first one is functioning fine and the LifeTimeData is larger than the lastYearData. The second instance did function fine until a certain moment in time. After verifying the data I can see that the LifeTimeData is smaller than the lastYearData. In the HA energy dashboard the first instance shows the right data and the second instance shows always 0 kWh. I'll create an issue with SolarEdge as well.

Chucky1971 commented 1 year ago

Now I understand what the issue is, I have this issue since April this year. My difference is even bigger: image

In April I finally got the inverter I ordered. (Before that installation company made a mistake and delivered a smaller one than requested) So most likely the lastYearData is from both inverters, while the lifeTimeData is from the last one only.

Miggle007 commented 1 year ago

The feedback from the SolarEdge support is really slow. I've opened the case on October 18th and the first respons was on October 30th: Some adjustments has been made on the system, please verify your data," what I immediately did and I've sent feedback that the problem still persists. Today, November 14th I've received new feedback: "We have updated the energy yield details of your site. The lifetime yield is now correct. Please let us know if the problem you expierienced is fully resolved and if we may close the case."

At this moment my lifetime energy shows 0.0 and therefore the problem has only increased, whereas the lastYearData, lastMonthData etc still show their original values.

@toms0601 how is your ticket progressing?

toms0601 commented 1 year ago

@Miggle007: There is no further reaction from SolarEdge support since the ticket was escalated to level 3 support.

I feel the problem will only disappear for us on Jan. 1st, when lastYearData is reset to 0. But it will reappear for other people that have their system setup in 2024. I have currently no pressure with this issue, because I am using a private adapted copy of the integration. I needed that anyhow, because I added API calls for storageData, so that I have also the my battery data available in HA.

vmangelschots commented 1 year ago

It sounds like this won't be resolved by Solaredge. As I metioned before I switched to the modbus over tcp version of this integration through hacks so for me it works now. Shall I close this ticket as not fixed or do I leave it open for you guys ?

toms0601 commented 1 year ago

I would give it some more time. If the ticket is closed now, someone else will have the same issue and will create another ticket. If no solution is provided by SolarEdge, I think, that some workaround in the HA SolarEdge Integration would be the best.

WillCodeForCats commented 12 months ago

If no solution is provided by SolarEdge, I think, that some workaround in the HA SolarEdge Integration would be the best.

I develop a custom integration that uses modbus for SolarEdge inverters and that is definitely a moving target. I have a big list of known problems that I suspect will never get fixed. Plus someone just reported that the latest firmware version for the home hub inverter randomly has lifetime watt-hour values going backwards which breaks sensor entities that use the TOTAL_INCREASING state class. So yeah SolarEdge is slow to fix things, if they ever do.

toms0601 commented 12 months ago

Yesterday, I received feedback from SolarEdge Support, that the problem should be fixed. Actually only the difference was smaller. Previously it was 23 Wh now it is 14 Wh. hey did not indicate what they have changed.

Quarco commented 11 months ago

I have this issue since october. But since our installation has more problems i thought it was 'my fault'. Hardware issues are resolved this week, but didn't resolve the problem. Submitted email to Solaredge but from what I read here it will be a case of 'fingers crossed'....

image

toms0601 commented 10 months ago

I did not receive any update by SolarEdge till end of 2023. Now the last_year_data value is reset. This means, I can no longer see whether the problem ist still present or not. I have asked the Solarege support to close my ticket. Anyone affected by this problem in 2024 with a new installation, should create a new ticket at the solaredge support.

issue-triage-workflows[bot] commented 7 months ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

pico1881 commented 7 months ago

Same issue for me, lifetime energy become unavailable because, for some reason, lastYearData is greater than lifeTimeData `

2024-04-02 08:45:17 1788213.0 1788316.0 35392.0 697.0 671.8594 INVERTER

`

issue-triage-workflows[bot] commented 4 months ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

Sabloe commented 4 months ago

@bdraco do you have a solution ?

issue-triage-workflows[bot] commented 1 month ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

Chucky1971 commented 1 month ago

New year 2024 solved my issue

Op zo 29 sep 2024 12:06 schreef issue-triage-workflows[bot] < @.***>:

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/98093#issuecomment-2381294215, or unsubscribe https://github.com/notifications/unsubscribe-auth/APB7CMECOJZA34JR7JYMAMDZY7GKHAVCNFSM6AAAAAA3JPYWJSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOBRGI4TIMRRGU . You are receiving this because you commented.Message ID: @.***>