Async_forward_entry_setups; this will fail in version 2023.3

I am running HA version 2023.2.3 and I saw this in the System Logs:

Logger: homeassistant.helpers.frame
Source: helpers/frame.py:77
First occurred: 10:37:18 (1 occurrences)
Last logged: 10:37:18

Detected integration that called async_setup_platforms instead of awaiting async_forward_entry_setups; this will fail in version 2023.3. Please report issue to the custom integration author for enphase_envoy using this method at custom_components/enphase_envoy/__init__.py, line 131: hass.config_entries.async_setup_platforms(entry, PLATFORMS)

Does this mean that in the upcoming version 2023.3, that custom integration will be broken?

I am using Enphase Envoy (DEV) from @jrutski which can be found here:

That would be bad because the official Enphase Envoy integration doesn’t work with the new firmware D7.x.x.

@del13r

The url you posted is by posixx instead of jrutski which is very confusing. Which repo are you actually using?
The Posixx repo has been updated recently to deal with the issue as seen here.

This post sums up the situation really well.

Please refer to the repo you are using by referencing the name of the GitHub repo author. Dev means nothing as they are all dev if unofficial.

In GitHub, You should be able to click on each repo, go to code tab, click the clock with a counter clockwise arrow around it (history) icon to see the description of each change made recently. That how I found that posixx updated their repo recently to fix the very issue you are concerned about.

1 Like

Well sorry, it was not my intention to post that posixx github. I thought I posted the original thread from jrutski, because I am using his component. And I wrote that in my post above.

I guessed I just grabbed the link from my notes and I picked the wrong one.

Anyway, thanks for that info about posixx Github fixed this issue. At least I can make the same edit:

1 Like

All good. We got there in the end :slight_smile:

Everything home assistant related including this forum is people just like you and me making contributions.
I’m not a developer, and don’t know anything about python yet so my ability to help is limited by that.

If you are going to be using someone’s unofficial code to solve a problem, most of the time the best person to ask for help is the author of the code you are using as they should understand their code the most. Failing that, you need to reference the exact GitHub repo you are relying on when asking the community for help.

Where this gets even messier from a reaching out for help perspective is when you modify someone else’s code on your own machine, your support options reduce even further as you are now using a fork/bespoke solution specific to just your machine.

Before reaching out to the author for help, I would check the history of the current GitHub repo you are using as well as any other relevant repos you aren’t currently using and see which one is updated to solve your issue.

No hard feelings. It’s just challenging to offer help without all the specifics at the time.

I am not a developer either, so yeah I have no clue. At least I made a post here about that error/warning and mention. Hopefully they are aware and fix it, release a new version or something like that.

1 Like

I also used the jrutski version. I even made a change request on his Git repo. But sofar he hasn’t responded.

Last week I switched to using the Posixx version. You can switch without losing your data.

How did you switch to posixx?

Remove Jrutski
Add Posixx
Restart

?

Did you do anything special?

I’m interested in switching to posixx.

  1. Create backup
  2. Remove current integration. Then reboot the system.
  3. Remove the REPO from HACS. Then reboot the system,
  4. Via the add-on ‘File editor’ browse to the location ‘custom_components’. Delete the directory “Enphase-envoy” (or how it’s called, you’ll notice). I couldn’t get the directory deleted, but the files and directories in it I could. So do that.
  5. Reboot the system.
  6. Via HACS install the new posixx repo and download it. Then reboot the system.
  7. Now you can use the new repo to install the integration again. The system should give you an automated notice for that.
1 Like

Are all those reboots really necessary ? My Pi 3B takes a really long time for a reboot.

After I did all this, I get “Retrying setup: ‘NoneType’ object has no attribute ‘text’” when I try to connect my Envoy-R.

This integration does seem to work with the IQ Envoy, though. But I have both the legacy Envoy R (also known as Envoy LCD) from 2010, and a current generation IQ Envoy / combiner 4.
I need an integration that supports both. This one doesn’t, unfortunately.

Yes, they are necessary. To clear the cache and locked files etc.

Thanks for posting.
However, I got “Unexpected error” when adding the discovered device in the Integrations page.

Unexpected exception
Traceback (most recent call last):
  File "/config/custom_components/enphase_envoy/config_flow.py", line 162, in async_step_user
    envoy_reader = await validate_input(self.hass, user_input)
  File "/config/custom_components/enphase_envoy/config_flow.py", line 44, in validate_input
    await envoy_reader.getData()
  File "/config/custom_components/enphase_envoy/envoy_reader.py", line 379, in getData
    await self._getEnphaseToken()
  File "/config/custom_components/enphase_envoy/envoy_reader.py", line 272, in _getEnphaseToken
    token_json = await self._fetch_owner_token_json()
  File "/config/custom_components/enphase_envoy/envoy_reader.py", line 257, in _fetch_owner_token_json
    resp_json = resp.json()
  File "/usr/local/lib/python3.10/site-packages/httpx/_models.py", line 756, in json
    return jsonlib.loads(self.text, **kwargs)
  File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)