core: Enphase envoy integration still not working with HA 2021.12.0 Non Beta

The problem

I am getting “failed to connect” from home assistant when trying to login with envoy and the last 6 digits of my serial number.

image This is what the login page looks like now from the envoy itself browsing the local IP which also redirects to HTTPS which is a new feature as well. Logging in with my enphase account works here but not through HA. The envoy firmware is Software Version D7.0.66 (ddd0d7). Please let me know if there is any details I can provide.

What version of Home Assistant Core has the issue?

core-2021.12.0

What was the last working version of Home Assistant Core?

NA

What type of installation are you running?

Home Assistant Supervised

Integration causing the issue

Enphase Envoy

Link to integration documentation on our website

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

Example YAML snippet

No response

Anything in the logs that might be useful for us?

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)
2021-12-11 20:32:17 ERROR (MainThread) [homeassistant.components.enphase_envoy.config_flow] Unexpected exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/enphase_envoy/config_flow.py", line 168, in async_step_user
    envoy_reader = await validate_input(self.hass, user_input)
  File "/usr/src/homeassistant/homeassistant/components/enphase_envoy/config_flow.py", line 46, in validate_input
    await envoy_reader.getData()
  File "/usr/local/lib/python3.9/site-packages/envoy_reader/envoy_reader.py", line 136, in getData
    await self.detect_model()
  File "/usr/local/lib/python3.9/site-packages/envoy_reader/envoy_reader.py", line 166, in detect_model
    await self.get_serial_number()
  File "/usr/local/lib/python3.9/site-packages/envoy_reader/envoy_reader.py", line 218, in get_serial_number
    full_serial = await self.get_full_serial_number()
  File "/usr/local/lib/python3.9/site-packages/envoy_reader/envoy_reader.py", line 228, in get_full_serial_number
    response = await self._async_fetch_with_retry(
  File "/usr/local/lib/python3.9/site-packages/envoy_reader/envoy_reader.py", line 128, in _async_fetch_with_retry
    return await client.get(url, timeout=30, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/httpx/_client.py", line 1736, in get
    return await self.request(
  File "/usr/local/lib/python3.9/site-packages/httpx/_client.py", line 1513, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "/usr/local/lib/python3.9/site-packages/httpx/_client.py", line 1600, in send
    response = await self._send_handling_auth(
  File "/usr/local/lib/python3.9/site-packages/httpx/_client.py", line 1628, in _send_handling_auth
    response = await self._send_handling_redirects(
  File "/usr/local/lib/python3.9/site-packages/httpx/_client.py", line 1665, in _send_handling_redirects
    response = await self._send_single_request(request)
  File "/usr/local/lib/python3.9/site-packages/httpx/_client.py", line 1702, in _send_single_request
    response = await transport.handle_async_request(request)
  File "/usr/local/lib/python3.9/site-packages/httpx/_transports/default.py", line 291, in handle_async_request
    resp = await self._pool.handle_async_request(req)
  File "/usr/local/lib/python3.9/site-packages/httpcore/_async/connection_pool.py", line 248, in handle_async_request
    raise exc
  File "/usr/local/lib/python3.9/site-packages/httpcore/_async/connection_pool.py", line 232, in handle_async_request
    response = await connection.handle_async_request(request)
  File "/usr/local/lib/python3.9/site-packages/httpcore/_async/connection.py", line 90, in handle_async_request
    raise exc
  File "/usr/local/lib/python3.9/site-packages/httpcore/_async/connection.py", line 67, in handle_async_request
    stream = await self._connect(request)
  File "/usr/local/lib/python3.9/site-packages/httpcore/_async/connection.py", line 146, in _connect
    stream = await stream.start_tls(**kwargs)
  File "/usr/local/lib/python3.9/site-packages/httpcore/backends/asyncio.py", line 62, in start_tls
    ssl_stream = await anyio.streams.tls.TLSStream.wrap(
  File "/usr/local/lib/python3.9/site-packages/anyio/streams/tls.py", line 94, in wrap
    await wrapper._call_sslobject_method(ssl_object.do_handshake)
  File "/usr/local/lib/python3.9/site-packages/anyio/streams/tls.py", line 102, in _call_sslobject_method
    result = func(*args)
  File "/usr/local/lib/python3.9/ssl.py", line 944, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)

Additional information

No response

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 83 (10 by maintainers)

Most upvoted comments

Just as an update please see this comment for Issue #78 on the envoy_reader repo. I have some code that supports the new firmware.

The underlying envoy_reader API would need to be updated to include support for this new login method on Envoys running firmware D7.x. At this point, the only change that could be changed on the Home Assistant side would be to implement some dialog saying the Envoy is not supported.

I don’t have access to an Envoy running this new firmware and mine cannot be upgraded as it’s an older oval model running 3.x firmware. I’ve tried looking for an Envoy that is exposed to the Internet but still no luck. But I think even if I found one exposed to the Internet I don’t know if I can use my access token from Enphase on another’s Envoy device. On the Enphase site, it has two options to create a token; commissioned or uncommissioned envoys.

The Issue #78 is tracked on the API side

I would love to see the official integration get fixed, but in lieu of that, I’m curious what everyone’s new preferred fork for D7.x systems on 2023.5.

See #88983 for plans on updating enphase envoy in HA Core

Greg (gtdiehl), the codeowner of this integration, likely knows more about the new firmware situation so we will need to wait for his feedback.

you should be able to call enphase and get them to push the latest firmware to your envoy depending on the envoy you have…

I’m not in a position where I’m ok with breaking my production setup 🤣

Hey there @gtdiehl, 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! (message by CodeOwnersMention)