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
71k stars 29.64k forks source link

Enphase Envoy not working #121606

Closed bkr1969 closed 1 month ago

bkr1969 commented 1 month ago

The problem

I'm not even sure how to describe this. It just is not displaying the data correctly in the integration itself. This image shows what I mean.

Envoy

What version of Home Assistant Core has the issue?

2024.7.1

What was the last working version of Home Assistant Core?

2024.6.xx

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Enphase Envoy

Link to integration documentation on our website

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

Diagnostics information

Unexpected error fetching Envoy 121847041313 data Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/httpx/_transports/default.py", line 69, in map_httpcore_exceptions yield File "/usr/local/lib/python3.12/site-packages/httpx/_transports/default.py", line 373, in handle_async_request resp = await self._pool.handle_async_request(req) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 216, in handle_async_request raise exc from None File "/usr/local/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 196, in handle_async_request response = await connection.handle_async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpcore/_async/connection.py", line 101, in handle_async_request return await self._connection.handle_async_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpcore/_async/http11.py", line 143, in handle_async_request raise exc File "/usr/local/lib/python3.12/site-packages/httpcore/_async/http11.py", line 113, in handle_async_request ) = await self._receive_response_headers(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpcore/_async/http11.py", line 186, in _receive_response_headers event = await self._receive_event(timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpcore/_async/http11.py", line 224, in _receive_event data = await self._network_stream.read( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpcore/_backends/anyio.py", line 32, in read with map_exceptions(exc_map): File "/usr/local/lib/python3.12/contextlib.py", line 158, in exit self.gen.throw(value) File "/usr/local/lib/python3.12/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions raise to_exc(exc) from exc httpcore.ReadTimeout

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 312, in _async_refresh self.data = await self._async_update_data() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/enphase_envoy/coordinator.py", line 147, in _async_update_data envoy_data = await envoy.update() ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/pyenphase/envoy.py", line 417, in update await updater.update(data) File "/usr/local/lib/python3.12/site-packages/pyenphase/updaters/production.py", line 127, in update production_data = await self._json_request(self.end_point) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/pyenphase/updaters/base.py", line 34, in _json_request response = await self._request(end_point) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/pyenphase/envoy.py", line 376, in _make_cached_request response = await request_func(endpoint) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/init.py", line 189, in async_wrapped return await copy(fn, *args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/init.py", line 111, in call do = await self.iter(retry_state=retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/init.py", line 153, in iter result = await action(retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/_utils.py", line 99, in inner return call(*args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/init.py", line 418, in exc_check raise retry_exc.reraise() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/init.py", line 185, in reraise raise self.last_attempt.result() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result return self.get_result() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in get_result raise self._exception File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/init.py", line 114, in call result = await fn(args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/pyenphase/envoy.py", line 212, in request return await self._request(endpoint, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/pyenphase/envoy.py", line 245, in _request response = await self._client.get( ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1801, in get return await self.request( ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1574, in request return await self.send(request, auth=auth, follow_redirects=follow_redirects) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1661, in send response = await self._send_handling_auth( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1689, in _send_handling_auth response = await self._send_handling_redirects( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1726, in _send_handling_redirects response = await self._send_single_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1763, in _send_single_request response = await transport.handle_async_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/httpx/_transports/default.py", line 372, in handle_async_request with map_httpcore_exceptions(): File "/usr/local/lib/python3.12/contextlib.py", line 158, in exit self.gen.throw(value) File "/usr/local/lib/python3.12/site-packages/httpx/_transports/default.py", line 86, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.ReadTimeout

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

home-assistant[bot] commented 1 month ago

Hey there @bdraco, @cgarwood, @dgomes, @joostlek, @catsmanac, mind taking a look at this issue as it has been labeled with an integration (enphase_envoy) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `enphase_envoy` 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 enphase_envoy` Removes the current integration label and assignees on the issue, add the integration domain after the command. - `@home-assistant add-label needs-more-information` Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue. - `@home-assistant remove-label needs-more-information` Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


enphase_envoy documentation enphase_envoy source (message by IssueLinks)

catsmanac commented 1 month ago

Hi @bkr1969, looking at your data this seems to have started on July 3, shortly after noon. Then on July 7 around 4 PM a single update was fetched and no more change since then.

The error httpx.ReadTimeout means that HA could connect to the Envoy and issue it's data request. But no data came back in 45 seconds. After that it will try 1 more time and when same result, this error is issued.

bkr1969 commented 1 month ago

So, there hasn't been anything happen that I can relate to this. I assume I'm using the standard data collection as I've never edited anything. The odd thing is that the actual value seems to be correct (i.e. current production says 302 W) but the graph is stuck at 3100. This also show up in my cards. If I use the mini graph card, it graphs the same way (stuck at 3100) but a custom bar card displays correctly (302). This is very odd. Nothing in the app itself is off either, everything is displaying as normal bars growing through the day then shrinking toward evening. I have enabled debugging and will monitor. Thanks for the quick response. current

bkr1969 commented 1 month ago

config_entry-enphase_envoy-01J2BVFS97JHBRQKEJ30V9DMJH.json

bkr1969 commented 1 month ago

Here's an example of the discrepancy between the value and the graph: discrep

2756 W is the correct current production, so why does it graph (also in the enphase integration as well) as 3110, and that number every hour? This is what I find so odd.

I will also modify my previous answer about what could've happened on July 3 and July 7. Both of those were HA Core updates...2024.7.0 on the 3rd and 2024.7.1 on the 7th.

catsmanac commented 1 month ago

The diagnostic report does not reveal any surprises. Envoy metered with 1 Current Transformer to measure PV production, no consumption measurements.

Based on your latest information this sounds as if the problem has started with the installation of 2024.7. And the value updated once when you upgraded to 2024.7.1. I wouldn't be surprised if you are experiencing the recorder purge issue. You may want to check the community pages on this: https://community.home-assistant.io/t/psa-2024-7-recorder-problems/746428/61.

That Envoy time-out is unrelated to the recorder problem, might still be an underlying issue. But the observations you describe have much similarity to the recorder problem. I would need a debug log file to determine if there's an Envoy issue or not. So if you feel that analysis is needed upload one here once you have it.

bkr1969 commented 1 month ago

I uploaded a log 3 posts back. Hope that helps. In the meantime, I have updated the core to 2024.7.2 (no change) and modified the .py file according to the info you posted. That edit seems to have fixed the issue (won't know for an hour or two, but the values did change on the mini bar graph). Thanks again for your help.

catsmanac commented 1 month ago

That upload was the diagnostic file, not the debug log. But never mind, seems like your out of the woods now.

bkr1969 commented 1 month ago

Yes, except it was related to the iCloud3 integration which no longer works at all after 2024.7.2. Odd how integrations affect each other like that. I appreciate you time and help!

catsmanac commented 1 month ago

@home-assistant close