cyr-ius / hass-livebox-component

Livebox Component for Home assistant
MIT License
64 stars 21 forks source link

Asyncio Mode - [2.x.x-beta] - Feedback Issue #93

Closed cyr-ius closed 3 months ago

cyr-ius commented 10 months ago

This version implements asynchronous calls in order to gain performance. While maintaining the same functionalities Your feedback is necessary before implementation in the standard branch

https://github.com/cyr-ius/hass-livebox-component/tree/2.0.0-beta

This issue is available to provide feedback on version 2.x.x-beta

LGO44 commented 10 months ago

Bonsoir, Pour le test de la nouvelle version c'est biensur OK j'ai essayé la beta 2.0.3

Sur un nouveau Home assistant RPI5 la connexion echoue systématiquement J'ai supprimé cette version puis installé et configure la version 1.9.0 J'ai réinstallé la version beta 2.0.3, la configuration échoué ci joint un fichier de log avec

le message d'erreur périodique les messages suite à une demande de configuration

Erreur lors du scan de la livebox.txt

cyr-ius commented 10 months ago

@LGO44 , je viens de corriger je suis preneur de ton retour, version beta 2.0.4

LGO44 commented 10 months ago

j'ai installé la beta 2.0.4 je n'arrive toujours pas au bout de la configuration... Erreur lors du scan de la liveboxbeta 2 0 4.txt

Nardol commented 10 months ago

Je viens de mettre à jour vers la version 2.0.4 beta et depuis, mon log Home Assistant est spamé par ceci :

2024-01-20 10:48:47.731 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:48:55.662 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:49:06.682 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:49:27.568 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:50:08.638 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:51:29.610 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:52:50.603 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:54:11.554 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:55:32.768 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:56:53.669 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:58:14.688 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 10:59:35.554 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 11:00:56.407 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 11:02:17.395 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 11:03:38.211 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
2024-01-20 11:04:59.153 ERROR (MainThread) [custom_components.livebox.coordinator] Unexpected error fetching livebox data: cannot access local variable 'count_wired_devices' where it is not associated with a value
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/update_coordinator.py", line 300, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 50, in _async_update_data
    devices = await self.async_get_devices(lan_tracking)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/coordinator.py", line 99, in async_get_devices
    return devices_tracker, count_wireless_devices, count_wired_devices
                                                    ^^^^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'count_wired_devices' where it is not associated with a value
cyr-ius commented 10 months ago

@LGO44 , @Nardol , les deux erreurs ont été corrigés en version 2.0.5-beta. Ne possèdant plus de livebox. Je vous remercie pour votre participation à ces tests. On avance...

Nardol commented 10 months ago

Effectivement, je n'ai plus cette erreur.

Par contre, j'ai ceci dans le log au démarrage de HA :

2024-01-20 12:51:12.987 ERROR (MainThread) [homeassistant.components.button] Error while setting up livebox platform for button
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity_platform.py", line 360, in _async_setup_platform
    await asyncio.shield(task)
  File "/home/homeassistant/config/custom_components/livebox/button.py", line 20, in async_setup_entry
    async_add_entities([RestartButton(coordinator), RingButton(coordinator)], True)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/button.py", line 32, in __init__
    super().__init__(coordinator)
TypeError: object.__init__() takes exactly one argument (the instance to initialize)
cyr-ius commented 10 months ago

@Nardol , corrigé en 2.0.7 , on avance. Pas hésiter aussi à déposer le fichier diagnostic qui se base sur un nouveau devellopement.

brenard commented 10 months ago

Chez moi tout fonctionne correctement à priori : les devices trackers semblent OK, les switchs pour le WAN access également et le bouton de reboot fonctionne également.

cyr-ius commented 10 months ago

Chez moi tout fonctionne correctement à priori : les devices trackers semblent OK, les switchs pour le WAN access également et le bouton de reboot fonctionne également.

Génial

LGO44 commented 10 months ago

Chez moi j'ai installé la version 2.0.7, lors de la configuration impossible de se connecter à la box image aucune erreur ne monte deans les logs....

Nardol commented 10 months ago

corrigé en 2.0.7 , on avance.

Je confirme, plus d'erreur au démarrage.

Pas hésiter aussi à déposer le fichier diagnostic qui se base sur un nouveau devellopement.

Impossible de télécharger le fichier de diagnostiques, voici ce que j'ai dans le log :

2024-01-20 15:16:03.209 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 452, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/aiohttp/web_app.py", line 543, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/aiohttp/web_middlewares.py", line 114, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/security_filter.py", line 85, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/ban.py", line 80, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/auth.py", line 233, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/headers.py", line 31, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/view.py", line 149, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/diagnostics/__init__.py", line 249, in get
    data = await info.config_entry_diagnostics(hass, config_entry)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/diagnostics.py", line 104, in async_get_config_entry_diagnostics
    coordinator.api.system.async_get_remoteaccess,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'System' object has no attribute 'async_get_remoteaccess'
LGO44 commented 10 months ago

ça y est ça marche . mais il a fallu que je réinstalle une version 1.9.0 que je la configure puis que je fasse une mise a jour.

brenard commented 10 months ago

Pas hésiter aussi à déposer le fichier diagnostic qui se base sur un nouveau devellopement.

Impossible de télécharger le fichier de diagnostiques, voici ce que j'ai dans le log :

C'était un bête problème d'appel des méthodes de l'API, corrigé ici : https://github.com/cyr-ius/hass-livebox-component/pull/95/commits/4d19fc8d1bad8dfed5750f0da883e15757744a9e

Chez moi j'ai installé la version 2.0.7, lors de la configuration impossible de se connecter à la box

Reproduit chez moi aussi, c'était un souci pour récupérer le serial ID de la Livebox, corrigé ici : https://github.com/cyr-ius/hass-livebox-component/pull/95/commits/67aa589f9940e1a5d81985d6dfdfba7c681b3ab2

J'ai également ajouté un peu de debug si une autre erreur se produit lors de la configuration initiale, ça aidera peut-être à debugger les erreurs qui arrivait chez d'autres personnes.

cyr-ius commented 10 months ago

ok , j'ai mergé le PR @brenard , et j'en ai profité pour faire une grosse refonte en créant le fichier entity.py qui permet d'éviter les doublons de déclarations sur les class des sensors et j'en ai profité pour passer les maximums sous EntityDescription.

en 2.0.8-beta A tester.

LGO44 commented 10 months ago

j'ai testé la 2.0.7 avec ma motif de device tracker OK ci joint ma carte de visu des tracker:

**card: show_header_toggle: false title: Devices type: entities filter: include:

Nardol commented 10 months ago

Toujours impossible de récupérer le fichier de diagnostique, et sauf erreur de ma part j'ai toujours la même chose :

2024-01-20 18:57:19.806 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 452, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/aiohttp/web_app.py", line 543, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/aiohttp/web_middlewares.py", line 114, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/security_filter.py", line 85, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/ban.py", line 80, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/auth.py", line 233, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/headers.py", line 31, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/http/view.py", line 149, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/diagnostics/__init__.py", line 249, in get
    data = await info.config_entry_diagnostics(hass, config_entry)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/diagnostics.py", line 104, in async_get_config_entry_diagnostics
    coordinator.api.system.async_get_remoteaccess,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'System' object has no attribute 'async_get_remoteaccess'

J'ai pourtant bien mis à jour depuis HACS et redémarré HA.

cyr-ius commented 10 months ago

@Nardol , j'ai commenté cette partie dans la 2.0.9 car cela n'existe pas dans aiosysbus

Nardol commented 10 months ago

C'est bien ce qu'il me semblait, je venais justement de vérifier si je trouvais cette méthode dans aiosysbus et j'en étais arrivé à cette conclusion :slightly_smiling_face:

Effectivement, j'arrive maintenant à télécharger le fichier de diagnostiques. Par contre je ne vais pas l'envoyer ici, parce que tous les numéro de téléphone sont écrits.

Encore pour les IP locales aussi je comprends, par contre IP externe (v4 et v6 aussi) je ne sais pas trop, en tout cas elles y sont. Le plus embêtant reste vraiment les numéros de téléphone.

cyr-ius commented 10 months ago

C'est bien ce qu'il me semblait, je venais justement de vérifier si je trouvais cette méthode dans aiosysbus et j'en étais arrivé à cette conclusion 🙂

Effectivement, j'arrive maintenant à télécharger le fichier de diagnostiques. Par contre je ne vais pas l'envoyer ici, parce que tous les numéro de téléphone sont écrits.

Encore pour les IP locales aussi je comprends, par contre IP externe (v4 et v6 aussi) je ne sais pas trop, en tout cas elles y sont. Le plus embêtant reste vraiment les numéros de téléphone.

Si tu peux anonymisé le fichier avec des N° bidons , type 123456 , je suis preneur. voir à laisser juste un ou deux N° bidon C'est juste pour avoir un exemple de mon côté , car n'ayant plus de livebox pas simple pour débugger pour les ip pareills tu met 1.2.3.4 ou ::1 pour ipv6

cyr-ius commented 10 months ago

@LGO44 , la version 2.1.0-beta contient les propostitions que tu avais fait pour enrichir les trackers. Dis moi si cela répnd à ton besoin et bien vérifier si tout cela se met à jour correctement.

Nardol commented 10 months ago

Si tu peux anonymisé le fichier avec des N° bidons , type 123456 , je suis preneur. voir à laisser juste un ou deux N° bidon C'est juste pour avoir un exemple de mon côté , car n'ayant plus de livebox pas simple pour débugger pour les ip pareills tu met 1.2.3.4 ou ::1 pour ipv6

Je suis en train de préparer une PR, ça me paraît plus simple qu'anonymiser un tel fichier json :slightly_smiling_face: Y a juste un truc qui me chagrine un peu, c'est que pour l'IPv4 par exemple, il y a un champ json qui s'appelle status. Du coup si on masque tout ce qui s'appelle status, ça va un peu trop filtrer...

LGO44 commented 10 months ago

@LGO44 , la version 2.1.0-beta contient les propostitions que tu avais fait pour enrichir les trackers. Dis moi si cela répnd à ton besoin et bien vérifier si tout cela se met à jour correctement.

on y est presque 👍

Pour les trackers j'ai amendé cf fichier joint
"connection": "Wifi invité" pour surveiller le type de lien câblé, wifi, wifi invité "scanner" : "LiveboxDeviceScanner", pour pouvoir filtrer les device tracker en fonction de leur origine "is_online" : self._device.get("Active"), pour surveiller la présence active d'un équipement if device.get("InterfaceName") in ["eth6", "wlan0", "wl0","wlguest2","wlguest5"]: wlguest2, wlguest5 wifi invité 2,4Ghz et 5Ghz

Pour la mise à jour: au chargement ou rechargement de l'intégration c'est OK, par contre la mise à jour périodique ne fonctionne pas .

fichier device_tracker.py

"""Support for the Livebox platform.""" from datetime import datetime, timedelta import logging from typing import Any

from homeassistant.components.device_tracker import SourceType from homeassistant.components.device_tracker.config_entry import ScannerEntity from homeassistant.components.sensor import SensorEntityDescription from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback

from .const import CONF_TRACKING_TIMEOUT, DEFAULT_TRACKING_TIMEOUT, DOMAIN from .coordinator import LiveboxDataUpdateCoordinator from .entity import LiveboxEntity

_LOGGER = logging.getLogger(name)

async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up device tracker from config entry.""" coordinator = hass.data[DOMAIN][entry.entry_id] entities = [ LiveboxDeviceScannerEntity( coordinator, SensorEntityDescription(key=f"{uid}_tracker"), device ) for uid, device in coordinator.data.get("devices", {}).items() if "IPAddress" and "PhysAddress" in device ] async_add_entities(entities, True)

class LiveboxDeviceScannerEntity(LiveboxEntity, ScannerEntity): """Represent a tracked device."""

def __init__(
    self,
    coordinator: LiveboxDataUpdateCoordinator,
    description: SensorEntityDescription,
    device: dict[str, Any],
) -> None:
    """Initialize the device tracker."""
    super().__init__(coordinator, description)
    self._device = device
    self._old_status = datetime.today()
    self._attr_name = device.get("Name")
    self._attr_unique_id = device.get("Key")
    self._attr_device_info = {
        "name": device.get("Name"),
        "identifiers": {(DOMAIN, device.get("Key"))},
        "via_device": (DOMAIN, coordinator.unique_id),
    }

@property
def is_connected(self) -> bool:
    """Return true if the device is connected to the network."""
    timeout_tracking = self.coordinator.config_entry.options.get(
        CONF_TRACKING_TIMEOUT, DEFAULT_TRACKING_TIMEOUT
    )
    device = self.coordinator.data.get("devices", {}).get(self.unique_id, {})
    status = device.get("Active", False)
    if status is True:
        self._old_status = datetime.today() + timedelta(seconds=timeout_tracking)
    if status is False and self._old_status > datetime.today():
        _LOGGER.debug("%s will be disconnected at %s", self.name, self._old_status)
        return True

    return status

@property
def source_type(self) -> SourceType:
    """Return the source type, eg gps or router, of the device."""
    return SourceType.ROUTER

@property
def ip_address(self) -> str:
    """Return ip address."""
    return self._device.get("IPAddress")

@property
def mac_address(self) -> str:
    """Return mac address."""
    return self._device.get("Key")

@property
def extra_state_attributes(self) -> dict[str, Any]:
    """Return the device state attributes."""
    device = self.coordinator.data.get("devices", {}).get(self.unique_id, {})
    attrs = {
        "interface_name": device.get("InterfaceName"),
        "type": device.get("DeviceType"),
        "vendor": device.get("VendorClassID"),
        "manufacturer": device.get("Manufacturer"),
        "first_seen": device.get("FirstSeen"),
        "last_connection": device.get("LastConnection"),
        "last_changed": device.get("LastChanged"),
        "scanner" : "LiveboxDeviceScanner",
        "is_online" : self._device.get("Active"),
        #"ip_address" : self._device.get("IPAddress"),
    }

    if device.get("InterfaceName") in [
        "eth1",
        "eth2",
        "eth3",
        "eth4",
        "eth5"
    ]:
        attrs.update({"is_wireless": False, "band": "Wired","connection":"Ethernet"})

    if device.get("InterfaceName") in ["eth6", "wlan0", "wl0","wlguest2","wlguest5"]:
        match device.get("SignalStrength", 0) * -1:
            case x if x > 90:
                signal_quality = "very bad"
            case x if 80 <= x < 90:
                signal_quality = "bad"
            case x if 70 <= x < 80:
                signal_quality = "very low"
            case x if 67 <= x < 70:
                signal_quality = "low"
            case x if 60 <= x < 67:
                signal_quality = "good"
            case x if 50 <= x < 60:
                signal_quality = "very good"
            case x if 30 <= x < 50:
                signal_quality = "excellent"
            case _:
                signal_quality = "unknown"
        attrs.update(
            {
                "is_wireless": True,
                "band": self._device.get("OperatingFrequencyBand"),
                "signal_strength": self._device.get("SignalStrength"),
                "signal_quality": signal_quality,
                "connection": "Wifi"
            }
        )
    if device.get("InterfaceName") in ["wlguest2","wlguest5"]:
        attrs.update(
            {
                "is_wireless": True,
                "band": self._device.get("OperatingFrequencyBand"),
                "connection": "Wifi invité"
            }

        )

    return attrs

@property
def icon(self) -> str:
    """Return icon."""
    match self._device.get("DeviceType"):
        case "Computer" | "Desktop iOS" | "Desktop Windows" | "Desktop Linux":
            return "mdi:desktop-tower-monitor"
        case "Laptop" | "Laptop iOS" | "Laptop Windows" | "Laptop Linux":
            return "mdi:laptop"
        case "Switch4" | "Switch8" | "Switch":
            return "mdi:switch"
        case "Acces Point":
            return "mdi:access-point-network"
        case "TV" | "TVKey" | "Apple TV":
            return "mdi:television"
        case "HomePlug":
            return "mdi:network"
        case "Printer":
            return "mdi:printer"
        case "Set-top Box TV UHD" | "Set-top Box":
            return "mdi:dlna"
        case "Mobile iOS" | "Mobile" | "Mobile Android":
            return "mdi:cellphone"
        case "Tablet iOS" | "Tablet" | "Tablet Android" | "Tablet Windows":
            return "mdi:cellphone"
        case "Game Console":
            return "mdi:gamepad-square"
        case "Homepoint":
            return "mdi:home-automation"
        case _:
            return "mdi:devices"
LGO44 commented 10 months ago

je n'ai pas pu encore tester l'accès distant

cyr-ius commented 10 months ago

@LGO44 ,

"scanner" n'est pas utile car si tu veux prendre uniquement les trackers de la livebox , il te suffit de préciser dans auto-entites , le domain et l'intégration , je ne mets pas d'information redondante

``````filter:
  include:
    - domain: device_tracker
      integration: livebox

Pareil concernant l'informartion is_wireless à True/False alors qu'il existe Connection qui vaut ethernet,wifi,guestwifi C'es très simple de savoir que nous sommes en Wifi , il suffit de faire un

state_attr(config.entity, 'connection') != "ethernet"

Peux tu m'expliquer pourquoi tu mets eth6 dans la liste des Wifi ? es-tu sur ? car il faut que cela fonctionne chez tous le monde.

Par contre , j'ai ajouté ta proposition de Guest Wifi

Voir la version 2.1.3-beta

LGO44 commented 10 months ago

@LGO44 ,

"scanner" n'est pas utile car si tu veux prendre uniquement les trackers de la livebox , il te suffit de préciser dans auto-entites , le domain et l'intégration , je ne mets pas d'information redondante

``````filter:
  include:
    - domain: device_tracker
      integration: livebox

Pareil concernant l'informartion is_wireless à True/False alors qu'il existe Connection qui vaut ethernet,wifi,guestwifi C'es très simple de savoir que nous sommes en Wifi , il suffit de faire un

state_attr(config.entity, 'connection') != "ethernet"

Peux tu m'expliquer pourquoi tu mets eth6 dans la liste des Wifi ? es-tu sur ? car il faut que cela fonctionne chez tous le monde.

Par contre , j'ai ajouté ta proposition de Guest Wifi

Voir la version 2.1.3-beta

eth6 : est renvoyé pour le port wifi

LGO44 commented 10 months ago

test version beta 2.1.4

les équipements sont mis à jour, si un équipement se connecte il est tracé mais ses attributs ne sont pas mis à jour.

exemple : je passe un téléphone du réseau wifi vers wifi_invité il est visualisé en présent sur les 2 réseaux...

Je pense que l'attribut is_online est nécessaire pour surveiller la présence active.

cyr-ius commented 10 months ago

test version beta 2.1.4

les équipements sont mis à jour, si un équipement se connecte il est tracé mais ses attributs ne sont pas mis à jour.

exemple : je passe un téléphone du réseau wifi vers wifi_invité il est visualisé en présent sur les 2 réseaux...

Je pense que l'attribut is_online est nécessaire pour surveiller la présence active.

is_online correspond simplement à is_connected , il s'agit du même code. Dans la logique , ton téléphone passant de Wifi à Wifi invité , d'une certaine manière , il ne bouge pas , il est toujours Is_connected à True tout les attributs changent pas sauf "connection" qui passe de wifi à guestwifi

cyr-ius commented 10 months ago

Après peut être qu'il apparait deux fois dans la livebox. Mais comme la clé unique est la mac adress cela devrait pas être le cas. Si tu as un cas , je suis preneur du fichier de diagnostic pour voir sous quel forme cela se présente

LGO44 commented 10 months ago

Les attributs des device-trackers ne sont pas mis a jour Iphone connecté sur wifi guest.pdf l'integration n'a pas mis à jour l'adresse IP de iPhone car..

Nardol commented 10 months ago

J'y pense, pendant que je fais ma PR je m'apperçois qu'il y a #89 qui touche aussi aux données de diagnostique, entre autres un peu aux données à masquer que je suis en train de compléter. Sauf erreur il n'y a que pour la clé Wi-Fi, du coup je risque de causer des conflits...

LGO44 commented 10 months ago

J'y pense, pendant que je fais ma PR je m'apperçois qu'il y a #89 qui touche aussi aux données de diagnostique, entre autres un peu aux données à masquer que je suis en train de compléter. Sauf erreur il n'y a que pour la clé Wi-Fi, du coup je risque de causer des conflits...

je ne sais pas si cela touche les trackers, mais mon problème est inchangé, pas de mise à jour dynamique des attributs

Nardol commented 10 months ago

je ne sais pas si cela touche les trackers, mais mon problème est inchangé, pas de mise à jour dynamique des attributs

Non, ça touche uniquement au fichier de diagnostiques et je n'ai pas encore ouvert la PR, j'ajoute des données dans un nombre monstrueux, peut-être que je veux en masquer trop d'ailleurs mais c'est un autre sujet :laughing:

cyr-ius commented 10 months ago

le #89 est obsolète . Je vais pas le merger. Si vous regardez bien j'ai mis à jour le fichier de diag

cyr-ius commented 10 months ago

@LGO44 , il y a un truc que je comprends pas , tu me parles de l'attribut is_online mais je l'ai retiré du code. Donc du coup , je comprends comment tu peux le voir dans ton pdf

LGO44 commented 10 months ago

@LGO44 , il y a un truc que je comprends pas , tu me parles de l'attribut is_online mais je l'ai retiré du code. Donc du coup , je comprends comment tu peux le voir dans ton pdf

@cyr-ius Désolé, je l'ai recréé pour rechercher l'origine du problème, "is_online" : self._device.get("Active"), pour surveiller la présence active d'un équipement Je pense que l'origine du problème c'est que les données device tracker ne sont pas recalculées périodiquement

cyr-ius commented 10 months ago

@LGO44 , il y a un truc que je comprends pas , tu me parles de l'attribut is_online mais je l'ai retiré du code. Donc du coup , je comprends comment tu peux le voir dans ton pdf

@cyr-ius Désolé, je l'ai recréé pour rechercher l'origine du problème, "is_online" : self._device.get("Active"), pour surveiller la présence active d'un équipement Je pense que l'origine du problème c'est que les données device tracker ne sont pas recalculées périodiquement

Ce que je comprends pas c'est qu'on voit bien le Last_changed qui est à jour. Je vais ajouter des traces de debug comme ça si tu actives le mode debug tu verras si cela bouge ou pas. Je vais en mettre dans le extra_attributes , ainsi si tu vois ce debug c'est que le code est bien executé Je te fais une 2.1.6-beta de suite

Nardol commented 10 months ago

le #89 est obsolète . Je vais pas le merger. Si vous regardez bien j'ai mis à jour le fichier de diag

Ah oui, au temps pour moi. J'ai bien la clé Wi-Fi par exemple dans les données à masquer Je n'avais pas fait gaffe désolé. Je test ce que j'ai rajouté et je fais une PR du coup.

cyr-ius commented 10 months ago

le #89 est obsolète . Je vais pas le merger. Si vous regardez bien j'ai mis à jour le fichier de diag

Ah oui, au temps pour moi. J'ai bien la clé Wi-Fi par exemple dans les données à masquer Je n'avais pas fait gaffe désolé. Je test ce que j'ai rajouté et je fais une PR du coup.

Pas de soucis , tu peux pousser un PR , et si il y a conflit , je ferais la correction nécessaire

cyr-ius commented 10 months ago

@LGO44 , j'ai poussé une 2.1.6 tu vaus pouvoir active le debug mode. Mais j'ai vérifié en créant une champs alératoire dans le coordinator sur les device trackers . je vois bien la valeur changé à chaque fois , que celui est rejoué. Ce champs apparait correctement dans l'extra attribute. Donc pour moi , il y a aucun pbl de rafraichissement de valeur.

cyr-ius commented 10 months ago

@LGO44 , je crois savoir ce qui te fait penser que cela change pas. Oublie pas que j'ai codé un timeout tracking que tu peux changer dans les options du Config Flow pour éviter des déconnexions intempestives quand l'équipement est à la limite du Wifi. Le status is_connected ne change que si la valeur est conservé pendant toute la durée. Par default , c'est 300 secondes , soit 5minutes Il faut donc que l'équipement reste 5min absent du réseau avant qu'il change de status A change dans le config flow option si tu veux plus court

LGO44 commented 10 months ago

@LGO44 , je crois savoir ce qui te fait penser que cela change pas. Oublie pas que j'ai codé un timeout tracking que tu peux changer dans les options du Config Flow pour éviter des déconnexions intempestives quand l'équipement est à la limite du Wifi. Le status is_connected ne change que si la valeur est conservé pendant toute la durée. Par default , c'est 300 secondes , soit 5minutes Il faut donc que l'équipement reste 5min absent du réseau avant qu'il change de status A change dans le config flow option si tu veux plus court

@cyr-ius j'ai poursuivi mes tests, les valeurs des attributs sont bien rafraichies cycliquement , donc désolé pour cette incompréhension, toutefois au démarrage de l'intégration les device_trackers récupèrent l'adresse IP des équipements connectés puis plus ensuite, j'ai rajouté un extra attribut: "ip" : device.get("IPAddress"),

Le délai de 5 minutes me parait long.

Il me faudra procéder à quelques mises à jour de ma carte de surveillance: image

cyr-ius commented 10 months ago

@LGO44 , effectivement l'adresse ip restait fixe. Je viens de corriger cela dans le version 2.1.9-beta. J'ai fait simple, à présent tous les champs du device_tracker sont dynamique.

Concernant le 5min , tu peux le régler via les options de l'addon. Cela a été mise en place il y a longtemps en raison de l' iPhone qui se connecte/déconecte toutes les minutes quand il est en veille (économie de batterie)

Dis moi ce que tu penses de cette version ? peut être la dernière avant la bascule vers la branche principale. Toujours preneur d'un fichier de daignostic. Sahant que @Nardol a censuré tout ce qui était sensible.

Nardol commented 10 months ago

Hm... à moins que j'étais passé à côté avant, après la mise à jour j'ai des entités en double avec une indisponible sur les deux.

Et du coup, le journal est totalement vide.

Voici un fichier de diagnostique : config_entry-livebox-6dcc945708e06fff6ed29331209bfa41.json.txt

J'ai dû remplacer mon IP publique par 1.2.3.4, pour ce qui est des IP locales j'ai tout laissé, il en reste pas mal (config de base) mais avec des noms genre status ou autres génériques que je n'avais pas censuré dans la PR mais si tu penses que ça ne peut pas poser d'autres soucis à toi de voir :slightly_smiling_face:

LGO44 commented 10 months ago

@LGO44 , effectivement l'adresse ip restait fixe. Je viens de corriger cela dans le version 2.1.9-beta. J'ai fait simple, à présent tous les champs du device_tracker sont dynamique.

Concernant le 5min , tu peux le régler via les options de l'addon. Cela a été mise en place il y a longtemps en raison de l' iPhone qui se connecte/déconecte toutes les minutes quand il est en veille (économie de batterie)

Dis moi ce que tu penses de cette version ? peut être la dernière avant la bascule vers la branche principale. Toujours preneur d'un fichier de daignostic. Sahant que @Nardol a censuré tout ce qui était sensible.

Pour moi c'est tout bon! merci pour tout ton travail

cyr-ius commented 10 months ago

@Nardol, un grand merci, ton fichier est précieux. Du coup , j ai identifié le bug du status Wan. Pour le fichier diag, les IP local n ont aucune importance on a tous les mêmes. J ai vu quelques champs a censuré comme SelfPin ou secretRadius Pour l IP public , je vais ajouter une fonction spéciale qui censure l IP plutôt que tout le status.

Sinon pour les capteurs en doublons, j ai aussi identifié le bug donc corrigé dans la 2.2.0-beta Dis moi si tout est revenu à la normale

LGO44 commented 10 months ago

Toujours preneur d'un fichier de daignostic

Ok sur adresse mail privée

LGO44 commented 10 months ago

@cyr-ius , pour info tous mes test ont été effectuée sur une livebox 4

Nardol commented 10 months ago

j ai identifié le bug du status Wan.

Je confirme, il est maintenant à connecter.

Pour le fichier diag, les IP local n ont aucune importance on a tous les mêmes.

Il me semblait que ça pouvait se paramétrer.

Sinon pour les capteurs en doublons, j ai aussi identifié le bug donc corrigé dans la 2.2.0-beta Dis moi si tout est revenu à la normale

J'ai toujours tout en double après la MAJ, rien n'a été supprimé malheureusement.

cyr-ius commented 10 months ago

@Nardol , Même si tu changes les ip locales , cela ne change rien. les ips locales sont identique sur toute la planète. Il s'agit de range réservé pour ces usages. https://fr.wikipedia.org/wiki/R%C3%A9seau_priv%C3%A9

Malheureusement je peux pas supprimer les sensors en double. J'ai simplement rebasculer vers les sensors que tu utilisais à l'origine. (si j'ai bien corrigé le truc). Un senseur ne peut être détruit que par un admin. Il suffit de cliquer sur celui griser et faire delete. Sinon si tu installes la dernière version , j'ai rajouté un nouveau senseur , autour du Dynamic DNS , celui-ci t'informe si il y a un pbl d'uptate vers OVH ou pas. Voyant que cette fonction était disponible , je me suis dis que cela pouvait être bien de vérifier ce type de chose. Le capteur est désactivé par défault , à toi de l'activé au besoin. J'en ai profité aussi pour rajouter deux senseurs sur les stats Wifi. Je sais pas si cela peut être utile.

Nardol commented 10 months ago

@Nardol , Même si tu changes les ip locales , cela ne change rien. les ips locales sont identique sur toute la planète. Il s'agit de range réservé pour ces usages. https://fr.wikipedia.org/wiki/R%C3%A9seau_priv%C3%A9

Oui bien sûr, ce que je voulais dire c'est que d'une personne à l'autre on n'utilise pas tous le même de ces rangs réservés donc ça révèle une partie de la config qu'on ne souhaite pas forcément révéler. Après bon les IPv4 locales d'une LiveBox il y a le NAT donc peut-être que je pouce un peu loin la confidentialité :smile:

Malheureusement je peux pas supprimer les sensors en double. J'ai simplement rebasculer vers les sensors que tu utilisais à l'origine. (si j'ai bien corrigé le truc). Un senseur ne peut être détruit que par un admin. Il suffit de cliquer sur celui griser et faire delete.>

Ah oui d'accord, c'est un point que je n'ai jamais su, si on pouvait supprimer une entité depuis l'intégration. Encore du mal à saisir toutes les subtilités de coder pour HA, ce qui me bloque d'ailleurs pour y contribuer plus...

Sinon si tu installes la dernière version , j'ai rajouté un nouveau senseur , autour du Dynamic DNS , celui-ci t'informe si il y a un pbl d'uptate vers OVH ou pas. Voyant que cette fonction était disponible , je me suis dis que cela pouvait être bien de vérifier ce type de chose. Le capteur est désactivé par défault , à toi de l'activé au besoin. J'en ai profité aussi pour rajouter deux senseurs sur les stats Wifi. Je sais pas si cela peut être utile.

Il semble y avoir un souci avec le capteur DDNS, en l'activant j'ai ça dans le log :

2024-01-25 10:25:36.193 ERROR (MainThread) [homeassistant.components.binary_sensor] Error adding entities for domain binary_sensor with platform livebox
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity_platform.py", line 507, in async_add_entities
    await asyncio.gather(*tasks)
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity_platform.py", line 752, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 1282, in add_to_platform_finish
    self.async_write_ha_state()
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 945, in async_write_ha_state
    self._async_write_ha_state()
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 1066, in _async_write_ha_state
    state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 1003, in __async_calculate_state
    state = self._stringify_state(available)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 951, in _stringify_state
    if (state := self.state) is None:
                 ^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/binary_sensor/__init__.py", line 300, in state
    if (is_on := self.is_on) is None:
                 ^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/binary_sensor.py", line 106, in is_on
    return self.entity_description.value_fn(self.coordinator.data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/binary_sensor.py", line 72, in <lambda>
    value_fn=lambda x: x.get("ddns", {}).get("status", "").lower() != "updated",
                       ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'get'
2024-01-25 10:25:36.206 ERROR (MainThread) [homeassistant.components.binary_sensor] Error while setting up livebox platform for binary_sensor
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity_platform.py", line 368, in _async_setup_platform
    await asyncio.gather(*pending)
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity_platform.py", line 507, in async_add_entities
    await asyncio.gather(*tasks)
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity_platform.py", line 752, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 1282, in add_to_platform_finish
    self.async_write_ha_state()
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 945, in async_write_ha_state
    self._async_write_ha_state()
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 1066, in _async_write_ha_state
    state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 1003, in __async_calculate_state
    state = self._stringify_state(available)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/helpers/entity.py", line 951, in _stringify_state
    if (state := self.state) is None:
                 ^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.11/site-packages/homeassistant/components/binary_sensor/__init__.py", line 300, in state
    if (is_on := self.is_on) is None:
                 ^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/binary_sensor.py", line 106, in is_on
    return self.entity_description.value_fn(self.coordinator.data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/homeassistant/config/custom_components/livebox/binary_sensor.py", line 72, in <lambda>
    value_fn=lambda x: x.get("ddns", {}).get("status", "").lower() != "updated",
                       ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'get'

En ce qui concerne le Wi-Fi ça n'est pas ma livebox qui le gère (vilain double-NAT sans mode bridge) du coup je ne pourrais pas tester mais ça reste sympa ! C'est normal qu'ils s'appellent wifif ?