Bonjour,
depuis hier mon plugin ewejee ne fonctionne plus. Le démon s’arrete rapidement après son démarrage. J’ai relancé l’installation des dépendances, redémarré jeedom, vérifié+nettoyé les BdD mais rien y fait. Voici l’erreur dans les logs:
[2026-02-17 08:42:40] ERROR Erreur sur ewejee::deamon_pow() : [MySQL] Error code : 70100 (1927). Connection was killed : SELECT `el`.`id`, `el`.`name`, `el`.`logicalId`, `el`.`generic_type`, `el`.`object_id`, `el`.`eqType_name`, `el`.`isVisible`, `el`.`isEnable`, `el`.`configuration`, `el`.`timeout`, `el`.`category`, `el`.`display`, `el`.`order`, `el`.`comment`, `el`.`tags`
FROM eqLogic el
LEFT JOIN object ob ON el.object_id=ob.id
WHERE eqType_name=:eqType_name ORDER BY ob.name,el.name
Je n’ai pas trouvé d’option pour purger la table historyArch ni définir la date limite donc
j’ai fait un scénario avec un bloc code pour nettoyer historyArch… Ma base de données fait maintenant 230 Mo. voici le script utilisé:
// CONFIGURATION
$max_rows = 100000;
// ------------------------------------------------
$scenario->setLog("Début nettoyage historyArch (garder $max_rows dernières valeurs)");
// 1. Récupérer les ID surchargés
$sql = "SELECT cmd_id, COUNT(*) as total
FROM historyArch
GROUP BY cmd_id
HAVING total > :max_rows";
$results = DB::Prepare($sql, array(':max_rows' => $max_rows), DB::FETCH_TYPE_ALL);
if (count($results) == 0) {
$scenario->setLog("Aucune commande ne dépasse $max_rows lignes.");
} else {
foreach ($results as $row) {
$cmd_id = $row['cmd_id'];
$total = $row['total'];
$scenario->setLog("Traitement ID: $cmd_id ($total lignes)");
// 2. Date de coupure - OFFSET en littéral sécurisé
$offset_safe = (int)$max_rows;
$sql_date = "SELECT datetime FROM historyArch
WHERE cmd_id = :cmd_id
ORDER BY datetime DESC
LIMIT 1 OFFSET $offset_safe";
$cutoff = DB::Prepare($sql_date, array(':cmd_id' => $cmd_id), DB::FETCH_TYPE_ROW);
if ($cutoff && isset($cutoff['datetime'])) {
$limit_date = $cutoff['datetime'];
$scenario->setLog(" -> Date limite: $limit_date");
// 3. Suppression
$sql_delete = "DELETE FROM historyArch
WHERE cmd_id = :cmd_id
AND datetime < :limit_date";
DB::Prepare($sql_delete, array(
':cmd_id' => $cmd_id,
':limit_date' => $limit_date
));
$scenario->setLog(" -> Suppression OK");
} else {
$scenario->setLog(" -> ERREUR: date limite introuvable");
}
usleep(500000); // 0.5s de pause
}
}
$scenario->setLog("Fin du nettoyage.");
Ben disons qu’avec ton script tu vire ce qu’il y a de plus lourd …
Certes ça nettoie mais bon c’est un peu violent et pas super productif.
C’est comme si à l’aéroport tu te rends compte que tu as dépassé le quota maxi de poids de tes bagages et que tu balance la valise la plus lourde.
Est ce que c’était celle qui contenait le plus de trucs utiles ou pas, on sait pas …
Et de plus, si tu ne modifie pas la configuration, tes problèmes réapparaitront avec le temps.
Au final il faut donc :
Voir si toutes les commandes historisées méritent bien de l’être. (il y a peut être des trucs dont tu te fous)
Voir si la purge automatique est bien configurée (tu n’a pas peut être pas envie de savoir quelle était la température dans la salle de bains il y a 8 mois, peut être que jusqu’à la semaine précédente c’était suffisant).
Voir si tu ne peux pas lisser certaines valeurs (genre si t’a un capteur qui te remonte une info par minute, est ce que la moyenne de l’heure est pas suffisante pour ton besoin).
Bref, voila il faut prendre un peu de recul sinon tes problèmes reviendront
Merci de tes conseils. Ce script est effectivement au Karcher mais je n’avais que cette solution dans l’urgence. @jpty m’a orienté sur un post qui m’a permis de faire les réglages adéquates notamment revoir toutes les commandes historisées inutilement.