Outils → Scénarios
Véritable cerveau de la domotique, les scénarios permettent d’interagir avec le monde réel de manière intelligente.
Vous y trouverez la liste des scénarios de votre Jeedom, ainsi que des fonctionnalités pour les gérer au mieux :
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.
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).
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 avec0 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 formeGi
(heure sans zero initial et minute, exemple pour09h15
=>915
ou pour23h40
=>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.
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…).
Voici les différents types de blocs disponibles :
Chaque bloc a ses options pour mieux les manipuler :
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.
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.
cmd::byString($string);
: Retourne l’objet commande correspondant.
$string
: Lien vers la commande voulue : #[objet][equipement][commande]#
(ex : #[Appartement][Alarme][Actif]#
)cmd::byId($id);
: Retourne l’objet commande correspondant.
$id
: ID de la commande voulue.$cmd->execCmd($options = null);
: Exécute la commande et retourne le résultat.
$options
: Options pour l’exécution de la commande (peut être spécifique au plugin). Options de base (sous-type de la commande) :
message
: $option = array('title' => 'titre du message , 'message' => 'Mon message');
color
: $option = array('color' => 'couleur en hexadécimal');
slider
: $option = array('slider' => 'valeur voulue de 0 à 100');
log::add('filename','level','message');
filename
: Nom du fichier de log.level
: [debug], [info], [error], [event].message
: Message à écrire dans les logs.$scenario->getName();
: Retourne le nom du scénario courant.$scenario->getGroup();
: Retourne le groupe du scénario.$scenario->getIsActive();
: Retourne l’état du scénario.$scenario->setIsActive($active);
: Permet d’activer ou non le scénario.
$active
: 1 actif , 0 non actif.$scenario->running();
: Permet de savoir si le scénario est en cours d’exécution ou non (true / false).$scenario->save();
: Sauvegarde les modifications.$scenario->setData($key, $value);
: Sauvegarde une donnée (variable).
$key
: clé de la valeur (int ou string).$value
: valeur à stocker (int
, string
, array
ou object
).$scenario->getData($key);
: Récupère une donnée (variable).
$key => 1
: clé de la valeur (int ou string).$scenario->removeData($key);
: Supprime une donnée.$scenario->setLog($message);
: Écrit un message dans le log du scénario.$scenario->persistLog();
: Force l’écriture du log (sinon il est écrit seulement à la fin du scénario). Attention, ceci peut un peu ralentir le scénario.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
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 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.
Il existe des déclencheurs spécifiques (autre que ceux fournis par les commandes) :
#start#
: Déclenché au (re)démarrage de Jeedom.#begin_backup#
: Événement envoyé au début d’une sauvegarde.#end_backup#
: Événement envoyé à la fin d’une sauvegarde.#begin_update#
: Événement envoyé au début d’une mise à jour.#end_update#
: Événement envoyé à la fin d’une mise à jour.#begin_restore#
: Événement envoyé au début d’une restauration.#end_restore#
: Événement envoyé à la fin d’une restauration.#user_connect#
: Connexion d’un utilisateur#variable(nom_variable)#
: Changement de valeur de la variable nom_variable.#genericType(GENERIC, #[Object]#)#
: Changement d’une commande info de Type Generic GENERIC, dans l’objet Object.#new_eqLogic#
: Événement envoyé lors de la création d’un nouvelle équipement, vous avez dans les tags id (id de l’équipement crée), name (nom de l’équipement crée) et eqType (type/plugin de l’équipement crée)Vous pouvez aussi déclencher un scénario en utilisant l’API HTTP décrite ici.
Vous pouvez utiliser n’importe lequel des symboles suivants pour les comparaisons dans les conditions :
==
: Egal à.>
: Strictement supérieur à.>=
: Supérieur ou égal à.<
: Strictement inférieur à.<=
: Inférieur ou égal à.!=
: Différent de, n’est pas égal à.matches
: Contient. Ex : [Salle de bain][Hydrometrie][etat] matches "/humide/"
.not(… matches …)
: Ne contient pas. Ex : not([Salle de bain][Hydrometrie][etat] matches "/humide/")
.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
&&
: et. Attention, l’utilisation de : ET
/ et
/ AND
/ and
n’est pas recommandée, dans certain cas cela peut fonctionner mais avec certaines fonctions php cela ne fonctionnera pas.||
: ou. Attention, l’utilisation de : OU
/ ou
/ OR
/ or
n’est pas recommandée, dans certain cas cela peut fonctionner mais avec certaines fonctions php cela ne fonctionnera pas.xor
: ou exclusif. Attention, l’utilisation de : XOR
/ ^
n’est pas recommandée, dans certain cas cela peut fonctionner mais avec certaines fonctions php cela ne fonctionnera pas.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.
#seconde#
: Seconde courante (sans les zéros initiaux, ex : 6 pour 08:07:06).#hour#
: Heure courante au format 24h (sans les zéros initiaux). Ex : 8 pour 08:07:06 ou 17 pour 17:15.#hour12#
: Heure courante au format 12h (sans les zéros initiaux). Ex : 8 pour 08:07:06.#minute#
: Minute courante (sans les zéros initiaux). Ex : 7 pour 08:07:06.#day#
: Jour courant (sans les zéros initiaux). Ex : 6 pour 06/07/2017.#month#
: Mois courant (sans les zéros initiaux). Ex : 7 pour 06/07/2017.#year#
: Année courante.#time#
: Heure et minute courantes. Ex : 1715 pour 17h15.#timestamp#
: Nombre de secondes depuis le 1er janvier 1970.#date#
: Jour et mois. Attention, le premier nombre est le mois. Ex : 1215 pour le 15 décembre.#week#
: Numéro de la semaine.#sday#
: Nom du jour de la semaine. Ex : Samedi.#nday#
: Numéro du jour de 0 (dimanche) à 6 (samedi).#smonth#
: Nom du mois. Ex : Janvier.#IP#
: IP interne de Jeedom.#hostname#
: Nom de la machine Jeedom.#jeedomName#
: Nom du Jeedom.#trigger#
: Peut être :
api
si le lancement a été déclenché par l’API,TYPEcmd
si le lancement a été déclenché par une commande, avec TYPE remplacé l’id du plugin (ex virtualCmd),schedule
s’il a été lancé par une programmation,user
s’il a été lancé manuellement,start
pour un lancement au démarrage de Jeedom.#trigger_id#
: Si c’est une commande qui a déclenché le scénario alors ce tag à la valeur de l’id de la commande qui l’a déclenché. Exemple : #trigger_id# == 19
#trigger_name#
: Si c’est une commande qui a déclenché le scénario alors ce tag à la valeur du nom de la commande (sous forme [objet][equipement][commande]). Exemple : #trigger_name# == '[cuisine][lumiere][etat]'
#trigger_value#
: Si c’est une commande qui a déclenché le scénario alors ce tag à la valeur de la commande ayant déclenché le scénario. Astuce si vous voulez la valeur courante de la commande qui a déclencher le scénario (et non sa valeur au déclenchement) vous pouvez utiliser : ##trigger_id##
(double #)#latitude#
: Permet de récuperer l’information de latitude mise dans la configuration de jeedom#longitude#
: Permet de récuperer l’information de longitude mise dans la configuration de jeedom#altitude#
: Permet de récuperer l’information de altitude mise dans la configuration de jeedom#sunrise#
: Permet de récupérer l’heure du lever du soleil à condition que la latitude et la longitude soient renseignées dans la configuration de jeedom#sunset#
: Permet de récupérer l’heure du coucher du soleil à condition que la latitude et la longitude soient renseignées dans la configuration de jeedomVous 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é.
Plusieurs fonctions sont disponibles pour les équipements :
average(commande,période)
& averageBetween(commande,start,end)
: Donnent la moyenne de la commande sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s
ou expression PHP).
averageTemporal(commande,période)
& averageTemporalBetween(commande,start,end)
: Donnent la moyenne des valeurs de la commande pondérée par leur durée d’existence sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s
ou expression PHP).
min(commande,période)
& minBetween(commande,start,end)
: Donnent le minimum de la commande sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s
ou expression PHP).
max(commande,période)
& maxBetween(commande,start,end)
: Donnent le maximum de la commande sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s
ou expression PHP).
duration(commande, valeur, période)
& durationbetween(commande,valeur,start,end)
: Donnent la durée en minutes pendant laquelle l’équipement avait la valeur choisie sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s
ou expression PHP).
statistics(commande,calcul,période)
& statisticsBetween(commande,calcul,start,end)
: Donnent le résultat de différents calculs statistiques (sum, count, std, variance, avg, min, max) sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s
ou expression PHP).
tendance(commande,période,seuil)
: Donne la tendance de la commande sur la période (period=[month,day,hour,min] ou expression PHP).
stateDuration(commande)
: Donne la durée en secondes depuis le dernier changement de valeur.
-1 : Aucun historique n’existe ou la valeur n’existe pas dans l’historique.
-2 : La commande n’est pas historisée.
lastChangeStateDuration(commande,valeur)
: Donne la durée en secondes depuis le dernier changement d’état à la valeur passée en paramètre.
-1 : Aucun historique n’existe ou la valeur n’existe pas dans l’historique.
-2 La commande n’est pas historisée
lastStateDuration(commande,valeur)
: Donne la durée en secondes pendant laquelle l’équipement a dernièrement eu la valeur choisie.
-1 : Aucun historique n’existe ou la valeur n’existe pas dans l’historique.
-2 : La commande n’est pas historisée.
age(commande)
: Donne l’âge en secondes de la valeur de la commande (collecDate
)
-1 : La commande n’existe pas ou elle n’est pas de type info.
stateChanges(commande,[valeur], période)
& stateChangesBetween(commande, [valeur], start, end)
: Donnent le nombre de changements d’état (vers une certaine valeur si indiquée, ou si non indiqué par rapport à sa valeur actuelle) sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s
ou expression PHP).
lastBetween(commande,start,end)
: Donne la dernière valeur enregistrée pour l’équipement entre les 2 bornes demandées (sous la forme Y-m-d H:i:s
ou expression PHP).
variable(mavariable,valeur par défaut)
: Récupère la valeur d’une variable ou de la valeur souhaitée par défaut.
genericType(GENERIC, #[Object]#)
: Récupère la somme des infos de Type Générique GENERIC dans l’objet Object.
scenario(scenario)
: Renvoie le statut du scénario.
1 : En cours,
0 : Arrêté,
-1 : Désactivé,
-2 : Le scénario n’existe pas,
-3 : L’état n’est pas cohérent.
Pour avoir le nom “humain” du scénario, vous pouvez utiliser le bouton dédié à droite de la recherche de scénario.
lastScenarioExecution(scenario)
: Donne la durée en secondes depuis le dernier lancement du scénario.
0 : Le scénario n’existe pas
collectDate(cmd,[format])
: Renvoie la date de la dernière collecte de données pour la commande placée en paramètre, le 2ème paramètre optionnel permet de spécifier le format de retour (détails ici).
-1 : La commande est introuvable,
-2 : La commande n’est pas de type info.
valueDate(cmd,[format])
: Renvoie la date de la dernière valeur connue pour la commande placée en paramètre, le 2ème paramètre optionnel permet de spécifier le format de retour (détails ici).
-1 : La commande est introuvable,
-2 : La commande n’est pas de type info.
eqEnable(equipement)
: Renvoie l’état de l’équipement.
-2 : L’équipement est introuvable,
1 : L’équipement est actif,
0 : L’équipement est inactif.
value(cmd)
: Renvoie la valeur d’une commande si elle n’est pas donnée automatiquement par Jeedom (cas lors du stockage du nom de la commande dans une variable)
tag(montag,[defaut])
: Permet de récupérer la valeur d’un tag ou la valeur par défaut si il n’existe pas.
name(type,commande)
: Permet de récupérer le nom de la commande, de l’équipement ou de l’objet. Type : cmd, eqLogic ou object.
lastCommunication(equipment,[format])
: Renvoie la date de la dernière remontée d’information pour l’équipement donné en paramètre, le 2ème paramètre optionnel permet de spécifier le format de retour (détails ici). Un retour de -1 signifie que l’équipement est introuvable. La date de derniere information est calculé par rapport au commande de type information et de leur date de collecte.
color_gradient(couleur_debut,couleur_fin,valuer_min,valeur_max,valeur)
: Renvoie une couleur calculée par rapport à une valeur dans l’intervalle couleur_debut/couleur_fin. La valeur doit être comprise entre valeur_min et valeur_max.
Les périodes et intervalles de ces fonctions peuvent également s’utiliser avec des expressions PHP comme par exemple :
Now
: maintenant.Today
: 00:00 aujourd’hui (permet par exemple d’obtenir des résultats de la journée si entre Today
et Now
).Last Monday
: lundi dernier à 00:00.5 days ago
: il y a 5 jours.Yesterday noon
: hier midi.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 |
Une boîte à outils de fonctions génériques peut également servir à effectuer des conversions ou des calculs :
rand(1,10)
: Donne un nombre aléatoire de 1 à 10.randText(texte1;texte2;texte…..)
: Permet de retourner un des textes aléatoirement (séparer les texte par un ; ). Il n’y a pas de limite dans le nombre de texte.randomColor(min,max)
: Donne une couleur aléatoire comprise entre 2 bornes ( 0 => rouge, 50 => vert, 100 => bleu).trigger(commande)
: Permet de connaître le déclencheur du scénario ou de savoir si c’est bien la commande passée en paramètre qui a déclenché le scénario. => Deprecated il vaut mieux utiliser le tag #trigger#triggerValue()
: Permet de connaître la valeur du déclencheur du scénario. => Deprecated il vaut mieux utiliser le tag #triggerValue#round(valeur,[decimal])
: Donne un arrondi au-dessus, [decimal] nombre de décimales après la virgule.odd(valeur)
: Permet de savoir si un nombre est impair ou non. Renvoie 1 si impair 0 sinon.median(commande1,commande2….commandeN)
: Renvoie la médiane des valeurs.avg(commande1,commande2….commandeN)
: Renvoie la moyenne des valeurs.time_op(time,value)
: Permet de faire des opérations sur le temps, avec time=temps (ex : 1530) et value=valeur à ajouter ou à soustraire en minutes.time_between(time,start,end)
: Permet de tester si un temps est entre deux valeurs avec time=temps
(ex : 1530), start=temps
, end=temps
. Les valeurs start et end peuvent être à cheval sur minuit.time_diff(date1,date2[,format, round])
: Permet de connaître la différence entre deux dates (les dates doivent être au format AAAA/MM/JJ HH:MM:SS). Par défaut, la méthode retourne la différence en jour(s). Vous pouvez lui demander en secondes (s), minutes (m), heures (h). Exemple en secondes time_diff(2019-02-02 14:55:00,2019-02-25 14:55:00,s)
. La différence est retournée en absolu, sauf si vous spécifiez f
(sf
, mf
, hf
, df
). Vous pouvez aussi utiliser dhms
qui ne retournera pas exemple 7j 2h 5min 46s
. Le paramètre round, optionnel, arrondit à x chiffres après la virgule (2 par défaut). Ex: time_diff(2020-02-21 20:55:28,2020-02-28 23:01:14,df, 4)
.formatTime(time)
: Permet de formater le retour d’une chaine #time#
.floor(time/60)
: Permet de convertir des secondes en minutes, ou des minutes en heures (floor(time/3600)
pour des secondes en heures).convertDuration(secondes)
: Permet de convertir des secondes en j/h/mn/s.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 |
sun(elevation)
: Donne en ° l’élevation du soleil (attention il faut avoir renseigné vos coordonées géographique dans la configuration de jeedom)sun(azimuth)
: Donne en ° l’azimuth du soleil (attention il faut avoir renseigné vos coordonées géographique dans la configuration de jeedom)En plus des commandes domotiques, vous avez accès aux actions suivantes :
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.
IMPORTANT
L’ajout de fonction PHP est réservé aux utilisateurs avancés. La moindre erreur peut être fatale pour votre Jeedom.
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
dansuser.function.class.php