Formation PUB420 : Système domotique DIY, 2020 Jeedom

5.39 Scénario qui ajoute une entrée dans le fichier journal


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.

Action de type log

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.

  • Dans le scénario, cliquez sur Ajouter / Action.
  • Cliquez sur l'icône Sélectionner un mot-clé.

    Sélectionner un mot-clé

  • Dans la liste déroulante qui apparaît, choisissez Ajouter un log.

    Action de type Log

  • Vous pourrez ensuite préciser le message à enregistrer dans le fichier journal.

    Message à enregistrer

  • Il est également possible d'ajouter des valeurs à votre message, par exemple la valeur d'un capteur (commande de type Info seulement). Il vous faudra entrer vous-même la chaîne qui mène à cette valeur.

    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 Log dans le haut de la fenêtre d'édition du scénario.

    Log d'exécution du scénario

    Et voilà le résultat :

    Mesasge dans le log d'exécution du scénario

Bloc de code

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 Bloc Code sous Action.

Bloc Code

C'est dans ce bloc de code qu'il est possible d'ajouter une instruction qui écrira dans un fichier journal.

$scenario->setLog()

Tout comme les actions de type Log, la méthode $scenario->setLog() permet d'écrire dans le log d'exécution du scénario.

PHP

$scenario->setLog('Mon message');

N'oubliez pas le point-virgule à la fin de l'instruction. Après tout, c'est du PHP!

log::add()

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.

Syntaxe bloc de code dans scénario (PHP)

log::add('nom_du_fichier_journal', 'type_du_message', 'message');

Les paramètres de cette méthode vont comme suit :

  • Le nom du fichier journal peut être n'importe quoi à votre goût. Si le fichier n'existe pas déjà, il sera créé.

    Souvent, on utilisera le fichier nommé alertes pour enregistrer le message dans le log des alertes.

  • Le type du message peut être, par ordre de gravité :
    • DEBUG
    • INFO
    • NOTICE
    • WARNING
    • ERROR
    • CRITICAL
    • ALERT
    • EMERGENCY

    Le niveau de log configuré déterminera quels messages seront enregistrés selon leur type.

  • En troisième paramètre, inscrivez le message à enregistrer dans le fichier journal.

N'oubliez pas le point-virgule à la fin de l'instruction!

Bloc de code dans scénario (PHP)

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.

Scénario qui écrit dans les logs

Variables dans les messages

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.

Bloc de code dans scénario (PHP)

$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 :

Bloc de code dans scénario (PHP)

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.

Bloc de code dans scénario (PHP)

$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é

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre