Scénario pour la récupération des compteurs d'eau en fuite

Bonjour,

J’ai actuellement 45 compteurs d’eau sur mon site et bientôt encore d’autres donc plutôt que de faire plein de scénarios. Je me demandais si je ne pouvais pas faire un scénario global qui utiliserai le générique type fuite d’eau. L’idée est d’interroger tout les compteurs et que si il y a une fuite sur le compteur d’eau en fuite ou les compteurs en fuites il me fais une notif pour me dire lequel ou lesquelles sont en fuite et pourquoi pas le stocker dans une variable pour l’utiliser ailleurs par exemple.
Je n’y connais rien en code. J’ai fais un tour sur chat gpt qui m’a proposé cela mais j’obtiens rien…
En déclencheur de mon scénario je dois mettre la valeur de détection de tout mes compteurs ou bien il existe un déclencheur via le gen type ?

Merci d’avance de votre aide.

// Inclusion des classes de Jeedom
require_once dirname(__FILE__) . '/../../core/php/core.inc.php';

// Fonction pour obtenir les équipements avec une fuite d'eau
function trouverFuites() {
    $resultat = array();
    // Récupérer tous les équipements
    $equipements = eqLogic::byType(WATER_LEAK); // Récupérer tous les équipements

    // Parcourir chaque équipement
    foreach ($equipements as $equipement) {
        // Récupérer toutes les commandes info de l'équipement
        $commandes = $equipement->getCmd('info');
        foreach ($commandes as $commande) {
            // Exécuter la commande pour obtenir sa valeur
            $etat = $commande->execCmd();
            if ($etat == 1) {
                // Ajouter l'équipement à la liste si une fuite est détectée
                $resultat[] = $equipement->getHumanName();
                break; // Sortir de la boucle des commandes si une fuite est trouvée
            }
        }
    }
    return $resultat;
}

// Utilisation de la fonction pour trouver les fuites
$fuites = trouverFuites();

// Vérification des équipements avec une fuite d'eau et affichage du message
if (!empty($fuites)) {
    $message = "Il y a une fuite sur les équipements suivants : " . implode(", ", $fuites);
    echo $message;
    // Stocker le message dans une variable de scénario pour une utilisation ultérieure
    $scenario->setData('messageFuite', $message);
} else {
    echo "Aucune fuite d'eau détectée dans les équipements.";
}

Je ne connais pas trop l’utilisation des scripts dans les scénarios. Je ne peux donc pas te donner une réponse complète.

Mais à mon avis, il y a un souci parce que tu as créé une fonction mais il n’y a pas d’appel de cette fonction qui n’est donc probablement jamais exécutée.

Voici ce que je ferais dans un premier temps:

  • suppression de la ligne break pour avoir une liste de tous les équipements avec une fuite plutôt que juste le premier équipement ayant une fuite.
  • Ajout d’un log en début et fin ainsi qu’à la place du break.
  • ajout d’une ligne trouverFuites(); après la dernière ligne.

Si ça ne marche pas, il faut espérer que quelqu’un de plus compétent que moi dans ce domaine puisse t’aider.

Bonjour

Au vu de l’importance de ton installation, s’initier au PHP serait un bon investissement.

La documentation existe en français:
https://www.php.net/download-docs.php

Tu as aussi:

Chat gpt ne t’apportera que des désagréments et pertes de temps.

Cordialement