Les commandes des groupes Z2M sont dupliquées

Bien le bonsoir,
J’ai remarqué que les commandes des mes groupes étaient dupliquées depuis un certain moment.

J’utilise ces commandes pour gérer des scènes enregistrées dans Z2M.
Avec des interrupteurs suédois, je fais défiler les scènes en parcourant les commandes du groupe dans un scénario.

require_once dirname(__FILE__) . '/../../data/php/user.function.class.php';
$tags = $scenario->getTags();
$montag = $tags['#nomGroupe#'];
$action = $tags['#Action#'];
$scenario->setLog('action  : ' .$action);

$scenenumber=$scenario->getData($montag); 
$nbScenes = count(eqLogic::byString('#'.$montag.'#')->getCmd());
$scenario->setLog('scene  : ' .$scenenumber);
$scenario->setLog('nb scene  : ' .$nbScenes);
$scenenumber = userFunction::UpgradeScene($scenenumber,$action,$nbScenes);

$scenario->setData($montag,$scenenumber); 
$scenario->setLog('groupe  : ' .$montag);
$scenario->setLog('scene  : ' .$scenenumber);
cmd::byString('#'.$montag.'[Scene '.$scenenumber.']#')->execCmd();
public static function UpgradeScene($scenenumber, $action, $nbScenes){
      	$oldValue = $scenenumber;
      	$limitValue = 0;
		if($action == 'arrow_right_click'){
          
  			$scenenumber = min($nbScenes-1,($scenenumber+1));
		}
		else
		{
          	$limitValue = $nbScenes-1;
  			$scenenumber = max(0,($scenenumber-1));  
		}
      if($scenenumber == $oldValue)
      {
        $scenenumber = $limitValue;
      }
      return $scenenumber;
    }

Comme les commandes dupliquées ralentissent le comportement attendu, je dois donc les supprimer régulièrement sans vraiment savoir comment elles reviennent.

Est-ce que j’aurai coché une case en trop ?

Je reproduis la duplication des groupes ce matin lors de la mise à jour de la nouvelle version de zigbee2mqtt. Il semble y avoir un problème d’unicité. Toutes mes scènes sont dupliquées avec un suffixe de 4 caractères.

J’ai trouvé le code duplicateur, ligne 680, que j’ai commenté pour l’instant :

/*$cmd->setName($cmd->getName().' '.config::genKey(4));
  $cmd->save();*/

La correction a apporter semble se trouver sur la ligne 666 :

$cmd = $eqLogic->getCmd('action', 'scene_recall::' . $scene['id']); 

vers

$cmd = $eqLogic->getCmd('action', 'json::{"scene_recall":' . $scene['id'] . '}');

J’ai le même soucis, merci @Knaki02 pour la solution, est-ce que @Loic tu pourrai vérifier et corriger si c’est possible ?

Bonjour
Je vais bien évidement regarder (j’avais vu le sujet pas besoin de me taguer) mais ça va prendre du temps car la priorité sur les 15 jours à venir est la 4.4. Par contre le répo est ouvert donc n’importe qui peut faire un pr et ça accélérera la correction.

Merci et je comprends la priorité sur la 4.4.

Bonjour,
Pour info ca sera dans la prochaine beta du plugin, une fois que vous aurez validé je pourrais faire la demande de stable

Tout fonctionne bien avec la version beta du plugin.

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