Ayant plusieurs jeedoms en exploitation, j’ai réalisé un superviseur également avec jeedom me permettant de visualiser rapidement leur état de santé et en particulier si leur liaison avec l’internet était opérationnelle. Pour cela, j’ai réalisé le dispositif « ping – pong » suivant :
- Le superviseur contient un virtuel binaire « Test Link xx » (état + commandes ON et OFF) par jeedom à surveiller.
- Ce virtuel « Test Link xx » est « copié » du superviseur (jeedom source) vers chaque jeedom cible grâce à Jeelink.
- 4 fois par heure à heure fixe mais à raison d’une seule jeedom à la fois, un scénario du superviseur exécute la commande ON sur ce virtuel. C’est le ping !
- La jeedom cible dispose d’un scénario qui est réveillé par tout changement de l’état du virtuel « Test Link xx ». Si le nouvel état est un 1, le scénario effectue une remise à zéro de celui-ci une minute plus tard (instruction « dans 1 minute… ») par une commande OFF de ce même virtuel. C’est le pong !
- 15 minutes après la commande ON, le scénario du superviseur s’assure que l’état du virtuel est bien à 0 avant de le remettre à 1 pour repartir dans un nouveau cycle. Si la jeedom cible n’a pas remis « Test Link xx » à 0 suite à un dysfonctionnement de celle-ci ou de la liaison internet, un compteur d’erreur est incrémenté par le superviseur et après plusieurs occurrences consécutives, une alarme « Liaison Jeedom xx interrompue » m’est envoyée grâce au plugin Telegram.
Globalement, ce dispositif fonctionne bien et ainsi 15 jeedoms cibles sont surveillées en permanence à distance. Le dispositif est certes lent mais bien suffisant pour mes besoins. J’ai toutefois constaté que de temps en temps, un « ping-pong » n’aboutit pas (voir chronogrammes). J’ai analysé ce petit problème en détail en pensant que celui-ci était dû à la qualité de certaines de ces liaisons internet, en particulier celles utilisant le réseau mobile. Or, il n’en est rien puisque le problème affecte toutes les jeedoms cibles de manière aléatoire mais plusieurs fois par jour. Parfois la commande ON n’est pas reçue par la cible et, parfois, c’est la commande OFF qui n’est pas reçue par la source. Côté superviseur, le réseau intranet/internet auquel est raccordé le superviseur ne peut pas être mis en cause car, en raccordant le superviseur directement sur un routeur 4G, le problème perdure. Le matériel du superviseur est un RPi 3B+ avec SSD construit avec la dernière image officielle Jeedom et un minimum de plugins (Virtuel, Telegram, Monitoring, Jeelink, OpenVPN) et sans Z-Wave. Santé Jeedom OK, rien dans les logfiles, Jeedom en V4.2.14, plugins à jour, charge système 0.2…0.3.
Les logfiles ci-dessous fournis par les scénarios Ping xx (jeedom source) et Pong (jeedom cible) montrent que les commandes ON, respectivement OFF sont émises mais que, par exemple, celle de 4h55’ n’arrive pas à destination. Aussi, j’en arrive à mes questions : est-il possible que Jeelink soit la cause de ce problème ? Est-ce une hérésie d’effectuer une commande OFF d’un virtuel placé dans la jeedom source, ceci depuis la jeedom cible ? Le cron de ce plugin peut-il être en cause et comment ces crons fonctionnent-ils dans le cadre des plugins (on en parle peu hormis pour un réveil préprogrammé d’un scénario) ?
D’avance merci de votre aide !
Le log du scénario Ping (Jeedom Source), mes commentaires après la ligne ---------------
------------------------------------ A 4h40’, la commande OFF précédente est arrivée (Etat à 0), r.a.z. compteur d’erreur puis génération d’une nouvelle commande ON
[2022-04-25 04:40:03][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2022-04-25 04:40:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Box sous contrôle][Surv_SurLesRues]# == 1
[2022-04-25 04:40:03][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-04-25 04:40:03][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-04-25 04:40:03][SCENARIO] Exécution d'un bloc élément : 76
[2022-04-25 04:40:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 04:40:03][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2022-04-25 04:40:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 04:40:03][SCENARIO] Exécution d'un bloc élément : 79
[2022-04-25 04:40:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][EC]# > variable(Nb_Ping)
[2022-04-25 04:40:03][SCENARIO] Evaluation de la condition : [1 > 12] = Faux
[2022-04-25 04:40:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 04:40:03][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][Reset EC]
[2022-04-25 04:40:04][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][ON]
[2022-04-25 04:40:04][SCENARIO] Fin correcte du scénario
------------------------------------ A 4h55’, la commande OFF de 4h41’ est arrivée (Etat à 0), r.a.z. compteur d’erreur puis génération d’une nouvelle commande ON
[2022-04-25 04:55:03][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2022-04-25 04:55:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Box sous contrôle][Surv_SurLesRues]# == 1
[2022-04-25 04:55:03][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-04-25 04:55:03][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-04-25 04:55:03][SCENARIO] Exécution d'un bloc élément : 76
[2022-04-25 04:55:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 04:55:03][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2022-04-25 04:55:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 04:55:03][SCENARIO] Exécution d'un bloc élément : 79
[2022-04-25 04:55:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][EC]# > variable(Nb_Ping)
[2022-04-25 04:55:03][SCENARIO] Evaluation de la condition : [0 > 12] = Faux
[2022-04-25 04:55:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 04:55:03][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][Reset EC]
[2022-04-25 04:55:04][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][ON]
[2022-04-25 04:55:04][SCENARIO] Fin correcte du scénario
------------------------------------ A 5h10’, pas reçu de commande OFF (Etat toujours à 1), increment compteur d’erreur puis génération d’une nouvelle commande ON
[2022-04-25 05:10:03][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2022-04-25 05:10:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Box sous contrôle][Surv_SurLesRues]# == 1
[2022-04-25 05:10:04][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-04-25 05:10:04][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-04-25 05:10:04][SCENARIO] Exécution d'un bloc élément : 76
[2022-04-25 05:10:04][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 05:10:04][SCENARIO] Evaluation de la condition : [1 == 1 ] = Vrai
[2022-04-25 05:10:04][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-04-25 05:10:04][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][Incr EC]
[2022-04-25 05:10:04][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][OFF]
[2022-04-25 05:10:04][SCENARIO] Pause de 15 seconde(s)
[2022-04-25 05:10:19][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][ON]
[2022-04-25 05:10:20][SCENARIO] Exécution d'un bloc élément : 77
[2022-04-25 05:10:20][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][EC]# > variable(Nb_Ping)
[2022-04-25 05:10:20][SCENARIO] Evaluation de la condition : [1 > 12] = Faux
[2022-04-25 05:10:20][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 05:10:20][SCENARIO] Exécution d'un bloc élément : 117
[2022-04-25 05:10:20][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][EC]# > #[Superviseur][Test Link Sur les Rues][MaxEC]#
[2022-04-25 05:10:20][SCENARIO] Evaluation de la condition : [1 > 1 ] = Faux
[2022-04-25 05:10:20][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 05:10:20][SCENARIO] Fin correcte du scénario
------------------------------------ A 5h25’, la commande OFF de 5h11’ est arrivée (Etat à 0), r.a.z. compteur d’erreur puis génération d’une nouvelle commande ON
[2022-04-25 05:25:03][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2022-04-25 05:25:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Box sous contrôle][Surv_SurLesRues]# == 1
[2022-04-25 05:25:03][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-04-25 05:25:03][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-04-25 05:25:03][SCENARIO] Exécution d'un bloc élément : 76
[2022-04-25 05:25:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 05:25:03][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2022-04-25 05:25:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 05:25:03][SCENARIO] Exécution d'un bloc élément : 79
[2022-04-25 05:25:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Superviseur][Test Link Sur les Rues][EC]# > variable(Nb_Ping)
[2022-04-25 05:25:03][SCENARIO] Evaluation de la condition : [1 > 12] = Faux
[2022-04-25 05:25:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 05:25:03][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][Reset EC]
[2022-04-25 05:25:03][SCENARIO] Exécution de la commande [Superviseur][Test Link Sur les Rues][ON]
[2022-04-25 05:25:04][SCENARIO] Fin correcte du scénario
Et le log du scénario Pong (Jeedom Cible), mes commentaires après la ligne ---------------
------------------------------------ Réception correcte à 4h40’ (Etat=1)
[2022-04-25 04:40:05][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sur les Rues][Test Link Sur les Rues][Etat] (1).
[2022-04-25 04:40:05][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sur les Rues][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 04:40:05][SCENARIO] Evaluation de la condition : [1 == 1 ] = Vrai
[2022-04-25 04:40:05][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-04-25 04:40:05][SCENARIO] Exécution d'un bloc élément : 77
[2022-04-25 04:40:05][SCENARIO] Exécution du sous-élément de type [condition] : in 1
[2022-04-25 04:40:05][SCENARIO] Evaluation de la condition : [1] = 1
[2022-04-25 04:40:05][SCENARIO] Tâche : 77 programmée à : 2022-04-25 04:41:05 (+ 1 min)
[2022-04-25 04:40:05][SCENARIO] Fin correcte du scénario
------------------------------------ Commande OFF une minute plus tard
[2022-04-25 04:41:03][SCENARIO] ************Lancement sous tâche**************
[2022-04-25 04:41:05][SCENARIO] Exécution du sous-élément de type [action] : do
[2022-04-25 04:41:05][SCENARIO] Exécution de la commande [Sur les Rues][Test Link Sur les Rues][OFF]
[2022-04-25 04:41:05][SCENARIO] ************FIN sous tâche**************
------------------------------------ Réception de la rétro-signalisation de la commande OFF, il ne se passera rien car Etat = 0
[2022-04-25 04:41:06][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sur les Rues][Test Link Sur les Rues][Etat] (0).
[2022-04-25 04:41:06][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sur les Rues][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 04:41:06][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2022-04-25 04:41:06][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 04:41:06][SCENARIO] Fin correcte du scénario
------------------------------------ Rien reçu à 4h55’ !!! ……. Réception correcte à 5h10’ (Etat=1)
[2022-04-25 05:10:20][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sur les Rues][Test Link Sur les Rues][Etat] (1).
[2022-04-25 05:10:20][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sur les Rues][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 05:10:20][SCENARIO] Evaluation de la condition : [1 == 1 ] = Vrai
[2022-04-25 05:10:20][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-04-25 05:10:20][SCENARIO] Exécution d'un bloc élément : 77
[2022-04-25 05:10:20][SCENARIO] Exécution du sous-élément de type [condition] : in 1
[2022-04-25 05:10:20][SCENARIO] Evaluation de la condition : [1] = 1
[2022-04-25 05:10:20][SCENARIO] Tâche : 77 programmée à : 2022-04-25 05:11:20 (+ 1 min)
[2022-04-25 05:10:20][SCENARIO] Fin correcte du scénario
------------------------------------ Commande OFF une minute plus tard
[2022-04-25 05:11:03][SCENARIO] ************Lancement sous tâche**************
[2022-04-25 05:11:20][SCENARIO] Exécution du sous-élément de type [action] : do
[2022-04-25 05:11:20][SCENARIO] Exécution de la commande [Sur les Rues][Test Link Sur les Rues][OFF]
[2022-04-25 05:11:21][SCENARIO] ************FIN sous tâche**************
------------------------------------ Réception de la rétro-signalisation de la commande OFF, il ne se passera rien car Etat = 0
[2022-04-25 05:11:21][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sur les Rues][Test Link Sur les Rues][Etat] (0).
[2022-04-25 05:11:21][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sur les Rues][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 05:11:21][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2022-04-25 05:11:21][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 05:11:21][SCENARIO] Fin correcte du scénario
------------------------------------ Réception correcte à 5h25’ (Etat=1)
[2022-04-25 05:25:04][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sur les Rues][Test Link Sur les Rues][Etat] (1).
[2022-04-25 05:25:04][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sur les Rues][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 05:25:04][SCENARIO] Evaluation de la condition : [1 == 1 ] = Vrai
[2022-04-25 05:25:04][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-04-25 05:25:04][SCENARIO] Exécution d'un bloc élément : 77
[2022-04-25 05:25:04][SCENARIO] Exécution du sous-élément de type [condition] : in 1
[2022-04-25 05:25:04][SCENARIO] Evaluation de la condition : [1] = 1
[2022-04-25 05:25:04][SCENARIO] Tâche : 77 programmée à : 2022-04-25 05:26:04 (+ 1 min)
[2022-04-25 05:25:04][SCENARIO] Fin correcte du scénario
------------------------------------ Commande OFF une minute plus tard
[2022-04-25 05:26:03][SCENARIO] ************Lancement sous tâche**************
[2022-04-25 05:26:04][SCENARIO] Exécution du sous-élément de type [action] : do
[2022-04-25 05:26:04][SCENARIO] Exécution de la commande [Sur les Rues][Test Link Sur les Rues][OFF]
[2022-04-25 05:26:05][SCENARIO] ************FIN sous tâche**************
------------------------------------ Réception de la rétro-signalisation de la commande OFF, il ne se passera rien car Etat = 0
[2022-04-25 05:26:05][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sur les Rues][Test Link Sur les Rues][Etat] (0).
[2022-04-25 05:26:05][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sur les Rues][Test Link Sur les Rues][Etat]# == 1
[2022-04-25 05:26:05][SCENARIO] Evaluation de la condition : [0 == 1 ] = Faux
[2022-04-25 05:26:05][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-04-25 05:26:05][SCENARIO] Fin correcte du scénario
------------------------------------