Débutant : galère écriture scénario ouvertures

Bonjour,
Je n’arrive pas à faire fonctionner mon scénario de par mon caractère « noob » sur jeedom et des soucis en algo …
Je n’arrive pas à voir ce qui me bloque

Mon installation : 8 détecteurs d’ouvertures aquara sur 8 fenêtres / portes accessibles

Ce que je veux faire en français :

  • Si une fenêtre (ou porte) est ouverte, on attend 10 secondes.
    Si après 10 secondes la fenêtre est refermée : envoi notif sur mon tel O/F de l’ouverture
    Si après 10 secondes la fenêtre est restée ouverte : envoi notif sur mon tel : fenêtre ouverte

  • Si une fenêtre (ou porte) est refermée on envoi une notif sur mon tel

Le bloc fonctionne très bien si je fais un scénario par ouverture,
Si je tente de regrouper sur un seul scénario j’ai un problème que je n’arrive pas à résoudre :

Imaginons que le déclencheur soit la 4ème ouverture sur les 8,
Il va tester les 3 précédentes (voir screenshot) et m’envoyer une notif fermée sur les 3 ouvertures précédentes

Ce que je cherche à faire :
Comment lui dire d’ignorer les bloc qui ne sont pas liés au déclencheur ?

le scénario :

  • Nom du scénario : Ouvertures du bas

  • Mode du scénario : provoke

    • Evènement : #[Périmétriques][Bureau][Ouverture]#
    • Evènement : #[Périmétriques][ChambreAmi1][Ouverture]#
    • Evènement : #[Périmétriques][ChambreAmi2][Ouverture]#
    • Evènement : #[Périmétriques][HubEscalier][Ouverture]#
    • Evènement : #[Périmétriques][SalonBas droite][Ouverture]#
    • Evènement : #[Périmétriques][SalonBas Gauche][Ouverture]#
    • Evènement : #[Périmétriques][SalonBas Porte][Ouverture]#
SI #[Périmétriques][Bureau][Ouverture]# == 1  
ALORS
 (sleep) Pause de  : 10
     
    SI #[Périmétriques][Bureau][Ouverture]# == 0 
    ALORS
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Bureau O\/F","message":"ouverture fermeture fen\u00eatre du bureau"}
    SINON
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Ouverture du bureau !","message":"Fen\u00eatre ouverte"}
SINON
 #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"fen\u00eatre bureau ferm\u00e9e","message":""}

SI #[Périmétriques][ChambreAmi2][Ouverture]# == 1  
ALORS
 (sleep) Pause de  : 10
     
    SI #[Périmétriques][ChambreAmi2][Ouverture]# == 0 
    ALORS
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Chambre d'ami 2 O\/F","message":"ouverture fermeture fen\u00eatre chambre ami 2"}
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Chambre d'ami 2 Ouverte","message":"Fen\u00eatre ouverte"}
    SINON
SINON
 #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"chambre ami 2 ferm\u00e9e","message":""}

SI #[Périmétriques][ChambreAmi1][Ouverture]# == 1  
ALORS
 (sleep) Pause de  : 10
     
    SI #[Périmétriques][ChambreAmi1][Ouverture]# == 0
    ALORS
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Chambre d'ami 1 O\/F","message":"ouverture fermeture fen\u00eatre chambre ami 1"}
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Chambre d'ami 1 Ouverte","message":"Fen\u00eatre ouverte"}
    SINON
SINON
 #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"chambre ami 1 ferm\u00e9e","message":""}

SI #[Périmétriques][SalonBas droite][Ouverture]# == 1  
ALORS
 (sleep) Pause de  : 10
     
    SI #[Périmétriques][SalonBas droite][Ouverture]# == 0
    ALORS
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Salon bas droite O\/F","message":"ouverture fermeture salon bas droite"}
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Salon bas droite ouverte","message":"fen\u00eatre ouverte"}
    SINON
SINON
 #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"salon bas droite ferm\u00e9e","message":""}

SI #[Périmétriques][SalonBas Gauche][Ouverture]# == 1  
ALORS
 (sleep) Pause de  : 10
     
    SI #[Périmétriques][SalonBas Gauche][Ouverture]# == 0
    ALORS
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"salon bas gauche O\/F","message":"ouverture fermeture salon bas gauche"}
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"salon bas gauche ouverte","message":"fen\u00eatre ouverte"}
    SINON
SINON
 #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"salon bas gauche ferm\u00e9e","message":""}

SI #[Périmétriques][SalonBas Porte][Ouverture]# == 1  
ALORS
 (sleep) Pause de  : 10
     
    SI #[Périmétriques][SalonBas Porte][Ouverture]# == 0
    ALORS
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Salon bas porte O\/F","message":"porte ouverte ferm\u00e9e"}
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Salon bas porte ouverte","message":"porte ouverte"}
    SINON
SINON
 #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"salon bas porte ferm\u00e9e","message":""}

SI #[Périmétriques][HubEscalier][Ouverture]# == 1  
ALORS
 (sleep) Pause de  : 10
     
    SI #[Périmétriques][HubEscalier][Ouverture]# == 0
    ALORS
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Hub escalier O\/F","message":"fen\u00eatre ouverte \/ ferm\u00e9e"}
     #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"Hub escalier ouverte","message":"fen\u00eatre ouverte"}
    SINON
SINON
 #[Mobiles][thomas][Bas]# - Options : {"enable":"1","background":"0","title":"fen\u00eatre hub escalier ferm\u00e9e","message":""}

une capture d’écran de 2 des blocs (les 6 suivants sont similaires) :

Rien à voir mais vue ton screen tu semble être sur une vielle version de Jeedom. Vue que tu débute, il vaudrai mieux passer en v4 je pense, beaucoup d’évolutions …
https://doc.jeedom.com/fr_FR/core/4.1/changelog#4.0.0
https://doc.jeedom.com/fr_FR/core/4.1/changelog#4.1.0

Effectivement, je n’ai pas MAJ la box jeedom depuis cet été, j’avais mis le projet en pause.
Je vais le faire tout de suite.

Bonjour,
Parfois, le mieux est l’ennemi du bien :slight_smile: si ça fonctionne avec 1 scénario par ouverture, surtout ne touche plus!
Bon si tu a vraiment besoin de tout regrouper dans 1 seul scénario, peut être vaut-il mieux passer par un bloc de code avec une variable qui porte le nom de la porte / fenêtre à tester, et faire une boucle sur un tableau… C’est un peu plus pointu je ne crois pas que le scénario de base gère les variables tableaux.

Normal car dans ton SI tu fait si ouver… sinon notif
Il faudrait faire
Si ouvert alors
sleep 10
SI encore ouvert, SINON

çà y’est tu l’a perdu… Le titre commence par Débutant :wink:

:smiley:
Disons que j’ai encore du mal à appréhender l’environnement de Jeedom mais j’ai quelques bases d’algo,

J’ai réussi à trouver le problème ( lol ) mais disons que je cherche une solution intermédiaire entre trop complexe (qui me forcerait à vraiment faire du très pointu et y passer des heures) et une solution simple mais très encombrante dans le nombre de scénarios (j’ai donc 8 ouvertures sur un étage et 6 sur l’autre …)

@kiboost il faut que je test sur le papier j’aurai du y penser …
Bon bien sûr, Bouygues est dans la mouise aujourd’hui, j’ai une connexion délirante, donc la MAJ prendre une plombe, mais je test ça … merci pour les réponses

Après, une autre idée que j’ai eu au départ aurait été de simplifier le code du scénario :

Mode du scénario : provoke

Evènement : #[Périmétriques][Bureau][Ouverture]#
Evènement : #[Périmétriques][ChambreAmi1][Ouverture]#
Evènement : #[Périmétriques][ChambreAmi2][Ouverture]#
Evènement : #[Périmétriques][HubEscalier][Ouverture]#
Evènement : #[Périmétriques][SalonBas droite][Ouverture]#
Evènement : #[Périmétriques][SalonBas Gauche][Ouverture]#
Evènement : #[Périmétriques][SalonBas Porte][Ouverture]#

stocker lequel a déclencher et le transformer en message pour ne faire qu’un bloc code qui s’adapte, mais je pense que ca va rejoindre la solution du tableau : il faudrait comparer la variable stockée dans le déclenchement à des variables pré établies quelque part
Je n’ai pas creusé, mais je suppose qu’on ne peut pas récupérer le numéro de la ligne du déclencheur directement ?

regarde du coté des trigger

Bonjour,

Une des questions qui va se poser rapidement c’est le temps de réponse de ton algorithme.

Si tu insères en chaque ouverture un temps de pause de 10" et si plusieurs fenêtres s’ouvrent la dernière sera notifiée au bout de n * 10".

En utilisant le tag #trigger# il est possible de factoriser le code et en cochant le multi-lancement il sera possible d’excuter les actions en parallèle.

Avec 7 fenêtres et pas pas de si alors sinon le codage Jeedom devient vite difficilement maintenable.
Par exemple, imagine que to pour chaque ouverture tu décides d’activer une autre action avec une condition. Il faudra le répliquer autant de fois etc…

Le mieux serait un scénario déclencheur qui capte l’ouverture et qui active en mode asynchrone un deuxième scénario qui fera les différents test et pause et notification.

A+
Bernard

Voilà un exemple de codage.
Pour le tester, j’ai créé trois virtuelles vi_1, vi_2, vi_3 avec chacun un état et deux boutons actions on et off.

J’ai créé un scénario qui simule l’appui sur les trois boutons on.
J’ai créé un scénario qui filtre les événements on des virtuels et qui exécute les actions ad hoc.

Voici une copie d’écran du scénario qui réagit aux événements on des virtuels:


A noter : multi-lancement et filtre des événement de type on ==> état == 1 on ne s’intéresse pas à l’état off.

Voici une copie des actions (simplifiées) à éxecuter :

J’ai réalisé un test pour vérifier le fonctionnement:

Le premier test j’ai activé simultanément les trois boutons On des virtuels et j’ai laissé passer le délai.

Le deuxième test j’ai activé à nouveau les trois boutons on mais avant l’expiration du délai j’ai appuyé sur le off des deux premiers virtuels.

Voici le log de l’éxecution du scénario.

A+
Bernard

1 « J'aime »

Ok, j’ai regardé un peu le fichier log, il n’envoie la notif que si la variable n’est pas mise sur off.

si je comprend bien :

#trigger# représente le déclencheur mais on peut utiliser cette commande #trigger#pour le remplacer par le nom du déclencheur sur le message envoyé, et en même temps, il stock une valeur (0 ou 1) pour chaque déclencheur en interne ?

Donc si je veux l’adapter à mon système, je remplace les virtuelles par mes capteurs d’ouverture ?

(Région puy de dome > problème j’ai plus de net et je suis en pleine maj jeedom vers v4 je peux pas essayer en ce moment) -.-

Oui, c’est tout à fait cela.
J’ai utilisé pour l’exemple des virtuels pour lesquels je peux déclencher leur état à la volée.

Que se passe-t-il dans le Puy de Dôme ?

A+
Bernard

Ok, je vais donc essayer d’adapter ce que tu as fait à mes ouvertures.

Depuis ce matin la région autour de Clermont a un problème avec Bouygues, ma connexion fibre affiche un débit descendant de 0.5 mb/s
Sauf que j’avais lancé la mise à jour de ma jeedom vers V4 et du coup il essaye en vain de télécharger le paquet mais ça boucle car trop lent donc téléchargement coupé … :smiley:

Je suis donc en télétravail sans net :stuck_out_tongue:

Il faut prendre patience.

Je suis également sur Clermont mais chez Sfr.
Pour ma part, je n’ai pas constaté de problème internet.

A+
Bernard

Bon, j’ai récupéré internet, j’ai mis à jour jeedom en 4.1 et je me suis repenché sur mon script

@Bercolly après avoir tenté vainement d’adapter ton idée à mon installation j’obtient ça :

[2021-02-08 20:47:34][SCENARIO] Start : Scenario lance manuellement.
[2021-02-08 20:47:34][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-02-08 20:47:34][SCENARIO] Log : user -> 
[2021-02-08 20:47:34][SCENARIO] Pause de 10 seconde(s)
[2021-02-08 20:47:44][SCENARIO] Log : user -> 
[2021-02-08 20:47:44][SCENARIO] Exécution d'un bloc élément : 71
[2021-02-08 20:47:44][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-02-08 20:47:44][SCENARIO] Evaluation de la condition : [ == 1] =  == 1
[2021-02-08 20:47:44][SCENARIO] Expression non valide :  == 1
[2021-02-08 20:47:45][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-02-08 20:50:52][SCENARIO] Start : Scenario lance manuellement.
[2021-02-08 20:50:52][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-02-08 20:50:52][SCENARIO] Log : user -> 
[2021-02-08 20:50:52][SCENARIO] Pause de 10 seconde(s)
[2021-02-08 20:51:02][SCENARIO] Log : user -> 
[2021-02-08 20:51:02][SCENARIO] Exécution d'un bloc élément : 71
[2021-02-08 20:51:02][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-02-08 20:51:02][SCENARIO] Evaluation de la condition : [ == 1] =  == 1
[2021-02-08 20:51:02][SCENARIO] Expression non valide :  == 1
[2021-02-08 20:51:02][SCENARIO] Fin correcte du scénario

Visiblement j’ai raté quelque chose pourtant … je ne trouve pas.

une piste ?

Je vais aller vérifier que mes capteurs marchent toujours après la maj

edit : bon, je ne récupère plus l’état des capteurs depuis la MAJ, je suppose qu’il faut que je règle ce problème la en premier

edit2 : problème résolu, c’était bien mon deconz qui merdait, donc le script fonctionne.

Parfait.

Bonne journée.
A+
Bernard

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.