ZHA - Zigpy Zigate Wifi - Fermeture de connection vers ZHA

Bonjour à tous,

Home Assistant : 2021.5.4
ZHA : Last version in HASS
ZiGate-WiFi v2.00 with esp-link v3.2.50-gfe4f565-dirty

J’utilise une passerelle Zigate WIFI avec l’intégration ZHA dans HASS, après un temps aléatoire de 30 min à 4h, home assistant m’envoie ce message d’erreur :

Logger: zigpy_zigate.api
Source: /usr/local/lib/python3.8/site-packages/zigpy_zigate/api.py:138
First occurred: 19:46:24 (20 occurrences)
Last logged: 19:47:26

No response to command 0x0530

----


Logger: asyncio
Source: /usr/local/lib/python3.8/asyncio/selector_events.py:903
First occurred: 19:46:54 (16 occurrences)
Last logged: 19:47:25

socket.send() raised exception.

Après ce message, tous mes sensors et mes lumières ne fonctionnent plus jusqu’à que je relance ZHA, ou mon home assistant.

Home Assistant n’envoie plus aucune requête vers ma Zigate Wifi.

Tcpdump :
192.168.4.252 si my HASS
192.168.4.227 Zigate Wifi

19:22:09.071920 ARP, Request who-has 192.168.4.227 tell 192.168.4.252, length 46
19:22:09.073167 ARP, Reply 192.168.4.227 is-at 3c:61:05:d1:1f:d6, length 46
19:25:59.740061 IP 192.168.4.227.9999 > 192.168.4.252.54258: Flags [P.], seq 2250:2330, ack 860, win 1824, length 80
19:25:59.740679 IP 192.168.4.252.54258 > 192.168.4.227.9999: Flags [.], ack 2330, win 64068, length 0
19:25:59.741956 IP 192.168.4.227.9999 > 192.168.4.252.54258: Flags [P.], seq 2330:2340, ack 860, win 1824, length 10
19:25:59.743470 IP 192.168.4.252.54258 > 192.168.4.227.9999: Flags [.], ack 2340, win 64068, length 0
19:26:04.848226 ARP, Request who-has 192.168.4.227 tell 192.168.4.252, length 46
19:26:04.850873 ARP, Reply 192.168.4.227 is-at 3c:61:05:d1:1f:d6, length 46
19:30:59.877528 IP 192.168.4.227.9999 > 192.168.4.252.54258: Flags [F.], seq 2340, ack 860, win 1824, length 0
19:30:59.879422 IP 192.168.4.252.54258 > 192.168.4.227.9999: Flags [F.], seq 860, ack 2341, win 64068, length 0
19:30:59.880991 IP 192.168.4.227.9999 > 192.168.4.252.54258: Flags [.], ack 861, win 1823, length 0
19:31:05.139535 ARP, Request who-has 192.168.4.227 tell 192.168.4.252, length 46
19:31:05.141093 ARP, Reply 192.168.4.227 is-at 3c:61:05:d1:1f:d6, length 46
19:37:21.514434 ARP, Request who-has 192.168.4.227 tell 192.168.4.1, length 46

J’ai deux questions à qui pourra répondre :

Pourquoi ma Zigate wifi ferme la connexion ?
Est il possible que ZHA la relance éventuellement ?

Thank you

Salut, il semblerait que j’ai le même problème.
As-tu trouvé une solution fonctionnelle ? As tu flashé la zigate en 3.1e ?

Bonjour, oui j’ai flashé en 3.1e, par contre tout le monde semble s’en foutre de seproblème … voir mes tickets sur github …

La solution fonctionnelle que j’ai trouvé, c’est de faire des scripts bash dans un cron, qui quand il détecte l’erreur vont redémarrer HASS …

Salut, ah oué. le problème c’est que chez moi les capteurs ne tiennent pas plus de 30min et après plus de mise à jour, sauf recharger le plugin ou redémarrer home assistant. ça m’embête beaucoup de redémarrer ha toute les 30min. J’ai déjà mise à jour le firemware wifi mais toujours le problème.
J’ai vu qu’il y a une version 3.1f de sortie. Je vais tenter ça en réinitialisant bien ma zigate mais je suis très septique.

Pardon, je n’ai pas été assez précis, je ne redémarre pas HASS, je redémarre uniquement l’intégration. Mais sinon oui je suis d’accord c’est lourd, je suis prenneur de ton retour sur 3.1f

bon toujours même problème.

je vais me la tenter par le code avec la bibliothèque doudz/zigate

je vais voir comme ça si c’est matériel ou si c’est vraiment le plugin.
si ça déconne pas, j’alimenterais mes devices en template en attendant une éventuelle correction

Penses à aller commenter les « issues » github que j’ai ouvert pour faire réagir les devs !

Comme je l’ai écrit sur le github, même problème.
Pour les courageux on peut mettre à jour la librairie zigpy-zigate avec la version non releasee par Doudz qui est supposée implémenter le reconnect. Les essais que j’ai fait à l’époque où il a modifié la lib n’avaient pas été concluants mais comme le code de homeassistant évolue rapidement peut-être que ça corrige, je n’ai pas refait de test récent.
Si je trouve du temps, je tente de mon côté, voir j’ajoute du code pour logger la détection de disconnect / reconnect (j’ai peur que le code ajouté par doudz ne soit pas suffisant et qu’il faille ajouter des choses côté zha, mais mon niveau en python est loin d’être aussi bon que dans d’autres langages de programmation)

Merci de ce message, par contre l’implémentation aurait du être faite à qu’elle niveau ? dans hass core ?

il faut attendre que doudz release une nouvelle version de zigpy-zigate (cf. zigpy-zigate 0.8.0 or newer 0.8.x release with later fixes already added? · Issue #93 · zigpy/zigpy-zigate · GitHub). Une fois qu’il l’aura fait, la nouvelle version sera disponible via pypi puis les développeurs de HA pourront mettre à jour les dépendances de HA pour qu’elle soit inclue dans le core…

si on veut tester en avance faut aller bidouiller la lib à la main pour écraser les fichiers standards par ceux que doudz a commité dans sa branche dev (à ma demande pour le reconnect)

edit : je vois qu’on a travaillé dessus en décembre 2020… ça vaudrait vraiment le coup de tester à nouveau (add reconnect feature · zigpy/zigpy-zigate@e9b8bf1 · GitHub)

allez, je viens de forcer le nouveau code sur mon HA et j’ai désactiver mon cron qui force le rechargement de Zigbee, on va bien voir !

Je viens d’aller voir effectivement le code semble inclure la déconnexion, dommage que ça n’ait pas été encore poussé depuis !

n’ai pas de regrets, ça ne fonctionne pas :frowning:

2021-06-14 14:51:37 DEBUG (MainThread) [zigpy_zigate.uart] Closed serial connection

et pas de reconnection derrière, sans trop savoir si ça vient de zigpy ou de zigpy-zigate

Dès que je trouve du temps, je vais aller voir le code directement et me mettre en mode dev :frowning:

J’essaye de comprendre comment ça marche et je vous suis pour trouver une solution.

Souhaitez vous que nous nous m’étions en visio pour essayer de faire une session de travail commune ?

J’ai des compétences en réseau python et je suis sous docker swarm.

Pas nécessairement dans l’immédiat. Je regarde un peu comment ça fonctionne et après je vais tester 2/3 choses. Sinon on peut se retrouver aussi sur Discord

J’ai tenté des choses ultra simpliste du genre:

   async def command(self, cmd, data=b'', wait_response=None, wait_status=True):
        tries = 200
        while tries > 0:
           tries -= 1
           try:
             return await  self.command2(cmd=cmd, data=data, wait_response=wait_response, wait_status=wait_status)
           except NoResponseError as nre:
             if tries > 0:
                 LOGGER.warning("Reconnect")
                 self.close()
                 await asyncio.sleep(1)
                 await self.connect()
             else:
                 raise nre


    async def command2(self, cmd, data=b'', wait_response=None, wait_status=True):

La reconnexion fonctionne très bien, malheureusement je me retrouve avec d’autres erreurs:

2021-06-19 13:36:22 DEBUG (MainThread) [zigpy_zigate.zigbee.application] zigate_callback_handler [233, 1, 8, <Address address_mode=ADDRESS_MODE.NWK a│
│2021-06-19 13:36:22 DEBUG (MainThread) [zigpy_zigate.zigbee.application] APS Data confirm Fail 67 233                                                │
│2021-06-19 13:36:22 WARNING (MainThread) [zigpy_zigate.zigbee.application] Unexpected message send failure                                           │
│2021-06-19 13:36:22 DEBUG (MainThread) [zigpy_zigate.uart] Frame received: 8012000a320001080202e444000300                                            │
│2021-06-19 13:36:22 DEBUG (MainThread) [zigpy_zigate.api] data received 0x8012 b'0001080202e4440003' LQI:0       

Certains modules n’apparaissent plus dans la carte réseau…

On va pas pouvoir couper court à se plonger dans le protocol pour résoudre le problème, or c’est pas forcément ma priorité, je me pose la question de balancer la zigate et passer sur une Phoscon conbeeII :thinking:

Phoscon conbeeII est en usb ?
Car pour ma part ma zigate en usb marche bien mais pas en wifi.
Mon intérêt est que Home Assistnat tourne sur synology est que la prochaine version ne prend plus en charge les dongles.