Scenario avec duration

Bonjour, je cherche à me servir de la fonction duration sur une ouverture de porte.
Si équipement ouvert depuis 2 min alors on execute une commande

mais je dois mal faire ou ma commande est incompléte.
merci pour votre aide

2 « J'aime »

Salut,

Dans la configuration avancée d’une commande tu as la possibilité d’indiquer quoi faire si la commande répond à une condition depuis plus de x minutes. Je te conseille de passer par là plutôt.

bonsoir merci pour la réponse
j’aurai un autre état derrière la c’est egale à 1 mais quand a la fermeture c’est 0 et dans la configuration avancé il n’y a qu’une seule possibilité.

tu peux développer ? je ne comprend pas.

pour arreter la pac, je me sers de la fonction donnée par @Bison et ca marche super bien.

quand je dis « arreter », c’est en fait pour lui lancer une consigne mini avec ventil mini pour éviter les arrets redémarrages …

Tu n’avais parlé que d’une action sur ouverture de porte.

Si tu veux faire une action également sur fermeture de la porte tu pourrais passer par un virtuel pour dupliquer la commande (en la cachant par exemple) et tu utilises cette commande dupliquée pour faire la même chose mais réagissant à la valeur 0 si plus de x minutes.

Édit :
Sinon pour ta fonction duration elle s’utilise comme ça :
duration(commande, valeur, période)
Donc par exemple SI duration(#tacommande#, 1, 2 min ago) == 2 Alors…

J’ai un doute sur le == 2 sur les 2 dernières minutes. À vérifier pour adapter.

Salut starz,

Quel est le déclencheur de ton scenario et quel est le reste de ton scenario?

Est ce que tu utilise les blocs A ou DANS?
La syntaxe de duration est

duration(commande, valeur, période) et durationbetween(commande,valeur,start,end) : Donnent la durée en minutes pendant laquelle l’équipement avait la valeur choisie sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s ou expression PHP).

cf doc : https://doc.jeedom.com/fr_FR/core/4.0/scenario#Les%20fonctions%20de%20calcul

basiquement :

  1. declencheur commande
  2. remove_inat (supp des bloc A et DANS)
  3. si commande == X alors
    3.1 DANS 2 FAIRE
    3.1.1. SI commande == X ALORS faire action (le SI est superfétatoire ici, vu le remove inat et déclencheur sans condition de valeur)

Bonjour @Bison
oui je ne m’étais pas étalé sur tout le scenario désolé voici mon scenario en copie

je voudrais arrété le split salon si l’ouverture est égale ou sup à 1 min
et je souhaiterai relancer les split salon si la fermeture est égale ou sup à 1 min
avec une consigne au redemarrage de 20 degrés

merci

Salut,

Utilises la technique de @Bben, j’aime bien faire comme ça quand il y a 2 éléments à gérer (ouverture et fermeture).

1 « J'aime »

Bonjour,
Malheureusement ce n’est pas très clair pour moi. désolé. Je débute.

Je te montre demain avec un exemple alors

Edit :

@starz91 donc, en déclencheur ton capteur d’ouverture

image

Dans le scénario les 2 conditions qui permettent en cas d’ouverture ou de fermeture d’aller revérifier dans 1mn si l’état est toujours le même c’est à dire ouvert ou fermé et d’enclencher ce qu’il faut pour la PAC.
Note1 : j’ai mis ma commande de PAC, il faut mettre la tienne bien évidemment.

Note2 : j’ai ajouté une condition dans le dernier SI pour ne pas remettre en marche la PAC si la porte a été ouverte puis refermée en moins d’une minute

Note3 : plutôt que de faire des stop de la PAC je te conseille d’abaisser la température (disons de 3 ou 4 degrés) pour éviter les ON/OFF assez inutile sur des durées courtes.

Bonsoir,

Il y a des idées dans ce sujet qui pourrait m’aider à faire ce que je désire mais j’ai un peu de mal avec le raisonnement et mon scénario actuel.

Dans mon cas il s’agit de changer la vitesse de ma VMC lorsque la lumière de ma douche est allumée.

Pour le moment le scénario dit simplement :

Si

Lumière douche allumée

Alors

VMC vitesse rapide

Sinon

Après 20 minutes VMC vitesse 1 la nuit
Après 20 minutes VMC vitesse 2 le jour

Cela fonctionne bien mais j’aimerais faire en sorte que la VMC passe sur vitesse 3 uniquement si la lumière est allumée plus de X minutes. Ceci afin de ne pas passer la vitesse 3 si nous allumons la lumière de la douche brièvement ou par inadvertance.

Pouvez-vous m’aider ?

Bonjour
Oui, petit coup de main dans problème et petite question pour commencer :
Quel est le déclencheur de ton scénario ?
Car si tu veux qu’il se mette en route quand t’allume la lumière, ca devrait etre la lumière ton déclencheur. Et donc… elle ne devrait pas etre dans le premier SI !!?

Ps: C’est vraiment mieux que rien de prévoir ce type de tempo, mais aujourd’hui un capteur de température et humidité coute moins de 15 €

Ca vaut vraiment le coup de travailler sur le taux d’humidité !

Ps2: il y a une fonction pas mal qui n’est pas en duration / age / etc et qui fonctionnerait pas mal c’est « wait » : wait inter = 0 avec un temps max à 180 secondes
Puis
Si inter = 0 alors STOP
(Si la lumière reste allumée moins de 3 minutes, le scénario s’arrête !)

Bonsoir,

Je suis entièrement d’accord avec vous.
Je vais dans un second temps investir dans un capteur d’humidité.
Cela implique aussi d’investir dans la clé USB Zigbee ou autres qui va avec.

Dans un premier temps je voulais faire avec ce que j’ai. J’essaye Jeedom depuis peu et je test dans un premier temps la stabilité du plugin qui me permet de piloter la VMC.

Mon déclencheur est le statu de la lampe de la douche (en réalité c’est le relais qui allume la lampe douche) :

Je vais chercher comment écrire ma condition IF avec le WAIT alors.

Merci pour votre aide.

Bienvenue !
Alors, alors.
Dans votre déclencheur vous pouvez ajouter #[….]# == 1
Le scénario va se lancer uniquement quand l’inter passe a On (il ne se passera rien quand il repassera a Off)
Et donc supprimer votre premier SI.

Vôtre scénario devient ainsi :
Commencer par un bloc Action avec
Ventillo en vitesse max
Wait inter = 0 temps max de 180 secondes
Si inter = 0
Alors ventillo stop
Sinon
Si time_between(#time#,0000,0600)
(Une nouvelle fonction à regarder :slight_smile: )
Alors : vitesse faible + Dans 30 min stop ventillo
Sinon : vitesse moyenne + Dans 20 min stop ventillo

Mais vous allez avoir le pb : si quelqu’un revient 10 minutes apres et reste 1 minutes, la VMC va s’arrêter… je vous laisse y réfléchir
Bonne découverte « fonctions »
Ps : je sais que la doc scénario est assez costo, mais la lire et relire, vous fera au final gagner un temps fou…)
Bonne journée et à bientôt

Hello Henri,

ça ne va pas trop le faire ce que tu proposes :

  • En modifiant le déclencheur : S’il éteint sa lumière au bout de 45mn, plus rien ne redéclenchera le scénario de @NicFlo pour que la vitesse de la VMC change

  • En démarrant le scénario par la vitesse max puisque c’est justement ce qu’il veut éviter :blush:

J4aurais donc tendance à laisser comme il avait fait et ajouter un wait de 180 secondes, comme tu l’as proposé, mais avant le passage en vitesse max donc sous le 1er SI

Je m’étais dit qu’un ptit coup d’air frais si quelqu’un etait la 1 minutes etait pas mal
Et que la régulation allait se faire au bout de 3 minutes sinon.
(Chez moi les toilettes sont dans la SDB…)
Mais sinon complètement d’accord avec toi
Merci bison et bonne journée à toi !

NB: je viens de comprendre !
Autant pour moi !
Il régule que quand l’inter repasse à 0 !!!
:+1:

Bonjour,

Merci pour vos idées, remarques, commentaires.

Pour informations, ma salle de bain est composée de spots plafonds (lumière générale), spots meuble miroir/pharmacie et un spot dans la douche. Celle-ci est encastrée entre 3 murs et nous allumons le spot douche uniquement pour prendre une douche que ce soit le jour ou la nuit vu le peu de luminosité qu’il y a dans celle-ci.

Nous avons une petite fille de 6 ans qui parfois se trompe d’interrupteur…

Dès que la lumière = 1, la VMC passe sur 3.

Dès que la lumière = 0, la VMC passe sur 2 ou 1 en fonction du jour ou de la nuit.

D’où le fait que mon scénario basique ne convient pas.

J’aurai besoin,

  • D’avoir un délai sur la lumière douche = 1, la VMC passe sur 3.
  • By passer la partie dès que la lumière = 0, la VMC passe sur 2 ou 1 en fonction du jour ou de la nuit si la lumière douche = 1 et puis =0 dans le laps de temps qui serait définis plus haut.

J’ai fait un test avec WAIT comme ceci, cela ne fonctionne pas car j’imagine que ce n’est pas la bonne façon de procéder.

Bonne après midi.

En effet, il faut procéder comme indiquer par Henri (pour la partie wait du moins).

Le principe c’est de dire au scénario : attendons que la condition #[Salle de bain][Douche][Etat] soit revenu à 0. Quand c’est le cas ou si on dépasse le délais d’attente de 3mn (180 secondes) alors on continue le scénario.

A ce moment on test l’état de #[Salle de bain][Douche][Etat]. S’il vaut zéro c’est que c’était une mauvaise manip et on stoppe le scénario, sinon on poursuit et on passe donc en vitesse rapide.

Ce qui donne pour le début :

SI #[Salle de bain][Douche][Etat] == 1
	WAIT #[Salle de bain][Douche][Etat] == 0 pendant 180
	SI #[Salle de bain][Douche][Etat] == 0
		stop
	#[..][..][Vitesse rapide]#
SINON
....

Attention dans ton bloc SINON, dans l’esprit comme tu as mis des <= et >= dans le 1er SI du SINON, s’il est pile minuit ou pile 6h, c’est la vitesse moyenne qui sera sélectionné et non pas la vitesse lente.

C’est pas très important mais dans l’idée tu n’es sensé avoir un signe = que pour l’un des 2 SI de ton bloc SINON

J’ai modifié comme je crois avoir compris :

J’ai volontairement diminué les délais afin de pouvoir tester les comportements.
C’est une VMC double flux, je ne peux pas la stopper. La vitesse de celle-ci c’est soit 1,2,3.

J’ai un peu de mal à lire ces logs mais le résultat semble bien être ce que je désire.

Si lumière douche =1 < 60 secondes, j’ai ceci comme retour et la VMC passe ou reste ? sur vitesse moyenne :

Vu le retour de ce log, la VMC repassera toujours sur vitesse moyenne jour et nuit ou alors je dois encore ajouter des conditions de temps pour l’action à prendre si lumière douche = 1 < 60 secondes ?

------------------------------------
[2023-12-11 16:30:41][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Salle de bain][Douche][Etat] (1).
[2023-12-11 16:30:41][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salle de bain][Douche][Etat]# == 1  
[2023-12-11 16:30:41][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2023-12-11 16:30:41][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-12-11 16:31:03][SCENARIO] [Wait] Condition valide : 0 == 0 => 1
[2023-12-11 16:31:03][SCENARIO] Exécution d'un bloc élément : 32
[2023-12-11 16:31:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salle de bain][Douche][Etat]# == 0
[2023-12-11 16:31:03][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2023-12-11 16:31:03][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-12-11 16:31:03][SCENARIO] Exécution de la commande [Local Technique][Zehnder ComfoD 350][Vitesse moyenne]
[2023-12-11 16:31:03][SCENARIO] Exécution d'un bloc élément : 33
[2023-12-11 16:31:03][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salle de bain][Douche][Etat]# == 1
[2023-12-11 16:31:03][SCENARIO] Evaluation de la condition : [0 == 1] = Faux
[2023-12-11 16:31:03][SCENARIO] Exécution du sous-élément de type [action] : else
[2023-12-11 16:31:03][SCENARIO] Fin correcte du scénario

Si lumière douche =1 >= 60 secondes, j’ai ceci comme retour et la VMC passe sur vitesse rapide :

------------------------------------
[2023-12-11 16:40:36][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Salle de bain][Douche][Etat] (1).
[2023-12-11 16:40:36][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salle de bain][Douche][Etat]# == 1  
[2023-12-11 16:40:36][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2023-12-11 16:40:36][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-12-11 16:41:37][SCENARIO] [Wait] Condition valide par dépassement de temps : 1 == 0 => 
[2023-12-11 16:41:37][SCENARIO] Exécution d'un bloc élément : 32
[2023-12-11 16:41:37][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salle de bain][Douche][Etat]# == 0
[2023-12-11 16:41:37][SCENARIO] Evaluation de la condition : [1 == 0] = Faux
[2023-12-11 16:41:37][SCENARIO] Exécution du sous-élément de type [action] : else
[2023-12-11 16:41:37][SCENARIO] Exécution d'un bloc élément : 33
[2023-12-11 16:41:37][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salle de bain][Douche][Etat]# == 1
[2023-12-11 16:41:37][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2023-12-11 16:41:37][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-12-11 16:41:37][SCENARIO] Exécution de la commande [Local Technique][Zehnder ComfoD 350][Vitesse rapide]
[2023-12-11 16:41:37][SCENARIO] Fin correcte du scénario

Si lumière douche =0 après >= 60 secondes, j’ai ceci comme retour, après 1 minutes, elle repasse sur vitesse moyenne :

------------------------------------
[2023-12-11 16:42:24][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Salle de bain][Douche][Etat] (0).
[2023-12-11 16:42:25][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salle de bain][Douche][Etat]# == 1  
[2023-12-11 16:42:25][SCENARIO] Evaluation de la condition : [0 == 1] = Faux
[2023-12-11 16:42:25][SCENARIO] Exécution du sous-élément de type [action] : else
[2023-12-11 16:42:25][SCENARIO] Exécution d'un bloc élément : 26
[2023-12-11 16:42:25][SCENARIO] Exécution du sous-élément de type [condition] : if #time#<= 0000 OU #time#>= 0600
[2023-12-11 16:42:25][SCENARIO] Evaluation de la condition : [1642<= 0000 OU 1642>= 0600] = Vrai
[2023-12-11 16:42:25][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-12-11 16:42:25][SCENARIO] Exécution d'un bloc élément : 27
[2023-12-11 16:42:25][SCENARIO] Exécution du sous-élément de type [condition] : in 1
[2023-12-11 16:42:25][SCENARIO] Evaluation de la condition : [1] = 1
[2023-12-11 16:42:25][SCENARIO] Tâche : 27 programmée à : 2023-12-11 16:43:25 (+ 1 min)
[2023-12-11 16:42:25][SCENARIO] Exécution d'un bloc élément : 29
[2023-12-11 16:42:25][SCENARIO] Exécution du sous-élément de type [condition] : if #time#>= 0000 ET #time#<= 0600
[2023-12-11 16:42:25][SCENARIO] Evaluation de la condition : [1642>= 0000 ET 1642<= 0600] = Faux
[2023-12-11 16:42:25][SCENARIO] Exécution du sous-élément de type [action] : else
[2023-12-11 16:42:25][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-12-11 16:43:02][SCENARIO] ************Lancement sous tâche**************
[2023-12-11 16:43:25][SCENARIO] Exécution du sous-élément de type [action] : do
[2023-12-11 16:43:25][SCENARIO] Exécution d'un bloc élément : 28
[2023-12-11 16:43:25][SCENARIO] Exécution de la commande [Local Technique][Zehnder ComfoD 350][Vitesse moyenne]
[2023-12-11 16:43:25][SCENARIO] ************FIN sous tâche**************

Il faut maintenant que je me penche alors sur la condition temps qui pourrait apparemment être améliorée.

Je lis la doc concernant les scénarios Jeedom, mais cette forme de logique n’est pas ultra évidente pour moi.

Bison, Henri, un tout grand merci à vous !

C’est bien comme ça qu’il faut l’écrire oui.

Là par contre, j’avais pas fait comme ça mais si tu veux tu peux parfaitement laisser comme tu as fait.

Par contre, comme ça, si la vitesse était réglé sur « lente » et qu’il y a erreur d’allumage (passage de 1 à 0 en moins de 60 secondes) alors elle passera en vitesse moyenne.

En faisant juste :

	SI #[Salle de bain][Douche][Etat] == 0
		stop
	#[..][..][Vitesse rapide]#

Si l’état repasse à 0 le scénario ne poursuivra pas son exécution donc aucune action sur la VMC, elle restera « lente » si elle était « lente » et « moyenne » si elle était « moyenne ».

Par contre si l’état reste à 1 au bout des 60 secondes (pas d’erreur d’allumage) alors la vitesse passera en « rapide ». Pas besoin de faire un test avec un SI.

Enfin encore une fois c’est pour optimiser et pour que tu comprennes mais ce que tu as fait là fait le job.