Palliatif pb au redemarrage de Jeedom

Bonjour à tous,

J’utilise depuis quelques temps (1 an au moins) le plugin-vlx2mqtt. C’ets un plugin qui fonctionne très bien à une exception …le docker ne semble pas redemarrer ou redémarre dans un etat non opérationnel (j’ai aussi constaté d’autres cas ou le docker passe en restarting, mais sans pouvoir contextualisé)
Seule solution reinstaller le docker pour faire repartir le plugin.
Sur ce constat, j’ai donc fait un scenario qui reinstalle automatiquement le docker lorsque son status n’est pas correct.

Voilà le bloc code :

Bloc code
// version bloc code
$version = '25/07/2023 18:00' ;
$scenario->setLog('┌──────────── Logs bloc code - version du '.$version);

// Variable 
$restartKlf = 1 ;
$cmdKlfOn = cmd::byString('#[Chaudière][Prise KLF200][On]#');
$cmdKlfOff = cmd::byString('#[Chaudière][Prise KLF200][Off]#');
$cmdKlfEtat = cmd::byString('#[Chaudière][Prise KLF200][Etat]#');
if ( $restartKlf ) {
  
  // Arret de la passerelle KLF200
  if ( $cmdKlfEtat->execCmd() == 1 ) {
    $cmdKlfOff->execCmd() ;
    sleep(5) ;
    if ( $cmdKlfEtat->execCmd() == 0 ) $scenario->setLog('| Passerelle KLF200 arretée');
    else $scenario->setLog('| ERREUR Arret KLF200');
  }
  else $scenario->setLog('| ERREUR passerelle KLF200 déjà arretée');
  
  // redemarrage de la passerelle KLF200
  if ( $cmdKlfEtat->execCmd() == 0 ) {
    $cmdKlfOn->execCmd() ;
    sleep(10) ;
    if ( $cmdKlfEtat->execCmd() == 1 ) $scenario->setLog('| Passerelle KLF200 demarrée');
    else $scenario->setLog('| ERREUR Démarrage KLF200');
  }
  else $scenario->setLog('| ERREUR passerelle KLF200 déjà démarrée');
}
  
  
//initialisation du docker
$docker = eqLogic::byLogicalId('1::vlx2mqtt', 'docker2');

// mise à jour du fichier docker_compose.yaml
$compose = str_replace('#jeedom_path#', realpath(__DIR__ . '/../../'), file_get_contents(__DIR__ . '/../../plugins/vlx2mqtt/resources/docker_compose.yaml'));


$scenario->setLog('| Docker vlx2mqtt à l\'etat restarting');

// arret du docker
try {
    $docker->stopDocker();
    $scenario->setLog('| Docker vlx2mqtt arrêté');
} catch (\Throwable $th) {
    $scenario->setLog('| ERREUR arret docker vlx2mqtt');
}

$docker->setLogicalId('1::vlx2mqtt');
$docker->setName('Velux MQTT');
$docker->setIsEnable(1);
$docker->setEqType_name('docker2');
$docker->setConfiguration('name', 'vlx2mqtt');
$docker->setConfiguration('docker_number', 1);
$docker->setConfiguration('create::mode', 'jeedom_compose');
$docker->setConfiguration('create::compose', $compose);
$docker->save();

// Suppression du docker
try {
    $docker->rm();
    sleep(5) ;
    $scenario->setLog('| Docker supprimé');
} catch (\Throwable $th) {
    $scenario->setLog('| ERREUR suppression docker');
}

// recreation du docker
$docker->create();
$scenario->setLog('| Docker vlx2mqtt recréé');
$scenario->setLog('└───────────────────────────');

En paramètre, si vous souhaitez redémarrer le KLF200 en même temps (prise connecté chez moi, il suffit de mettre à 1 la variable $restartKlf et renseigner les commandes on/off et état nécessaires.

Le scenario est declenché sur une action sur valeur ‹ restarting › pendant + de 5min de la commande statut du docker vlx2mqtt

En espérant que ca puisse aider

Norbert

Hello,

Un grand merci à toi pour le partage !

J’avais give up ce plugin pour la raison évoquée dans ton thread.

Plus de soucis chez toi du coup?

1 « J'aime »

Non, plus depuis que j’ai mis en place ceci … bon, t’as toujours 5min d’indispo quand le docker plante (parceque je lance le scenario au bout de 5min en status restarting), mais comme ce sont des volets, peu de chance que ca tombe au moment ou tu ouvres et ou tu fermes

Bon, je l’ai testé tout seul … donc si tu as des retours, je suis aussi preneur

Hello,

J’ai mis en place samedi, pour l’instant ca semble jouer de mon coté.
J’ai du coup remplacé mon devmel par le klf200 qui prenait la poussière.
Wait and see.

1 « J'aime »