La fonction Trigger dans les scénarios Jeedom ? Alors oui aujourd’hui un type d’article particulier. J’en ferai d’autres comme cela. On pourrait voir cela comme “Chaque jour apprend un mot”.

La fonction Trigger dans les scénarios Jeedom

Alors ça ne sera pas tous les jours. Mais régulièrement je ferais ce type d’articles. L’idée est un article plutôt court qui se focalise sur une fonction, une possibilité, un usage etcc, et de le décrire, l’expliquer et donner un exemple d’usages. L’idée est simple, pouvoir facilement alimenter le blog sans forcément vouloir traiter “LE GROS SUJET” qui prend des heures à écrire. Et surtout vous faire découvrir au fur et à mesure de nombreuses facettes.

Pour commencer on va parler de la fonction Trigger dans les scénarios Jeedom.

 

Contexte

Le contexte ici est simple. Vous avez un équipement avec plusieurs commandes et vous voulez pouvoir exécuter des actions différentes selon la commande qui a changée de valeur. (exemple : température humidité,  mouvement luminosité etccc). Pour cela il y a différentes manières de faire :

  • Créer autant de scénario que vous avez de commandes

La fonction Trigger dans les scénarios Jeedom

Mais on peut très vite se retrouver avec des tonnes de scénarios

  • Faire un seul scénario avec plusieurs éléments déclencheurs

    La fonction Trigger dans les scénarios JeedomMais comment s’y prendre

C’est justement là qu’intervient cet article !

La fonction Trigger dans les scénarios Jeedom

 

La fonction Trigger dans les scénarios Jeedom

Définition

Commençons par une définition. “Trigger” en anglais signifie de nombreuses choses. Ça peut être la gâchette d’un revolver, mais dans notre cas ce n’est pas cette traduction qui nous intéresse.

La fonction Trigger dans les scénarios Jeedom

Bon d’accord j’arrête

La traduction qui nous concerne est celle qui veut dire “Déclencheur”. En effet un Trigger est donc le déclencheur d’une action.

Donc dans un scénario, ce sera donc le déclencheur de ce dit scénario. Vous commencez à me voir venir avec mes grands sabots :

La fonction Trigger dans les scénarios Jeedom

 

Comment utiliser la fonction Trigger dans les scénarios Jeedom

Alors pour utiliser la fonction Trigger dans un scénario Jeedom, c’est plutôt simple :

 

trigger(#COMMANDE#)==1

 

La du coup si la commande #COMMANDE# est bien celle qui a lancée le scénario la condition sera vraie et on peut donc filtrer l’élément déclencheur.

 

Cas d’usages

Alors un cas d’usage pour lequel on me pose souvent la question est : “Comment fais tu avec ta balance Miscale pour déclencher ton scénario matinal en fonction de qui se pèse” .

 

Donc voici les éléments déclencheurs du scénario en question :

 

La fonction Trigger dans les scénarios Jeedom

On retrouve donc l’ensemble des personnes qui composent mon foyer (bon oui je sais il manque Léo mais bon)

La fonction Trigger dans les scénarios Jeedom

Il me suffit donc de faire des blocs “Si” pour vérifier quel élément déclencheur  a réellement déclenché le scénario pour ensuite réaliser les bonnes actions en fonction

 

Un autre cas d’usage les télécommandes ou interrupteurs avec une commande pour chaque bouton

Dans mon cas j’utilise plusieurs choses dans ma voiture pour ouvrir mon futur portail (oui je l’ai pas encore), le garage, allumer les lumières extérieures etc… J’utilise donc soit un module “appel de phares”, des télécommandes multi-boutons etc… Dans le cas des télécommandes ou des interrupteurs on est souvent confronté au cas du multi-déclencheur.

 

Voilà une des télécommandes que j’utilise (protocole Edisio) je vous ferai un article concernant les protocoles prochainement et surtout comment choisir en fonction du besoin :

La fonction Trigger dans les scénarios Jeedom

Et voilà un bout du scénario :

La fonction Trigger dans les scénarios Jeedom

On retrouve donc la même philosophie :

  • Plusieurs éléments déclencheurs
  • Des blocs “Si” qui vérifient l’élément déclencheur

Conclusion

Voilà c’est la fin de ce “Un jour un Mot” et donc j’espère qu’après lecture de cet article vous saurez ce qu’est un Trigger, et surtout comment la fonction trigger des scénarios Jeedom peut rendre de grands services.

Maintenant à vous de jouer et on se dit à la prochaine pour un nouveau MOT 😉


Partager sur :

Infos de l'auteur

Je m’appelle Ludovic Sarakha j’ai 32 ans et je suis habitant de Clermont-Ferrand. Concernant les études il faut savoir que bien que j’ai travaillé dans l’informatique (SSII internationale) et maintenant dans la domotique, j’ai un doctorat de Chimie des matériaux. Je suis un autodidacte passioné d'informatique, de domotique et de tout ce qui tourne autour des objets connectés

82 commentaires

  1. Merci beaucoup pour tous ces articles.
    Pour moi c’est vraiment des tuto à la portée de tous et c’est ce qu’il me manque souvent pour bien utiliser jeedom.

    Merci

  2. Pingback: La fonction Trigger dans les scénarios Jeedom

  3. ton tuto arrive 24h trop tard :p je me suis cassé la tete hier pour comprendre les trigger, et à la fin j’ai fait tout comme toi…
    Merci d’anticiper mes besoins plus rapidement la prochaine fois 😀

  4. Bonjour

    Je connaissais déjà cette fonction mais je ne l’utilise pas je trouve que la relecture du scénario après est trop compliquer. Pour un scénario simple pourquoi pas…

    Je me demande la différence avec plusieurs bloc “Si Sinon Alors”.

    Pour ton exemple avec la balance j’aurais par exemple fais chaque bloc séparé, mais je n’aurais pas mis d’action dans la catégorie “Sinon”.

    Merci

  5. Génial ! J’ai enfin compris pourquoi mon bloc de boutons NODON ZWave ne répondait pas toujours… Je vais revoir le scénario et ajouter des triggers. Merci Ludo !

  6. Merci pour cette vulgarisation, même si pour le moment je n’y ai pas d’intérêt, j’en aurai un si par exemple, le clavier zipato en bippant le badge RFID avait l’information vu par jeedom (je sais que c’est en cours chez Nechry). La effectivement, tu peux triggerisé, oui j’invente des mots anglais, quel badge et donc balancer un scénario spécifique.

    Pour ton déclencheur/trigger avec la balance, je me souviens avoir lu que selon le poids, jeedom sait qui est sur la balance, mais je ne vois pas trop comment ça se passe derrière pour que ça devienne un trigger. Je ne sais pas si je suis bien clair.

    Est-ce qu’il faudrait que je le vois comme ça pour le cas du clavier zipato (en disant que le badge est bien identifiable par le plugin openzwave) :
    #[entree][clavier_zipato][badge_rfid_TaG]# équivalent à #[Salledebains][miscale][Matteo]#
    #[entree][clavier_zipato][badge_rfid_]# équivalent à #[Salledebains][miscale][Matteo]#

    Merci d’avance

    • Exactement pour ton clavier. Concernant jeedom qui sait le poids. Oui. Mais ce fait juste en sorte de mettre la bonne valeur dans la bonne commande. Derrière si tu veux faire un scénario avec plusieurs déclencheurs tu es obligé de différencier le déclencheur. Ou sinon faire plusieurs scénarios un par déclencheur comme je le dis dans l’article. Mais tu peux vite te retrouver avec beaucoup de scenarios

  7. Petite précision : la fonction trigger ne marche pas (plus) si le déclencheur est un scénario (et c’est bien dommage : ca permettait une belle factorisation)

  8. Tout à fait, le seul scénario ou j’aurai pu avoir déclencheur c’est pour les poubelles, mais j’ai suivi ton tuto et mis la valeur en variable puis appelé le scénario qui check la variable.

    Mais je comprend l’usage et c’est bien de savoir que c’est possible 😀 !!

    Merci encore 😉

  9. Merci pour ce tuto ! Du coup, j’ai une question qui expliquerait peut-être mes problèmes de scénarios avec les dashbuttons qui ne ne se déclenchent pas toujours correctement..

    En mettant seulement “#COMMANDE#==1” au lieu de “trigger(#COMMANDE#)==1” dans la condition, c’est équivalent ou ça peut expliquer des problèmes de prise en compte d’un appui sur un dashbutton ? (ou autre déclencheur bien sûr)

    Merci et bravo pour ton blog de (très bonne) vulgarisation de Jeedom.

    J’attends avec impatience le tuto sur les squeezebox, mon prochain chantier !

    • #commande# == 1 vérifie simplement que la valeur de la commande est 1. trigger vérifie parmis plusieurs déclencheurs possibles si c’est bien #commande# qui a lancé le scénario.

      Si tu es dans le cas d’un seul déclencheur #commande# qui peut prendre plusieurs valeurs alors ton test doit être #commande# == valeur (pas besoin de trigger)

  10. Si tu poses la question, c’est que t’as pas compris le tuto (et pas lu les commentaires juste en dessous!).
    Il est pourtant bien expliqué ce tuto… 🙂

  11. SOHIER Bernard le

    Excellent ce type de tuto qui explique par l’exemple, car la doc jeedom est insuffisante pour l’utilisateur lambda, et le forum jeedom reste le rdv des experts. Il faudrait proposer à Jeedom d’insérer dans sa doc des liens vers tes tutos. Car c’est bien le problème de Jeedom , il est hyper performant mais très sous utilisé par l’utilisateur de base qui se sent frustré par manque de connaissance. Encore bravo

  12. Super Tuto et j ai enfin compris d ou venait mon problème de condition et tu viens de m apporter ma réponse. Merciiiiiii 🙂

  13. merci pour ce nouveau tuto. Donc si j’ai bien compris pour ta télécommande, que tu fasse un appuis long ou un appuis court sur le bouton 1 cela fera la même action ?

    • Oui dans mon exemple exactement. J’aurais pu faire différent. Mais dans la voiture accroché au clé je me dis je peus me rater et faire un long ou vouloir faire un court et ripper. ALors pour celle de la voiture je fais toujours la meme action pour appui court ou long.

      Je ne fais pas cela ailleurs

  14. salut ludo, désolé encore une fois de te derranger mais je n suis pas sur de bien comprendre le fonctionnement du trigger. jai beau lire et relire et essayer de le mettre en place ca n fonctionne pas alors j me demande s que je ne fais pas bien.. ou si je lutilise vraiment dans bon cas de figure..(par exemple)jai plusieurs déclencheurs.. porte dentree, tv, et motion sensor dans mes événements..dans mon scenar je met si trigger(#motion sensor#)==1 alors lumière salon on. du coup il filtre les déclencheur et utilise seulement le motion sensor parmi mes 3 déclencheurs pour allumer la lumière???? et du coup je peux rajouter un bloc trigger(#portedentre#)==0 alors lumière off??? est ce bien ça ou jai mal compris???

  15. Pingback: Les DomoNews qu'il ne fallait pas manquer cette semaine du 25/02 au 04/03

  16. Bonjour,
    Est ce qu’il est possible avec la fonction trigger de récupérer le nom de la commande qui à déclenché le scénario ?
    Par exemple sur un scénario d’ouverture de porte

    Si #Porte cuisine#==1 ou #porte salon#== 1;
    Alors
    #Message# == “La #Trigger# est ouverte”;

    L’idée c’est d’avoir une seul boucle pour toutes les portes.
    Merci
    Guillaume.

  17. Salut et merci Ludo,

    je souhaiterai regler mes lumiere de salon en fonction de mon activité et du couché de soleil.
    pour cela je dispose de dimmer KNX, led variables, jeedom, un ampli marantz, une tv sony, une shield, kodi et une ps4

    pour l’instant je reussi a recuperer l’etat de mon marantz mais le plugin denon(marantz) oblige de lancer un refresh avant sinon l’info est fausse, donc c’est un cron obligatoire. C’est ce que j’utilise comme initiateur dirons nous, car c’est encore different de tes triggers et vraiment moins bien, le cron c’est une minute mini, j’aimerai l’optimiser de 59 secondes help me 🙂

    j’ai donc moi aussi imbriqué des IF/THEN/ELSE pour lancer 3 eclairages distincts en partant du plus restrictif en condition vers les moins.

    je ne sais pas si je fais bien, je ne sais pas si les triggers peuvent s’appliquer.
    ce que je sais c’est qu’il vaudrait mieux que j’attaque les periferiques en direct pour eliminer les plugins, mais j’avoue que n’etant pas dev le scripting n’est pas mon fort.

    je rajote une jolie image plein de couleurs et j’attends tes critiques.

    Merci encore pour tes articles

    A+

    Stef

    http://imgur.com/sLRJrf6

  18. Effectivement, les scénarios se multiplient rapidement (on ne le voit pas venir quand on débute, mais ça va très vite ensuite, oui, oui..) et là, le trigger, c’est vraiment génial. Alors merci merci 🙂 Mais bon, maintenant, il faut tous les refaire …

  19. Bonjour ludo,

    Je suis nouveau dans jeedom et je souhaite utiliser mes nuts (les petits appareils bluetooth, pas autre chose), pour interagir avec jeedom et sarah suivant si le nut est present ou pas. J’ai beau tester plusieurs scénarios mais la seule chose que j’ai pu faire et que sarah dise bonjour quand le nut est présent. C’est bien sympa la première fois, mais comme sarah dit la meme chose toute les deux minutes, à la 10eme itération, machinalement les seules mots qui arrivent à sortir de ma bouche sont :” mais tu vas la fermer ta pu… de gu…. grosse co……..se.”. (propos volontairement édulcorés pour ne pas choquer les plus jeunes).

    Donc ma question, est comment créer un scénario pour un nut (ou autre appareil comme les mobiles) utilisant l’excellent BLEA, pour qu’il fasse une seule action au moment ou jeedom le detecte present et qu’il ne l’execute pas tout le temps de la detection et qu’il detecte le fait que l’on soit sortie et relance l’action quand on revient. Je n’arrive pas à générer dans mon petit cerveau dégénéré l’algorithme qui me permettrait de comprendre le cheminement. Merci pour ton aide et continue comme çà ton blog et tes vidéos. J’ai bien rigolé. pour finir, il va falloir m’expliquer la notion de WAF !! Parce que je veux bien faire de la domotique, mais le jour où ma femme commence à remuer la queue, j’arrete !!!! (mais c’est un autre sujet) 😉

  20. Parfait ca fonctionne. Désolé je n’avais pas lu tous les articles. J’ai encore quelques problèmes mais ca s’arrange au fur et a mesure. J’attends la mise a jour qui reglera le probleme du refresh. Me reste plus qu’a piloter ma télé en infrarouge via le RM Pro 2 de broadlink via siri et le monde sera presque parfait.

  21. Hello,
    Si j’ai bien compris je pourrais appliquer comme ca :
    Tous mes détecteurs d’ouverture Xiaomi sont déclencheurs,
    Si salon ouvert, je baisse le netatmo
    Si Chambre je baisse les têtes thermostatique

    Pratique 🙂

  22. Si je ne dis pas de bêtise trigger() (sans paramètre) retourne l’état du trigger.

    Je l’utilise beaucoup justement dans les scénarios qui ont plusieurs déclencheurs pour ne pas tester systématique toutes les valeurs des origines possibles. Ce qui compte souvent c’est la valeur du déclencheur.

    Dans ton tuto quelques lignes sur ce sujet seraient un plus.

    ken@vo
    Phil

  23. Avec ton article sur le wait et celui la je vais devoir revoir tout mes scenarios..
    Jai pris l’habitude en revanche de simplifier au maximum les scenarios gerant leclairage (jai un nb important de scénarios du coup..) pr ne pas risquer de latences. Est ce que cest pas un risque avec ces triggers?
    Merci pr ces tutos en tt cas.
    Julien

  24. Bonjour,
    Je suppose que si la valeur de la commande était déjà à 1 quand elle passe à 0 elle ne déclenche rien?
    C’est toujours trigger(quelque chose) == 1 jamais ==0 donc si l’évènement déclenchant n’est pas ce quelque chose on doit rien mettre dans la case sinon, sinon on va faire une commande en actionnant un autre bouton par exemple
    Je pourrais t’envoyer une capture de mon scénario mais je sais pas trop où
    Merci

    • SI SI : 1 qui passe a 0 declenche et la condition trigger(xxx) == 1 et vrai

      Si tu veux aussi controler la valeur il faut faire trigger(xxx) ==1 et xxx= valeur. Trigger (xxx) ne verifie que si le scénario a bien été lancé par XXX dans le cas de multideclencheur

  25. J’ai 4 boutons sur ma télécommande DIO, si je fais ça 4 fois tu penses que c’est “logique”?
    SI trigger(#[Somfy][DIO][bt1]#) == 1 ET #[Somfy][DIO][bt1]# == 1
    Alors Monter
    Sinon Descendre
    et ce pour les 2×4 boutons puisque chaque bt est composé d’un I et un O
    Pour monter je pense que ça peut le faire mais j’ai l’impression que ça va descendre à chaque condition fausse
    A moins de remettre une condition dans Sinon?
    J’avoue être perdu, C’est que cette télécommande est là en plus d’un scénario de mes volets, si on veut fermer manuellement par exemple

  26. Pourquoi pas tester pour voir 🙂
    La solution semble être si trigger(#[Somfy][DIO][bt1]#) == 1 ET #[Somfy][DIO][bt1]# == 1
    Alors monter
    Sinon SI trigger(#[Somfy][DIO][bt1]#) == 1 ET #[Somfy][DIO][bt1]# == 0
    Alors descendre
    Sinon rien

    ça fonctionne comme ça, est-ce que j’aurais dû mettre trigger(#[Somfy][DIO][bt1]#) == 0 ET #[Somfy][DIO][bt1]# == 0 dans la deuxième condition? je n’est pas testé mais d’après ce que tu expliques on peut mettre l’un ou l’autre

    • Non il n’y aura pas de switch case dans les scénarios pour le moment, car au final c’est faisable avec un si sinon si sinon. Le trigger n’a pas de lien avec un switch case c’est le si sinon qui en a une

  27. Bonjour sarakha,

    Je me suis trouvé face à un problème tout con, j’ai 2 interrupteurs Xiaomi. Je veux que les 2 aient le même comportement, L’appui simple ça active mon alarme, l’appui long ça la désactive, peu importe lequel des 2 boutons. et que si j’en rajoute 1-2-3 autre bouton ça soit simple a intégrer

    J’ai mis en déclencheur :
    #[Télécommandes][Interrupteur RDC][Clic]#
    #[Télécommandes][Interrupteur Etage][Clic]#

    Grace à #trigger# je sais quelle commande a déclenché le scenario mais je n’ai trouvé aucun moyen “simple” de récupérer la valeur de la commande du déclencheur. J’en suis arrivé a créer un bloc code pour ça.

    d’abord je met dans une variable trigger la valeur #trigger#
    Je passe dans un bloc code
    $trigger_value = cmd::byString(“#{$scenario->getData(“trigger”)}#”)->execCmd();
    $scenario->setLog(“trigger_value : $trigger_value”);
    switch($trigger_value) {
    case “click”:
    if ($current_alarm_mode === “Off”) {
    cmd::byString(“#[Maison][Alarme][On]#”)->execCmd();
    $scenario->setLog(“Alarm -> On”);
    }
    break;
    case “long_click_press”:
    case “long_click_release”:
    if ($current_alarm_mode === “On”) {
    cmd::byString(“#[Maison][Alarme][Off]#”)->execCmd();
    $scenario->setLog(“Alarm -> Off”);
    }
    break;
    default:
    $scenario->setLog(“$trigger_value : non géré”);
    }

    Y’aurait-il plus simple

  28. Salut Sarakha, je me permet un petit ping sur ma question qui a été posée pendant tes vacances. Je comprends que tu ne l’ai pas vue.

    • ben si tu fais des if pour separer tes deux triggers. dans chaque if tu sais de quel module il s’agit donc. du coup dedans tu peux faire if [module][info] == XX alors sinon etccccc et même chose dans le if trigger de l’autre module

  29. Je me réponds à moi même. Je viens de voir apparaitre sur la branch beta #trigger_value# qui va résoudre tous mes soucis. Génial !

  30. Pingback: Review des principaux protocoles domotiques | Domotauks

  31. Bonjour Sarakha,
    Avec l’arrivé de la V3 on peut maintenant provoquer un scénario via une variable.
    Est ce qu’il existe un équivalant du trigger(commande) du genre trigger(variable(toto)) ?
    Merci.

  32. bonjour,
    même problème j’ai testé trigger(#variable(toto)#)==1 mais ça ne marche pas.
    peut on utiliser la fonction trigger avec les variables? si oui quel est la syntaxe?

  33. trigger()==variable(toto)
    pour moi avec cette formule si le déclencheur avait justement la valeur de la variable toto la condition est réuni alors que c’est pas forcément la variable toto qui a déclenché
    si toto = 1 ça me donne en log 1=1 et si toto = 0 ça me donne 0=0
    ça fonctionne dans mon cas car je veux savoir si c’est la variable ou le détecteur de CO2 qui déclenche, si c’est le détecteur de CO2 ça me donne sa valeur =1 soit ex 1047=1 faux, donc c’est bon mais si je devais savoir quelle variable me déclenche le scénario et que les deux soient justement à 1, ça ne m’avancerait à rien
    C’est juste mon avis, j’aimerais les explications de Sarakha à ce sujet
    Merci

Laisser un commentaire