Scénario appelant qui n'attend pas la fin d'un scénario appelé

Bonjour,

J’ai revu cet été mes scénarios de chauffage qui active ou non les thermostats (en prenant en compte la présence et la période).
Hier je constate que j’ai des thermostats qui sont restés sur Off alors que j’étais présent.

Après un peu de débug, j’ai compris que mon scénario qui active les thermostats à mis 2 sec pour réaliser l’opération et le scénario appelant est passé à la suite…

Pour mettre un fix rapide, je viens de mettre un sleep de 2 sec (j’avais mis 1 sec mais c’était insufisant), n’y a t’il pas une possibilité pour lui dire d’attendre la fin d’un scénario avant de passer à la suite ?
J’imaginais qu’en ne cochant pas la case pour exécuter en background, j’étais dans un mode synchrone :


[…]

[2024-11-14 14:30:05][SCENARIO] Lancement du scénario : Thermostats Chauffage enable options : []

[...]
[2024-11-14 14:30:05][SCENARIO] Pause de 1 seconde(s)
[2024-11-14 14:30:06][SCENARIO] Exécution d'un bloc élément : 466
[2024-11-14 14:30:06][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Chambre parentale][Chauffage][Mode]# == 'Off'
[2024-11-14 14:30:06][SCENARIO] Evaluation de la condition : ["Off" == 'Off'] = Vrai
[2024-11-14 14:30:06][SCENARIO] - Exécution du sous-élément de type [action] : then
[2024-11-14 14:30:06][SCENARIO] Exécution de la commande [Chambre parentale][Chauffage][Eco]
[2024-11-14 14:30:06][SCENARIO] Equipement désactivé - impossible d'exécuter la commande : [Chambre parentale][Chauffage][Eco]

Comme on peut le voir dans l’extrait de log, l’équipement était toujours désactivé au moment ou il est passé aux instructions suivante. Et en regardant la log du scénario appelé, on peut voir qu’il s’est terminé 2 sec après l’appel.

[2024-11-14 14:30:06][SCENARIO] -- Début : Lancement provoque par le scenario  : [Thermostats][Placard Technique][Thermostats Chauffage OnOff].
[2024-11-14 14:30:06][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-11-14 14:30:06][SCENARIO] Equipement activé : [Salon][Chauffage]
[2024-11-14 14:30:07][SCENARIO] Equipement activé : [Salle à manger][Chauffage]
[2024-11-14 14:30:07][SCENARIO] Equipement activé : [Chambre Emmy][Chauffage]
[2024-11-14 14:30:07][SCENARIO] Equipement activé : [Chambre parentale][Chauffage]
[2024-11-14 14:30:07][SCENARIO] Equipement activé : [Bureau][Chauffage]
[2024-11-14 14:30:07][SCENARIO] Equipement activé : [Salle de bains][Chauffage]
[2024-11-14 14:30:08][SCENARIO] Fin correcte du scénario

Après si le serveur répond plus vite ou plus lentement ça m’ennuis de mettre un sleep fixe.

Auriez-vous une solution sans faire une usine à gaz ?

Par usine à gaz j’entend passer par une variable pour indiquer que le scénario est en cours et attendre que le scénario appelé modifie la valeur pour indiquer au scénario appelant que c’est terminé et mettre une pause conditionné a cette variable… Je pense que ça alourdirais trop les scénario (sachant que j’ai mis que des extraits de mon scénario)

Merci pour vos idées/solutions.

Salut,

Oui il y a une option native dans jeedom pour ça. Comme l’indique la doc des scénarios il ne faut pas faire un « Démarrer » mais un « Démarrer (sync) ».

Scénario (scenario) : Permet de contrôler des scénarios. La partie tags permet d’envoyer des tags au scénario, ex : montag=2 (attention il ne faut utiliser que des lettre de a à z. Pas de majuscules, pas d’accents et pas de caractères spéciaux). On récupère le tag dans le scénario cible avec la fonction tag(montag).

Démarrer : Démarre le scenario dans un thread diffèrent. Le scenario démarré s’exécute indépendamment du scénario appelant.
Démarrer (Sync) : Démarre le scénario appelé et met en pause le scénario appelant, le temps que le scénario appelé ait fini de s’exécuter.

Comme ceci :

3 « J'aime »

Merci beaucoup, j’étais vraiment passé à côté de ce paramètre. Je vais reprendre pleins de scénario grâce à toi :slight_smile: et supprimer les sleep qui le plaisaient pas

Je te souhaite un bon après midi et encore merci

1 « J'aime »

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