Erreur de fonctionnement après environ 24h

Bonjour.
Tout d’abord merci beaucoup car ce plugin est vraiment intéressant et apporte une solution pour beaucoup d’utilisateurs belges. Avant, il fallait écrire soi-même un script python.

J’ai installé le plugin ce weekend. Il fonctionne bien pendant quelques heures mais, ensuite, les commandes ne sont plus mises à jour et je vois ces messages d’erreur dans les logs (en mode debug). Note: j’ai mis des X aux données sensibles des logs.

Au niveau santé, tout est vert. Au niveau configuration, le deemon est bien démarré et il n’y a pas de soucis au niveau des dépendances.

Quand je redémarre le démon, cela refonctionne pour quelques heures.

A noter que le module homewizard P1 remonte bien en parallèle les données dans Home Assistant et, dans Jeedom, j’ai toujours aussi mon script python qui l’interroge toutes les minutes (toujours en parallèle) dans Jeedom et qui remonte bien, dans Jeedom, des données alors que le plugin ne le fait plus (je pense donc que le module homewizard P1 n’est pas en erreur).

[06-01-2025 10:12:38] DEBUG  : HWE-P1_X (getData) : Remove from mdns cache...
Erreur communication avec Jeedom en JsonRPC (retry 0/3):  AxiosError: timeout of 20000ms exceeded
at RedirectableRequest.handleRequestTimeout (/var/www/html/plugins/HomeWizard/resources/node_modules/axios/dist/node/axios.cjs:3200:16)
at RedirectableRequest.emit (node:events:518:28)
at Timeout.<anonymous> (/var/www/html/plugins/HomeWizard/resources/node_modules/follow-redirects/index.js:221:12)
at listOnTimeout (node:internal/timers:581:17)
at process.processTimers (node:internal/timers:519:7)
at Axios.request (/var/www/html/plugins/HomeWizard/resources/node_modules/axios/dist/node/axios.cjs:4252:41)
at runNextTicks (node:internal/process/task_queues:60:5)
at listOnTimeout (node:internal/timers:545:9)
at process.processTimers (node:internal/timers:519:7)
at async JeedomAPI.processJeedomSendQueue (/var/www/html/plugins/HomeWizard/resources/utils/jeedom.js:53:32) {
code: 'ECONNABORTED',
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [ 'xhr', 'http', 'fetch' ],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 20000,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function], Blob: [class Blob] },
validateStatus: [Function: validateStatus],
headers: Object [AxiosHeaders] {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json',
'Accept-Encoding': 'gzip, deflate',
'User-Agent': 'axios/1.7.9',
'Content-Length': '1115'
},
method: 'post',
url: 'http://192.X.X.X/core/api/jeeApi.php',
data: '{"jsonrpc":"2.0","id":572,"method":"event","params":{"plugin":"HomeWizard","apikey":"XXXX","data":{"eventType":"updateValue","id":"HWE-P1_XXXX","value":{"wifi_ssid":"XXXX","wifi_strength":100,"smr_version":50,"meter_model":"Fluvius XXXX","unique_id":"XXXX","active_tariff":1,"total_power_import_kwh":23649.041,"total_power_import_t1_kwh":11844.742,"total_power_import_t2_kwh":11804.299,"total_power_export_kwh":14014.732,"total_power_export_t1_kwh":9707.538,"total_power_export_t2_kwh":4307.194,"active_power_w":1443,"active_power_l1_w":398,"active_power_l2_w":0,"active_power_l3_w":1044,"active_voltage_l1_v":230.9,"active_voltage_l2_v":0,"active_voltage_l3_v":230.9,"active_current_a":12.92,"active_current_l1_a":3.18,"active_current_l2_a":4.69,"active_current_l3_a":5.05,"active_power_average_w":1878,"montly_power_peak_w":4653,"montly_power_peak_timestamp":250102204500,"external":[]},"type":"event","apikey":"XXXX","plugin":"HomeWizard"}}}'
},
request: <ref *1> Writable {
_events: {
close: undefined,
error: [Function: handleRequestError],
prefinish: undefined,
finish: undefined,
drain: undefined,
response: [Function: handleResponse],
socket: [Array],
timeout: undefined,
abort: undefined
},
_writableState: WritableState {
highWaterMark: 16384,
length: 0,
corked: 0,
onwrite: [Function: bound onwrite],
writelen: 0,
bufferedIndex: 0,
pendingcb: 0,
[Symbol(kState)]: 17580812,
[Symbol(kBufferedValue)]: null
},
_maxListeners: undefined,
_options: {
maxRedirects: 21,
maxBodyLength: Infinity,
protocol: 'http:',
path: '/core/api/jeeApi.php',
method: 'POST',
headers: [Object: null prototype],
agents: [Object],
auth: undefined,
family: undefined,
beforeRedirect: [Function: dispatchBeforeRedirect],
beforeRedirects: [Object],
hostname: '192.X.X.X,
port: '',
agent: undefined,
nativeProtocols: [Object],
pathname: '/core/api/jeeApi.php'
},
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 1115,
_requestBodyBuffers: [ [Object] ],
_eventsCount: 3,
_onNativeResponse: [Function (anonymous)],
_currentRequest: ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: false,
chunkedEncoding: false,
shouldKeepAlive: true,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: '1115',
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: false,
socket: [Socket],
_header: 'POST /core/api/jeeApi.php HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Content-Type: application/json\r\n' +
'Accept-Encoding: gzip, deflate\r\n' +
'User-Agent: axios/1.7.9\r\n' +
'Content-Length: 1115\r\n' +
'Host: 192.X.X.X\r\n' +
'Connection: keep-alive\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: [Agent],
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/core/api/jeeApi.php',
_ended: false,
res: null,
aborted: false,
timeoutCb: [Function: emitRequestTimeout],
upgradeOrConnect: false,
parser: [HTTPParser],
maxHeadersCount: null,
reusedSocket: true,
host: '192.X.X.X',
protocol: 'http:',
_redirectable: [Circular *1],
[Symbol(shapeMode)]: false,
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype],
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
_currentUrl: 'http://192.X.X.X/core/api/jeeApi.php',
_timeout: null,
[Symbol(shapeMode)]: true,
[Symbol(kCapture)]: false
}
}
[
...
[06-01-2025 10:35:43] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...
[06-01-2025 10:35:43] ERROR  : HWE-P1_5c2faf10b9a8 (getData) : SocketError: other side closed
[06-01-2025 10:35:43] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...
[06-01-2025 10:35:43] ERROR  : HWE-P1_5c2faf10b9a8 (getData) : SocketError: other side closed
[06-01-2025 10:35:43] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...
[06-01-2025 10:35:43] ERROR  : HWE-P1_5c2faf10b9a8 (getData) : SocketError: other side closed
[06-01-2025 10:35:43] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...
...
[06-01-2025 10:39:45] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...
[06-01-2025 10:39:45] ERROR  : HWE-P1_5c2faf10b9a8 (getData) : TypeError: Cannot read properties of undefined (reading 'mdns')
[06-01-2025 10:39:45] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...
[06-01-2025 10:39:45] ERROR  : HWE-P1_5c2faf10b9a8 (getData) : TypeError: Cannot read properties of undefined (reading 'mdns')
[06-01-2025 10:39:45] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...
[06-01-2025 10:39:45] ERROR  : HWE-P1_5c2faf10b9a8 (getData) : Error: read ECONNRESET
[06-01-2025 10:39:45] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...
[06-01-2025 10:39:45] ERROR  : HWE-P1_5c2faf10b9a8 (getData) : Error: read ECONNRESET
[06-01-2025 10:39:45] DEBUG  : HWE-P1_5c2faf10b9a8 (getData) : Remove from mdns cache...

Hello, on dirait un problème wifi juste à ce moment là… j’ai jamais aucune coupure avec le miens…

attention car tu fais 3 appels si je compte bien et le constructeur ne conseille pas plus de 1 appel par 500ms… c’est peut-etre ton p1 qui sature

Salut Nebz. Merci pour ta réponse.
J’ai configuré un appel toutes les 30 secondes (30000 ms). Je vois bien des logs toutes les 30 secondes mais c’est vrai que, à chaque période de 30 secondes, il y a trois appels (j’ignore par contre pourquoi car je n’ai qu’un seul équipement dans le plugin).
Je ne pense pas que le problème soit lié au WiFi ou un problème de saturation car le problème persiste pendant des heures (alors que, en parallèle, le scrypt python dans Jeedom remonte les données…et les données remontent dans Home Assistant aussi).
Le problème n’est résolu que lorsque je redémarrre le daemon. Je pourrais bien entendu inclure un redémarrage automatique du daemon dans un scenario (toutes les heures) mais ce n’est pas très élégant comme solution.

En effet.

Mais je n’arrive pas à reproduire ici et j’ai mis un rafraîchissement toutes les 5 secondes

Tente le plugin en beta y’a des petites modifications que je testais justement et que j’hésitais à pousser en stable car pas de plaintes

1 « J'aime »

met à jour en beta à nouveau, je viens d’ajouter une petite ligne pour éviter les 3 appels.

Merci. J’ai installé la version beta et je suis passé à 5 secondes. Je te tiendrai au courant si le problème se reproduit.

encore une petite mise à jour qu’il faut faire aussi :wink:

1 « J'aime »

voilà j’ai tenté de débrancher/rebrancher/couper le wifi sur le P1 et j’ai encore du corriger des choses, donc maintenant c’est beaucoup plus stable, tu peux remettre une dernière fois à jour :slight_smile:

Je gère même les changements d’ip, mais fixe quand même l’ip du P1 dans ton dhcp !

1 « J'aime »

Après 24h, ca tient toujours. On est bien parti pour avoir une solution ! Merci

1 « J'aime »

il faudrait quand même augmenter tes lignes de logs et essayer de sortir le plus de logs possibles pour voir si tu as eu des coupures (car maintenant, même si coupure ça reprend proprement sans doublons sans rien, donc tu le verrais même pas !!! sauf dans les logs). Car si tu as des coupures tu peux avoir un problème wifi ou autre…

Salut Nebz. Hélas, ce matin à 8h50, les données n’ont plus été mises à jour.
Tout est Ok au niveau santé (et les données remontent toujours bien, en parallèle, via le script python).
Au niveau des logs du demon, cela a l’air correct avec les bonnes valeurs récupérées toutes les 30 secondes (comme configuré):

[08-01-2025 17:47:47][DEBUG] : Event reçu de P1 Meter(XXX) de type HWE-P1 : {"wifi_ssid":"XXX","wifi_strength":100,"smr_version":50,"meter_model":"Fluvius XXXX","unique_id":"XXXX","active_tariff":1,"total_power_import_kwh":23710.989,"total_power_import_t1_kwh":11896.32,"total_power_import_t2_kwh":11814.669,"total_power_export_kwh":14015.032,"total_power_export_t1_kwh":9707.838,"total_power_export_t2_kwh":4307.194,"active_power_w":2834,"active_power_l1_w":448,"active_power_l2_w":0,"active_power_l3_w":2386,"active_voltage_l1_v":222.1,"active_voltage_l2_v":0,"active_voltage_l3_v":221.1,"active_current_a":25.41,"active_current_l1_a":2.35,"active_current_l2_a":11.84,"active_current_l3_a":11.22,"active_power_average_w":687,"montly_power_peak_w":4653,"montly_power_peak_timestamp":250102204500,"external":[]}
[08-01-2025 17:48:17][DEBUG] : Event reçu de P1 Meter(XXXX) de type HWE-P1 : {"wifi_ssid":"XXXX","wifi_strength":100,"smr_version":50,"meter_model":"XXX","unique_id":"XXXX","active_tariff":1,"total_power_import_kwh":23711.016,"total_power_import_t1_kwh":11896.347,"total_power_import_t2_kwh":11814.669,"total_power_export_kwh":14015.032,"total_power_export_t1_kwh":9707.838,"total_power_export_t2_kwh":4307.194,"active_power_w":3398,"active_power_l1_w":445,"active_power_l2_w":0,"active_power_l3_w":2953,"active_voltage_l1_v":220.3,"active_voltage_l2_v":0,"active_voltage_l3_v":220.7,"active_current_a":30.22,"active_current_l1_a":2.35,"active_current_l2_a":14.22,"active_current_l3_a":13.65,"active_power_average_w":795,"montly_power_peak_w":4653,"montly_power_peak_timestamp":250102204500,"external":[]}

Mais, dans les logs de HomeWizard, on ne voit rien après 8h50:

[2025-01-08 08:45:05] DEBUG  : Passage dans la fonction event updateValue
[2025-01-08 08:45:06] DEBUG  : {"wifi_ssid":"XXX","wifi_strength":100,"smr_version":50,"meter_model":"Fluvius XXXX","unique_id":"XXXX","active_tariff":1,"total_power_import_kwh":23702.83,"total_power_import_t1_kwh":11888.161,"total_power_import_t2_kwh":11814.669,"total_power_export_kwh":14015.009,"total_power_export_t1_kwh":9707.815,"total_power_export_t2_kwh":4307.194,"active_power_w":766,"active_power_l1_w":27,"active_power_l2_w":0,"active_power_l3_w":739,"active_voltage_l1_v":229.7,"active_voltage_l2_v":0,"active_voltage_l3_v":229.5,"active_current_a":8.86,"active_current_l1_a":0.94,"active_current_l2_a":3.87,"active_current_l3_a":4.05,"active_power_average_w":17,"montly_power_peak_w":4653,"montly_power_peak_timestamp":250102204500,"external":[]}
[2025-01-08 08:49:47] DEBUG  : Passage dans la fonction event updateValue
[2025-01-08 08:49:47] DEBUG  : {"wifi_ssid":"XXXX","wifi_strength":100,"smr_version":50,"meter_model":"Fluvius XXXXX","unique_id":"XXXX","active_tariff":1,"total_power_import_kwh":23702.838,"total_power_import_t1_kwh":11888.169,"total_power_import_t2_kwh":11814.669,"total_power_export_kwh":14015.009,"total_power_export_t1_kwh":9707.815,"total_power_export_t2_kwh":4307.194,"active_power_w":1220,"active_power_l1_w":27,"active_power_l2_w":0,"active_power_l3_w":1193,"active_voltage_l1_v":229.8,"active_voltage_l2_v":0,"active_voltage_l3_v":229,"active_current_a":12.5,"active_current_l1_a":0.94,"active_current_l2_a":5.62,"active_current_l3_a":5.94,"active_power_average_w":47,"montly_power_peak_w":4653,"montly_power_peak_timestamp":250102204500,"external":[]}
[2025-01-08 08:50:04] DEBUG  : Passage dans la fonction event updateValue
[2025-01-08 08:50:04] DEBUG  : {"wifi_ssid":"XXXX","wifi_strength":100,"smr_version":50,"meter_model":"Fluvius XXXX","unique_id":"XXXX","active_tariff":1,"total_power_import_kwh":23702.838,"total_power_import_t1_kwh":11888.169,"total_power_import_t2_kwh":11814.669,"total_power_export_kwh":14015.009,"total_power_export_t1_kwh":9707.815,"total_power_export_t2_kwh":4307.194,"active_power_w":1220,"active_power_l1_w":27,"active_power_l2_w":0,"active_power_l3_w":1193,"active_voltage_l1_v":229.8,"active_voltage_l2_v":0,"active_voltage_l3_v":229,"active_current_a":12.5,"active_current_l1_a":0.94,"active_current_l2_a":5.62,"active_current_l3_a":5.94,"active_power_average_w":47,"montly_power_peak_w":4653,"montly_power_peak_timestamp":250102204500,"external":[]}

Avant 8h50, quand la mise à jour fonctionnait, je me demande si c’est normal d’avoir deux fois le « Passage dans la fonction event updateValue » sur la même seconde (ou à une seconde près). Peut-être qu’un deadlock se serait créé ?

Quand je redémarre le demon, cela repart correctement.

Hello,

Sans message d’erreur ou coupure avérée dans les logs je ne peux pas t’aider. Un trou dans les logs démontre un problème de mémoire sur le système ou bien d’espace disque. Ou même de configuration de jeedom.

Comme tu l’indiques le démon l’envoie bien à jeedom.

Ton premier message d’erreur montrait déjà ça, c’est le démon qui communiquait avec jeedom et jeedom qui refusait. Vérifie ta page santé !

Je ne vois pas de doublon dans le log que tu as envoyé. Il rentre dans la fonction puis affiche ce qu’il reçoit, comportement normal.

Pour info ça fait plus d’un an que je tourne avec ce plugin sans problème.

Et c’est la même fonction d’envoi à jeedom que j’utilise dans tous les plugins sans aucun problème signalé de deadlock ou de problème de connexion abandonnée par jeedom sans qu’il y ait un problème sur l’installation (cpu? Mémoire ? Disque? Réseau?). Tu peux rechercher « ECONNABORTED » ici tu verras.

Ce qui est très gênant, en soi, c’est que le plugin s’arrête de fonctionner sans aucunes notifications. Au niveau santé, tout est vert. Au niveau du demon, il tourne toujours. Au niveau des logs de demon, on voit qu’il continue de récupérer les bonnes données toutes les 30 secondes. Mais, pour une raison qu’on ignore, il s’est arrêté de mettre à jour les données (les commandes restant bloquées avec les valeurs à l’heure où s’est posé le problème). Et on ne voit aucune erreur dans le log général, ce dernier n’affichant plus aucunes lignes après l’heure d’erreur.
Je ne pense pas qu’il y aie un problème d’installation (tout est aussi en vert, la charge est correct,…) mais, quand bien même il y en aurait une, ne faudrait-il pas qu’elle soit indiquée dans les logs et ne faudrait-il pas alors que le demon s’arrête (ce qui permettrait, via la configuration, qu’il redémarre automatiquement) ?
On voit quand même, avec les logs que j’ai fourni, que quelque chose se bloque au niveau du plugin. Ce n’est pas non plus un problème ponctuel : c’est resté bloqué comme cela plusieurs heures et ce n’est qu’après avoir redémarré le demon que cela s’est remis à fonctionner. Ce n’est pas non plus un problème du HomeWizard puisque, en parallèle, un script python remonte les données dans un virtuel et cela a continué à fonctionner.
Je suis bien content que cela fonctionne chez toi depuis un an mais ce n’est pas le cas chez moi et je ne pense pas que je serai le seul dans le cas quand le plugin sera de plus en plus installé.
Après j’ai toujours mon script qui tourne donc je peux me passer de ce plugin. C’est juste que je le trouvais sympa et que je préfère un plugin géré par un pro que mon script python.

fournissez la page santé de jeedom au moins… car je vous ai demandé les logs complets avec augmentation de ligne et je n’ai toujours rien reçu… fournissez aussi le log http_error

La cle api du plugin ? Comment est-elle configurée ? Change-t-elle quand plus rien ne fonctionne ?

Vous n’auriez pas un reste de ça ?

Bonjour.

Je pense que ce que vous expliquiez est en effet ce qu’il se produit. A un moment donné, de ce que je comprend, Jeedom n’est pas capable de traiter un message. Voici ce que je trouve dans les log du plugin jmqtt. Il n’y a aucune autre erreur dans Jeedom (tous les autres logs, que ce soit api ou http, sont verts).


Même si je ne vois pas d’erreur dans les logs du plugin homewizard, c’est à ce heure là qu’il commence à ne plus mettre à jour les données et j’imagine donc que c’est la même cause.

Je remarque le plugin jmqtt se remet à fonctionner quelques minutes après l’erreur. Je ne constate aucuns soucis sur les autres plugins (qui ne sont donc soit pas impactés soit ils arrivent à redémarrer après ce genre de problème).

J’ai effacé tous les logs et j’ai redémarrer le demon du plugin HomeWizard. C’est donc reparti. J’imagine que le problème va se reproduire dans quelques jours. Je surveille donc afin de vérifier que c’est bien là que se pose le problème sur mon installation et je peux, si besoin, fournir plus d’informations à ce moment là.

Le problème n’est donc pas sur le plugin homewizard. Par contre, il y aurait peut-être moyen de faire en sorte qu’il puisse, comme jmqtt, ne pas se bloquer lorsqu’il rencontre le problème ?

Bonjour,

Non, à partir du moment où d’autres plugins ont le même problème, c’est à vous à résoudre votre problème sur votre système. Je ne peux reproduire votre problème donc je ne peux faire ce que vous me demandez.

(Pour info il y a déjà un système pour détecter les problèmes de réponse de jeedom il réessaie 3x après quelques secondes et il n’y est pas arrivé … donc probablement que le problème s’étend plus loin… un système en problématique de mémoire est instable et imprévisible…)

Je clôture la demande ici, comme signalé depuis le début vous avez un problème sur votre système.

Oui pas de problème pour clôturer le sujet. Je vais continuer avec le script python qui fonctionne à merveille depuis des années.
Même si, je vous l’accorde, il y a un problème « Jeedom » durant quelques minutes, les autres plugins le gère tellement bien que je ne l’avais jamais remarqué et je vais donc continuer comme cela puisque je ne suis en rien gêné par l’état actuel de mon Jeedom.

1 « J'aime »