Outil remplacer et commandes utilisées dans le plugin energie

Bonsoir,

J’ai utilisé l’outil remplacer pour effectuer ma migration zwavejs.
A part quelque petits bugs, j’avais l’impression que tout s’était bien passé, jusqu’à ce que je supprime mes anciens équipements openzwave.
J’ai pleins de commandes orphelines qui correspondent à mes commandes de consommation et de puissance d’équipements openzwave utilisés dans le plugin energie.
Le soucis c’est que les commandes ont bien été remplacées par les nouvelles. Mais elles sont encore référencées dans la configuration des équipements energy et je n’ai aucun moyen de les modifier…

Bon, sans réaction de qui que ce soit, j’ai créé un scénario qui fait le job à la place de l’outil remplacer.
Je le donne, mais sans aucune garantie.

A mettre dans un bloc code d’un scénario :

$equipements = eqLogic::byType('energy');
foreach ($equipements as $eq) {
    $configuration = $eq->getConfiguration();
    //previous / lastValue / lastChangeTime
    foreach ($configuration as $key => $value) {
        $pattern  = "/#[0-9]+#/";
        $matches = array();
        if (preg_match_all($pattern, $key, $matches, PREG_SET_ORDER)) {
            $removeConf = false;
            $cmdRemoved = array();
          	foreach ($matches as $cmdIds) {
              	$cmdId = $cmdIds[0];
				$cmd = cmd::byId(trim(str_replace('#', '', $cmdId)));
				if (!is_object($cmd)) {
                    $removeConf = true;
                    $cmdRemoved[] = $cmdId;
				}
            }
            if ($removeConf) {
				$scenario->setLog("Suppression de la configuration $key de l'equipement " . $eq->getHumanName() . " car elle pointe vers au moins une commande qui n'existe plus (" . implode(' / ', $cmdRemoved) . ").");
                $eq->setConfiguration($key, null);
                $eq->save();
            }
        }
    }
}

L’outil remplacer ne peut pas connaitre toutes les configurations de tous les plugins … Il ne gère pas les plugins.

J’avais émis l’idée d’appeler une fonction du plugin pour çà mais il faudrait que chaque plugin/dev fasse sa fonction replace() et je n’ai pas été plus loin.

Je pense malgré tout, que pour les plugins officiels à minima, le remplacement devrait être géré…

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.