Scénario avec de multiples SI imbriqués : comment l'optimiser sans répéter les blocs?

Bonjour, j’aurais besoin d’un petit coup de pouce sur l’optimisation d’un scénario :
Je n’ai pas de soucis avec le fonctionnement ou le jargon mais il me manque la bonne logique.

Pour ouvrir mes volets, j’ai de nombreuses conditions (je simplifie en enlevant les conditions de temp°, de présence et de saison) :

 Au lever du soleil :
      Si le temps sera très nuageux → ouvrir à 100%
      Si le temps sera nuageux → ouvrir à 60%
      Si le temps sera peu nuageux → ouvrir à 40%
      Si le temps sera très ensoleillé → ouvrir à 20%          

Je ne voudrais pas que ces conditions s’exécutent systématiquement au lever du soleil (à 6h00, l’été, je dors encore) Mais uniquement à partir de 8h00 seulement SI le lever est prévu avant 8h00 (SINON, à l’heure du lever).

Comment donc traduire cela dans mon scénario :
SI lever de soleil avant 8h00, on attend 8h00 et on exécute TOUT
SINON, on execute tout immédiatement au lever

sans avoir à appeler un autre scénario ou à répéter les MEMES blocs dans le SI et le SINON ?
Les commandes wait ? remove_inat ? autres ?

Merci d’avance pour vos conseils :wink:

Hello
Pour la fermeture de mes volets, voila ce que je fait dans mon scénario journalier (à 4:00)

$Heure = $scenario->getData('Heure_Coucher');
if ($Heure <= 1930) { $Heure = 1930; }
$scenario->setData('H_Scenario_Volets',$Heure); 

Et je fait A: H_Scenario_Volets
pour lancer mon scénario qui gère la fermeture, mais tu peux le faire avec le même scénario

Bonjour,

Bloc SI :
#condition1# == A AND #condition2# > B OR (#condition3# == C)
Et ainsi de suite.

En Français (pour raisonner, il n’y a pas mieux) :
Si la condition1 est = à A ET la contidion2 est plus petite que B OU (#condition3# est = à C)

Il est possible de combiner dans une même condition.

Merci pour vos réponses.
Je ne suis pas sur que cela soit ma solution, je n’ai pas de soucis pour lancer le scénario ni même pour gérer les conditions. Je veux juste éviter de recopier l’ensemble de mes conditions à cause d’UNE seule condition initiale…

Ou alors je n’ai pas compris vos réponses :sweat_smile:

Voilà ce qui fonctionne, mais qui n’est pas optimisé :

 Si lever du soleil avant 8h00 :
      Attendre 8h00, puis :
        Si condition1 → ouvrir à 100%
        Si condition2 → ouvrir à 60%
        Si condition3→ ouvrir à 40%
        Si condition4 → ouvrir à 20% 

Si NON (et donc, lever du soleil après 8h)
        Si condition1 → ouvrir à 100%
        Si condition2 → ouvrir à 60%
        Si condition3→ ouvrir à 40%
        Si condition4 → ouvrir à 20%

En fait, je veux trouver un moyen d’éviter de recopier le même bloc de conditions 1 à 4 .

C’est surement tout bête mais je bloque là dessus !
Merci :wink:

Salut.

Pourquoi ne pas couper ce scénario en 2 ?

  • Scénario 1 que tu lances à 7h50 tt les jours par exemple.
    Tu lances un bloc A du scénario 2 planifié avec le résultat du max entre l’heure de lever du soleil et 8h

    image
------------------------------------
[2020-06-02 21:57:06][SCENARIO] Start : Scénario lancé manuellement.
[2020-06-02 21:57:06][SCENARIO] Exécution du sous-élément de type [condition] : at
[2020-06-02 21:57:06][SCENARIO] Evaluation de la condition : [800] = 800
[2020-06-02 21:57:06][SCENARIO] Tâche : 907 programmée à : 2020-06-03 08:00:00
[2020-06-02 21:57:06][SCENARIO] Fin correcte du scénario

  • Scénario 2
    Tu y places tes conditions 1 à 4…

Il faut pas rêver, tu ne va pas pouvoir faire tout dans 1 scénario ET ne pas avoir à dupliquer les actions…

Salut,
Effectivement, cette solution fonctionnera mais le soucis est que j’ai 7 volets qui on chacun leur scénario de monté ET de descente donc je ne me vois pas tout doubler à cause de ça…

Il n’existe vraiment pas de solution avec un wait ou autre ? c’est sans appel ? :sweat_smile:

Du genre :

Si condition1 → wait puis A
Si NON → A

sans répéter « A » au sein du même scénario ? le remove_inat ne me permettrait justement pas de supprimer un A / DANS ?

Il me semble que c’est exactement mon exemple
$Heure = lever soleil
Si $heure < 8h00 alors $heure = 8h00
A $heure faire
Si condition1 → ouvrir à 100%
Si condition2 → ouvrir à 60%
Si condition3→ ouvrir à 40%
Si condition4 → ouvrir à 20%

Comme quoi il faut bien détailler son besoin … On découvre que tu veux faire ça 7 fois… Bref…

Si tu ouvres/fermes tous tes volets en même temps, rien n’empêche de faire 2 scenario (M et D) pour tes 7 volets …4 conditions pour 7 actions à chaque fois c’est pas infaisable.
Question bonus : 50% ouvert ou 50% fermé c’est différent ? c’est pas un moyen de ne faire qu’un scénario

L’autre solution c’est de passer par un plugin… Volets (celui de @mika-nt28 que j’ai) ou l’officiel. Tu pourra faire tes 7 programmations avec un tas de conditions…

En dernier choix, te farcir tout avec un bloc code… Là c’est une question de niveau. C’est jouable mais pour un débutant c’est pas simple du tout…