Bonjour à tous,
Ca fait un moment que j’aimerais que Watchdog en plus des alertes, puisse m’envoyer à intervalle régulier un rapport (parce que si on est pris au moment de l’alerte c’est un coup à l’oublier derrière). Mais comme je suis une grosse feignasse assumée et que je voulais expérimenter… J’ai demandé de l’aide, a ChatGPT
Je vous livre le résultat, alors il y a eu bien sûr un peu de prompt engineering et j’aurais sûrement passé moins de temps à le faire moi-même (quoique, vues mes compétences en PHP…) mais c’est quand même totalement bluffant, bien entendu c’est fonctionnel (testé et approuvé) et mis en production chez moi
1. Dans Jeedom, allez dans le menu « Scénarios ».
2. Cliquez sur le bouton « + » pour créer un nouveau scénario.
3. Donnez un nom à votre scénario, par exemple « Rapport quotidien Watchdog ».
4. Dans l’onglet « Scénario », ajoutez un bloc « Code » en cliquant sur « Ajouter » puis « Code ».
5. Copiez et collez le code suivant dans le bloc « Code » :
// Récupérez tous les équipements de type "Watchdog"
$equipementsWatchdog = eqLogic::byType('Watchdog');
// Générez le rapport avec les pastilles vertes et rouges pour chaque contrôle inversé dans un tableau HTML
$rapport = "<table border='1' cellpadding='5' cellspacing='0'>";
$rapport .= "<tr><th>Pastille</th><th>Contrôle</th><th>État</th></tr>";
$greenImg = 'https://i.imgur.com/1zHTojw.png'; // URL d'une pastille verte en ligne
$redImg = 'https://i.imgur.com/pc2e1L7.png'; // URL d'une pastille rouge en ligne
foreach ($equipementsWatchdog as $equipement) {
$cmds = $equipement->getCmd('info');
foreach ($cmds as $cmd) {
// Récupérez la valeur de "resultat" à partir de la configuration de la commande
$config = $cmd->getConfiguration();
$etatStr = $config['resultat'];
$nom = $cmd->getName();
// Convertissez la chaîne "True" ou "False" en un booléen
$etat = ($etatStr === "True") ? 1 : 0;
$pastille = ($etat == 0) ? "<img src='$greenImg' alt='OK'>" : "<img src='$redImg' alt='KO'>"; // Inversez la condition ici
$ligne = "<tr><td>" . $pastille . "</td><td>" . $nom . "</td><td>" . ($etat == 0 ? 'OK' : 'KO') . "</td></tr>"; // Inversez la condition ici
$rapport .= $ligne;
}
}
$rapport .= "</table>";
$scenario->setData("rapport", $rapport);
// Générez la variable $title avec le titre de l'e-mail
$title = "Rapport quotidien des équipements Watchdog - " . date("Y-m-d");
// Rendez la variable $title disponible en dehors du bloc code
$scenario->setData("title", $title);
6. Enregistrez le scénario en cliquant sur le bouton « Sauvegarder ».
7. Ajoutez un bloc « Action » en cliquant sur « Ajouter » puis « Action ».
8. Dans le bloc « Action », sélectionnez la commande « Envoyer un mail » de votre équipement « Mail Test ».
9. Dans le champ « Titre », entrez variable(title)
pour utiliser la variable $title
générée par le bloc « Code ».
10. Dans le champ « Message », entrez variable(rapport)
pour utiliser la variable $rapport
générée par le bloc « Code ».
11. Enregistrez le scénario en cliquant sur le bouton « Sauvegarder ».
12. Dans l’onglet « Programmation », configurez le scénario pour qu’il s’exécute tous les matins à l’heure souhaitée. Par exemple, pour le programmer tous les jours à 8h00, entrez 00 8 * * *
dans le champ « Programmation ».
13. Activez le scénario en cochant la case « Activer » en haut à droite, puis cliquez sur « Sauvegarder ».
Le scénario est maintenant configuré pour envoyer un e-mail quotidien avec l’état des équipements Watchdog et les pastilles vertes et rouges pour chaque contrôle. Les e-mails seront envoyés à l’adresse e-mail définie dans votre équipement « Mail Test ».