Plugin Energy et commandes orphelines

Bonjour,
Quand je vais dans commandes orphelines, je trouve concernant le plugin Energy de nombreuses commandes :

Plugin Energie	Energy [Etage][Chambres]	#18822#	Action
Plugin Energie	Energy [Etage][Chambres]	#18822#	Action
Plugin Energie	Energy [Salon][TV]	#14173#	Action
Plugin Energie	Energy [Salon][TV]	#14172#	Action
Plugin Energie	Energy [Salon][TV]	#14173#	Action
Plugin Energie	Energy [Salon][TV]	#14172#	Action
Plugin Energie	Energy [Salon][TV]	#14173#	Action
Plugin Energie	Energy [Salon][TV]	#14172#	Action

Ces commandes ont été orphelines mais elles ont été remplacées par de nouvelles qui ne le sont pas. Mais il y a toujours un 30aine de commandes orphelines pour ce plugin.

J’ai le même souci, je n’arrive pas à trouver d’où viennent ces commandes orphelines sur un de mes équipement du plugin Energie.
J’ai dupliqué l’équipement en question et de nouvelles commandes orphelines apparaissent.
J’ai recréé un équipement identique et il n’y a pas de nouvelle commande orpheline…

j’ajoute le tag : bug

Pour résumer sur ce sujet sans avoir tout lire :

Les commandes orphelines sont dans la configuration en base de données.

SELECT configuration FROM jeedom.eqLogic
where eqType_name = 'energy'

Dans mon cas c’était toutes les valeurs après la valeur updatetime.

// Exemple de valeur en ano chez moi
{"createtime":"2017-04-30 13:35:37","visiblePower":"1","visibleCost":"1","visibleConsumptionTotal":"1","type":"electricity","totalCounter":"0","visibleConsumptionOther":"0","visibleConsumptionLight":"0","visibleConsumptionAutomatism":"0","visibleConsumptionElectrical":"0","visibleConsumptionHeating":"0","visibleConsumptionMultimedia":"0","confEnergy":[{"category":"multimedia","power":"#2337#","consumption":"#2338#"}],"costEnergy":[],"updatetime":"2021-01-27 10:07:29","lastChangeTime#1875#":1566419406,"lastValue#1875#":0,"lastChangeTime#1895#":1509817505,"lastValue#1895#":3,"lastChangeTime#1884#":1509042605,"lastValue#1884#":6,"previous#2337##2338#":18321,"sendToHomebridge":"0"}

// Après modif manuel, je n'ai plus de commande orpheline
{"createtime":"2017-04-30 13:35:37","visiblePower":"1","visibleCost":"1","visibleConsumptionTotal":"1","type":"electricity","totalCounter":"0","visibleConsumptionOther":"0","visibleConsumptionLight":"0","visibleConsumptionAutomatism":"0","visibleConsumptionElectrical":"0","visibleConsumptionHeating":"0","visibleConsumptionMultimedia":"0","confEnergy":[{"category":"multimedia","power":"#2337#","consumption":"#2338#"}],"costEnergy":[],"updatetime":"2021-01-27 10:07:29"}

J’espère qu’il y aura un fix pour nettoyer les configs qui ne sont plus utilisées. Le faire manuellement n’est jamais sans risque.

Salut, j’ai le même problème, avec quoi vous accéder à la base de donnée pour pouvoir faire la modification manuellement? Avec la requête j’arrive à trouver les commandes fautives (via configuration->outils système->administration Base de données) Mais impossible de modifier via cet outils.
Merci pour le coup de main.

C’est au développeur du plugin de faire ce travail.

Bonjour,

Des nouvelles de ce bug et de sa correction SVP?

Même constat chez moi concernant ces commandes orphelines.

Jeedom 4.1.24
plugin energy : 29/06/2020

merci d’avance.

Yann

J’ai également le soucis et je pense que @Heliospeed a vu juste dans son analyse.
Je vais faire la modif manuelle pour avoir un système « clean » mais il faudrait voir si le dev a un moment pour revoir ce bug.

Jeedom 4.1.25
Plugin 2020-06-30 01:05:49

Bonjour à tous,

Désolé pour le déterrage, je suis face au même problème.
La cause du problème vient du fait que des IDs de commandes sont présents dans des clés de config des équipements du plugin Energie.
Lors du remplacement des IDs par le core, il n’y a pas de suppression de l’ancienne clé, car il ne doit pas être prévu qu’une clé de config puisse contenir un device ID (mais une valeur de config oui).

Par exemple #42# rempalce #17# :

  • la clé lastChangeTime#42# est bien écrite dans la conf,
  • mais la clé lastChangeTime#17# n’est pas supprimée.

C’est peut être pas très optimisé, mais voici le code pour nettoyer dynamiquement la base :

// pour tous les équipements du plugin Energie
foreach(eqLogic::byType("energy") as $e) {
  // récup toutes les IDs de commandes effectivement utilisées par l'équipement
  $used = json_encode($e->getConfiguration('confEnergy'), JSON_UNESCAPED_UNICODE);
  preg_match_all("/#([0-9]*)#/", $used, $umatches);
  // récup tous les IDs présents dans la config
  $fullconf = $e->getConfiguration();
  preg_match_all("/#([0-9]*)#/", json_encode($fullconf, JSON_UNESCAPED_UNICODE), $amatches);
  // ne garde que les IDs innutilisé par l'équipement
  $diff = array_diff(array_unique($amatches[0]), array_unique($umatches[0]));
  // parcours toutes les clés de la config
  foreach($fullconf as $key=>$val) {
    foreach($diff as $k=>$v) {
      // si un ID innutilisé est présent dans le nom de la clé de config
      if (strstr($key, $v) !== false) {
        $scenario->setLog($e->getHumanName().' removing config key:'.$key);
        // on supprime la clé de config
        $e->setConfiguration($key, null);
        continue 2;
      }
    }
  }
  // on sauvegarde la conf de l'équipement
  $e->save();
}

Il suffit de le lancer dans un bloc code d’un scenario (une seule fois).
Les logs de sortie diront ce qui a été supprimé :

------------------------------------
[2021-10-17 13:08:40][SCENARIO] Start : Scenario lance manuellement.
[2021-10-17 13:08:40][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-10-17 13:08:40][SCENARIO] Exécution d'un bloc code
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:previous#4302##4311#
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:lastChangeTime#4302##4311#
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:lastValue#4302##4311#
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:previous#7492##4311#
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:lastChangeTime#7492##4311#
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:lastValue#7492##4311#
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:previous#4302##7493#
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:lastChangeTime#4302##7493#
[2021-10-17 13:08:40][SCENARIO] [Appartement][Energie] removing config key:lastValue#4302##7493#
[2021-10-17 13:08:40][SCENARIO] [Atelier][Energie] removing config key:lastChangeTime#3161#
[2021-10-17 13:08:40][SCENARIO] [Atelier][Energie] removing config key:lastValue#3161#
[2021-10-17 13:08:40][SCENARIO] [Atelier][Energie] removing config key:lastChangeTime#3580#
[2021-10-17 13:08:40][SCENARIO] [Atelier][Energie] removing config key:lastValue#3580#
[2021-10-17 13:08:40][SCENARIO] [Atelier][Energie] removing config key:lastChangeTime#3287#
[2021-10-17 13:08:40][SCENARIO] [Atelier][Energie] removing config key:lastValue#3287#
[2021-10-17 13:08:40][SCENARIO] [Atelier][Energie] removing config key:lastChangeTime#8060#
[2021-10-17 13:08:40][SCENARIO] [Atelier][Energie] removing config key:lastValue#8060#
[2021-10-17 13:08:40][SCENARIO] [Bureau][Energie] removing config key:lastChangeTime#3161#
[2021-10-17 13:08:40][SCENARIO] [Bureau][Energie] removing config key:lastValue#3161#
[2021-10-17 13:08:40][SCENARIO] [Chambre][Energie] removing config key:lastChangeTime#3187#
[2021-10-17 13:08:40][SCENARIO] [Chambre][Energie] removing config key:lastValue#3187#
[...]
[2021-10-17 13:08:41][SCENARIO] Fin correcte du scénario
------------------------------------

Bonne fin de weekend,
Bad

2 « J'aime »

Merci pour ce morceau de code.
Cela a bien nettoyé mes équipements Energy orphelines.

Merci pour ce morceau de code, je viens de le tester suite à le suppression du plugin zwave.

1 « J'aime »

Bonjour, savez-vous si la suppression du plugin fait bien le ménage dans la base ? (il a été passé obsolète récemment sur le market apparemment)