Scénarios

Outils → Scénarios

Raccourcis clavier/souris

Véritable cerveau de la domotique, les scénarios permettent d’interagir avec le monde réel de manière intelligente.

Gestion

Vous y trouverez la liste des scénarios de votre Jeedom, ainsi que des fonctionnalités pour les gérer au mieux :

Mes scénarios

Vous trouverez dans cette partie-là liste des scénarios que vous avez créés. Ils sont classés suivant leur groupe, éventuellement définis pour chacun d’eux. Chaque scénario est affiché avec son nom et son objet parent. Les scénarios grisés sont ceux qui sont désactivés.

Conseil

Vous pouvez ouvrir un scénario en faisant :

  • Clic sur l’un d’entre eux.
  • Ctrl Clic ou Clic Centre pour l’ouvrir dans un nouvel onglet du navigateur.

Vous disposez d’un moteur de recherche permettant de filtrer l’affichage des scénarios. La touche Echap annule la recherche. A droite du champ de recherche, trois boutons que l’on retrouve à plusieurs endroits de Jeedom :

Une fois sur la configuration d’un scénario, vous disposez d’un menu contextuel au Clic Droit sur les onglets du scénario. Vous pouvez également utiliser un Ctrl Clic ou Clic Centre pour ouvrir directement un autre scénario dans un nouvel onglet du navigateur.

Création | Édition d’un scénario

Après avoir cliqué sur Ajouter, vous devez choisir le nom de votre scénario. Vous êtes ensuite redirigé vers la page de ses paramètres généraux. Avant cela, en haut de page, on retrouve certaines fonctions utiles pour gérer ce scénario :

Tips

Deux outils vous seront également précieux dans la mise en place de scénarios : > - Les variables, visibles dans Outils → Variables > - Le testeur d’expressions, accessible par Outils → Testeur expression

Un Ctrl Clic sur le bouton Exécuter vous permet directement de sauvegarder, exécuter et afficher le log du scénario (si le niveau de log n’est pas sur Aucun).

Onglet Général

Dans l’onglet Général, on retrouve les paramètres principaux du scénario :

IMPORTANT

Le multi lancement marche à la seconde, c’est à dire que si vous avez 2 lancements dans la même seconde sans la case cochée il y aura quand même 2 lancements du scénario (alors qu’il ne devrait pas). De même lors de plusieurs lancements dans la même seconde il se peut que certains lancements perdent les tags. Conclusion il faut ABSOLUMENT éviter de multiples lancements dans la même seconde.

Conseil

En mode déclenché, des conditions peuvent à présent être saisies. Par ex : #[Garage][Open Garage][Ouverture]# == 1 Attention : vous pouvez avoir au maximum 28 déclencheurs/programmations pour un scénario.

Tip Mode programmé

Le mode programmé utilise la syntaxe Cron. Vous pourrez par exemple exécuter un scénario toutes les 20 minutes avec */20 * * * *, ou à 5h du matin pour régler une multitude de choses pour la journée avec 0 5 * * *. Le ? à droite d’une programmation vous permet de régler celle-ci sans être un spécialiste de la syntaxe Cron. Il est aussi possible de mettre une heure de lancement sous la forme Gi (heure sans zero initial et minute, exemple pour 09h15 => 915 ou pour 23h40 => 2340). Cette heure peut etre le résultat d’un calcul (utilisant une commande ou un tag), par exemple : #sunset# + 10 pour un lancement 10 minutes après le couché du soleil. A noter que pour un lancement 1h30 après le couché du soleil il faut mettre #sunset# + 130. A noter que lors de l’utilisation d’une syntaxe autre qu’un cron jeedom ne sera pas en mesure de vous donner les dates des lancements précedent ou suivant.

Onglet Scénario

C’est ici que vous allez construire votre scénario. Après la création du scénario, son contenu est vide, il ne fera donc … rien. Il faut commencer par ajouter un bloc, avec le bouton situé à droite. Une fois un bloc créé, vous pourrez y ajouter un autre bloc ou une action.

Pour plus de praticité et ne pas avoir à constamment réordonner les blocs dans le scénario, l’ajout d’un bloc se fait après le champ dans lequel se situe le curseur de la souris. Par exemple, si vous avez une dizaine de blocs, et que vous cliquez dans la condition SI du premier bloc, le bloc ajouté le sera après ce bloc, au même niveau. Si aucun champ n’est actif, il sera ajouté à la fin du scénario.

Conseil

Dans les conditions et actions, il vaut mieux privilégier les guillemets simples (‘) au lieu des doubles (“).

Conseil

Un Ctrl Shift Z ou Ctrl Shift Y vous permet d’annuler ou de refaire une modification (ajout d’action, de bloc…).

Les blocs

Voici les différents types de blocs disponibles :

Chaque bloc a ses options pour mieux les manipuler :

Blocs Si/Alors/Sinon | Boucle | Dans | A

Pour les conditions, Jeedom essaye de faire en sorte qu’on puisse les écrire le plus possible en langage naturel tout en restant souple.

Il ne faut SURTOUT PAS utiliser des [ ] dans les tests de condition, seules les parenthèses () sont possibles.

Trois boutons sont disponibles sur la droite de ce type de bloc pour sélectionner un élément à tester :

Note

Sur les blocs de type Si/Alors/Sinon, des flèches circulaires situées à gauche du champ de condition permettent d’activer ou non la répétition des actions si l’évaluation de la condition donne le même résultat que lors de la précédente évaluation. SI expression != 0 est équivalent à SI expression et SI expression == 0 est équivalent à SI not expression

Conseil

Il existe une liste de tags permettant d’avoir accès à des variables issues du scénario ou d’un autre, ou bien à l’heure, la date, un nombre aléatoire, … Voir plus loin les chapitres sur les commandes et les tags.

Une fois la condition renseignée, vous devez utiliser le bouton “ajouter”, à gauche, afin d’ajouter un nouveau bloc ou une action dans le bloc actuel.

Bloc Code

Le bloc Code permet d’exécuter du code PHP. Il est donc très puissant mais nécessite une bonne connaissance du langage PHP.

Accès aux commandes (capteurs et actionneurs)

Accès aux logs

Accès aux scénarios

Conseil

Ajout d’une fonction recherche dans le bloc Code : Rechercher : Ctrl + F puis Enter, Résultat suivant : Ctrl + G, Résultat précédent : Ctrl + Shift + G

Scénarios : Petits codes entre amis

Bloc Commentaire

Le Bloc commentaire agît différemment quand il est masqué. Ses boutons sur la gauche disparaissent ainsi que le titre du bloc, et réapparaissent au survol. De même, la première ligne du commentaire est affichée en caractères gras. Ceci permet d’utiliser ce bloc comme séparation purement visuelle au sein du scénario.

Les Actions

Les actions ajoutées dans les blocs ont plusieurs options :

Conseil

Suivant la commande sélectionnée, on peut voir s’afficher différents champs supplémentaires.

Les substitutions possibles

Les déclencheurs

Il existe des déclencheurs spécifiques (autre que ceux fournis par les commandes) :

Vous pouvez aussi déclencher un scénario en utilisant l’API HTTP décrite ici.

Opérateurs de comparaison et liens entre les conditions

Vous pouvez utiliser n’importe lequel des symboles suivants pour les comparaisons dans les conditions :

Vous pouvez combiner n’importe quelle comparaison avec les opérateurs suivants :

Que vous combiniez des comparaisons sur des équipements différents ou sur le même, il est toujours nécessaire d’indiquer l’équipement. [Salle de bain][Hydrometrie][température] >= 18 && [Salle de bain][Hydrometrie][température] <= 22

Les tags

Un tag est remplacé lors de l’exécution du scénario par sa valeur. Vous pouvez utiliser les tags suivants :

Conseil

Pour avoir les zéros initiaux à l’affichage, il faut utiliser la fonction Date(). Voir ici.

Vous avez aussi les tags suivants en plus si votre scénario a été déclenché par une interaction :

Important

Lorsqu’un scénario est déclenché par une interaction, celui-ci est forcément exécuté en mode rapide. Donc dans le thread de l’interaction et non dans un thread séparé.

Les fonctions de calcul

Plusieurs fonctions sont disponibles pour les équipements :

Les périodes et intervalles de ces fonctions peuvent également s’utiliser avec des expressions PHP comme par exemple :

Voici des exemples pratiques pour comprendre les valeurs retournées par ces différentes fonctions :

Prise ayant pour valeurs : 000 (pendant 10 minutes) 11 (pendant 1 heure) 000 (pendant 10 minutes)
average(prise,période) Renvoie la moyenne des 0 et 1 (peut
  être influencée par le polling)
averageBetween(#[Salle de bain][Hydrometrie][Humidité]#,2015-01-01 00:00:00,2015-01-15 00:00:00) Renvoie la moyenne de la commande entre le 1er janvier 2015 et le 15 janvier 2015
min(prise,période) Renvoie 0 : la prise a bien été éteinte dans la période
minBetween(#[Salle de bain][Hydrometrie][Humidité]#,2015-01-01 00:00:00,2015-01-15 00:00:00) Renvoie le minimum de la commande entre le 1er janvier 2015 et le 15 janvier 2015
max(prise,période) Renvoie 1 : la prise a bien été allumée dans la période
maxBetween(#[Salle de bain][Hydrometrie][Humidité]#,2015-01-01 00:00:00,2015-01-15 00:00:00) Renvoie le maximum de la commande entre le 1er janvier 2015 et le 15 janvier 2015
duration(prise,1,période) Renvoie 60 : la prise était allumée (à 1) pendant 60 minutes dans la période
durationBetween(#[Salon][Prise][Etat]#,0,Last Monday,Now) Renvoie la durée en minutes pendant laquelle la prise était éteinte depuis lundi dernier.
statistics(prise,count,période) Renvoie 8 : il y a eu 8 remontées d’état dans la période
tendance(prise,période,0.1) Renvoie -1 : tendance à la baisse
stateDuration(prise) Renvoie 600 : la prise est dans son état actuel depuis 600 secondes (10 minutes)
lastChangeStateDuration(prise,0) Renvoie 600 : la prise s’est éteinte (passage à 0) pour la dernière fois il y a 600 secondes (10 minutes)
lastChangeStateDuration(prise,1) Renvoie 4200 : la prise s’est allumée (passage à 1) pour la dernière fois il y a 4200 secondes (1h10)
lastStateDuration(prise,0) Renvoie 600 : la prise est éteinte depuis 600 secondes (10 minutes)
lastStateDuration(prise,1) Renvoie 3600 : la prise a été allumée pour la dernière fois pendant 3600 secondes (1h)
stateChanges(prise,période) Renvoie 3 : la prise a changé 3 fois d’état pendant la période (si la commande info est de type binaire)
stateChanges(prise,0,période) Renvoie 2 : la prise s’est éteinte (passage à 0) deux fois pendant la période
stateChanges(prise,1,période) Renvoie 1 : la prise s’est allumée (passage à 1) une fois pendant la période
lastBetween(#[Salle de bain][Hydrometrie][Température]#,Yesterday,Today) Renvoie la dernière température enregistrée hier.
variable(plop,10) Renvoie la valeur de la variable plop ou 10 si elle est vide ou n’existe pas
scenario(#[Salle de bain][Lumière][Auto]#) Renvoie 1 en cours, 0 si arreté et -1 si désactivé, -2 si le scénario n’existe pas et -3 si l’état n’est pas cohérent
lastScenarioExecution(#[Salle de bain][Lumière][Auto]#) Renvoie 300 si le scénario s’est lancé pour la dernière fois il y a 5 min
collectDate(#[Salle de bain][Hydrometrie][Humidité]#) Renvoie 2021-02-14 17:50:12
valueDate(#[Salle de bain][Hydrometrie][Humidité]#) Renvoie 2021-02-14 17:45:12
eqEnable(#[Aucun][Basilique]#) Renvoie -2 si l’équipement est introuvable, 1 si l’équipement est actif et 0 s’il est inactif
tag(montag,toto) Renvoie la valeur de “montag” si il existe sinon renvoie la valeur “toto”
name(eqLogic,#[Salle de bain][Hydrometrie][Humidité]#) Renvoie Hydrometrie

Les fonctions mathématiques

Une boîte à outils de fonctions génériques peut également servir à effectuer des conversions ou des calculs :

Et les exemples pratiques :

Exemple de fonction Résultat retourné
randText(il fait #[salon][oeil][température]#;La température est de #[salon][oeil][température]#;Actuellement on a #[salon][oeil][température]#) la fonction retournera un de ces textes aléatoirement à chaque exécution.
randomColor(40,60) Retourne une couleur aléatoire proche du vert.
round(#[Salle de bain][Hydrometrie][Humidité]# / 10) Renvoie 9 si le pourcentage d’humidité et 85
odd(3) Renvoie 1
median(15,25,20) Renvoie 20
avg(10,15,18) Renvoie 14.3
time_op(#time#, -90) s’il est 16h50, renvoie : 1650 - 0130 = 1520
formatTime(1650) Renvoie 16h50
floor(130/60) Renvoie 2 (minutes si 130s, ou heures si 130m)
convertDuration(3600) Renvoie 1h 0min 0s
convertDuration(duration(#[Chauffage][Module chaudière][Etat]#,1, first day of this month)*60) Renvoie le temps d’allumage en Jours/Heures/minutes du temps de passage à l’état 1 du module depuis le 1er jour du mois

Les fonctions diverses

Les commandes spécifiques

En plus des commandes domotiques, vous avez accès aux actions suivantes :

Template de scénario

Cette fonctionnalité permet de transformer un scénario en template pour par exemple l’appliquer sur un autre Jeedom.

En cliquant sur le bouton template en haut de page, vous ouvrez la fenêtre de gestion des templates.

A partir de celle-ci, vous avez la possibilité :

En cliquant sur un template, vous pourrez :

En-dessous, vous avez la partie pour appliquer votre template au scénario courant.

Etant donné que d’un Jeedom à l’autre ou d’une installation à une autre, les commandes peuvent être différentes, Jeedom vous demande la correspondance des commandes entre celles présentes lors de la création du template et celles présentes chez vous. Il vous suffit de remplir la correspondance des commandes puis de faire appliquer.

Ajout de fonction PHP

IMPORTANT

L’ajout de fonction PHP est réservé aux utilisateurs avancés. La moindre erreur peut être fatale pour votre Jeedom.

Mise en place

Aller dans la configuration de Jeedom, puis OS/DB et lancer l’éditeur de fichier.

Allez dans le dossier data puis PHP et cliquez sur le fichier user.function.class.php.

C’est dans cette classe que vous pouvez ajouter vos fonctions, vous y trouverez un exemple de fonction basique.

IMPORTANT

Si vous avez un souci, vous pouvez toujours revenir au fichier d’origine en copiant le contenu de user.function.class.sample.php dans user.function.class.php

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web. Si vous continuez à utiliser ce site, nous supposerons que vous en êtes satisfait.