Tuto : Monitorer son infra domotique (serveur / batterie / last communication) sur JeedomConnect

Non, de toute facon, ce sont les MAJ system, donc adquard ou pas, si tu n’a plus les MAJ, le pb est coté linux

que donnent le scommandes suivantes directement en SSH:

sudo apt-get update -qq ; LANG=CC apt-get upgrade -s | grep -P '^\d+ upgraded' | cut -d" " -f1
et
LANG=CC apt list --upgradable -qq 2>/dev/null | cut -d"/" -f1 | sed 's/$/<br>/'

Bonjour,

Pas grand chose actuellement, pas de mise à jour. c’est plus la connection SSH via SSH command sur jeedom, pourtant j’arrive bien à me connecter en ssh avec putty. Exact. tanpis pas trop grave je vais le supprimée et recrée les commandes on verra bien.

As-tu essayer de faire un ssh de ton jeedom (user utilisé pour jeedom) vers ton adguard (compte utilisé par SSH commander ?

Norbert

Oui justement c’est SSH commander qui me dit nok à chaque fois.

Salut @ngrataloup,

J’ai fait la configuration pour les batteries et les Com.

pour les Com ça fonctionne, mais les batteries l’info ne remonte pas du core :

Pourtant j’en ai un en Warning :
image

le code que j’ai modifier, j’ai bien contrôler les noms des virtuels ! c’est ok et quand je lance le scenario, il actualise bien les virtuels :

require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnectWidget.class.php';

$plugins                   = array('Deconz', 'Z-Wave', 'network'); // plugins à prendre en compte
$eqIdExclude               = array(); // equipements à exclure
// Equipement viruel
$eqVirtuel                 = '[Notifications][Vérification des batteries]';

// Choix des verifs
$checkBatteryEnable        = 1; // 1 -> activer le check batterie , 0 -> desactiver
$checkComEnable            = 1; // 1 -> activer le check com , 0 -> desactiver
// notification
$EnableNotifJC             = 0; // Autoriser les notifs
$cmdNotifJC                = "#[Norbert][JC_Norbert][Notif_Defaut_Infra]#"; // Commande de notification (avec les # autour)
$AlertPageIdJC             = 94; // ID de la page d'alerte sur JC
$heureNotifJC              = 6; // 1 seule notif par jour à $heureNotifJC heure
//Seuils d'alerte
$seuilBatteryWarning       = config::byKey('battery::warning', 'core'); // recupéré de la page equipement de la config générale Jeedom
$seuilBatteryDanger        = config::byKey('battery::danger', 'core'); // recupéré de la page equipement de la config générale Jeedom
$seuilComWarning           = 86400; // 86400 = 1 jour
$seuilComDanger            = 86400 * 2; // 2 jours
//initialisation des variables
$nbBatteryOK               = 0;
$nbBatteryWarning          = 0;
$nbBatteryDanger           = 0;
$nbBatteryTotal            = 0;
$listBatteryWarning        = '';
$listBatteryDanger         = '';
$nbComOK                   = 0;
$nbComWarning              = 0;
$nbComDanger               = 0;
$nbComTotal                = 0;
$listComWarning            = '';
$listComDanger             = '';

$eqVirtuelBatteryWarning   = '#' . $eqVirtuel . '[Batterie Warning]#';
$eqVirtuelBatteryDanger    = '#' . $eqVirtuel . '[Batterie Danger]#';
$eqVirtuelBatteryNbOK      = '#' . $eqVirtuel . '[NB Batterie OK]#';
$eqVirtuelBatteryNbWarning = '#' . $eqVirtuel . '[NB Batterie Warning]#';
$eqVirtuelBatteryNbDanger  = '#' . $eqVirtuel . '[NB Batterie Danger]#';
$eqVirtuelBatteryNbTotal   = '#' . $eqVirtuel . '[NB Equipements batterie]#';
$eqVirtuelComWarning       = '#' . $eqVirtuel . '[Com Warning]#';
$eqVirtuelComDanger        = '#' . $eqVirtuel . '[Com Danger]#';
$eqVirtuelComNbOK          = '#' . $eqVirtuel . '[NB Com OK]#';
$eqVirtuelComNbWarning     = '#' . $eqVirtuel . '[NB Com Warning]#';
$eqVirtuelComNbDanger      = '#' . $eqVirtuel . '[NB Com Danger]#';
$eqVirtuelComNbTotal       = '#' . $eqVirtuel . '[NB Equipements Com]#';

if ($checkBatteryEnable)
{ // 0 - pas de check, 1 - check batt, 2 ; check com, 3 check batt + com
  if ($checkComEnable) $checksEnable = 3;
  else $checksEnable = 1;
}
else
{
  if ($checkComEnable) $checksEnable = 2;
  else
  {
    $scenario->setLog("Aucun check activé");
    exit("Aucun check activé");
  }
}

foreach ($plugins as $plugin)
{ // Pour chaque plugin
  foreach (eqLogic::byType($plugin, true) as $eqLogic)
  { // pour chaque equipement du plugin
    $eqId              = $eqLogic->getId();

    if (in_array($eqId, $eqIdExclude) == false)
    { // Si l'equipememnt n'et spas dans les equipements exclus des verifs
      $eqLogicName       = $eqLogic->getName();
      $eqId              = $eqLogic->getId();
      $eqLogicHumaneName = $eqLogic->getHumanName();
      $eqLogicId         = $eqLogic->getId();
      $eqLogicType       = $eqLogic->getEqType_name();
      $objID             = $eqLogic->getObject_id();
      switch ($plugin)
      {
        case "zigbee":
          $deviceModel       = $eqLogic->getConfiguration('device');
        break;
        case "openzwave":
          $deviceModel = $eqLogic->getConfiguration('product_name');
        break;
        case "jMQTT":
          $deviceModel = $eqLogic->getConfiguration('commentaire');
        break;
        default:
          $deviceModel = $eqLogic->getConfiguration('device_model');
        break;
      }

      // Calcul des niveau d'alarmes des batteries
      if ($checkBatteryEnable)
      {
        if (!empty($deviceModel))
        { // si il n'y a pas de numero de model, on considere que ce n'est pas un equipement matériel, donc pas de batterie !!
          switch ($deviceModel)
          {
            case 'TS0601_thermostat': // je fais un test dans ma sitution perso sur ce modele qui ne renvoie pas un % de batterie, mais un booleen batterie faible, ous pouvez integrer des exceptions de gesiton de batterie ici
              $batteryLowBinaire = cmd::byString("#" . $eqLogicHumaneName . "[Batterie faible]#")->execCmd();
              if ($batteryLowBinaire) $batteryStatus     = 0;
              else $batteryStatus     = 100;
              break;
            default:
              $batteryStatus = $eqLogic->getStatus('battery');
              break;
            }

            if (isset($batteryStatus) and $batteryStatus !== "")
            { // comptabilisation des batteries OK ou en warning ou en critical
              $nbBatteryTotal++;
              if ($batteryStatus <= $seuilBatteryDanger)
              {
                $nbBatteryDanger++;
                $listBatteryDanger = $listBatteryDanger . "<span style=\"font-size:13px\"><b>" . $eqLogicHumaneName . "</b> (" . $eqLogicType . "): " . $batteryStatus . "%<br></span>";
              }
              elseif ($batteryStatus <= $seuilBatteryWarning)
              {
                $nbBatteryWarning++;
                $listBatteryWarning = $listBatteryWarning . "<span style=\"font-size:13px\"><b>" . $eqLogicHumaneName . "</b> (" . $eqLogicType . "): " . $batteryStatus . "%<br></span>";
              }
              else
              {
                $nbBatteryOK++;
              }
            }
          }
      }

      // calcul des niveaux d'alarme des lastCom
      if ($checkComEnable)
      {
        $lastCom     = strtotime($eqLogic->getStatus('lastCommunication'));
        $elapsedTime = time() - $lastCom;

        if (isset($lastCom) and $lastCom !== "")
        { // comptabilisation des LastCom OK ou en warning ou en critical
          $nbComTotal++;
          if ($elapsedTime >= $seuilComDanger)
          {
            $nbComDanger++;
            $listComDanger = $listComDanger . "<span style=\"font-size:13px\"><b>" . $eqLogicHumaneName . "</b> (" . $eqLogicType . "): " . round($elapsedTime / 3600) . "h<br></span>";
          }
          elseif ($elapsedTime >= $seuilComWarning)
          {
            $nbComWarning++;
            $listComWarning = $listComWarning . "<span style=\"font-size:13px\"><b>" . $eqLogicHumaneName . "</b> (" . $eqLogicType . "): " . round($elapsedTime / 3600) . "h<br></span>";
          }
          else
          {
            $nbComOK++;
          }
          switch ($checksEnable)
          {
            case 1:
              $scenario->setLog("	# [" . $plugin . "] Equipment : " . $eqLogicHumaneName . " (" . $deviceModel . ") => battery : " . $batteryStatus . ", Com : N/A");
            break;
            case 2:
              $scenario->setLog("	# [" . $plugin . "] Equipment : " . $eqLogicHumaneName . " (" . $deviceModel . ") => battery : N/A, Com : " . $elapsedTime);
            break;
            case 3:
              $scenario->setLog("	# [" . $plugin . "] Equipment : " . $eqLogicHumaneName . " (" . $deviceModel . ") => battery : " . $batteryStatus . ", Com : " . $elapsedTime);
            break;
          }
        }
      }
    }
  }
}

// Affichage-formatage des resultats dans les virtuels
if ($checkBatteryEnable)
{
  if ($nbBatteryWarning == 0) $listBatteryWarning = "<span style=\"font-size:13px\"><b>Aucun équipement en warning</b></span>";
  if ($nbBatteryDanger == 0) $listBatteryDanger  = "<span style=\"font-size:13px\"><b>Aucun équipement en critical</b></span>";
  cmd::byString($eqVirtuelBatteryNbOK)->event($nbBatteryOK);
  cmd::byString($eqVirtuelBatteryNbWarning)->event($nbBatteryWarning);
  cmd::byString($eqVirtuelBatteryNbDanger)->event($nbBatteryDanger);
  cmd::byString($eqVirtuelBatteryNbTotal)->event($nbBatteryTotal);
  cmd::byString($eqVirtuelBatteryWarning)->event($listBatteryWarning);
  cmd::byString($eqVirtuelBatteryDanger)->event($listBatteryDanger);
}
else $scenario->setLog("Check batterie desactivé");

if ($checkComEnable)
{
  if ($nbComWarning == 0) $listComWarning = "<span style=\"font-size:13px\"><b>Aucun équipement en warning</b></span>";
  if ($nbComDanger == 0) $listComDanger  = "<span style=\"font-size:13px\"><b>Aucun équipement en critical</b></span>";
  cmd::byString($eqVirtuelComNbOK)->event($nbComOK);
  cmd::byString($eqVirtuelComNbWarning)->event($nbComWarning);
  cmd::byString($eqVirtuelComNbDanger)->event($nbComDanger);
  cmd::byString($eqVirtuelComNbTotal)->event($nbComTotal);
  cmd::byString($eqVirtuelComWarning)->event($listComWarning);
  cmd::byString($eqVirtuelComDanger)->event($listComDanger);
}
else $scenario->setLog("Check Last Communication desactivé");

// Envoi d'une notif JC
if ($EnableNotifJC && date("G") == $heureNotifJC)
{
  if ($nbBatteryDanger >= 0 || $nbComDanger >= 1)
  {
    $cmd     = cmd::byString($cmdNotifJC);
    switch ($checksEnable)
    {
      case 1:
        $cmd->execCmd($options = array('title'         => 'title=Defaut infrastructure | gotoPageId=' . $AlertPageIdJC, 'message'         => "Batteries -><span style=\"color: green\"> OK : " . $nbBatteryOK . ",</span><span style=\"color: orange\"> Warning : " . $nbBatteryWarning . ", </span><span style=\"color: red\">Critical : " . $nbBatteryDanger . "</span>"), $cache   = 0);
      break;
      case 2:
        $cmd->execCmd($options = array('title'         => 'title=Defaut infrastructure | gotoPageId=' . $AlertPageIdJC, 'message'         => "Com -><span style=\"color: green\"> OK : " . $nbComOK . ",</span><span style=\"color: orange\"> Warning : " . $nbComWarning . ", </span><span style=\"color: red\">Critical : " . $nbComDanger . "</span>"), $cache   = 0);
      break;
      case 3:
        $cmd->execCmd($options = array('title'         => 'title=Defaut infrastructure | gotoPageId=' . $AlertPageIdJC, 'message'         => "Batteries -><span style=\"color: green\"> OK : " . $nbBatteryOK . ",</span><span style=\"color: orange\"> Warning : " . $nbBatteryWarning . ", </span><span style=\"color: red\">Critical : " . $nbBatteryDanger . "</span><br>Com       -><span style=\"color: green\"> OK : " . $nbComOK . ",</span><span style=\"color: orange\"> Warning : " . $nbComWarning . ", </span><span style=\"color: red\">Critical : " . $nbComDanger . "</span>"), $cache   = 0);
      break;
    }

  }
}
else $scenario->setLog("Pas de notif, prochaine notif à " . $heureNotifJC . "h");

Merci d’avance pour ton aide

Je pense que le pb est lié au fait qu’il faut définir pour tes plugins dans quel champ se trouve le nom du modèle ( c pas normalisé

Et rajouter ensuite à cet endroit :

Tu as cette information en allant dans les paramètres avancés d’un équipement, onglet informations je crois (je ne suis pas devant n ordinateur)

Autre point de vigilance, le nom du plugin à renseigner en première ligne est celui entre () lorsque tu vas dans la page config de ce dernier

Norbert

Merci pour ta réponse.

alors effectivement pour le plugin z-wave, j’ai mis openzwave à la place, ça me remonte du coup ma batterie de mon seul bouton Z-Wave ^^.

par contre pour deconz, je n’arrive pas :

Du coup, il faut bien que tu enleves la majuscule de Deconz sur la 2nd ligne → deconz

Et que tu rajoutes, à l’endroit que j’ai entouré, enter break ; et case « jMQTT » par exemple

case "deconz":
          $deviceModel = $eqLogic->getConfiguration('modelid');
        break;

Dans mon script, je considère que tout ce qui n’a pas de numero de model n’est pas un equipement physique et donc pas de check de batterie :grin:

Norbert

Ben voila ! :grin: Merci infiniment !

par contre tu as deja eu ça quand tu veux « personnaliser ce widget » (je voulais masquer le status)

merci

Fait un post spécifique pour ca en mettant ta configuration :wink:

@ngrataloup
Bonjour,
Je souhaite mettre en place ce monitoring que je trouve particulièrement intéressant, je me heurte à un problème de code :

Citation

if ($checkBatteryEnable)
{ // 0 - pas de check, 1 - check batt, 2 ; check com, 3 check batt + com
if ($checkComEnable) $checksEnable = 3;
else $checksEnable = 1;
}
else
{
if ($checkComEnable) $checksEnable = 2;
else
{
$scenario->setLog(« Aucun check activé »);
exit(« Aucun check activé »);
}
}
qui me donne cette erreur


Je suis sous jeedom 4.3.17 sur RPI4
Merci de ton aide

Il faut que tu mettes l’ensemble du script, car le pb est sans doute plus haut.
Penses aussi à mettre les balises pour formater comme il faut le contenu

Norbert

Merci de ta réponse. N’étant pas un spécialiste du PHP je teste des morceaux de code pour essayer d’apprendre en me servant d’exemples trouvés par ci par là. Voilà l’intégralité du code que je teste, toujurs avec la même erreur.

// Choix des verifs
$checkBatteryEnable        = 1; // 1 -> activer le check batterie , 0 -> desactiver
$checkComEnable            = 0; // 1 -> activer le check com , 0 -> desactiver
if ($checkBatteryEnable)
{
  { // 0 - pas de check, 1 - check batt, 2 ; check com, 3 check batt + com
    if ($checkComEnable) $checksEnable = 3;
    else $checksEnable = 1;
  }
else
  {
    if ($checkComEnable) $checksEnable = 2;
    else
    {
      $scenario->setLog("Aucun check activé");
      exit("Aucun check activé");
    }
  }
}

tu as donc des accolades en trop et mal placées …

Dans ton cas, avec des else et de if qui se suivent, tu peux aussi utiliser des elseif !
Un exemple un peu simplifié du coup :

// Choix des verifs
$checkBatteryEnable        = 0; // 1 -> activer le check batterie , 0 -> desactiver
$checkComEnable            = 0; // 1 -> activer le check com , 0 -> desactiver
if ($checkBatteryEnable && $checkComEnable) $checksEnable = 3 ;// 0 - pas de check, 1 - check batt, 2 ; check com, 3 check batt + com
elseif ( $checkComEnable ) $checksEnable = 2;
elseif ( $checkBatteryEnable ) $checksEnable = 1;
else {
  $checksEnable = 0 ;
  $scenario->setLog("Aucun check activé");
  //exit("Aucun check activé");
}

J’ai mis le exit en commentaire, je pense que ca ne fonctionne pas dans un bloc code

Norbert

le code ne peut pas fonctionner, il y a des problèmes d’ouverture et fermeture de crochet
et tu n’as pas ton cas =0

// Choix des verifs
$checkBatteryEnable        = 1; // 1 -> activer le check batterie , 0 -> desactiver
$checkComEnable            = 0; // 1 -> activer le check com , 0 -> desactiver
if ($checkBatteryEnable) {
  // 0 - pas de check, 1 - check batt, 2 ; check com, 3 check batt + com
  if ($checkComEnable) {
    $checksEnable = 3;
  } else {
    $checksEnable = 1;
  }
} else {
  if ($checkComEnable) {
    $checksEnable = 2;
  } else {
    $checksEnable = 0;  // n'existait pas !
    $scenario->setLog("Aucun check activé");
  }
}

ca devrait aller mieux

et le exit a une utilité ?

Autre possibilité

que perso je trouve plus lisible

// Choix des verifs
$checkBatteryEnable        = 1; // 1 -> activer le check batterie , 0 -> desactiver
$checkComEnable            = 0; // 1 -> activer le check com , 0 -> desactiver
// 0 - pas de check, 1 - check batt, 2 ; check com, 3 check batt + com
if ($checkBatteryEnable && $checkComEnable) {
  $checksEnable = 3;
} elseif ($checkBatteryEnable && !$checkComEnable) {
  $checksEnable = 1;
} elseif (!$checkBatteryEnable && $checkComEnable) {
  $checksEnable = 2;
} else {
  $checksEnable = 0;
  $scenario->setLog("Aucun check activé");
}
1 « J'aime »

Et une troisième solution, sans doute la plus propre et de loin la plus simple puisqu’elle permettrait de gerer une 3eme option (avec un poids de 4) ou une 4eme option (avec un poids de 8), …

// Choix des verifs
$checkBatteryEnable        = 0; // 1 -> activer le check batterie , 0 -> desactiver
$checkComEnable            = 0; // 1 -> activer le check com , 0 -> desactiver

$checksEnable = 1 * $checkBatteryEnable  + 2 * $checkComEnable  ; // + 4 * <3eme option> + 8 * <4eme option>

Et oui … Mon script initial est faux :sweat_smile: et comme je ne suis pas dev, je progresse tous les jours

Merci beaucoup @ngrataloup et @tomitomas, j’ai un peu l’impression d’avoir pollué ce post avec mes questions. Sans doute vaudrait-il mieux basculer sur un nouveau post.
Effectivement la dernière solution proposée par @ngrataloup me paraît plus lisible, il suffirait de tester $checksEnable = 0 pour envoyer le message

La version de @tomitomas m’a permis de mieux comprendre les enchainements elseif. Merci à lui

Bonjour,

Merci pour ce super tuto, je me heurte à un problème au niveau code du scénario.
Quand je l’exécute celui est toujours en erreur je ne trouve pas ou es le problème.

require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnectWidget.class.php';

$plugins                   = array('zigbee'); // plugins à prendre en compte  'enedis', 'networks''zwavejs', 'JeedomConnect'
$eqIdExclude               = array( , ); // equipements à exclure
// Equipement viruel
$eqVirtuel                 = '[Aucun][Verif batterie + com]';

// Choix des verifs
$checkBatteryEnable        = 1; // 1 -> activer le check batterie , 0 -> desactiver
$checkComEnable            = 1; // 1 -> activer le check com , 0 -> desactiver
// notification
$EnableNotifJC             = 1; // Autoriser les notifs
$cmdNotifJC                = "#[Aucun][Iphone loic perso][Notification]#"; // Commande de notification (avec les # autour)
$AlertPageIdJC             = 47; // ID de la page d'alerte sur JC
$heureNotifJC              = 6; // 1 seule notif par jour à $heureNotifJC heure
//Seuils d'alerte
$seuilBatteryWarning       = config::byKey('battery::warning', 'core'); // recupéré de la page equipement de la config générale Jeedom
$seuilBatteryDanger        = config::byKey('battery::danger', 'core'); // recupéré de la page equipement de la config générale Jeedom
$seuilComWarning           = 86400; // 86400 = 1 jour
$seuilComDanger            = 86400 * 2; // 2 jours
//initialisation des variables
$nbBatteryOK               = 0;
$nbBatteryWarning          = 0;
$nbBatteryDanger           = 0;
$nbBatteryTotal            = 0;
$listBatteryWarning        = '';
$listBatteryDanger         = '';
$nbComOK                   = 0;
$nbComWarning              = 0;
$nbComDanger               = 0;
$nbComTotal                = 0;
$listComWarning            = '';
$listComDanger             = '';

$eqVirtuelBatteryWarning   = '#' . $eqVirtuel . '[Batterie Warning]#';
$eqVirtuelBatteryDanger    = '#' . $eqVirtuel . '[Batterie Danger]#';
$eqVirtuelBatteryNbOK      = '#' . $eqVirtuel . '[NB Batterie OK]#';
$eqVirtuelBatteryNbWarning = '#' . $eqVirtuel . '[NB Batterie Warning]#';
$eqVirtuelBatteryNbDanger  = '#' . $eqVirtuel . '[NB Batterie Danger]#';
$eqVirtuelBatteryNbTotal   = '#' . $eqVirtuel . '[NB Equipements batterie]#';
$eqVirtuelComWarning       = '#' . $eqVirtuel . '[Com Warning]#';
$eqVirtuelComDanger        = '#' . $eqVirtuel . '[Com Danger]#';
$eqVirtuelComNbOK          = '#' . $eqVirtuel . '[NB Com OK]#';
$eqVirtuelComNbWarning     = '#' . $eqVirtuel . '[NB Com Warning]#';
$eqVirtuelComNbDanger      = '#' . $eqVirtuel . '[NB Com Danger]#';
$eqVirtuelComNbTotal       = '#' . $eqVirtuel . '[NB Equipements Com]#';

if ($checkBatteryEnable)
{ // 0 - pas de check, 1 - check batt, 2 ; check com, 3 check batt + com
  if ($checkComEnable) $checksEnable = 3;
  else $checksEnable = 1;
}
else
{
  if ($checkComEnable) $checksEnable = 2;
  else
  {
    $scenario->setLog("Aucun check activé");
    exit("Aucun check activé");
  }
}

foreach ($plugins as $plugin)
{ // Pour chaque plugin
  foreach (eqLogic::byType($plugin, true) as $eqLogic)
  { // pour chaque equipement du plugin
    $eqId              = $eqLogic->getId();

    if (in_array($eqId, $eqIdExclude) == false)
    { // Si l'equipememnt n'et spas dans les equipements exclus des verifs
      $eqLogicName       = $eqLogic->getName();
      $eqId              = $eqLogic->getId();
      $eqLogicHumaneName = $eqLogic->getHumanName();
      $eqLogicId         = $eqLogic->getId();
      $eqLogicType       = $eqLogic->getEqType_name();
      $objID             = $eqLogic->getObject_id();
      switch ($plugin)
      {
        case "zigbee":
          $deviceModel       = $eqLogic->getConfiguration('device');
        break;
        case "zwave-js":
          $deviceModel = $eqLogic->getConfiguration('product_name');
        break;
        case ".":
          $deviceModel = $eqLogic->getConfiguration('commentaire');
        break;
        default:
          $deviceModel = $eqLogic->getConfiguration('device_model');
        break;
      }

      // Calcul des niveau d'alarmes des batteries
      if ($checkBatteryEnable)
      {
        if (!empty($deviceModel))
        { // si il n'y a pas de numero de model, on considere que ce n'est pas un equipement matériel, donc pas de batterie !!
          switch ($deviceModel)
          {
            case 'TS0601_thermostat': // je fais un test dans ma sitution perso sur ce modele qui ne renvoie pas un % de batterie, mais un booleen batterie faible, ous pouvez integrer des exceptions de gesiton de batterie ici
              $batteryLowBinaire = cmd::byString("#" . $eqLogicHumaneName . "[Batterie faible]#")->execCmd();
              if ($batteryLowBinaire) $batteryStatus     = 0;
              else $batteryStatus     = 100;
              break;
            default:
              $batteryStatus = $eqLogic->getStatus('battery');
              break;
            }

            if (isset($batteryStatus) and $batteryStatus !== "")
            { // comptabilisation des batteries OK ou en warning ou en critical
              $nbBatteryTotal++;
              if ($batteryStatus <= $seuilBatteryDanger)
              {
                $nbBatteryDanger++;
                $listBatteryDanger = $listBatteryDanger . "<span style=\"font-size:13px\"><b>" . $eqLogicHumaneName . "</b> (" . $eqLogicType . "): " . $batteryStatus . "%<br></span>";
              }
              elseif ($batteryStatus <= $seuilBatteryWarning)
              {
                $nbBatteryWarning++;
                $listBatteryWarning = $listBatteryWarning . "<span style=\"font-size:13px\"><b>" . $eqLogicHumaneName . "</b> (" . $eqLogicType . "): " . $batteryStatus . "%<br></span>";
              }
              else
              {
                $nbBatteryOK++;
              }
            }
          }
      }

      // calcul des niveaux d'alarme des lastCom
      if ($checkComEnable)
      {
        $lastCom     = strtotime($eqLogic->getStatus('lastCommunication'));
        $elapsedTime = time() - $lastCom;

        if (isset($lastCom) and $lastCom !== "")
        { // comptabilisation des LastCom OK ou en warning ou en critical
          $nbComTotal++;
          if ($elapsedTime >= $seuilComDanger)
          {
            $nbComDanger++;
            $listComDanger = $listComDanger . "<span style=\"font-size:13px\"><b>" . $eqLogicHumaneName . "</b> (" . $eqLogicType . "): " . round($elapsedTime / 3600) . "h<br></span>";
          }
          elseif ($elapsedTime >= $seuilComWarning)
          {
            $nbComWarning++;
            $listComWarning = $listComWarning . "<span style=\"font-size:13px\"><b>" . $eqLogicHumaneName . "</b> (" . $eqLogicType . "): " . round($elapsedTime / 3600) . "h<br></span>";
          }
          else
          {
            $nbComOK++;
          }
          switch ($checksEnable)
          {
            case 1:
              $scenario->setLog("	# [" . $plugin . "] Equipment : " . $eqLogicHumaneName . " (" . $deviceModel . ") => battery : " . $batteryStatus . ", Com : N/A");
            break;
            case 2:
              $scenario->setLog("	# [" . $plugin . "] Equipment : " . $eqLogicHumaneName . " (" . $deviceModel . ") => battery : N/A, Com : " . $elapsedTime);
            break;
            case 3:
              $scenario->setLog("	# [" . $plugin . "] Equipment : " . $eqLogicHumaneName . " (" . $deviceModel . ") => battery : " . $batteryStatus . ", Com : " . $elapsedTime);
            break;
          }
        }
      }
    }
  }
}

// Affichage-formatage des resultats dans les virtuels
if ($checkBatteryEnable)
{
  if ($nbBatteryWarning == 0) $listBatteryWarning = "<span style=\"font-size:13px\"><b>Aucun équipement en warning</b></span>";
  if ($nbBatteryDanger == 0) $listBatteryDanger  = "<span style=\"font-size:13px\"><b>Aucun équipement en critical</b></span>";
  cmd::byString($eqVirtuelBatteryNbOK)->event($nbBatteryOK);
  cmd::byString($eqVirtuelBatteryNbWarning)->event($nbBatteryWarning);
  cmd::byString($eqVirtuelBatteryNbDanger)->event($nbBatteryDanger);
  cmd::byString($eqVirtuelBatteryNbTotal)->event($nbBatteryTotal);
  cmd::byString($eqVirtuelBatteryWarning)->event($listBatteryWarning);
  cmd::byString($eqVirtuelBatteryDanger)->event($listBatteryDanger);
}
else $scenario->setLog("Check batterie desactivé");

if ($checkComEnable)
{
  if ($nbComWarning == 0) $listComWarning = "<span style=\"font-size:13px\"><b>Aucun équipement en warning</b></span>";
  if ($nbComDanger == 0) $listComDanger  = "<span style=\"font-size:13px\"><b>Aucun équipement en critical</b></span>";
  cmd::byString($eqVirtuelComNbOK)->event($nbComOK);
  cmd::byString($eqVirtuelComNbWarning)->event($nbComWarning);
  cmd::byString($eqVirtuelComNbDanger)->event($nbComDanger);
  cmd::byString($eqVirtuelComNbTotal)->event($nbComTotal);
  cmd::byString($eqVirtuelComWarning)->event($listComWarning);
  cmd::byString($eqVirtuelComDanger)->event($listComDanger);
}
else $scenario->setLog("Check Last Communication desactivé");

// Envoi d'une notif JC
if ($EnableNotifJC && date("G") == $heureNotifJC)
{
  if ($nbBatteryDanger >= 0 || $nbComDanger >= 1)
  {
    $cmd     = cmd::byString($cmdNotifJC);
    switch ($checksEnable)
    {
      case 1:
        $cmd->execCmd($options = array('title'         => 'title=Defaut infrastructure | gotoPageId=' . $AlertPageIdJC, 'message'         => "Batteries -><span style=\"color: green\"> OK : " . $nbBatteryOK . ",</span><span style=\"color: orange\"> Warning : " . $nbBatteryWarning . ", </span><span style=\"color: red\">Critical : " . $nbBatteryDanger . "</span>"), $cache   = 0);
      break;
      case 2:
        $cmd->execCmd($options = array('title'         => 'title=Defaut infrastructure | gotoPageId=' . $AlertPageIdJC, 'message'         => "Com -><span style=\"color: green\"> OK : " . $nbComOK . ",</span><span style=\"color: orange\"> Warning : " . $nbComWarning . ", </span><span style=\"color: red\">Critical : " . $nbComDanger . "</span>"), $cache   = 0);
      break;
      case 3:
        $cmd->execCmd($options = array('title'         => 'title=Defaut infrastructure | gotoPageId=' . $AlertPageIdJC, 'message'         => "Batteries -><span style=\"color: green\"> OK : " . $nbBatteryOK . ",</span><span style=\"color: orange\"> Warning : " . $nbBatteryWarning . ", </span><span style=\"color: red\">Critical : " . $nbBatteryDanger . "</span><br>Com       -><span style=\"color: green\"> OK : " . $nbComOK . ",</span><span style=\"color: orange\"> Warning : " . $nbComWarning . ", </span><span style=\"color: red\">Critical : " . $nbComDanger . "</span>"), $cache   = 0);
      break;
    }

  }
}
else $scenario->setLog("Pas de notif, prochaine notif à " . $heureNotifJC . "h");

Merci pour votre aide

SAlut

Que dit la log du scenario ?? Ca pourrait un peu aider

Malheureusement pas grand chose

[2023-04-26 18:38:56][SCENARIO] -- Start : Scenario lance manuellement.
[2023-04-26 18:38:56][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-04-26 18:38:56][SCENARIO] Exécution d'un bloc code 
[2023-04-26 18:39:18][SCENARIO] -- Start : Scenario lance manuellement.
[2023-04-26 18:39:19][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-04-26 18:39:19][SCENARIO] Exécution d'un bloc code 
[2023-04-26 18:52:27][SCENARIO] -- Start : Scenario lance manuellement.
[2023-04-26 18:52:27][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-04-26 18:52:27][SCENARIO] Exécution d'un bloc code