Scénario complexe

Hello,
J’aimerai créer un scénario avec les objects suivant:

  • Détecteur ouverture/fermeture porte
  • Ampoule zwave
    J’ouvre la porte, la lumière de la pièce s’allume et elle reste allumé même après avoir refermé la porte. X temps après être resté dans la pièce, j’ouvre la même porte, la lumière dois s’éteindre.
    Grossomodo, comme si il y avait un détecteur de présence dans la pièce.
    Bien évidement, je ne veux pas mettre de détecteur de présence.
    Un petit coup de pouce serai la bienvenue, merci :slight_smile:

Salut
Pour t’aider il faudrait déjà voir ce que tu as fait.
De mon côté j’utiliserai une variable pour bloqué l’allumage après la première ouverture.
A la seconde ouverture repasser cette variable à 0 après l’extinction de la lumière

Dams

ça m’a l’air d’être une bonne idée mais comment créer cette variable ? :sweat_smile:

Bon, chat GPT me conseil de faire ça:
1ère fois que je l’utilise pour créer un scénario, je vous tiens au jus :slight_smile:

Pour créer un scénario dans Jeedom qui réalise les actions que vous décrivez, nous allons utiliser une variable pour garder une trace de l'état de la lumière. Voici comment procéder :

Étape 1 : Créer la variable

Allez dans le menu "Objets" dans la barre de navigation de gauche.
Sélectionnez la catégorie ou la pièce dans laquelle vous souhaitez créer la variable, ou utilisez la racine "Aucun objet".
Cliquez sur l'onglet "Variables".
Cliquez sur "Ajouter une variable".
Remplissez les informations de la variable :
Nom : Donnez un nom significatif, par exemple "Etat_Lumiere".
Type : Sélectionnez "Binaire".
Valeur par défaut : Définissez la valeur par défaut sur "0" (pour éteint).
Sauvegardez la variable.
Étape 2 : Créer le scénario

Allez dans le menu "Scénarios" dans la barre de navigation de gauche.
Cliquez sur "Ajouter un scénario".
Donnez un nom à votre scénario, par exemple "Contrôle de la lumière avec la porte".
Dans l'éditeur de scénario, configurez les déclencheurs et les actions comme suit :
Déclencheurs :
Cliquez sur "Ajouter un déclencheur".
Sélectionnez le déclencheur "Porte" et choisissez "Ouverture" comme événement.
Sauvegardez le déclencheur.
Actions :
Cliquez sur "Ajouter une action".
Sélectionnez "Affecter une valeur à une variable".
Choisissez la variable "Etat_Lumiere" que vous avez créée précédemment.
Affectez la valeur "1" (pour allumé).
Sauvegardez l'action.
Cliquez sur "Ajouter une autre action".
Sélectionnez "Scénario" -> "Dans un autre scénario" -> "Nom du scénario actuel".
Sauvegardez l'action.
Cliquez sur "Ajouter une autre action".
Sélectionnez "Attendre" et spécifiez la durée pendant laquelle vous souhaitez que la lumière reste allumée après avoir fermé la porte (par exemple, 60 secondes).
Sauvegardez l'action.
Cliquez sur "Ajouter une autre action".
Sélectionnez "Affecter une valeur à une variable".
Choisissez la variable "Etat_Lumiere".
Affectez la valeur "0" (pour éteint).
Sauvegardez l'action.
Enregistrez le scénario une fois que vous avez terminé de configurer les déclencheurs et les actions.
Ce scénario devrait maintenant fonctionner selon la logique que vous avez décrite :

Lorsque vous ouvrez la porte, la lumière s'allume.
Lorsque vous refermez la porte, la lumière reste allumée pendant un certain temps (60 secondes dans cet exemple).
Si vous ouvrez à nouveau la porte pendant cette période, la lumière s'éteint avant la fin du délai de 60 secondes.```

Inutile de créer une variable. ce que tu souhaites, c’est faire un toggle sur l’allumage de la lumière (à chaque fois que le détecteur passe à 1, j’allume, ou j’éteins en fonction du statut précèdent … avec une petite différence, tu ne souhaites pas éteindre si allumé depuis moins de X secondes

Scenario :
Déclencheur : détecteur ouverture == 1
Scenario :

SI ( Etat Lampe == 0 ) ALORS
    Allumer la lampe
SINON 
     SI ( stateDuration(Etat Lampe) >= XX )  ALORS   // XX est le nb de secondes de ta temporisation)
           Eteindre la lampe

Explication :
Je declenche, dès que la porte s’ouvre
Si la lampe est éteinte, je l’allume
Si la lampe es allumée, je regarde le dernier changement d’état et si il est supérieur à XX s, j’éteins la lampe

Norbert

Merci pour le coup de main :slight_smile:
Un truc dans ce genre ?

ça a l’air bon
Si cela fonctionne, merci de coché le post qui vous a permis de résoudre le problème

Dams

il faut que la commande soit entre () pour le stateduration

stateduration(#[ma][super][commande]#)

Il faut aussi que la commande soit historisée je crois

Norbert

merci pour votre aide, mais il doit y avoir un souci quelque part.
La ventilation se lance bien, mais elle ne se coupe pas. (j’ai mis 10 sec pour test)
La commande est bien historisé.


------------------------------------
[2023-07-24 11:41:44][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Salle de bain][Sensor Salle de Bain][Porte] (1).
[2023-07-24 11:41:44][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Salle de bain][Ventilation et Spots][Etat Ventilation]# == 0
[2023-07-24 11:41:44][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2023-07-24 11:41:44][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-07-24 11:41:44][SCENARIO] Exécution de la commande  [Salle de bain][Ventilation et Spots][On Ventilation]
[2023-07-24 11:41:44][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-07-24 11:41:48][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Salle de bain][Sensor Salle de Bain][Porte] (0).
[2023-07-24 11:41:48][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Salle de bain][Ventilation et Spots][Etat Ventilation]# == 0
[2023-07-24 11:41:48][SCENARIO] Evaluation de la condition : [1 == 0] = Faux
[2023-07-24 11:41:48][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-07-24 11:41:48][SCENARIO] Exécution d'un bloc élément : 18
[2023-07-24 11:41:48][SCENARIO] - Exécution du sous-élément de type [condition] : if stateduration(#[Salle de bain][Ventilation et Spots][Etat Ventilation]#)>= 10
[2023-07-24 11:41:48][SCENARIO] Evaluation de la condition : [4>= 10] = Faux
[2023-07-24 11:41:48][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-07-24 11:41:48][SCENARIO] ```

Sauf que si déjà quelqu’un de présent donc lumière allumée et qu’une seconde personne ouvre a nouveau la porte la lumière va s’éteindre non :thinking:

j’y est pensée, puis je me suis dit…aller, étape par étape, déja si j’arrive à faire ça, c’est déja pas mal :slight_smile:
Je verrai pour la 2ème personnes :sweat_smile:

POu rmoi, tu as reouvert la porte 4s après l’avoir refermée.
donc 4 < 10, pas d’extinction

EDIT : je raconte n’importe quoi !!! tu as laisser allumer la lampe 4s

En faite j’ai refermé la porte 4 sec après l’avoir ouverte

donc c’est OK, tu as refermé 4s après l’ouverture donc pas d’extinction
ON est d’accord que la fermeture de la porte n’eteint rien, c’ets la reouverture qui eteint ?

1 « J'aime »

Oui, mais la condition de couper la ventilation après 10sec n’est pas remplie

Désolé, je ne comprends pas. La condition n’est pas remplie (4 est inferieur à 10s), donc il est normal que la ventilation ne se coupe pas

Je raconte nimp :slight_smile:

Du coup, voilà ce qui se passe:

Ouverture = Ventilation ON → OK
Fermeture = Ventilation ON → OK
Réouverture = Ventilation OFF → OK
Re-fermeture = Ventilation ON → KO

Donc il n’y a que refermer qui pose problème, il ne faut pas que la ventilation se relance quand je referme la porte.

Tu as bien mis == 1 a ton déclencheur ?
Screenshots de la première page de ton scénario
Norbert

Je ne comprend pas, tu parle de quel déclencheur ?
Parce que plus haut tu dit

Citation SI ( Etat Lampe == 0 ) ALORS
Allumer la lampe

Qu’on soit bien d’accord, j’utilise un détecteur Aeotec ouverture/fermeture comme déclencheur, dans paramètres Général->Mode scénario->Provoqué->Évènement.
Sur ce déclencheur ont ne peut rien indiquer.

Ensuite c’est dans le bloc « SI » que j’ajoute → SI ( Etat Lampe == 0 ) ALORS Allumer la lampe

Si si, dans ce champ paramètres Général->Mode scénario->Provoqué->Évènement. tu peux très bien mettre après « == 1 »

Ainsi, ton scenario ne se lance que si la valeur est == 1 à pas à chaque chgt de valeur … Pratique

1 « J'aime »