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