Comportement du daemon un peu spécial à xx:00 et xx:30

@JAG je te sollicite sur les conseils de @mika-nt28

Bonjour,
Je te contacte à propos de ton Plugin

Je suis sur un RPI3 Buster uptodate avec un jeedom uptodate

J’ai un comportement bizarre à t’exposer et aimerais avoir ton avis, avant de faire une exception dans mon script de scénario.
Afin de surveiller l’état des démons des plugins actfs, toutes les 5min, j’exécute ceci :

//Vérification des dépendances et daemon des plugins en fonctionnement
$messageGlobal='Vérification des dépendances et daemon des plugins en fonctionnement|';
$messageGlobal=str_replace("|","\n",$messageGlobal);
$scenario->setLog($messageGlobal);
$b_result=0;

// 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')
        	{
      		// c'est pas OK
            $b_result=1;
			$message='Dependances : 🆘 '.$plugin->getName().' ('.$plugin->getId().')  |';
 			$message=str_replace("|","\n",$message);
            $messageGlobal.=$message;
            $scenario->setLog($message);
    		}
  		}
   	if ($plugin->getHasOwnDeamon())// && config::byKey('deamonAutoMode', $plugin->getId(), 1) == 1)
    	{
    	$deamon_info = $plugin->deamon_info();
    	if ($deamon_info['state'] != 'ok')
        	{
            $b_result=1;
			$message='Daemon : 🆘 '.$plugin->getName().' ('.$plugin->getId().')  |';
 			$message=str_replace("|","\n",$message);
            $messageGlobal.=$message;
            $scenario->setLog($message);
    		}
    	}
	}

if ($b_result)
	{
	$messageGlobal=str_replace("|","\n",$messageGlobal);
	$tags['#b_Messerror#']=$messageGlobal;
	$scenario->setTags($tags);
	}
else
	{
	$scenario->setLog("Tout est OK");
	}
$tags['#b_Result#']=$b_result;
$scenario->setTags($tags);

Si le test s’exécute à heure xx:00:xx ou xx:30:xx, je détecte ceci sans raison apparente (Log du scénario):

[2021-02-17 22:00:03][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-02-17 22:00:03][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-02-17 22:00:04][SCENARIO] Evaluation de la condition : [0==0 ET ((2200 <= 0429) OU (2200 >= 0440))] = Vrai
[2021-02-17 22:00:04][SCENARIO] Exécution du sous-élément de type [action] : then
[2021-02-17 22:00:04][SCENARIO] Exécution d'un bloc élément : 274
[2021-02-17 22:00:04][SCENARIO] Exécution d'un bloc élément : 287
[2021-02-17 22:00:04][SCENARIO] Exécution d'un bloc élément : 255
[2021-02-17 22:00:04][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-02-17 22:00:04][SCENARIO] Exécution d'un bloc code
[2021-02-17 22:00:04][SCENARIO] Vérification des dépendances et daemon des plugins en fonctionnement
[2021-02-17 22:00:10][SCENARIO] Daemon : 🆘 Freebox (Freebox_OS)
[2021-02-17 22:00:10][SCENARIO] Exécution d'un bloc élément : 272
[2021-02-17 22:00:10][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-02-17 22:00:10][SCENARIO] Evaluation de la condition : [1] = 1
[2021-02-17 22:00:10][SCENARIO] Exécution du sous-élément de type [action] : then
[2021-02-17 22:00:10][SCENARIO] Affectation de la variable Detectiondanslheure => 1 = 1
[2021-02-17 22:00:10][SCENARIO] Lancement du scénario : Affiche santé Dépendances et Daemon si NOK options : []
[2021-02-17 22:00:11][SCENARIO] Ajout du message suivant dans le centre de message : Détection d‘une erreur de fonctionnement dans un plugin (Eric)
Vérification des dépendances et daemon des plugins en fonctionnement
Daemon : 🆘 Freebox (Freebox_OS)
[2021-02-17 22:00:11][SCENARIO] Suppression des blocs DANS et A programmés du scénario
[2021-02-17 22:00:11][SCENARIO] Exécution d'un bloc élément : 273
[2021-02-17 22:00:11][SCENARIO] Exécution du sous-élément de type [condition] : in
[2021-02-17 22:00:11][SCENARIO] Evaluation de la condition : [180] = 180
[2021-02-17 22:00:11][SCENARIO] Tâche : 273 programmée à : 2021-02-18 01:00:11 (+ 180 min)
[2021-02-17 22:00:11][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-02-17 22:00:11][SCENARIO] Fin correcte du scénario

Hors le centre de message système jeedom, remonte la détection et une erreur Telegram :

Ce scénario détectant une erreur, j’enclenche un second scénario qui fait le point 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
$valeurOK='&'.'#127383'; 
$valeurNOK='&'.'#127384'; 

// 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');

$valeurOK='&'.'#127383'; 
$valeurNOK='&'.'#127384'; 

$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');

Cette fois Télégram est ok et affiche :
image

En dehors de xx:00 et xx:30, je stop le démon de ewejee et zigbee, j’obtiens les messages Télégram cohérents suivant :

J’espère être assez clair. A ta dispo pour tout complément d’info.

=== Message en référence à des sujets/échanges passés ===
=== sans rapport avec les protagonistes de ce sujet ===

Ce sujet est fait dans un esprit communautaire de partage d’info et d’expérience. Il se veut respectueux et bienveillant.

  • Tout ceux qui veulent m’expliquer comment « m’en passer » peuvent passer leur chemin, ce sujet se veut constructif.
  • Tout ceux qui pensent que je blablatte trop peuvent également passer leur chemin.

Si tant est que cette espace soit démocratique et libre, dans l’esprit de l’open source. Si cela déplait aux dieux Jeedom, comme se fut trop souvent le cas de mon point de vu (et pas seulement avec moi) pas de problème, j’irais ailleurs…
La liberté c’est accepter la controverse sinon cela s’appelle une dictature et ce n’est pas ma tasse de thé…

Merci de votre compréhension

=================================

Hello @anon39781406

Si je comprends bien, le démon est NOK mais ton script remonte ok ?

Ou quand le démon est NOK tu as systématiquement l’erreur telegram ?

Salut mon ami,

Pas tout à fait, un peu de blabla…

GENEALOGIE
A L’origine ton plugin ewejee (beta ayant 2 démons d’où le code en commentaire) plantait régulièrement, d’où mon premier scénario de détection d’un daemon down puis un second de présentation si le premier détecte au moins 1 daemon down.

PROCESS
Ce scénario est lancé toutes les 5mn. S’il y a détection, j’arrête la détection pendant 3h et recommence le cycle.

« BUG »
Comme je disais, si le 1er scenario fait une détection, il lance le second (affichage). J’avais parfois un faux positif du premier scénario avec un affichage de daemon tout le monde à OK avec le second et depuis plusieurs jours mais aléatoirement. En y regardant bien, j’avais toujours une détection au changement d’heure xx:00 ou à la xx:30 1/2 heure!!!
J’ai donc ajouté hier de l’info dans le premier scénario afin de savoir qui était détecté comme down pendant un bref moment et c’est Freebox OS l’heureux élu :upside_down_face:.
De plus quand Freebox OS est down, l’envoi de Télégram plante (ce qui explique(rait) d’ailleurs ce phénomène aléatoire de télégram planté depuis plusieurs semaine, j’utilise beaucoup télégram pour surveiller l’activité de Jeedom).

EXEMPLE
Juste pour l’exemple, j’ai arrêté les daemon ewejee et zigbee mais seul Freebox OS est en cause.

J’espère avoir éclairé ta lanterne ?
En synthèse, you are not guilty :wink:

Hello

C’est un faux positif. C’est que tu as perdu le jeton vers la Freebox. Donc dans le code je fais un renouvellement de celui-ci
Ce problème est apparu récemment suite à une mise à jour du firmware de la Freebox

Donc pour moi ce n’est pas un bug mais un comportement normal pour palier au pb de la Freebox

Par contre si le démon a mon avis est nok plus de minutes la tu as un soucis

J espère avoir répondu à ta question

2 « J'aime »

Ton sujet est bien cette partie est elle hors sujet
mais tu peut toujours ouvrir un autre sujet …

Non Aucune explication

1 « J'aime »

J en ai aucune idée

Vu le comportement d’une poignée, inacceptable à mes yeux. Je vais ailleurs.
Je ne vais plus perdre mon temps sur cette communauté, qui n’en ai pas une à mes yeux.
@les modérateurs un peu de courage et laissez au moins ce message ou supprimez le, comme tout ce qui ne vous plait pas, ce sera en parfait ligne avec votre vision de la démocratie.

Hello,

A la lecture ( rapide ) du fil de discussion, je ne sais pas d’où en vient cette conclusion et c’est bien dommage, libre à chacun de choisir :wink:

1 « J'aime »

Bonjour,
Je ne vais pas intervenir plus que ça mais faut juste arrêter avec la rengaine de la démocratie.
C’est juste pour balancer des « grandes phrases »?

Effectivement, ce n’est pas une démocratie ici.
Mais c’est un endroit libre, tant qu’on respecte les conditions générales d’utilisation https://community.jeedom.com/tos

Ce n’est pas une démocratie parce que vous ne nous avez pas choisi (vraiment pas de bol :kissing_heart:), encore moins élu et vous ne pouvez pas nous virer.
Nous avons été désigné par les « administrateurs » (les dirigeants) qui sont les membres de l’équipe jeedom: https://community.jeedom.com/about
Et eux ont plein pouvoirs !

Nous, modérateurs, sommes là pour régler les querelles, « organiser » le débat, le garder centré sur le sujet, clarifier les questions (d’où notre poste Comment nous aider à vous aider - ou Comment poser une bonne question?) et, last but not least, aider en apportant des solutions; cela avec tous les habitués, helpers et j’en passe.

La modération s’est aussi malheureusement de clôturer un débat quand il s’enflamme (oui on bloque une discussion pour que les esprits refroidissent, honteux !) voir même de supprimer des posts inappropriés.

Alors c’est sur que nous ne sommes pas toujours les meilleurs quand il faut être le méchant (c’est pas notre vrai boulot, on déteste ça et on n’a même pas reçu de formation ! :cry:) donc aidez nous: soyez bienveillant, rester factuel, orienté solution et on n’aura plus rien à faire…

… Sinon on continuera à modérer du mieux qu’on peut parce qu’ici ce n’est effectivement pas une démocratie.

8 « J'aime »

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