Plantage d'un thread qui entraîne un blocage complet

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
f-d-m
Messages : 156
Inscription : 25 juin 2019, 21:36

Plantage d'un thread qui entraîne un blocage complet

Message par f-d-m »

Bonjour,

Pour situer le contexte, il s'agit d'un plugin qui consulte à intervalle régulier un trucbidule en http , reçoit la réponse en JSON, et met à jour certains compteurs dans Domoticz.

Après plusieurs jours d'activité, le plugin s'arrête de fonctionner, il rapporte toutes les 10 ou 15 secondes le message d'erreur suivant, et bien sûr ne fait plus les mises à jour:

Code : Tout sélectionner

2025-12-16 14:08:01.237 Error: <nom> hardware (<idx>) thread seems to have ended unexpectedly
J'ai vérifié que le trucbidule est toujours présent et répond bien en JSON aux requêtes http.
Si je vais dans la section Admin, que je mets le composant hardware correspondant au script en "disabled", Domoticz devient complètement mort ou presque, car le process est toujours là et consomme quelques parts de CPU. Stopper le service Linux prend anormalement longtemps, et puis je peux le redémarrer.
Si je fais ça, il n'y a aucun crash dump et je n'ai rien pour essayer de comprendre ce qui foire.

Comment s'y prendre pour diagnostiquer ? Y a-t-il moyen d'investiguer / forcer un crash, soit avant de mettre le hardware en "disabled" ou bien après, lorsque plus rien ne répond ?

Voici des détails sur le trucbidule.

Il s'agit d'un dongle HomeWizard.com connecté à mon compteur électrique, et que j'ai décrit ici: viewtopic.php?p=126050#p126050 . Il s'agit du second que j'ai décrit dans ce post. Il ne "pousse" pas des données, mais au contraire il faut le poller pour obtenir des données.

Voici des détails sur le script:
Le script original est ici: https://github.com/Eraser3/HomeWizard-Wifi-p1-plugin
mais il contient une erreur de description de variable, du coup j'utilise un fork publié ici: https://github.com/gettevan/HomeWizard-Wifi-p1-plugin
Tout ça est expliqué dans la conversation viewtopic.php?t=14539

Bref, qu'est-ce qu peut planter complètement Domoticz dans ce genre de script ? Je n'ai pas assez de connaissances en programmation Python pour évaluer la qualité du code. Peut-on analyser les détails de "Error: ... hardware (...) thread seems to have ended unexpectedly" ?

Voici dans Domoticz:
2025-12-16 14_29_55-Domoticz — Mozilla Firefox.png
2025-12-16 14_29_55-Domoticz — Mozilla Firefox.png (8.17 Kio) Consulté 870 fois
2025-12-16 14_30_53-Domoticz — Mozilla Firefox.png
2025-12-16 14_30_53-Domoticz — Mozilla Firefox.png (21.77 Kio) Consulté 870 fois
2025-12-16 14_34_33-Domoticz — Mozilla Firefox.png
2025-12-16 14_34_33-Domoticz — Mozilla Firefox.png (12.47 Kio) Consulté 870 fois
Merci pour vos lumières éclairées ;)
---
Bruxelles

RPi 3B, Domoticz 2024.7, SSD, dongle Zigbee Sonoff
IPX-800 V3
multiples Sonoff et similaires (Tasmota, ESPeasy), multiples appareils Zigbee
SMA Sunny Boy 3.6
Ksenia Lares 4.0
Compteur digital à la norme DSMR5 - interface ESP32
f-d-m
Messages : 156
Inscription : 25 juin 2019, 21:36

Re: Plantage d'un thread qui entraîne un blocage complet

Message par f-d-m »

Désolé d'insister, est-ce que ce sujet n'inspire vraiment personne ?
---
Bruxelles

RPi 3B, Domoticz 2024.7, SSD, dongle Zigbee Sonoff
IPX-800 V3
multiples Sonoff et similaires (Tasmota, ESPeasy), multiples appareils Zigbee
SMA Sunny Boy 3.6
Ksenia Lares 4.0
Compteur digital à la norme DSMR5 - interface ESP32
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Plantage d'un thread qui entraîne un blocage complet

Message par Neutrino »

J'ai regardé vite fait.
readMeter() un urllib.request.urlopen("http://<IP>:<PORT>/api/v1/data") sans timeout explicite.​
Si la requête HTTP reste bloquée (Home Wizard injoignable, problème réseau, bug HomeWizard qui garde des connexions ouvertes...), le code ne revient jamais, le watchdog Domoticz finit par considérer le plugin comme bloqué et le tue.
Mais ça reste des suppositions.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
f-d-m
Messages : 156
Inscription : 25 juin 2019, 21:36

Re: Plantage d'un thread qui entraîne un blocage complet

Message par f-d-m »

Merci de ta réponse @Neutrino !

Il y a un truc qui me chiffonne là-dedans. Partons de l'idée qu'on a une erreur de communication (deux cas: impossible d'ouvrir le socket, ou bien connexion réussie mais qui reste pendante)
On considère que le watchdog flingue le thread après X temps.

A partir de ce moment, même si le dongle est bien présent dans le réseau et répond bien aux requêtes HTTP, Domoticz n'arrive plus à établir de connexion avec lui (4x message dans le log par minute, soit environ toutes les 15 secondes, ce qui est très inférieur à un timeout habituel en TCP). Pendant ce temps le dongle est parfaitement fonctionnel.

Pour le moment ça fonctionne depuis 2 jours. Je vais essayer en déconnectant le dongle et voir si j'arrive à reproduire le souci. Question de voir si le problème ne pourrait pas être ailleurs... j'espère que ce n'est pas un memory leak ?

Je suis en 2024.7, sous Debian 11.11.

Frédéric
---
Bruxelles

RPi 3B, Domoticz 2024.7, SSD, dongle Zigbee Sonoff
IPX-800 V3
multiples Sonoff et similaires (Tasmota, ESPeasy), multiples appareils Zigbee
SMA Sunny Boy 3.6
Ksenia Lares 4.0
Compteur digital à la norme DSMR5 - interface ESP32
f-d-m
Messages : 156
Inscription : 25 juin 2019, 21:36

Re: Plantage d'un thread qui entraîne un blocage complet

Message par f-d-m »

Alors voici:
je suis allé le débrancher. Après quelques dizaines de secondes :
2025-12-21 22:02:04.214 Error: Compteur HW: Failed to communicate with Wi-Fi P1 meter at ip 192.168.68.3 with port 80
2025-12-21 22:02:14.214 Error: Compteur HW: Failed to communicate with Wi-Fi P1 meter at ip 192.168.68.3 with port 80
2025-12-21 22:02:24.214 Error: Compteur HW: Failed to communicate with Wi-Fi P1 meter at ip 192.168.68.3 with port 80
Puis je l'ai rebranché. Je suppose que pendant la phase d'intialisation il répondait mal ou pas du tout:
2025-12-21 22:02:32.216 Error: Compteur HW: Failed to read response data
2025-12-21 22:02:41.151 Error: Compteur HW: Failed to read response data
Depuis tout est normal.

Les deux messages d'erreur proviennent bien du https://github.com/gettevan/HomeWizard- ... /plugin.py
Je vais décommenter quelques lignes dans le code source, mais je pressens que ça ne va pas m'aider.

En mode debug (dans les settings du plugin, dans la section hardware), c'est du coup très verbeux mais ce qui m'intéresse ce sont les quelques messages qui ne sont pas générés par le plugin mais par Domoticz lui-même:

en fin de traitement:
2025-12-21 22:18:28.532 Compteur HW: Acquiring GIL for 'onHeartbeatCallback'
puis 10 secondes de pause si j'ai mis 10 secondes
et puis avant le début du traitement dans la boucle:
2025-12-21 22:18:38.048 Compteur HW: Pushing 'onHeartbeatCallback' on to queue
2025-12-21 22:18:38.098 Compteur HW: Processing 'onHeartbeatCallback' message
2025-12-21 22:18:38.099 Compteur HW: Acquiring GIL for 'onHeartbeatCallback'
2025-12-21 22:18:38.099 Compteur HW: Calling message handler 'onHeartbeat' on 'module' type object.
Dernière modification par Keros le 22 déc. 2025, 20:46, modifié 2 fois.
Raison : Ajout des balises pour les logs. Merci de lire la section Bien utiliser le forum
---
Bruxelles

RPi 3B, Domoticz 2024.7, SSD, dongle Zigbee Sonoff
IPX-800 V3
multiples Sonoff et similaires (Tasmota, ESPeasy), multiples appareils Zigbee
SMA Sunny Boy 3.6
Ksenia Lares 4.0
Compteur digital à la norme DSMR5 - interface ESP32
Répondre