L’intégration Nuki s’abonnait au topic MQTT générique (wildcard) homeassistant/# au démarrage, même quand l’intégration Nuki n’était pas utilisée
De plus, le traitement côté Nuki était assez lourd pour chaque message de découverte (discovery) de Home Assistant, donc ça utilisait inutilement du CPU.
Ce que j’ai changé :
S’abonner uniquement pendant un scan Nuki, et arrêter automatiquement l’écoute après un délai d’une minute
Optimiser le gestionnaire MQTT en renvoyant immédiatement si l’appareil découvert n’est pas un appareil Nuki
@ProtZ Peux-tu jeter un œil à cette PR pour t’assurer que je n’ai rien cassé dans l’intégration Nuki ?
Si nécessaire, j’ai construit une image Docker pour les tests :
Bonjour, je suis content que vous ayez pu résoudre votre problème. Si c’est lié à l’intégration HomeKit, je vais m’en occuper. Je suis quasiment sûr qu’il s’agit d’un problème lié à mDNS (mdns), je l’ai déjà mentionné ici : https://community.gladysassistant.com/t/installer-glad
Désolé, je ne savais pas que cela pouvait poser problème. Ta PR est correcte, merci, et c’est une bonne façon de procéder pour de futurs scans MQTT. J’aimerais ajouter une autre correction dans la PR, mais je ne sais pas
J’ai tout essayé, mais je n’ai pas pu reproduire ce qui cause le pic d’utilisation du CPU. J’ai essayé d’ajouter un sélecteur sur la page de configuration de l’intégration HomeKit pour changer le mDNS (comme le fait Homebridge). Si, comme je le suppose, c’est un problème de mDNS, cela devrait résoudre le problème.
Une image Docker est disponible : bertrandda/gladys:homekit-mdns. Normalement, la valeur par défaut est CIAO. @bamboleate, pourrais-tu tester chaque mDNS disponible et vérifier l’utilisation du CPU ? Une fois la
@bertrandda J’ai remarqué qu’il y a une nouvelle version de @homebridge/hap-nodejs. As-tu essayé de mettre à jour vers la dernière version ?
Autre idée : les appareils MQTT de @bamboleate envoient environ 1 message par seconde. As-tu essayé de simuler une charge similaire en publiant des messages MQTT à ce rythme sur ton instance ? Cela pourrait aider à confirmer si le listener HomeKit (qui réagit à tous les changements d’état) est devenu trop lourd et provoque le pic d’utilisation du processeur.
Finalement, j’ai enfin eu le temps de bricoler un peu avec le conteneur bertrandda/gladys:homekit-mdns, et voici ce que j’ai trouvé
Le % CPU monte immédiatement lorsque je démarre le service Apple HomeKit / que je clique sur le bouton dans dashboard/settings/service
initialement il était réglé sur CIAO
Réglé sur AVAHI, j’ai eu l’impression d’une légère augmentation du % CPU par rapport à CIAO, mais ça pourrait être mon impression
Réglé sur BONJOUR, le % CPU est repassé à des valeurs normales !!!
Réglé sur RESOLVED, le % CPU était élevé comme pour les trois autres
À noter que, depuis que j’ai bidouillé le réseau, un serveur et des Pis et tout ça, j’aime que mes appareils Apple soient visibles et non obscurcis par un quelconque « service » fourni par Apple, donc j’ai essayé de désactiver tout ça, et cela pourrait être la cause de ce problème ? Je ne l’aurais pas cru, mais voilà…
J’ai désactivé l’option « Limit Tracking » d’Apple sur mes appareils (qui fait tourner/rafraîchir les adresses IP/MAC), et mon DNS tourne sur Pi-hole. Je ne sais pas si c’est lié, mais cela pourrait expliquer pourquoi BONJOUR fonctionne le mieux dans ma configuration. Je tourne actuellement avec BONJOUR et le CPU est stable.
J’espère que ça aide
EDIT : j’ai oublié de mentionner qu’avec le conteneur bertrandda/gladys:homekit-mdns, le % CPU est redescendu immédiatement quand j’ai désactivé Apple HomeKit dans dashboard/settings/service, alors que pour gladysassistant/gladys:latest il reste élevé jusqu’à ce que je recharge le conteneur — ça pourrait aussi vous être utile.
Merci beaucoup @bamboleate, c’est exactement ce que je devais savoir.
Je vais définir Bonjour comme mDNS par défaut. C’était l’ancien annonceur utilisé avec la version bêta de la bibliothèque.
On peut voir ici mDNS Options · homebridge/homebridge Wiki · GitHub que pour Docker, avahi est recommandé mais nécessite plus de configuration dans Docker ; je ne suis pas sûr que la migration soit possible pour toutes les instances Gladys existantes. L’annonceur Bonjour devrait fonctionner pour toutes les configurations et si les utilisateurs veulent optimiser leur configuration, ils peuvent le faire.
Oui, j’ai ajouté une fonction d’arrêt correcte dans cette image qui arrête immédiatement l’intégration HomeKit. Merci, vous venez de confirmer que cela fonctionne !
Oui la nouvelle version est dans l’image bertrandda/gladys:homekit-mdns