Répéter un scénario

Bonsoir à tous, pour la domotisation d’un arrosage intégré j’ai créé un scénario qui gère la pompe et les différentes zones d’arrosage via des vannes.
Tout ce passe bien mais, il y a toujours un « mais », j’aimerais répéter le déclenchement de ce scénario, manuellement, en fonction des conditions météo.
J’aimerais avoir un choix (1 fois, 2 fois … ) pour lancer mon scénario arrosage 1 fois, 2 fois ou plus.
Dans mon scénario actuel, le déclenchement se fait tout simplement par une commande virtuelle « je déclenche l’arrosage » .
Merci d’avance pour vos tuyaux

Tu peux avoir une commande slider « nb répétitions » dans ton virtuel pour définir ce nb de répétitions et dans ton scénario, tu rajoutes une boucle de 1 à « nb répétitions » pour lancer ton code le bon nb de fois

Autre solution, dans ton scénario en début, mettre en place un ask qui te demande le nombre de fois, puis toujours la boucle de 1 à la réponse au ask (variable)
Dans ce cas-là tu n’auras pas une commande mais un message sur ton application smartphone préférée ( discord, telegram, jeedomconnect ou jeemate)

Norbert

2 « J'aime »

Bonjour,
J’aurais fait comme Ngrataloup, passer par un virtuel (de type Slider ou Liste), mais autant espacer les arrosages le plus possible.
Pour cela j’aurais ajouter deux SI à la fin du scénario actuel :
SI virtuel == 2 :
Alors :
—- À (bloc A) 6h lancer le scénario en question
—- SI virtuel == 3 :
——- Alors :
———- À 3h lancer le scénario en question

Si tu changes d’avis, j’aurais prévu au tout début du scénario un
SI virtuel == 0
—- Alors : Remove Inat (qui va annuler les À Dejas programmés) + STOP

Pour que les SI ne soit pas pris en compte à la relance par les À, il faut lancer les scénarios avec un tag qui identifie cette relance et le tester dans les SI en question.
Par exemple tag : Relance = 1
Puis dans les SI la condition devient : Virtuel == X && tag(Relance,0)==0

bon test :slight_smile:

1 « J'aime »

Il y a pleins de façons différentes de faire, pour ma part j’aurais pensé faire un bloc qui relance le scénario avec des blocs A ou DANS.

En fait il faudrait surtout que @benajp détaille un peu plus sur ce qu’il entend par relancer l’arrosage. Immédiatement ? Avec un délai entre chacunes des fois ? fixe, paramétrable ?

Merci @Aurel, @ngrataloup et @Henri pour vos réponses rapides.
J’aimerais choisir au départ le nombres de cycles à faire : zone 1 puis zone 2 puis zone 3 et à nouveau zone 1 puis …

Je suis en train de tester la solution la plus simple, 1 virtuel avec une commande « liste » et un scénario avec une boucle de 1 à « valeur de la liste »

Bonjour,

Pour cela, j’aurais utilisé le plugin Mode avec 3 scénarios : Zone1, Zone2 et Zone3 en créant des modes pour chaque cycle voulu avec les lancements des scénarios dans les actions en entrée.
Il serait ainsi facile de gérer le fait de ne pas redémarrer les arrosages s’ils viennent juste de se faire par exemple.

Perso je serai parti sur un slider dans un virtuel plutot qu’une liste (techniquement c’est pareil, je trouve ça juste plus visuel et pratique à utiliser que la liste pour ce cas de figure)

Ca donne ça pour des valeurs de 1 à 3 :

image

Merci @Aurel pour cet exemple, je vais tester avec un slider

1 « J'aime »

Bonsoir à tous, après quelques tests avec allumage et extinction de lumières, voilà où j’en suis.
J’ai créé un virtuel « liste »


ensuite un scénario

Le scénario se déroule 1 seule fois mais la fonction répétition de fonctionne pas.
Par contre si je remplace « Dans » par « Sleep », la répétition fonctionne.
Quelque chose m’échappe sur le fonctionnement de cette boucle.
Merci pour votre aide

Normal, le dans est séquentiel. Il planifie juste le lancement de toutes les commandes dessous MAIS N’ATTEND PAS LA FIN.

Du coup, avec le dans 1, tu lances X fois (boucle de 1 a x) dans 1 min, donc x fois la même action 1 min après

Quel est l intérêt du dans ici ?

Norbert

Merci @ngrataloup pour ta réponse rapide. Le but de ce scénario est de répéter 1 ou plusieurs fois des cycles d’arrosage. Donc je déclenche la zone 1, puis DANS X minutes j’arrête la zone 1 et je déclenche la zone 2, etc pour les 4 zones. Mais vu les conditions météo j’aimerais choisir manuellement la répétition du scénario 1, 2 ou 3 fois, d’où la boucle fixée par le virtuel.

Un lien avec ca ou c’est le hasard ?

du coup, à adapter pour planifier toutes tes sequences en 1 fois avec une boucle, l’initialisation d’un compteur dans la boucle pour savoir ou tu en es et tu multiplies tes temps par le compteur

tag i = 0
DE 1 à nbcycle
  DANS  0 + 120 x tag(i)     ==> planification à 0 min pour le premier passage dns la boucle, 120, puis 240, .....
    Démarrer irrigation Z1
  DANS 30 + 120 x tag(i)
    Arrêter irrigation Z1
    Démarrer irrigation z2
  DANS 60 + 120 x tag(i)
    Arrêter irrigation Z2
    Démarrer irrigation Z3
  DANS 90 + 120 x tag(i)
     Arrêter irrigation Z3
     Démarrer irrigation Z4
   DANS 120 + 120 x tag(i)
     Arrêter irrigation Z4
   tag i = tag(i) +1  ==> tu incrementes de 1 ton compteur à chaque boucle
1 « J'aime »

@ngrataloup j’ai testé ton scénario pour l’allumage de 2 lampes. Ci-après le scénario


Le log
Log scénario cycles_2.txt (4,6 Ko)
La fonction répétition ne fonctionne pas, la première lampe reste allumée 3 min au lieu de 1, puis la lampe 2 s’allume 1 min, c’est tout

Les logs quand ils ne sont pas trop longs tu peux les poster directement dans le même message sous forme de texte préformaté c’est plus lisible.

------------------------------------
[2025-06-27 17:00:17][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Actionneurs][Nb de cycles][NbCycles] (2).
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-06-27 17:00:17][SCENARIO] Mise à jour du tag #i# => 0
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [condition] : for #[Actionneurs][Nb de cycles][NbCycles]#
[2025-06-27 17:00:17][SCENARIO] Evaluation de la condition : [2] = 2
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [action] : do
[2025-06-27 17:00:17][SCENARIO] Exécution d'un bloc élément : 493
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [condition] : in 0 + (2 * tag(i))
[2025-06-27 17:00:17][SCENARIO] Evaluation de la condition : [0 + (2 * 0)] = 0
[2025-06-27 17:00:17][SCENARIO] Tâche : 493 lancement immédiat 
[2025-06-27 17:00:17][SCENARIO] Exécution d'un bloc élément : 495
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [condition] : in 1 +  (2 * tag(i))
[2025-06-27 17:00:17][SCENARIO] Evaluation de la condition : [1 +  (2 * 0)] = 1
[2025-06-27 17:00:17][SCENARIO] Tâche : 495 programmée à : 2025-06-27 17:01:17 (+ 1 min)
[2025-06-27 17:00:17][SCENARIO] Exécution d'un bloc élément : 497
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [condition] : in 2 + (2 * tag(i))
[2025-06-27 17:00:17][SCENARIO] Evaluation de la condition : [2 + (2 * 0)] = 2
[2025-06-27 17:00:17][SCENARIO] Tâche : 497 programmée à : 2025-06-27 17:02:17 (+ 2 min)
[2025-06-27 17:00:17][SCENARIO] Mise à jour du tag #i# => 1
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [action] : do
[2025-06-27 17:00:17][SCENARIO] Exécution d'un bloc élément : 493
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [condition] : in 0 + (2 * tag(i))
[2025-06-27 17:00:17][SCENARIO] Evaluation de la condition : [0 + (2 * 1)] = 2
[2025-06-27 17:00:17][SCENARIO] Tâche : 493 programmée à : 2025-06-27 17:02:17 (+ 2 min)
[2025-06-27 17:00:17][SCENARIO] Exécution d'un bloc élément : 495
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [condition] : in 1 +  (2 * tag(i))
[2025-06-27 17:00:17][SCENARIO] Evaluation de la condition : [1 +  (2 * 1)] = 3
[2025-06-27 17:00:17][SCENARIO] Tâche : 495 programmée à : 2025-06-27 17:03:17 (+ 3 min)
[2025-06-27 17:00:17][SCENARIO] Exécution d'un bloc élément : 497
[2025-06-27 17:00:17][SCENARIO] - Exécution du sous-élément de type [condition] : in 2 + (2 * tag(i))
[2025-06-27 17:00:17][SCENARIO] Evaluation de la condition : [2 + (2 * 1)] = 4
[2025-06-27 17:00:18][SCENARIO] Tâche : 497 programmée à : 2025-06-27 17:04:18 (+ 4 min)
[2025-06-27 17:00:18][SCENARIO] Mise à jour du tag #i# => 2
[2025-06-27 17:00:18][SCENARIO] Fin correcte du scénario
------------------------------------
[2025-06-27 17:00:18][SCENARIO] ************Lancement sous tâche**************
[2025-06-27 17:00:18][SCENARIO] Tags : {"#i#":0}
[2025-06-27 17:00:18][SCENARIO] - Exécution du sous-élément de type [action] : do
[2025-06-27 17:00:18][SCENARIO] Exécution de la commande [Actionneurs][Prise 1 Lidl][On 0b]
[2025-06-27 17:00:18][SCENARIO] ************FIN sous tâche**************
------------------------------------
[2025-06-27 17:02:03][SCENARIO] ************Lancement sous tâche**************
[2025-06-27 17:02:03][SCENARIO] Tags : {"#i#":1}
[2025-06-27 17:02:17][SCENARIO] - Exécution du sous-élément de type [action] : do
[2025-06-27 17:02:17][SCENARIO] Exécution de la commande [Actionneurs][Prise 1 Lidl][On 0b]
[2025-06-27 17:02:17][SCENARIO] ************FIN sous tâche**************
------------------------------------
[2025-06-27 17:03:03][SCENARIO] ************Lancement sous tâche**************
[2025-06-27 17:03:03][SCENARIO] Tags : {"#i#":1}
[2025-06-27 17:03:17][SCENARIO] - Exécution du sous-élément de type [action] : do
[2025-06-27 17:03:17][SCENARIO] Exécution de la commande [Actionneurs][Prise 1 Lidl][Off 0b]
[2025-06-27 17:03:17][SCENARIO] Exécution de la commande [Actionneurs][Lampe couleur][On 01]
[2025-06-27 17:03:17][SCENARIO] ************FIN sous tâche**************
------------------------------------
[2025-06-27 17:04:03][SCENARIO] ************Lancement sous tâche**************
[2025-06-27 17:04:03][SCENARIO] Tags : {"#i#":1}
[2025-06-27 17:04:18][SCENARIO] - Exécution du sous-élément de type [action] : do
[2025-06-27 17:04:18][SCENARIO] Exécution de la commande [Actionneurs][Lampe couleur][Off 01]
[2025-06-27 17:04:18][SCENARIO] ************FIN sous tâche**************

Effectivement la il reprogramme les blocs en écrasant la programmation précédente car ils ont le même id :frowning:

Ca se voit dans le log par exemple pour la tache 495 :

[2025-06-27 17:00:17][SCENARIO] Tâche : 495 programmée à : 2025-06-27 17:01:17 (+ 1 min)
[2025-06-27 17:00:17][SCENARIO] Tâche : 495 programmée à : 2025-06-27 17:03:17 (+ 3 min)

C’est une fonctionnalité des blocs DANS qui est en général pratique pour éviter des programmations en double mais qui pose problème dans ton cas :confused:

@benajp ton nombre de cycle est forcément de 1 à 3 ?

On doit pouvoir le faire différemment :

  • Soit sans boucle
  • Soit en faisant un sous scénario

Merci @Aurel pour ta réponse, oui j’aimerais faire un cycle ou le répéter 2 fois ou 3 fois, au plus simple, dans une boucle.

Ca devrait se passer comme ça dans le cas de 2 cycles :

  • la tâche 495 démarre à 17h01 pendant 1 min,
  • puis la tâche 497 démarre à 17h02 pendant 1 min,
  • puis la tâche 495 redémarre à 17h03 pendant 1 min,
  • puis la tâche 497 redémarre à 17h04 pendant 1 min

Ben le souci c’est qu’avec une boucle ça ne sera pas possible …
Les blocs A et DANS utilisent l’id du bloc pour générer la tâche, or en étant dans la boucle les id de blocs resteront les mêmes …

Ce que tu peux faire, c’est mettre la partie suivante dans un autre scénario qui lui n’a aucun déclencheur, qu’on va nommer par exemple irrigation cycle

Démarrer irrigation Z1
DANS 30
  Arrêter irrigation Z1
  Démarrer irrigation z2
DANS 60
  Arrêter irrigation Z2
  Démarrer irrigation Z3
DANS 90
   Arrêter irrigation Z3
   Démarrer irrigation Z4
DANS 120
   Arrêter irrigation Z4

Donc ce scénario la ne gérera qu’une seule occurrence d’irrigation.
Il n’a pas vocation à être appelé en direct, il le sera par le scénario « père », il ne doit donc avoir ni programmation ni déclencheur.

Ensuite dans ton scénario principal, tu fais :

Lancement scénario irrigation cycle
SI nbcycle >= 2
ALORS DANS 120 minutes Lancement scénario irrigation cycle
SI nbcycle >= 3
ALORS DANS 240 minutes Lancement scénario irrigation cycle

Concrètement à l’exécution, par exemple pour 2 cycles :

Ton scénario se lance
il va appeler le scénario irrigation cycle qui va programmer le démarrage d’un cycle avec les différentes temporalités d’un cycle
vu que nbcycle est égal à 2, nbcycle >= 2 est VRAI donc il va programmer une nouvelle exécution de irrigation cycle DANS 120 minutes. Dans 120 minutes, irrigation cycle se relancera et programmera la temporalité d’un cycle.

J’avoue que c’est un peu plus compliqué mais franchement je pense que ça fera le boulot correctement, à tester

merci @Aurel, je vais tester ça et je ferai un retour

1 « J'aime »

@benajp alors tu as pu tester ?