Comment connaitre les états des plugins actifs?

C’est le cas, je n’avais pas mis tout le code :slight_smile:

if ($deamon_info['state'] == 'ok')
        	{
      		$valEtat = $valeurOK;
			// Cas spécial eWeJee avec 2 deamon
          	if ($plugin->getName()=='eWeJee')
    	    	{
              	// Fonction spécifique de @Foulek57
                if ($plugin->deamon_LAN_info() != 'ok')
                	{
	      			$valEtat = $valeurNOK;
                	}
            	}
    		}

Elle est bien dans ton code.

public static function cron()
  {
    // Check the LAN deamon
    $deamon_LAN_info = ewejee::deamon_LAN_info();
    $deamon_MDNS_info = ewejee::deamon_MDNS_info();
    $deamon_POW_info = ewejee::deamon_POW_info();
    if ($deamon_LAN_info['state'] == 'ok') {
      if ($deamon_MDNS_info['state'] != 'ok') {
        ewejee::deamon_MDNS_start();

reste à caster en ewejee j’imagine. J’ai fait plusieurs tentatives sans success. Je suis bloqué !! tant pis pour ce soir…

@Foulek57
Ton plugin est payant donc pas de git… OK
Mais le code est visible sur le RPI ? Y a-t-il des protections?

Pourquoi ne pas renvoyer deux lignes dans l’array de getdaemon_info (la fonction du core, plus certain du nom); cela ne permet pas d’afficher l’info dans le cadre géré par le core ?

Hello,

Fais un log avec la fonction getName voir s’il sort en ewejee ou eWeJee.

Ou tu peux passer la fonction dans la fonction PHP strtolower

Le code est visible dans plugins/ewejee/

Mais sur la prochaine bêta je vais l’associer au demon_info()

La doc est là :
https://doc.jeedom.com/dev/phpdoc/4.1/
Mais sans explications.

C’est toujours un débat la documentation…
Faut documenter mais quand on change le code on oublie la doc et du coup la doc est fausse ce qui est pire que pas de doc à mon avis.

La seule documentation qui ne ment pas c’est le code directement :wink:

Pas besoin de cast en Php, au runtime si la fonction existe elle sera appelée sinon il y aura une erreur.
C’est pas dingue mais c’est le problème des languages pas compilé.

Hi,
Le nom est bon sinon je ne rentrerai pas dans le test. J’ai vérifié avec un log en double ceinture…

OK merci… de la lecture.

C’est pas totallement faux :slight_smile:

Je m’en doutais. Le debug au log quelle poisse c’est très long. Une précompil/compil élimine un tas d’erreur. Il faudrait lié VS Code qui fait une partie du boulot mais je vois pas comment?

Voici mon dernier code :

$valEtat='';
foreach (plugin::listPlugin(true) as $plugin)
	{
  	if ($plugin->getHasOwnDeamon())// && config::byKey('deamonAutoMode', $plugin->getId(), 1) == 1)
    	{
    	$deamon_info = $plugin->deamon_info();
    	if ($deamon_info['state'] == 'ok')
        	{
      		$valEtat = $valeurOK;
			// Cas spécial eWeJee avec 2 deamon
          	if ($plugin->getName()=='eWeJee')
    	    	{
                $scenario->setLog($plugin->getName());
                $scenario->setLog($plugin->deamon_LAN_info());
              	// Fonction spécifique de @Foulek57
                if ($plugin->deamon_LAN_info() != 'ok')
                	{
	      			$valEtat = $valeurNOK;
                	}
            	}
    		}
      	else
        	{
      		$valEtat = $valeurNOK;
    		}
        	$message .='|'.$valEtat.$plugin->getName().' ('.$plugin->getId().')';
    	}
	}

Voici le log et je ne comprends pas pourquoi il pointe sur AlexaAPI qui est le 1er plugin du tableau
plugin::listPlugin() :

[2021-01-26 09:25:29][SCENARIO] Début Monitoring des Demons
[2021-01-26 09:25:29][SCENARIO] eWeJee
[2021-01-26 09:25:29][SCENARIO] Deamon :|🆗Alexa - API (alexaapi)|🆗Caméra (camera)Call to undefined method plugin::deamon_LAN_info()

Je ne sais pas du tout si ça va fonctionner, mais essaie ewejee::deamon_LAN_info() a la place de $plugin->deamon_LAN_info()

Ou alors faut il inclure la class du plugin pour accéder aux fonctions propre au plugin dans le code du scénario ?
@Mips tu saurais peut être ?

Pas mieux. Les fonctions statiques existent aussi en PHP.

@Mips VSC sait se connecter en SSH. Ce soft est génialissime (CPU du RPI3 à 80° quand même !!). Sais-tu on est le(s) ‹ code › d’un scénario (Fichier ou db ou??) ?

Pas ewejee::$plugin

Pour le code du scénario, regarde dans la classe scénario.php dans /core/class/PHP/

Portnawak mon code, à faire 4 choses à la fois!!!
Cette fois ça marche :partying_face: :partying_face: Testé avec les 4 conditions 1+1, 0+1, 1+0, 0+0. Voici le code complet :

// On efface la variable message
$message='Dependances : ';
// on ajoute une ligne dans le log
$scenario->setLog('Début Monitoring des Dependance');

$tags = $scenario->getTags();
$valeurOK=$tags['#IconOK#']; // Creer un tag IconOK avec la valeur « 🆗 #127383 » (Ajouter un '&' devant le #) en amont dans le scénario
$valeurNOK=$tags['#IconKO#']; // Creer un tag IconKO avec la valeur « 🆘 #127384 » (Ajouter un '&' devant le #)en amont dans le scénario

// pour chaque plugin activé de votre jeedom
foreach (plugin::listPlugin(true) as $plugin)
	{
  	if ($plugin->getHasDependency())
    	{
    	$dependency_info = $plugin->dependancy_info();
    	if ($dependency_info['state'] == 'ok')
        	{
      		$valEtat = $valeurOK.'  ';
    		}
      	elseif ($dependency_info['state'] == 'in_progress')
        	{
      		$valEtat = 'In prog';
    		}
      	else
        	{
      		$valEtat = $valeurNOK.'  ';
    		}
   		$message .='|'.$valEtat.$plugin->getName().' ('.$plugin->getId().')';
  		}
	}

$message=str_replace("|","\n",$message);
// on selectionne la commande telegram correspondante au destinataire du message
$cmd=cmd::byString('#[Telegram][Telegram][Eric - 911444820]#');
// on envoie le contenu de la variable message via telegram
$cmd->execCmd($options=array('title'=>'Jeedom', 'message'=> "$message"), $cache=0);
// on log la fin de la verification des démons
$scenario->setLog('Fin monitoring des Dependances');
// On efface la variable message
$message='Deamon :';
// on ajoute une ligne dans le log
$scenario->setLog('Début Monitoring des Demons');

$tags = $scenario->getTags();
$valeurOK=$tags['#IconOK#']; // Creer un tag IconOK avec la valeur « 🆗 #127383 » (Ajouter un '&' devant le #) en amont dans le scénario
$valeurNOK=$tags['#IconKO#']; // Creer un tag IconKO avec la valeur « 🆘 #127384 » (Ajouter un '&' devant le #)en amont dans le scénario

$valEtat='';
foreach (plugin::listPlugin(true) as $plugin)
	{
  	if ($plugin->getHasOwnDeamon())// && config::byKey('deamonAutoMode', $plugin->getId(), 1) == 1)
    	{
    	$deamon_info = $plugin->deamon_info();
    	if ($deamon_info['state'] == 'ok')
        	{
      		$valEtat = $valeurOK;
			// Cas spécial eWeJee avec 2 deamon
          	if ($plugin->getName()=='eWeJee')
    	    	{
                // Recup de public static function cron() de @Foulek57
              	$deamon_LAN_info = ewejee::deamon_LAN_info();
              	// Fonction spécifique de @Foulek57
                if ($deamon_LAN_info['state'] != 'ok')
                	{
	      			$valEtat = $valeurNOK;
                	}
            	}
    		}
      	else
        	{
      		$valEtat = $valeurNOK;
    		}
        	$message .='|'.$valEtat.$plugin->getName().' ('.$plugin->getId().')';
    	}
	}

$message=str_replace("|","\n",$message);
// on selectionne la commande telegram correspondante au destinataire du message
$cmd=cmd::byString('#[Telegram][Telegram][Eric - 911444820]#');
// on envoie le contenu de la variable message via telegram
$cmd->execCmd($options=array('title'=>'Jeedom', 'message'=> "$message"), $cache=0);

// on log la fin de la verification des démons
$scenario->setLog('Fin monitoring des démons');

Petit détail, quand j’arrête le LAN la fenêtre de config se ferme toute seule, ce n’est pas le cas pour le WAN

@Foulek57
Je laisse ce fil ouvert, on modifiera le code lorsque ta beta sera disponible…

OK mais je parlais de mon code dans un bloc code à l’intérieur de mon scenario ?

C’est en db

OK VCS live en SSH c’est mort :slight_smile:
Merci
Pour le coup le heartbeat est Deprecated pour moi.

On peut simplifier :

$valeurOK='&'.'#127383'; 
$valeurNOK='&'.'#127384'; 
1 « J'aime »