earion68 / hass_custom_bbox

Custom Home Assistant integration for Bbox
6 stars 3 forks source link

Les "device_tracker" ne fonctionnent plus depuis la mise à jour du firmware de la Bbox (Fast5330b-r1) en version 23.7.8 #4

Closed mcpfr closed 7 months ago

mcpfr commented 8 months ago

Bonjour,

Je me permets de vous remonter ce problème.

Depuis la mise à jour en version 23.7.8 et son redémarrage, les informations des "device.tracker" ne sont plus fonctionnelles.

Premières constatations :

[{"hosts":{"list":[ {"id":1, "hostname":"xxxxxxx", "macaddress":"xxxxxxxxxxxxxxx", "ipaddress":"xxxxxxxxxxxx", "active":1,

Par avance merci de votre aide

Cordialement Mcp

earion68 commented 8 months ago

C'est curieux, on dirait que je n'ai pas cette version du firmware en "opérationnel", whatever that means. Ci-dessous les informations de ma BBox (tout juste redémarrée pour être sûr), je pourrais voir le vôtre ?

image

Inutile de préciser que dans ma situation actuelle, tout fonctionne bien. Il faudrait au moins que j'arrive à reproduire le problème pour tenter de le corriger.

mcpfr commented 8 months ago

Merci de votre retour,

La mienne est passée en 23.7.8 image

earion68 commented 8 months ago

Merci, je vais essayer de forcer la mise à jour afin de reproduire (et corriger si possible) le problème.

mcpfr commented 8 months ago

Merci,

N'hésitez pas si vous avez besoin d'informations ou de tests

Mcp

JimmyTournemaine commented 7 months ago

Hello, est-ce que tu as pu avancer sur le sujet ?

J'ai regardé un peu pour essayer de comprendre. Voici l'exception levée:

2024-02-16 11:49:46.288 ERROR (MainThread) [homeassistant.components.device_tracker] Error setting up platform legacy custom_bbox
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/device_tracker/legacy.py", line 301, in async_setup_legacy
    scanner = await hass.async_add_executor_job(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/custom_bbox/device_tracker.py", line 35, in get_scanner
    scanner = BboxDeviceScanner(config[DOMAIN])
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/custom_bbox/device_tracker.py", line 54, in __init__
    self.success_init = self._update_info()
                        ^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/__init__.py", line 190, in wrapper
    result = method(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/custom_bbox/device_tracker.py", line 82, in _update_info
    result = box.get_all_connected_devices()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/custom_bbox/pybbox.py", line 116, in get_all_connected_devices
    resp = api.execute_api_request()
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/custom_bbox/bboxApiCall.py", line 62, in execute_api_request
    raise Exception('Error {} with request {}\n{}'.format(
Exception: Error 401 with request http://192.168.1.254/api/v1/hosts
{'exception': {'domain': 'v1/hosts', 'code': '401', 'errors': [{'name': '', 'reason': 'Operation requires authentication'}]}}

Il semblerait que désormais l'authentification soit obligatoire pour certains endpoint. cf la doc du endpoint

Authentication required on LAN Authentication is required to access to this API on local network. Cookie "BBOX_ID" MUST be set with the value retrieved from login API

Dans le code d'appel au WS, on a self.auth.is_authentified() qui est False et donc le cookie d'authentification n'est pas passé d'où le 401.

earion68 commented 7 months ago

J'ai enfin reçu la mise à jour.

J'ai commit un quick fix dans la branche quickfix_login et le commit https://github.com/earion68/hass_custom_bbox/commit/c6a150e5959b0ef5f855ac43f5e09b131feee455 en particulier mot de passe de ta Bbox à mettre en dur pour le moment. Aussi, la Bbox doit répondre à son addresse mabbox.bytel.fr.

Chez moi ça fonctionne à nouveau. Tu peux me dire si ça fait le job chez toi ? Si oui je regarderai pour instrumentaliser un peu via la config du composant.

image

mcpfr commented 7 months ago

Bonjour Merci,

Il semble que de mon coté y avoir avec problème avec le nom ou sa résolution après avoir modifier le fichier "device_tracker.py"

File "/usr/local/lib/python3.12/site-packages/netaddr/ip/init.py", line 341, in init raise AddrFormatError('failed to detect a valid IP ' 'address from %r' % addr) netaddr.core.AddrFormatError: failed to detect a valid IP address from 'mabbox.bytel.fr'

earion68 commented 7 months ago

Parviens-tu à faire un ping vers cette addresse?


From: MCP @.> Sent: Monday, February 19, 2024 2:23:21 PM To: earion68/hass_custom_bbox @.> Cc: Earion @.>; Comment @.> Subject: Re: [earion68/hass_custom_bbox] Les "device_tracker" ne fonctionnent plus depuis la mise à jour du firmware de la Bbox (Fast5330b-r1) en version 23.7.8 (Issue #4)

Bonjour Merci,

Il semble que de mon coté y avoir avec problème avec le nom ou sa résolution après avoir modifier le fichier "device_tracker.py"

File "/usr/local/lib/python3.12/site-packages/netaddr/ip/init.py", line 341, in init raise AddrFormatError('failed to detect a valid IP ' 'address from %r' % addr) netaddr.core.AddrFormatError: failed to detect a valid IP address from 'mabbox.bytel.fr'

— Reply to this email directly, view it on GitHubhttps://github.com/earion68/hass_custom_bbox/issues/4#issuecomment-1952447090, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ANBFFCVR26EAZKHFQHT7MO3YUNG4TAVCNFSM6AAAAABDBEGVWGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNJSGQ2DOMBZGA. You are receiving this because you commented.Message ID: @.***>

mcpfr commented 7 months ago

oui, et l'adresse est bien résolu depuis le ssh sur H.A et idem si je mets directement l'adresse IP à la place de "mabbox.bytel.fr' dans: box = Bbox(ip='mabbox.bytel.fr')

l'erreur complète est:

Logger: homeassistant.components.device_tracker Source: components/device_tracker/legacy.py:301 Integration: Dispositif de suivi (documentation, issues) First occurred: 14:28:21 (1 occurrences) Last logged: 14:28:21

Error setting up platform legacy custom_bbox Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/device_tracker/legacy.py", line 301, in async_setup_legacy scanner = await hass.async_add_executor_job( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, *self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/custom_bbox/device_tracker.py", line 35, in get_scanner scanner = BboxDeviceScanner(config[DOMAIN]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/custom_bbox/device_tracker.py", line 54, in init self.success_init = self._update_info() ^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/util/init.py", line 190, in wrapper result = method(args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/custom_bbox/device_tracker.py", line 82, in _update_info box = Bbox(ip='mabbox.bytel.fr') ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/custom_bbox/pybbox.py", line 25, in init self.bbox_url = BboxAPIUrl(None, None, ip) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/custom_bbox/bboxApiURL.py", line 25, in init self.build_url_request() File "/config/custom_components/custom_bbox/bboxApiURL.py", line 53, in build_url_request if net.IPAddress(self.ip).is_private(): ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/netaddr/ip/init.py", line 341, in init raise AddrFormatError('failed to detect a valid IP ' 'address from %r' % addr) netaddr.core.AddrFormatError: failed to detect a valid IP address from 'mabbox.bytel.fr'

mcpfr commented 7 months ago

Pour information, je ne suis pas sur le 168.xxx mais un 10.xx

earion68 commented 7 months ago

j'ignore pourquoi il a fallu que je remplace la ligne 81 par la ligne 82. Essaie peut-être de faire l'inverse de ton côté.

mcpfr commented 7 months ago

Bon.... Cela refonctionne, mais il a fallu que je modifie en plus le fichier bboxApiURL.py pour forcer directement le type LAN et en HTTPS (section ligne 52/61)

# Check if the ip is LAN or WAN

url = "https://{}".format(self.ip)
self.authentication_type = BboxConstant.AUTHENTICATION_TYPE_LOCAL

#if net.IPAddress(self.ip).is_private():
#    url = "http://{}".format(self.ip)
#    self.authentication_type = BboxConstant.AUTHENTICATION_TYPE_LOCAL
#else:
#    url = "https://{}:{}".format(self.ip,
#                                 BboxConstant.DEFAULT_REMOTE_PORT)
#    self.authentication_type = BboxConstant.AUTHENTICATION_TYPE_REMOTE
earion68 commented 7 months ago

j'avais effectivement fait la même modification mais j'ai oublié de la reporter dans mon commit. Je ne sais pas comment je me suis débrouillé, mais j'ai rajouté le fix dans la branche quickfix_login.

Peux-tu me confirmer que ça fonctionne de ton côté ? J'essayerai de faire un fix plus propre dès que j'ai un peu de temps.

mcpfr commented 7 months ago

Je confirme c'est bon de mon coté.

earion68 commented 7 months ago

Merci pour la confirmation.

J'ai implémenté les changements dans la branche main, la différence maintenant c'est qu'il faut spécifier le mot de passe de la Bbox dans configuration.yaml, c'est plus propre.

c.f. https://github.com/earion68/hass_custom_bbox/blob/main/README.md

Je ferme le ticket. Merci pour ton aide !

mcpfr commented 7 months ago

Bonjour,

Je viens de mettre en place l'intégration et cela fonctionne, il a juste fallu que je précise le "host: mabbox.bytel.fr" (ip en: 10.x.x.,)

Un grand merci à vous et surtout n'hésitez pas a me contacter en cas de besoin pour des tests, même sur d'autres points

Merci

Mcp