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