Declenchement periodique de scenario - aléatoire

Bonjour,
Depuis début aout les scénarios à déclenchement récurrents ne se déclenchent pas (ou rarement)
J’ai créé un scénario test tout simple (incrément d’une variable) pour vérifier ; et effectivement il ne fonctionne quasiment pas
Normalement il se déclenche toutes les 5 minutes


et voici le log !! :sob:

[2024-09-01 02:10:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 02:10:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 02:10:02][SCENARIO] Affectation de la variable Test_Compteur => 3 (2+1)
[2024-09-01 02:10:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 02:50:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 02:50:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 02:50:02][SCENARIO] Affectation de la variable Test_Compteur => 4 (3+1)
[2024-09-01 02:50:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 02:55:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 02:55:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 02:55:01][SCENARIO] Affectation de la variable Test_Compteur => 5 (4+1)
[2024-09-01 02:55:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 03:35:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 03:35:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 03:35:02][SCENARIO] Affectation de la variable Test_Compteur => 6 (5+1)
[2024-09-01 03:35:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 03:40:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 03:40:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 03:40:02][SCENARIO] Affectation de la variable Test_Compteur => 7 (6+1)
[2024-09-01 03:40:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 04:20:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 04:20:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 04:20:02][SCENARIO] Affectation de la variable Test_Compteur => 8 (7+1)
[2024-09-01 04:20:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 04:25:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 04:25:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 04:25:02][SCENARIO] Affectation de la variable Test_Compteur => 9 (8+1)
[2024-09-01 04:25:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 05:05:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 05:05:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 05:05:02][SCENARIO] Affectation de la variable Test_Compteur => 10 (9+1)
[2024-09-01 05:05:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 05:10:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 05:10:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 05:10:02][SCENARIO] Affectation de la variable Test_Compteur => 11 (10+1)
[2024-09-01 05:10:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 05:50:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 05:50:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 05:50:01][SCENARIO] Affectation de la variable Test_Compteur => 12 (11+1)
[2024-09-01 05:50:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 05:55:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 05:55:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 05:55:02][SCENARIO] Affectation de la variable Test_Compteur => 13 (12+1)
[2024-09-01 05:55:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 06:35:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 06:35:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 06:35:02][SCENARIO] Affectation de la variable Test_Compteur => 14 (13+1)
[2024-09-01 06:35:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 06:40:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 06:40:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 06:40:02][SCENARIO] Affectation de la variable Test_Compteur => 15 (14+1)
[2024-09-01 06:40:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 07:20:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 07:20:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 07:20:02][SCENARIO] Affectation de la variable Test_Compteur => 16 (15+1)
[2024-09-01 07:20:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 07:25:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 07:25:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 07:25:02][SCENARIO] Affectation de la variable Test_Compteur => 17 (16+1)
[2024-09-01 07:25:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 08:05:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 08:05:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 08:05:02][SCENARIO] Affectation de la variable Test_Compteur => 18 (17+1)
[2024-09-01 08:05:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 08:10:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 08:10:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 08:10:01][SCENARIO] Affectation de la variable Test_Compteur => 19 (18+1)
[2024-09-01 08:10:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 08:50:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 08:50:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 08:50:02][SCENARIO] Affectation de la variable Test_Compteur => 20 (19+1)
[2024-09-01 08:50:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 08:55:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 08:55:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 08:55:02][SCENARIO] Affectation de la variable Test_Compteur => 21 (20+1)
[2024-09-01 08:55:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 09:35:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 09:35:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 09:35:02][SCENARIO] Affectation de la variable Test_Compteur => 22 (21+1)
[2024-09-01 09:35:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 09:40:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 09:40:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 09:40:02][SCENARIO] Affectation de la variable Test_Compteur => 23 (22+1)
[2024-09-01 09:40:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 10:20:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 10:20:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 10:20:02][SCENARIO] Affectation de la variable Test_Compteur => 24 (23+1)
[2024-09-01 10:20:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 10:25:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 10:25:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 10:25:02][SCENARIO] Affectation de la variable Test_Compteur => 25 (24+1)
[2024-09-01 10:25:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 11:05:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 11:05:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 11:05:01][SCENARIO] Affectation de la variable Test_Compteur => 26 (25+1)
[2024-09-01 11:05:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 11:10:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 11:10:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 11:10:01][SCENARIO] Affectation de la variable Test_Compteur => 27 (26+1)
[2024-09-01 11:10:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 11:50:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 11:50:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 11:50:01][SCENARIO] Affectation de la variable Test_Compteur => 28 (27+1)
[2024-09-01 11:50:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 11:55:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 11:55:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 11:55:01][SCENARIO] Affectation de la variable Test_Compteur => 29 (28+1)
[2024-09-01 11:55:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 12:35:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 12:35:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 12:35:01][SCENARIO] Affectation de la variable Test_Compteur => 30 (29+1)
[2024-09-01 12:35:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 12:40:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 12:40:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 12:40:02][SCENARIO] Affectation de la variable Test_Compteur => 31 (30+1)
[2024-09-01 12:40:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 13:20:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 13:20:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 13:20:01][SCENARIO] Affectation de la variable Test_Compteur => 32 (31+1)
[2024-09-01 13:20:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 13:25:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 13:25:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 13:25:02][SCENARIO] Affectation de la variable Test_Compteur => 33 (32+1)
[2024-09-01 13:25:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 14:05:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 14:05:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 14:05:02][SCENARIO] Affectation de la variable Test_Compteur => 34 (33+1)
[2024-09-01 14:05:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 14:10:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 14:10:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 14:10:02][SCENARIO] Affectation de la variable Test_Compteur => 35 (34+1)
[2024-09-01 14:10:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 14:50:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 14:50:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 14:50:01][SCENARIO] Affectation de la variable Test_Compteur => 36 (35+1)
[2024-09-01 14:50:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 14:55:01][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 14:55:01][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 14:55:01][SCENARIO] Affectation de la variable Test_Compteur => 37 (36+1)
[2024-09-01 14:55:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 15:35:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 15:35:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 15:35:02][SCENARIO] Affectation de la variable Test_Compteur => 38 (37+1)
[2024-09-01 15:35:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 15:40:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 15:40:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 15:40:02][SCENARIO] Affectation de la variable Test_Compteur => 39 (38+1)
[2024-09-01 15:40:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 16:20:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 16:20:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 16:20:02][SCENARIO] Affectation de la variable Test_Compteur => 40 (39+1)
[2024-09-01 16:20:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-09-01 16:25:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-09-01 16:25:02][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-09-01 16:25:02][SCENARIO] Affectation de la variable Test_Compteur => 41 (40+1)
[2024-09-01 16:25:02][SCENARIO] Fin correcte du scénario

Pourtant le systeme n’a pas l’air en mauvaise santé


et pas surchargé

Voici aussi le moteur de taches (je ne sais pas l’exploiter…)


Auriez vous une idée de ce qui coince ???
Merci par avance

Bonsoir,

Tu dois avoir parfois l’un des scénarios qui prend plus de temps qu’une minute, du coup quand c’est le tour de celui-ci il n’est plus l’heure (c’est à dire 11h06 et non 11h05). En conséquence il ne s’exécute pas.

Ce comportement est modifié, sauf erreur de ma part, en 4.4.5 (encore en version alpha).

Dans cette version Jeedom exécutera le scénario même s’il a dépassé l’heure prévue

Pour vérifier, il faudrait désactiver chaque scénario sauf celui-ci…

1 « J'aime »

Merci @Bison
Je suppose que tu veux dire 4.5 (on est déjà en 4.4.14…)

Est-ce que je dois comprendre qu’il ne peut y avoir qu’un seul scénario actif à la fois ???

J’ai des scénarios qui durent plusieurs heures … (ils sont 99% du temps dans sleep, mais ils ne sont pas terminés)

1 « J'aime »

Non on peut avoir plusieurs scénarios actifs en même temps

Par contre avoir des scénarios qui durent des heures :thinking: :thinking: :thinking:

1 « J'aime »

Indépendamment de ton problème (mais c’est pas impossible que ce soit lié), les scénarios ne sont pas conçu pour tourner longtemps, il ne faut donc pas faire comme tu as fait c’est a dire utiliser des sleep à profusion et surtout qui durent.

Un sleep doit être utilisé pour mettre en pause quelques secondes. Si tu fais durer au delà de 1mn ce n’est pas la bonne façon de faire.

Montre l’un de tes scénario par exemple (déclencheur+ instructions)

1 « J'aime »

Bonjour,
Effectivement il faut eviter les sleep dans les scénarios c’est pas bon pour jeedom et risqué mais encore pire c’est si tu as des sleep en mode synchrone. Ca c’est clair ca fou en l’air tout la gestion des scénario car jeedom attend que le scénario finisse avant de lancer le suivant (mode synchrone).

Je supposais qu’un scénario était lancé comme un process. les sleep me paraissaient donc bien…
Voici un exemple
C’est simple et efficace

Faut quand meme eviter le plus possible, oui chaque scénario est un process a part (sauf en mode synchrone) mais c’est pas bon non plus d’avoir plein de process partout, ca fait des connexion a la db et pas mal d’autre truc.

Dans tous les cas pour ton soucis je pense que la 4.5 corrigera.

Donc si je comprends bien, pour d’autres scénarios,
à la place de :
« Action A
Sleep 1 heure
Action B, C D … »
Il vaut mieux faire :
« Action A
Dans 1 heure
faire Action B C D
return »
C’est cela ???

Oui largement

1 « J'aime »

OK. Merci
Une petite note sur le sujet dans la doc pourrait être bienvenue alors

1 « J'aime »

Sur quel sujet ?

Le fait d’éviter la fonction sleep pour faire des pauses pendant de longues minutes

Après c’est pas interdit mais ça peut poser des soucis de performance en fonction des cas. Je suis pas sur que descendre à ce niveau de détails dans la doc soit une bonne idée. Vu la taille déjà y’a pas bcp de gens qui la lise mais si je détails ça je multiplie par 3 facile la doc personne va la lire

c’est déjà dans la doc, pour ceux qui la lisent :upside_down_face:
https://doc.jeedom.com/fr_FR/core/4.4/scenario?theme=dark#Onglet%20Général

Mode synchrone : Lance le scénario dans le thread courant au lieu d’un thread dédié. Permet d’augmenter la vitesse de lancement du scénario, mais peut rendre le système instable. Attention a ne surtout pas mettre de scénario complexe ou avec des pauses (sleep) ou wait en synchrone, cela engendre un comportement instable de jeedom et ne pourra être couvert par le support.

1 « J'aime »

Bonjour à tous

Je vais pas refaire la polémique des sleep, mais clairement,
j’ai un paquet de boucles avec un paquet de Sleep.
j’ai également un paquet de scénario qui se lance à certaine heure, et quelque un en */3 ****
et…
J’ai jamais eu ce genre de bug ! (ni aucun autre pb de lancement scénario)
Jeedom est capable d’avaler bien plus que cela.
Il y a autre chose sur ce Jeedom qui provoque cette réaction, et je serai surpris que cela est à voir avec 3 sleep (ni 50)… (surtout que d’apres les photos pas de scénario en mode Synchrone ici)
Il faut chercher ailleurs (mais je ne sais pas où)…
Par exemple ceci, c’est normal ? :
Je n’ai pas le plugin Wifilight mais **394306 secondes c’est beaucoup **
(voir avant dernière photo du 1er post)

@Philip : tu devrais essayer ce tuto pour voir si t’as pas un scénario qui tourne beaucoup trop :

PS : @Bison, vous êtes sûr de vous ?

Car moi je suis certain que l’on peut avoir des scénarios en train de tourner (plus d’une minute ou plus encore), et d’autres qui se lance (même sur une programmation) sans aucun soucis…
Ou alors j’ai pas compris ce que tu voulais dire…?

Salut Henri,

Tu as bien compris, plusieurs scénarios peuvent tourner en même temps mais il peut arriver que le temps de tous les exécuter prenne plus d’une minute.

Une autre façon de le dire et de Loïc :

Et c’est là qu’on rentre dans la limite d’un système qui n’est pas en temps réel, alors que le besoin ici est justement une exécution en temps réel.

Un système en temps réel garantit justement que chaque tâche exécutée termine dans un temps imparti. Et si c’est pas le cas, cette tâche doit pouvoir être interrompue pour redonner la main à une autre tâche. Il faut comprendre que cette contrainte de temps est aussi importante que le résultat calculé par la tâche.

Ici Jeedom s’apparente à un système temps réel : on souhaite lancer des tâches avec une garantie qu’elles soient lancées « à temps », sauf qu’on a pas la garantie qu’elles le fassent dans un temps imparti (ou aient la capacité d’être interrompues). Cette contrainte non respectée débouche sur des « ratés ».

Pour éviter ces ratés, et comme expliqué par les messages précédants, il faut garantir au maximum que chaque tâche termine rapidement (pour pouvoir donner la main). Cela se fait effectivement en écrivant des scénarios qui se terminent sans attente active. En théorie, la fonction sleep ne devrait jamais être utilisée (et encore moins l’option « synchrone » d’un scenario) pour garantir la réactivité du système. On utilisera à la place des appels récursifs de scénarios (=> « Vérifier condition. Si condition pas remplie, dans X min relancer scenario »). Et en utilisant conjointement les déclencheurs basés sur valeurs de commandes, on peut écrire des scénarios efficaces, réactifs et très peu gourmands en ressources systèmes.

(Paroles d’un ingé en systèmes embarqués :wink: )

Merci de m’avoir lu :sweat_smile:

2 « J'aime »

Pas de sleep dans un calculateur automobile ?

Si détection de collision alors 
 sleep 2
 Freinage urgent

:grin:

1 « J'aime »