Monitoring batterie modules xiaomi

Tu peux fixer des alertes batteries dans config/logs de ton jeedom.
Tu peux aussi gérer les alertes individuellement dans chaque équipement sur les commandes batterie.

Un peu hors sujet, mais qui peut intéresser :
J’avais récupéré un code de je ne sais plus trop qui, pour ajouter un contrôle de communication des modules à piles. Ce code alerte quand un module ne communique plus depuis un certain temps et donc potentiellement avec un pb de pile !

Je le lance toutes les 2h

$maxTime = 43200; // temps en secondes - 12h maximum

$scenario->setLog("Temps : " . $maxTime);

$batterie = "Batterie"; // Nom de la commande à rechercher
$excludeEq = array("[Xiaomi][Aspirateur]" => 1, "[Xiaomi][Bouton Alarme]" => 1); // Liste des équipements à ignorer (qui contiennent la commande "$batterie")

$errEqLogics = array();

$_format = '%Y-%m-%d %H:%M:%S';

$eqLogics = eqLogic::all();
$scenario->setLog('Début monitoring');

$scenario->setData('monitor', '');

foreach($eqLogics as $eqLogic)
{
  if ($excludeEq[$eqLogic->getHumanName()] == 1){
    $scenario->setLog( '-- Equipement ' . $eqLogic->getHumanName() . ' ignoré');
    continue;
  }
  
  try{
    if (isset($batterie)){
      	// si la commande n'existe pas, une exception est levée
    	$cmd = cmd::byString('#' . $eqLogic->getHumanName() . '['. $batterie .']#');
    }
    
    $scenario->setLog( '-- Equipement ' . $eqLogic->getHumanName());
    
    $allCmds = $eqLogic->getCmd('Info');
    $maxDate = date($_format, "1970-1-1 00:00:00");
    if (count($allCmds) > 0)
    {
      foreach($allCmds as $cmd)
      {  
          $cmd->execCmd();
          $collectDate = $cmd->getCollectDate();
          $scenario->setLog( 'Commande ' . $cmd->getHumanName() . ' - ' . $collectDate);

          $maxDate = max($maxDate, strtotime($collectDate));

      }
      $scenario->setLog( 'Date max ' . date('c', $maxDate));
      $elapsedTime = time() - $maxDate;
      
      if ($elapsedTime > $maxTime){
        // -- /!\alert
        $errEqLogics[] = $eqLogic->getHumanName(). '=> '. date('c', $maxDate);
      $scenario->setLog('ALERTE');

      }
    }
    
  }catch (Exception $e)
  {
    // pas de commande
  }
  
}

  $scenario->setData('monitor', implode(",", $errEqLogics));
// log fin de traitement
$scenario->setLog( 'fin monitoring');

ensuite tu fais un si variable(monitor)!="" alors : et là tu mais ta commande d’alerte.