Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

[Tuto] Les déclencheurs de Scénarios : les triggers

Bosquetia
Actif
Messages : 6783
Inscription : 10 mai 2016, 07:54

[Tuto] Les déclencheurs de Scénarios : les triggers

Message par Bosquetia » 26 nov. 2017, 09:51

Bonjour à toutes et tous,

Je vous présente le tuto fait pas Masterfion sur les trigger. Merci à lui

Nous allons aborder dans ce tuto les triggers (ou déclencheurs), notion qui n'est pas évidente à comprendre pour tous à priori.

Lorsqu'un scénario est exécuté par un déclencheur alors le trigger est "[Nom du déclencheur]"
Lorsqu'un scénario est exécuté par une programmation alors le trigger est "#schedule#"
Lorsqu'un scénario est exécuté manuellement alors le trigger est "user"
Lorsqu'un scénario est exécuté par une interaction alors le trigger est "interact"
Lorsqu'un scénario est exécuté à partir d'un autre scénario, le trigger est "[Groupe][Nom du scenario]"
Lorsqu'un scénario est exécuté par lui même à partir d'un bloc A puis un time_op "+5mn" alors le trigger est "[Groupe][Nom du scenario]"
Lorsqu'un scénario est exécuté par lui même à partir d'un bloc DANS "5mn", il n'existe aucun trigger puisque DANS génère une sous-tâche

Vous trouverez ci-dessous des exemples de conditions pour un bloc SI/ALORS/SINON de vos scénarios
Vous verrez à chaque exemple 2 manières de faire. Alors pourquoi 2 manières et bien pour la raison suivante :
SI trigger([Déclencheur X])==1 renvoi VRAI
SI trigger()=="[Déclencheur X]" renvoi VRAI

SI #trigger# == "#[Jardin][Lettre][Etat]#" donnera [Jardin][Lettre][Etat] = 1
par contre
SI #trigger# == "[Jardin][Lettre][Etat]" donnera [Jardin][Lettre][Etat] = [Jardin][Lettre][Etat]

Voyons donc les différents cas :

Si je veux contrôler qu'un scénario A est lancé par un scénario B alors j'écris :
SI trigger() matches "/[Groupe Scénario][Scénario B]/"
SI #trigger# matches "/[Groupe Scénario][Scénario B]/"

Si je veux contrôler qu'un scénario A n'est pas lancé par un scénario B alors j'écris :
SI not(trigger() matches "/[Groupe Scénario][Scénario B]/")
SI not(#trigger# matches "/[Groupe Scénario][Scénario B]/")

Si je veux agir dans le cas d'un scénario lancé par une interaction alors j'écris :
SI trigger()=="interact"
SI #trigger#=="interact"

Si je veux agir dans le cas d'un scénario lancé manuellement alors j'écris :
SI trigger()=="user"
SI #trigger#=="user"

Si je veux agir en fonction du déclencheur d'un scénario (mode "provoqué") alors j'écris :
SI trigger(#[Salon][Oeil][Présence]#)==1
SI #trigger#=="[Salon][Oeil][Présence]"

Si je veux savoir si un scénario est actionné par une programmation (mode "programmé") alors j'écris :
SI trigger()=="#schedule#"
SI #trigger#=="#schedule#"

Si je veux savoir si un scénario est actionné par une variable(test) alors j'écris :
SI #trigger# matches "/(test)/"
Car si on test le trigger d'une autre manière la variable sera évaluée donc renvoie sa valeur

Pour aller un peu plus loin
Je vais reprendre cette fois un exemple de Zerat9w, merci à lui

Une petite astuce pour les personnes voulant créer un scénario unique avec plusieurs déclencheurs et faire un message en pushbullet (ou autre) personnalisé en fonction de la pièce.

Exemple:

Trigger == #[Cuisine][Fenêtre][Etat]#
strtolower(substr(#trigger#,1,strpos(#trigger#, ']')-1))

La fonction permettra d'extraire le mot "cuisine" uniquement.
L'avantage se retrouve dans le message pushbullet (ou autre) :

L'ouverture de la fenêtre de la strtolower(substr(#trigger#,1,strpos(#trigger#, ']')-1)) vient d'être détectée le sprintf("%02s",#jour#)/sprintf("%02s",#mois#)/#annee# à sprintf("%02s",#heure#):sprintf("%02s",#minute#).

Qui donnera : L'ouverture de la fenêtre de la cuisine vient d'être détectée le 02/09/20016 à 14:16.

Verrouillé

Revenir vers « Tutoriels »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 9 invités