Voici la partie la plus importante dans la domotique : les scénarios. Véritable cerveau de la domotique, c’est ce qui permet d’interagir avec le monde réel de manière “intelligente”.

La page de gestion des Scénarios

Gestion

Pour y accéder, rien de plus simple, il suffit d’aller sur Outils -> Scénarios. Vous y trouverez la liste des scénarios de votre Jeedom ainsi que des fonctions pour les gérer au mieux :

Mes scénarios

Vous trouverez dans cette partie la liste des scénarios que vous avez créés. Ils sont classés suivant les groupes que vous avez 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.

Comme dans de nombreuses pages de Jeedom, mettre la souris à gauche de l’écran permet de faire apparaître un menu d’accès rapide (à partir de votre profil, vous pouvez le laisser toujours visible). Vous pourrez alors chercher votre scénario, mais aussi en ajouter un par ce menu.

Edition d’un scénario

Après avoir cliqué sur Ajouter, vous devez choisir le nom de votre scénario et vous êtes redirigés vers la page de ses paramètres généraux. En haut, on retrouve quelques fonctions utiles pour gérer notre scénario :

Onglet Général

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

Tip

Attention : vous pouvez avoir au maximum 28 déclencheurs/programmations pour un scénario.

Onglet Scénario

C’est ici que vous allez construire votre scénario. 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.

Tip

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

Les blocs

Voici les différents types de blocs disponibles :

Chacun de ces blocs a ses options pour mieux les manipuler :

Blocs Si/Alors/Sinon , Boucle, Dans et A

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 la précedente évaluation.

Pour les conditions, Jeedom essaye de faire en sorte qu’on puisse les écrire le plus possible en langage naturel tout en restant souple. Trois boutons sont disponibles sur la droite de ce type de bloc pour sélectionner un élément à tester :

Tip

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.

Tip

Il ne faut SURTOUT PAS utiliser des [ ] dans les tests de condition, seule les parentheses () sont possible

Bloc Code

Important

Attention, les tags ne sont pas disponibles dans un bloc de type code.

Commandes (capteurs et actionneurs):

Log :

Scénario :

Les Actions

Les actions ajoutées dans les blocs ont plusieurs options. Dans l’ordre :

Tip

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

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 quand une variable est mise à jour en mettant : #variable(nom_variable)# ou 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 suivant pour les comparaisons dans les conditions :

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

Les tags

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

Tip

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.

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 1 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 1 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 1 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
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][Humidité]#,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 desactivé, -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 2015-01-01 17:45:12
valueDate(#[Salle de bain][Hydrometrie][Humidité]#) Renvoie 2015-01-01 17:50: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.
trigger(#[Salle de bain][Hydrometrie][Humidité]#) 1 si c’est bien #[Salle de bain][Hydrometrie][Humidité]# qui a déclenché le scénario sinon 0
triggerValue(#[Salle de bain][Hydrometrie][Humidité]#) 80 si l’hydrométrie de #[Salle de bain][Hydrometrie][Humidité]# est de 80 %.
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
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)

Les commandes spécifiques

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

Template de scénario

Cette fonctionalité permet de transformer un scénario en template pour par exemple l’appliquer sur un autre Jeedom ou le partager sur le Market. C’est aussi à partir de là que vous pouvez récupérer un scénario du Market.

scenario15

Vous verrez alors cette fenêtre :

scenario16

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

Par un clic sur un template, vous obtenez :

scenario17

En haut, vous pouvez :

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 reservé aux utilisateurs avancés. La moindre erreur peut faire planter 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 class que vous devez ajouter vos fonctions, vous y trouverez un exemple de fonction basique.

IMPORTANT

Si vous avez un soucis vous pouvez toujours revenir au fichier d’origine en copier 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.