kamaradclimber / vigieau

A custom integration for home-assistant on the Vigieau dataset
Apache License 2.0
18 stars 3 forks source link

Erreur de localisation #9

Closed pierrepinon closed 1 year ago

pierrepinon commented 1 year ago

L'initialisation du composant échoue, car il y a une erreur pour identifier ma localisation

Les logs :

Logger: homeassistant.components.sensor
Source: helpers/update_coordinator.py:258 
Integration: Capteur (documentation, issues) 
First occurred: 09:43:15 (1 occurrences) 
Last logged: 09:43:15

Error while setting up vigieau platform for sensor
Traceback (most recent call last):
  File "/config/custom_components/vigieau/__init__.py", line 146, in update_method
    (street, city_code) = await self.fetch_street_and_insee_code()
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/vigieau/__init__.py", line 115, in fetch_street_and_insee_code
    raise UpdateFailed(
homeassistant.helpers.update_coordinator.UpdateFailed: Impossible to find approximate address of the current HA instance

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 283, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 242, in _async_update_data
    return await self.update_method()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/vigieau/__init__.py", line 185, in update_method
    raise UpdateFailed(f"Error communicating with API: {err}")
homeassistant.helpers.update_coordinator.UpdateFailed: Error communicating with API: Impossible to find approximate address of the current HA instance

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

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 353, in _async_setup_platform
    await asyncio.shield(task)
  File "/config/custom_components/vigieau/sensor.py", line 42, in async_setup_entry
    await vigieau_coordinator.async_config_entry_first_refresh()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 258, in async_config_entry_first_refresh
    raise ex
homeassistant.exceptions.ConfigEntryNotReady: Error communicating with API: Impossible to find approximate address of the current HA instance
kamaradclimber commented 1 year ago

Hello, le fait que l'erreur "Error communicating with API: Impossible to find approximate address of the current HA instance" apparaisse me laisse penser qu'il devrait y avoir un warning pas très loin disant:

Data received from api-adresse.data.gouv.fr is empty for those coordinates:  xxx, yyy. Are you sure you they are located in France?

Est-ce le cas? Si oui puis-je avoir les coordonnées GPS approximatives? (cela peut-être par mail: grego_github_pierrepinon@familleseux.net)

pierrepinon commented 1 year ago

Après vérification, pas de warning avant dans les logs...

Je t'envoie la position GPS par e-mail

kamaradclimber commented 1 year ago

Merci pour les infos. Ma compréhension est que l'API de geocoding n'a aucune info pour ces coordonnées géographiques. La version 0.3.3 permet de forcer le code insee de la commune (par variable d'environment), cf le README.

pierrepinon commented 1 year ago

Par contre dans le cadre d'une installation en mode supervisé, on ne peut pas rajouter de variable d'environnement 😪

kamaradclimber commented 1 year ago

Argh! Plusieurs solutions:

Je réouvre le ticket en attendant!

pierrepinon commented 1 year ago

La solution 2 semble la plus propre.

Je regarde dans le week-end pour te proposer une PR

WarC0zes commented 1 year ago

Bonjour @kamaradclimber, je viens de tester la 0.3.3 et la 0.3.4 et je reçois c'est erreur sur ces deux versions.

2023-07-21 09:37:32.969 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up vigieau platform for sensor
Traceback (most recent call last):
File "/config/custom_components/vigieau/__init__.py", line 151, in update_method
city_code = await self.fetch_insee_code()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/vigieau/__init__.py", line 120, in fetch_insee_code
raise UpdateFailed(
homeassistant.helpers.update_coordinator.UpdateFailed: Impossible to find approximate address of the current HA instance. API returned no result.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 283, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 242, in _async_update_data
return await self.update_method()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/vigieau/__init__.py", line 189, in update_method
raise UpdateFailed(f"Error communicating with API: {err}")
homeassistant.helpers.update_coordinator.UpdateFailed: Error communicating with API: Impossible to find approximate address of the current HA instance. API returned no result.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 353, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/vigieau/sensor.py", line 42, in async_setup_entry
await vigieau_coordinator.async_config_entry_first_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 258, in async_config_entry_first_refresh
raise ex
homeassistant.exceptions.ConfigEntryNotReady: Error communicating with API: Impossible to find approximate address of the current HA instance. API returned no result.

Si je fais un rollback en 0.3.2, c'est bon ca détecte bien mon adresse.

Peu tu expliquer ce contounement: A workaround can be used by setting the VIGIEAU_FORCED_INSEE_CITY_CODE environment variable with the city code as value. ⚠ Value of city code is not necessarily city "postal code".

je comprend pas la mise en place.

kamaradclimber commented 1 year ago

Corrigé par la 0.3.5, désolé!

La variable d'environment peut-être ajoutée lorsqu'on install HA via "Home Assistant Core" ou "Home Assistant Container". Pour les autres méthodes, c'est peut-être possible mais je n'ai jamais essayé.

Par ex, avec docker: docker run -e VIGIEAU_FORCED_INSEE_CITY_CODE=23195 --network=host -v $(pwd):/config ghcr.io/home-assistant/home-assistant:2023.7

WarC0zes commented 1 year ago

Corrigé par la 0.3.5, désolé!

Merci, plus d'erreur avec la 0.3.5

pierrepinon commented 1 year ago

J'ai bossé ce week-end sur le sujet, le code est fonctionnel, mais je vais le refactor avant de proposer la PR

kamaradclimber commented 1 year ago

Hello, il semble que @sebcaps et toi ayez travaillé sur le sujet en parallèle.

sebcaps commented 1 year ago

@kamaradclimber, tu auras le choix :-). Blague à part, je suis en train d'apporter de nouvelles modif et notamment le choix sur une carte en plus des coordonnées ha et code postal. Dans une même commune on peut être alimenté par deux bassins différents et ne pas avoir les mêmes restrictions.

sebcaps commented 1 year ago

J'ai bossé ce week-end sur le sujet, le code est fonctionnel, mais je vais le refactor avant de proposer la PR @pierrepinon Les grands esprits se rencontrent ;-) Il doit y a surement des choses à prendre & à laisser dans toutes les contributions. il y a un peu de pain sur la planche pour fusionner tout cela!

pierrepinon commented 1 year ago

Je viens de regarder et ton code est bien plus poussé, donc j'abandonne la mienne 😀

kamaradclimber commented 1 year ago

@pierrepinon la version 0.4.0 est en pre-release. Elle permet de configurer la localisation exacte via GPS, une location approximative via le code postal, et la mếthode standard en utilisant la location de l'instance HA.

Je pense que ca résoud le problème. Bravo à @sebcaps et toi de vous être lancés dans le changement pour supporter le multi-instance.

cyrosy commented 1 year ago

Bonjour,

J'ai installé la version 0.4.0 et je reçois maintenant des erreurs lors de la récupération des données alors que cela fonctionnait correctement sur la version précédente. Cela semble être lié à ma commune (Montpellier), j'imagine qu'elle est découpée en plusieurs zones avec des restrictions différentes.

L'API de Vigieau renvoie un code 409 avec le message Veuillez renseigner une adresse pour préciser la réglementation applicable. Exemple : https://api.vigieau.beta.gouv.fr/reglementation?commune=34192&profil=particulier

L'API semble attendre les paramètres lat et lon : quand je les rajoute, j'obtiens bien une réponse 200 et des données correctes. Exemple : https://api.vigieau.beta.gouv.fr/reglementation?commune=34192&profil=particulier&lon=3.882178&lat=43.610814

(les coordonnées GPS ne sont pas les miennes mais celles d'une place au centre ville)

J'ai tenté de supprimer l'intégration et de la re-paramétrer en utilisant la carte pour le choix de la position mais le résultat est identique. Je rollback donc en v0.3.10 pour l'instant

kamaradclimber commented 1 year ago

Merci pour le report !

pierrepinon commented 1 year ago

Je viens de tester, tout est fonctionnel.

Merci @sebcaps