From 205521c6158de893c02676cb13df9afbd590ac5b Mon Sep 17 00:00:00 2001 From: Arie Catsman Date: Tue, 23 May 2023 13:09:09 +0200 Subject: [PATCH] Fix for Invalid port #75 and readme updates to also address what do you put in the unlabeled boxes? #73 and Unable to connect #81 --- README.md | 16 ++++++++++++++++ .../enphase_envoy_custom/config_flow.py | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/README.md b/README.md index f572b83..fab0be8 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,19 @@ This is a HACS custom integration for enphase envoys with firmware version 7.X. 5. Add the integration through the home assistant configuration flow [bmc-button](https://buymeacoffee.com/briancmpblL) + + + +# Usage + - Username / Password / Use Enlighten [#73](https://github.com/briancmpbll/home_assistant_custom_envoy/issues/73)\ + When configuring the Envoy with firmware 7 or higher specify your Enphase Enlighten username and password, the envoy serial number and check the 'Use Enlighten' box at the bottom. This will allow the integration to collect a token from the enphase website and use it to access the Envoy locally. It does this at first configuration, at each HA startup or at reload of the integration. The Enphase web-site is known to be slow or satured at times. When an *Unknown Error* is reported during configuration try again until success. [#81](https://github.com/briancmpbll/home_assistant_custom_envoy/issues/81) \ + \ + Upon changing your password on the Enphase web site you will have to update the password information in HA. To update it, delete the envoy integration from the Settings / Integrations window. Restart HA and then in Integrations window configure it again. All data is kept and will show again once it's configured. + + - [#75 Invalid Port and IPV6 autodetect](https://github.com/briancmpbll/home_assistant_custom_envoy/issues/75) \ + HA performs auto discovery for Envoy on the network. When it identifies an Envoy it will use the Envoy serial number + to identify a configured Envoy and then update the IP addres of the Envoy. If the auto discovery returns an IPV6 address it will update the Envoy with reported IPv6 address even if it was configured with an IPv4 address before. This causes the integration to fail as IPv6 addresses cause issues in the communication to the Envoy. \ + \ + To solve this and prevent this from happening again, remove the Envoy in the Integrations panel, restart HA and configure the Envoy again with the IPv4 address. This may require to change the IP address to the IPv4 on the auto detected Envoy or add manually an Envoy Integration. \ + \ + Then open the *System options* on the Envoy Integrations menu (3 vertical dots). In the System options panel de-activate the *Enable Newly Added Entities* option to turn it off. This will cause the Envoy Intgeration to ignore autodetect updates and keep the configured IP address. Make sure the Envoy is using a fixed IP address to avoid loosing connection if it changes its IP. \ No newline at end of file diff --git a/custom_components/enphase_envoy_custom/config_flow.py b/custom_components/enphase_envoy_custom/config_flow.py index 83c9a74..32c3513 100644 --- a/custom_components/enphase_envoy_custom/config_flow.py +++ b/custom_components/enphase_envoy_custom/config_flow.py @@ -92,6 +92,15 @@ async def async_step_zeroconf( """Handle a flow initialized by zeroconf discovery.""" serial = discovery_info.properties["serialnum"] await self.async_set_unique_id(serial) + + #75 If system option to enable newly discoverd entries is off (by user) and uniqueid is this serial then skip updating ip + for entry in self._async_current_entries(include_ignore=False): + if entry.pref_disable_new_entities and entry.unique_id is not None: + if entry.unique_id == serial: + _LOGGER.debug("Envoy autodiscovery/ip update disabled for: %s, IP detected: %s %s",serial, discovery_info.host,entry.unique_id) + return self.async_abort(reason="pref_disable_new_entities") + + # autodiscovery is updating the ip address of an existing envoy with matching serial to new detected ip adress self.ip_address = discovery_info.host self._abort_if_unique_id_configured({CONF_HOST: self.ip_address}) for entry in self._async_current_entries(include_ignore=False):