Redémarrage automatique du plugin en cas de messages corrompus?

Bonjour,

Dommage que Jeedom ne gère pas la translation port/périphérique pour que les plugins puissent spécifier un périphérique à la place de son port et de cette façon il n’y aurait plus de problème d’inversion de port (USB ou autre) ainsi qu’une gestion de changement de port à chaud.

Voici mon script actuel qui utilise un capteur de T° qui a une batterie faible et qui me pourri le 433mhz avec des trames invalides donc une fois que je l’aurais bien testé je l’adapterai à mon problème d’origine (désolé pour les adeptes du smartphone, il faudra regarder l’image en taille réelle pour le log).

Par contre je n’ai pas encore testé le redémarrage de plugin rfxcom.

//$scenario->setLog("test");

// Initialisation des variables
$redemarragePlugin = false;
$pluginId = 'rfxcom';
$logRfxcomChemin = log::getPathToLog('rfxcom');

// Affichage des informations sur le log RFXcom
$logRfxcomTaille = filesize($logRfxcomChemin);
$scenario->setLog("Chemin du log RFXcom : " . $logRfxcomChemin);
$scenario->setLog("Taille du log : " . $logRfxcomTaille." octets");

// Recherche du texte dans le log avec compteur d'occurences
$logRfxcomContenuArray = file($logRfxcomChemin);
$compteurTexteTrouve = substr_count(implode(',', $logRfxcomContenuArray), 'No decoder found');
$scenario->setLog("Compteur de 'No decoder found' : " . $compteurTexteTrouve);

// Log du nombre d'occurences
if ($compteurTexteTrouve > 1320) {
  $scenario->setLog("  compteurTexteTrouve > 1320");
  //$redemarragePlugin = true;
}
else {
  $scenario->setLog("  compteurTexteTrouve <= 1320");
  //$redemarragePlugin = false;
}

// Redémarrage du plugin RFXcom si le compteur d'occurences a dépassé le seuil défini
// NOTE : https://doc.jeedom.com/fr_FR/dev/daemon_plugin
if ($redemarragePlugin) {
  $plugin = plugin::byId($pluginId);
  if (is_object($_plugin)) {
    // Redémarrer le daemon du plugin Jeedom
    $scenario->setLog('Redémarrage du plugin ' . $pluginId);
    //$plugin->deamon_stop();
    //$plugin->deamon_start();
    $plugin->deamon_start(true);  // https://jeedom.github.io/documentation/phpdoc/classes/plugin.html  =>  deamon_start(  $_forceRestart = false,   $_auto = false)
    $scenario->setLog('  Statut du plugin : ' . $plugin->deamon_info()['state']);
  }
}
else {
  $scenario->setLog("(Pas de redémarrage du plugin " . $pluginId . " nécessaire)");
}

// Log du délai d'exécution
$executionTime = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
$executionTime = number_format($executionTime, 2);
$scenario->setLog("Temps d'exécution : ".$executionTime." seconde(s)");

Je n’attend aucune réponse concernant ma démarche, par contre si quelqu’un veut faire avancer ce script c’est avec plaisir surtout que j’ai des années d’expérience en client lourd mais avec du php je suis novice, en particulier php avec Jeedom.

Bender