Optimisation scénario ouverture/fermetures volets avec modes

Tags: #<Tag:0x00007fcb9b3f75f0>

Bonjour Bonjour,

je reprends une discussion mélangée à un autre sujet.
Le but ici est d’optimiser mon scénario et éviter une boucle avec plein de sleep

voilà mon scénario:
image
image
image
image
ainsi que l’autre scénario appelé par celui-ci (une boucle):
image

Le but du scénario:
ouvrir et fermer les volets fonction de 3 modes: auto, vacances et manuel.
mode auto : ouvre les volets à 7h minimum et suivant l’heure du levé du soleil (si > à 7h)
fermeture des volets après le couché du soleil à une luminosité < 5000
mode vacances : ouverture et fermeture autour de 7h du matin et autour du couché du soleil
mode manuel : ouverture et fermeture manuelle.
ajout d’un reset des heures d’ouverture/fermeture si changement d’un mode.
Aujourd’hui le scénario se lance à 6h du matin et les autres déclencheurs sont les modes

merci d’avance de votre aide

Donc avec ce que j’ai à dispo chez moi …

1er scénario qui sert de contrôleur : il se déclenche à la nuit tombée (info du plugin infoday).
image
Il ne fait qu’activer le scénario principal de fermeture des volets
image

Jusque là rien de sorcier

Le scénario des volets a son propre déclencheur : lumière inférieure à 5000
image
Au dessus de 5000 (et si pas activé), il ne peut pas se déclencher !!
image
On refait le test de la lumière en prenant soit de pas activer les répétitions (symbole stationnement interdit). Et en bonus le scénario se désactive lui-même …
Ainsi on est SUR de n’avoir qu’UNE ET UNE SEULE exécution des fermetures avec les contraintes suivant (la nuit est là ET la lumière est faible)

En complément :
Pour gérer le mode : on ajoute des IF dans la scénario n°2
Pour gérer le déclenchement aléatoire : on fait un bloc DANS avec random(0,60)

Dans la même genre d’idée on gére les actions du matin

d’accord je comprends le principe.
Par contre dans ton exemple comment je peux intégrer mes modes ?
ma fermeture en mode auto correspond à ton 5000 ca c’est ok par contre si mode vacances alors ce serait par exemple entre 0 et 30 min après le couché du soleil et le mode manuel : rien ne se fermerait si je n’appui par sur les boutons des volets.
Il faudrait arranger le scénario principal de fermeture des volets MAIS avec un reset possible des actions. Exemple à 19h l’action du mode auto se lance et donc le scénario principal de fermeture se lance. à 20h10 je change de mode le soucis c’est que le scénario principal est activé.

Si je désactive le scénario ca irait ?
je ne me suis jamais servi du « activer »

Pour gérer le mode : on ajoute des IF dans la scénario n°2

oui mais ton scénario 2 à pour déclencheur la luminosité. Hors moi selon le mode ca se déclencherait sans cette luminosité <5000 (mode vacances par exemple)
Par contre si un scénario est activé et que je change de mode. Possible de désactiver le scénario activé pour passer à l’autre mode ?

par contre dans ton 3eme imprim écran tu mets un si avec comme condition <5000 et ca je ne comprends pas car tu indiques dans le déclenchement que ca se déclenche si <5000 donc c’est redondant non ?

Un bloc DANS random(0,30) ça fera l’affaire… Tu peux déclencher un scénario à la main aussi

A mon avis c’est pas la bonne question à se poser…

  • Si tu changes de mode et que les volets sont déjà fermés il faudrait faire quoi ?
  • Si tu changes de mode et que les volets ne sont pas encore fermés il faudrait faire quoi ?

Possible mais comme je ne connais pas l’attendu… En tous les cas, un scénario pas actif= pas déclenchement

Dans le pire des cas, tu peux adapter le IF pour traiter le cas d’un déclenchement manuel
image

Oui et non.
L’idée c’est d’éviter les déclenchements pour 4999 suivi d’un autre à 4998… la fonction de non répétition est dispo dans le IF donc on s’en sert…
Il y a d’autres mécanismes (interdire les déclenchements multiples) qui pourraient marcher aussi mais l’idée c’est de faire simple pour l’instant
La désactivation du scénario en est un autre

Oui et non.
L’idée c’est d’éviter les déclenchement pour 4999 suivi d’un autre à 4998… la fonction de non répétition est dispo dans le IF donc on s’en sert…
Il y a d’autres mécanismes (interdire les déclenchements multiples) qui pourraient marcher aussi mais l’idée c’est de faire simple pour l’instant
La désactivation du scénario en est un autre

D’accord je comprends mieux. on déclenche à <5000 MAIS on ne le déclenche qu’une fois avec le si sans répétition. je gérais ca avec mon stop dans ma boucle

En fait dans mon cas j’ai mes différents mode mais j’ai du mal à comprendre par rapport à ton exemple comment ajouter le mode vacances qui ne se sert pas de la luminosité.

Dis moi si je me trompes :
mettre dans le contrôleur mes conditions (mes modes) avec comme déclencheur mon bouton de changement de mode + comme toi le déclencheur à la nuit tombée
Exemple si je mets mon slider sur mode auto il lance le contrôleur et active le scénario de fermeture dédié (déclencheur <5000 de luminosité)
si je change le slider sur mode vacances il désactive le scénario fermeture du mode auto et active le scénario fermeture du mode vacances (0 à 30 min après couché du soleil et donc sans la luminosité)
si je change par le mode manuel, il désactive le scénario du mode auto et vacances (le mode manuel m’oblige a fermer mes volets par leur bouton physique).

quant est il si un scénario est déjà désactivé et que je demande à le désactiver ?

edit: je dois aussi indiquer pour le cas du mode auto de désactiver le scenario du mode vacances

Exact

Ton mode vacances peut par exemple activer puis déclencher le scenario… C’est le cas amélioré avec la condition || trigger()='user'
On ferme les volets avec la lumière ou à la main.

Oui sur le principe ça marche à condition de compléter ou d’ajouter les IF qui vont bien

Rien… Désactiver un truc désactivé, ça laisse le truc inactif

oui les if seraient proche de ce que j’ai déjà aujourd’hui pour la verif des modes avec l’ajout en plus des désactivation des scénarios.
Aujourd’hui un mode déclenchait un DANS et A et c’était reset en cas de changement de mode pour en mettre des nouveaux. A la place du coup ce serait la désactivation d’un scénario et l’activation d’un autre.
je pense avoir compris comment faire ca

Ton mode vacances peut par exemple activer puis déclencher le scenario… C’est le cas amélioré avec la condition || trigger()='user'
On ferme les volets avec la lumière ou à la main.

Je n’ai jamais utilisé trigger() et ne sais pas trop à quoi ca sert

oui c’est globalement ça …

https://doc.jeedom.com/fr_FR/core/4.1/scenario

Jete un oeil aussi sur le plugin officiel mode… ça pourrait être une piste aussi

oui merci.
Le plugin officiel mode ne m’apportera pas grand chose par rapport à ce que j’ai déjà.
J’y avais déjà jeté un oeil.

En tout cas merci pour l’aide je vais essayer d’appliquer tes conseils d’ici quelques jours pour simplifier ce scénario

A toi de voir. C’est une bonne alternative à un scénario plein de IF/ELSE compliqués en plus de proposer un widget

A toi de voir. C’est une bonne alternative à un scénario plein de IF/ELSE compliqués en plus de proposer un widget

oui pas faux.
A la rigueur je vais créer mes différents scénarios du mode auto et vacances et les lier à ce plugin voir un peu

bon j’ai créé mes modes avec le plugin.

J’ai créé deux contrôleur un pour le jour un pour la nuit

à celui de jour j’ai associé deux conditions (pour le moment) : l’un si le mode est en Auto et l’autre si en Vacances.
le premier va activer le scenario de fermeture pour le mode auto (je n’ai pas encore fait l’ouverture), desactiver celui du mode vacances.
le scenario fermeture du mode auto a pour déclencheur la luminosité < 5000 et le scenario se base sur une condition SI avec le <5000 sans répétition et ensuite mes actions de fermeture de volets.
le second va activer le scenario de fermeture pour le mode vacances. Par contre là comment je fais pour mon déclencheur ? De base j’avais un time_op basé sur le couché du soleil avec un rand à ±15.
Mais là comment je déclenche le scénario ?
J’aurai tendance à ajouter un bloc A dans le déclencheur mais ce serait refaire comme dans mon scénario de base

Tu as mis ça dans un virtuel ?

non c’est dans mon scénario de base :
image

Mais du coup là avec ta façon de faire je ne sais pas comment faire

Bon il faut recoller les morceaux à distance, mais ça tu peux le mettre dans le controleur… C’est le bloc qui va activer le mode auto, non (et activer le scénario qui baisse les volets avec le déclencheur basé sur la lumière)?

Alors dans le controleur pour la nuit j’ai mis ca :
image
pour le mode auto pas de soucis
c’est comme je t’indiquais pour le mode vacances que ca pose problème.
Alors si je mets un bloc A je mets quoi comme déclencheur dans le scenario fermeture du mode vacances ? Et qui dit bloc A dit remove_inat en cas de changement de mode alors (ce que j’ai dans mon scenario actuel)

Le rand ±15 c’est pour le mode vacances avec un rand autour de l’heure du couché du soleil.
C’est ça que je ne sais pas trop où le mettre. Bloc A dans le contrôleur comme dit plus haut ?

Attention ce qui semble évident, ne l’est pas à distance, c’est valable pour toi, comme pour moi.
Moi je vois pas bien la différence entre la fermeture en mode vacances ou en mode auto.
Si j’ai bien compris :

  • en mode auto : ça se base sur la luminosité < 5000
  • en mode vacances, c’est un random (0,30)…

Moi j’aurai fait le même scénario… dans les 2 cas.

  • Cas auto, tu l’actives à l’heure coucher de soleil +/-15 min…
  • Cas vacances, tu actives ET tu l’exécutes à +/-30 min

Donc je mettrai un déclencheur à coucher de soleil -30 min…
Et je corrige le contrôleur en faisant :

  • Cas auto, DANS 15 min +/-15 min…, tu actives
  • Cas vacances, DANS +/-30 min tu actives ET tu l’exécutes

On est d’accord sur cette première étape ?