Files
ad_trident/APPDAEMON_BANDWIDTH_BUG_FIX.md

2.2 KiB

Bug AppDaemon 4.5.10 : trafic HASS constant (~400-450 KB/s)

Symptôme

Après ~10 minutes de fonctionnement (temps depuis le démarrage d'AppDaemon, pas de Home Assistant), le trafic réseau du container grimpe à ~400-450 KB/s et reste stable indéfiniment, même sans aucune app chargée.

Cause

Bug upstream corrigé par AppDaemon/appdaemon#2429, inclus depuis la version 4.5.12. Dans plugin_management.py, update_plugin_state() appelle refresh_update_time(plugin) (l'objet plugin) au lieu de refresh_update_time(plugin.name) (la string). Le timestamp utilisé par time_since_plugin_update(plugin.name) n'est donc jamais remis à jour : une fois le refresh_delay par défaut (10 min) dépassé, AppDaemon redemande l'état complet de Home Assistant (get_states) à chaque tick de la boucle utilitaire (1x/seconde), indéfiniment.

Statut

  • Corrigé depuis AppDaemon 4.5.12 (12 oct. 2025). Si l'image utilisée est en 4.5.12+, ce fix n'est plus nécessaire.
  • Toujours utile si on reste bloqué sur une version < 4.5.12.

Comment réappliquer le patch (si toujours sur AppDaemon < 4.5.12)

Fichier concerné : /usr/local/lib/python3.12/site-packages/appdaemon/plugin_management.py

Chercher (dans la méthode update_plugin_state) :

                finally:
                    await self.refresh_update_time(plugin)

Remplacer par :

                finally:
                    await self.refresh_update_time(plugin.name)

Une seule ligne à changer. Une commande one-liner pour l'appliquer dans le container :

sed -i 's/await self.refresh_update_time(plugin)$/await self.refresh_update_time(plugin.name)/' \
  /usr/local/lib/python3.12/site-packages/appdaemon/plugin_management.py

⚠️ Ce patch vit dans l'image du container (site-packages), pas dans /conf. Il est donc perdu à chaque recréation du container et doit être réappliqué manuellement tant que l'image reste en 4.5.10/4.5.11.

Comment vérifier que le patch est actif

grep -n "refresh_update_time(plugin" /usr/local/lib/python3.12/site-packages/appdaemon/plugin_management.py

Doit afficher refresh_update_time(plugin.name) (pas refresh_update_time(plugin) seul).