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

Tu pourrais partager ton image ? Tu n’as pas de bandes noires en haut et en bas de ton image ?
Voilà ce que j’ai comme affichage de mon côté :

L’image que j’utilise est celle que j’ai récupéré dans ton fichier zip :

BG_Serveurs

Rm : Peut importe l’image que je prenne (icônes perso que j’utilise dans l’application), l’aperçu reste désespérément noir.
Exemple d’icône :
BZH_lampe_suspension_marine_on

Par contre, si j’utilise une des icônes qui sont installées de base avec l’application, l’image s’affiche bien.

Je n’ai rien configuré dans la partie « Fond d’écran » dans l’application.

1 « J'aime »

Le PB n’est pas lié à ce sujet, peux tu en créer un spécifique en remettant bien toutes les infos ?

1 « J'aime »

Oui pas de problème.
Encore merci

Bonjour,

Je m’aperçois que ADGUARD ne remonte plus les mise à jour via ssh command Nb update et liste sur ton tuto, es pareille chez toi?

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 »