Problème avec l'intégration Netatmo (data_handler.py:164)

Mon problème

Impossible de faire fonctionner l’intégration Netatmo après de multiples essais et redémarrage. Je comprends pas. Une idée ?

Logger: homeassistant.config_entries
Source: components/netatmo/data_handler.py:164
First occurred: 10:03:52 (1 occurrences)
Last logged: 10:03:52

Error setting up entry Home Assistant Cloud for netatmo
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 986, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs)  # type: ignore[return-value]  # noqa
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1064, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1049, in create_connection
    sock = await self._connect_sock(
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 960, in _connect_sock
    await self.sock_connect(sock, address)
  File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 500, in sock_connect
    return await fut
  File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 535, in _sock_connect_cb
    raise OSError(err, f'Connect call failed {address}')
OSError: [Errno 113] Connect call failed ('169.254.160.233', 80)

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

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 357, in async_setup
    result = await component.async_setup_entry(hass, self)
  File "/usr/src/homeassistant/homeassistant/components/netatmo/__init__.py", line 153, in async_setup_entry
    await data_handler.async_setup()
  File "/usr/src/homeassistant/homeassistant/components/netatmo/data_handler.py", line 108, in async_setup
    await asyncio.gather(
  File "/usr/src/homeassistant/homeassistant/components/netatmo/data_handler.py", line 204, in subscribe
    await self.async_fetch_data(signal_name)
  File "/usr/src/homeassistant/homeassistant/components/netatmo/data_handler.py", line 164, in async_fetch_data
    await self.data[signal_name].async_update()
  File "/usr/local/lib/python3.10/site-packages/pyatmo/camera.py", line 649, in async_update
    await self._async_update_all_camera_urls()
  File "/usr/local/lib/python3.10/site-packages/pyatmo/camera.py", line 659, in _async_update_all_camera_urls
    await self.async_update_camera_urls(camera_id)
  File "/usr/local/lib/python3.10/site-packages/pyatmo/camera.py", line 724, in async_update_camera_urls
    ] = await self._async_check_url(
  File "/usr/local/lib/python3.10/site-packages/pyatmo/camera.py", line 731, in _async_check_url
    resp = await self.auth.async_post_request(url=f"{url}/command/ping")
  File "/usr/local/lib/python3.10/site-packages/pyatmo/auth.py", line 335, in async_post_request
    async with self.websession.post(
  File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 1138, in __aenter__
    self._resp = await self._coro
  File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 535, in _request
    conn = await self._connector.connect(
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 542, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 907, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1206, in _create_direct_connection
    raise last_exc
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1175, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 992, in _wrap_create_connection
    raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host 169.254.160.233:80 ssl:default [Connect call failed ('169.254.160.233', 80)]

Ma configuration


System Information

version | core-2022.8.3
-- | --
installation_type | Home Assistant Container
dev | false
hassio | false
docker | true
user | root
virtualenv | false
python_version | 3.10.5
os_name | Linux
os_version | 5.15.32-v8+
arch | aarch64
timezone | Europe/Paris
config_dir | /config

<details><summary>Home Assistant Community Store</summary>

GitHub API | ok
-- | --
GitHub Content | ok
GitHub Web | ok
GitHub API Calls Remaining | 4774
Installed Version | 1.26.2
Stage | running
Available Repositories | 1094
Downloaded Repositories | 11

</details>

<details><summary>Home Assistant Cloud</summary>

logged_in | false
-- | --
can_reach_cert_server | ok
can_reach_cloud_auth | ok
can_reach_cloud | ok

</details>

<details><summary>Dashboards</summary>

dashboards | 2
-- | --
resources | 6
views | 6
mode | storage

</details>

<details><summary>Recorder</summary>

oldest_recorder_run | 15 juillet 2022 à 06:47
-- | --
current_recorder_run | 15 août 2022 à 09:57
estimated_db_size | 316.23 MiB
database_engine | mysql
database_version | 10.5.16

</details>
___

Ca, ça sent la requête DHCP qui a foiré… Ton HA a bien une adresse IP correcte sur ton LAN?

A priori Oui. C’est une installation HA Container sous Docker avec un reverse proxy. Tout fonctionne correctement depuis pour LAN et internet (Application Home Assistant par exemple).

Par contre, je comprends pas effectivement pourquoi le LAN 169.254.XXX.XXX est sollicité.

169.254.x.y c’est l’@IP qui apparait par défaut quand DHCP foire.
Ce n’est pas une adresse routable sur Internet.
Si ton instance HA essaie de se connecter à cette adresse pour installer un truc, ça ne pas le faire.
Il faudrait comprendre dans ton installation d’ou ça peut venir.
Et je pense d’ailleurs que l’autre problème qui tu as soulevé provient du même genre d’ennui. Une config réseau pas tip-top, je ne sais pas ou…

Je viens de trouver un truc qui semble fonctionner.
En fait. Tu m’as donné des idées Golfvert pour faire des tests. Merci. :+1:

Mon installation HA sous forme d’un container Docker était réalisée en mode réseau « Host » comme je l’ai vu dans pas mal de préconisations sur des blogs.

Le problème d’obtention de lease IP DHCP m’a semblé bizarre car l’hôte a déjà une IP. Je me suis que j’allais laisser Docker répondre aux requêtes DHCP, plutôt que mon installation (routeur).

Je viens de passer mon container, ainsi que ceux en relation avec lui dans un réseau spécifique Docker en mode « bridge » afin que les containers obtiennent de docker un IP interne docker en 172.18.0.X/16.

Et la miracle au redémarrage, l’intégration voit bien directement les 10 entités sous Netamo.

En mode host si l’hôte est un linux, le container va utiliser l’adresse IP de l’hôte… Donc, ça devrait marcher.
Je suis en docker sous linux en mode host et HA a bien l’adresse de l’hôte…
Il y a certaines intégrations qui peuvent couiner en container/bridge. Celles qui utilisent le multicast pour la découverte, par exemple.

C’était pourtant le cas pour moi. J’étais bien en mode « host » sous linux.
Mais visiblement cela ne plaisait pas à cette intégration.
Je vais voir à l’usage sur le mode « bridge » versus le mode « host ».
Mais, j’aurais de façon eu des pb de broadcast car j’ai segmenté mon réseau en VLAN. Donc oui, le pb se serait poser aussi quelque soit mon mode réseau sous Docker pour HA.