Un scénario peut écrire dans un fichier journal afin de vous aider à garder une trace de ce qui s'est passé.
Je vous présente ici quelques techniques pour y parvenir.
La façon la plus facile pour ajouter du texte dans un fichier journal est par une action de type Log.
Ceci écrira dans le log d'exécution du scénario.
La chaîne est au format #[Objet][Equipement][Commande]#, par exemple #[Cuisine][Capteur Zooz 4-en-1][Luminosité]#.
Pour voir le fichier journal du scénario, vous devez cliquer sur l'icône
dans le haut de la fenêtre d'édition du scénario.Et voilà le résultat :
Un bloc de code est un endroit où il est possible d'ajouter des lignes de code PHP qui seront exécutées lorsque le scénario sera lancé.
Le bloc de code offre plus de possibilités pour écrire dans les fichiers journaux.
Dans le scénario, le bloc de code s'ajoute en choisissant
sous .C'est dans ce bloc de code qu'il est possible d'ajouter une instruction qui écrira dans un fichier journal.
Tout comme les actions de type Log, la méthode $scenario->setLog() permet d'écrire dans le log d'exécution du scénario.
$scenario->setLog('Mon message');
N'oubliez pas le point-virgule à la fin de l'instruction. Après tout, c'est du PHP!
La méthode log::add() vous permet d'écrire dans un fichier journal de votre choix et de spécifier le niveau de gravité du message.
Si le fichier journal n'existe pas, Jeedom le créera automatiquement avant d'y inscrire votre message. Si le fichier journal existe, votre message sera ajouté à la suite des autres messages de ce fichier.
log::add('nom_du_fichier_journal', 'type_du_message', 'message');
Les paramètres de cette méthode vont comme suit :
Souvent, on utilisera le fichier nommé alertes pour enregistrer le message dans le log des alertes.
Le niveau de log configuré déterminera quels messages seront enregistrés selon leur type.
N'oubliez pas le point-virgule à la fin de l'instruction!
log::add('alertes', 'ALERT', 'Mon message');
Voici un exemple de scénario qui illustre les différentes façons d'écrire dans un fichier journal.
Il est possible d'enregistrer un message qui contient des variables.
Il peut s'agir de variables PHP que vous aurez initialisées, par exemple à partir des valeurs lues dans un capteur.
Voici un bloc de code qui inscrit la valeur de la luminance d'un capteur de lumière.
Remarquez les guillemets alentour du message afin de permettre à PHP d'interpréter la valeur de la variable.
$cmd = cmd::byString('#[Maison][Détecteur Lumière][Luminance]#');
$value = $cmd->execCmd();
log::add('alertes', 'ALERT', "Luminance: $value");
Vous obtiendrez le même résultat avec ceci :
log::add('alertes', 'ALERT', "Luminance: " . cmd::byString('#[Maison][Détecteur Lumière][Luminance]#')->execCmd());
Fait intéressant : il est possible de retrouver de l'information sur le déclencheur et de l'enregistrer dans le fichier journal.
$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger()); // chaîne qui identifie la commande qui a déclenché le scénario, au format #[Objet][Equipement][Commande]#
$cmd = cmd::byString($trigger);
$value = $cmd->execCmd();
log::add('alertes', 'ALERT', "Valeur du déclencheur : $value");
▼Publicité