Modifier manuellement la dernière date de changement de pile sur un nouvel équipement

Hello,

Ce sujet fait référence à l’une des étapes auxquelles je fais face dans ma migration d’Openzwave vers ZWaveJS mais c’est une question plutôt orientée Core Jeedom vu que cette propriété est commune à tous les équipements Jeedom.

Comme on peut le voir ici, j’ai quelques modules qui ont une belle vie sur piles :
image
Ici un module de détection de fumées dans un plugin (Openzwave), et le même module en cours de migration dans un autre plugin (ZWaveJS).

J’ai pris mon courage à demain et fais une batterie de test pour répliquer module par module les config. Mais je coince sur cette date de changement de piles qui depuis l’interface ne peut être éditée.

Vous l’aurez donc compris : j’aimerai répliquer la date de changement de piles de mon ancien module sur un autre.

Si quelqu’un connait un moyen/idée de faire cela, je prends :slight_smile:

Merci d’avance

Bonjour,

Par bloc code, sa doit être possible :

$eqLogic = eqLogic::byId(668); // id à modifier
$newDate = '2022-6-17 6:48:20'; // date à remplacer
if (is_object($eqLogic)){
  $eqLogic->setConfiguration('batterytime', $newDate);
  $eqLogic->save();
}
1 « J'aime »

J’aurais mis

$eqLogic->save(true);

pour éviter les impacts collatéraux éventuels

Top @Phpvarious ! C’est ce qu’il me fallait :slight_smile:

J’ai adapté vos retours pour mon besoin perso.

Si ça peut servir, je remets ici mon adaptation :

/* Ce qui suit permet de copier l'ancienne date d'un module cible dans un autre
 * 
 * Si la variable '$newbatterytime' est remplie, le 'mode forcé' sera activé et le 'OLD_MODULE_ID ne sera pas pris en compte
 * pour aller récupérer la date de changement pile à récupérer dans le module d'origine.
 * Sinon laisser une chaine de caractère vide.
 * 
 * Dans le cadre de ma migration OpenZwave vers Zwave JS,
 * j'ai renommé à la main l'ensemble des noeuds Openzwave en "OZW-[id zwave] [nom du module zwave]" (exemple: OZW-21 Prise télé salon)
 * et j'ai renommé les noeuds ZwaveJS en "[nom du module zwave]" (exemple: Prise télé salon)
 */

$TARGET_MODULE_ID = 46; // à remplir- C'est l'id eqLogic, voir le paramètre 'id' dans l'url du module. Ne pas prendre l'id zwave.
$OLD_MODULE_ID = 21;    // à remplir- C'est l'id eqLogic, voir le paramètre 'id' dans l'url du module. Ne pas prendre l'id zwave.

$newbatterytime = '2019-12-22 17:20:38'; // Si remplie, le 'mode forcé' sera activé.
$target_name = ''; // ne rien mettre- initialisation
$old_name = '';    // ne rien mettre- initialisation

$OLD_eqLogic = eqLogic::byId($OLD_MODULE_ID);
if (is_object($OLD_eqLogic) || strlen($newbatterytime)>0){
  if(strlen($newbatterytime)>0){
    $scenario->setLog('Mode forcé');
  }else{
    $old_name = $OLD_eqLogic->getName();
    $scenario->setLog('Old module name:' . $old_name . ' | BatteryTime:' . $OLD_eqLogic->getConfiguration('batterytime'));
    $newbatterytime = $OLD_eqLogic->getConfiguration('batterytime');
  }

  $TARGET_eqLogic = eqLogic::byId($TARGET_MODULE_ID);
  if (is_object($TARGET_eqLogic)){
    $target_name = $TARGET_eqLogic->getName();
    $scenario->setLog('Target module name:' . $target_name . ' | BatteryTime:' . $TARGET_eqLogic->getConfiguration('batterytime'));

    // -- manip perso - start
    $temp = str_replace('OZW-','',$old_name);
    $temp2 = explode(' ', $temp, 2);
    $old_name = $temp2[1];
    // -- manip perso - end

    if ($old_name == $target_name || strlen($newbatterytime)>0){
      $TARGET_eqLogic->setConfiguration('batterytime', $newbatterytime);
      $TARGET_eqLogic->save(true);

      $TARGET_eqLogic = eqLogic::byId($TARGET_MODULE_ID);  
      $scenario->setLog('-> new BatteryTime changed ! >> Target module name:' . $target_name . ' | BatteryTime:' . $TARGET_eqLogic->getConfiguration('batterytime'));
    }
  }
}

Avant exécution du bloc

Exécution du script :

Résultat :

Bonjour,

Si @kiboost passe par là, il pourrait peut être intégrer cela dans l’outil de remplacement du core.

2 « J'aime »

Oui carrément ! Ca pourrait fort utile pour nos prochaines migrations. :wink:

Bonsoir,

Pour info, l’option est disponible mais désactivé

elle a été désactivé dès sa création :

Kiboost a sans doute une raison… mais j’ai testé en désactivant le commentaire, et le comportement est bien celui attendu.

2 « J'aime »

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