$eqLogic->getEqType_name() et BLEA

Bonjour,

@Phpvarious m’a bcp aidé en me proposant ce scénario pour détecter lorsqu’un device ne communique plus. Je l’ai adapté pour le Z wave le zigbee et le Bluetooth. Par contre avec BLEA, je ne dois pas avoir le bon nom car j’ai device KO, mais il ne remonte pas. si vous avez une idée ou trouver l’info. merci

$tags = $scenario->getTags(); // Récupère la liste des tags.
$eqLogicsAll = eqLogic::all();
$tags['alert1'] = 0;
$tags['eqLogic'] = '';
foreach ($eqLogicsAll as $eqLogic) {
  if (($eqLogic->getStatus('timeout', 0) != 0 && $eqLogic->getEqType_name() == 'deconz') or ($eqLogic->getStatus('timeout', 0) != 0 && $eqLogic->getEqType_name() == 'zwave') or ($eqLogic->getStatus('timeout', 0) != 0 && $eqLogic->getEqType_name() == 'blea')) {
    $tags['alert1'] = 1;
    $tags['eqLogic'] .= ($tags['eqLogic'] != '') ? ' | ' . $eqLogic->getHumanName() : $eqLogic->getHumanName(); 
  }
}
$scenario->setTags($tags); // Enregistre les tags.
echo $scenario->setLog( $tags['eqLogic']);


Hello,


Petite mise au propre pour éviter d’avoir un if a rallonge, utilise un tableau :

$listPlugins = array('deconz', 'zwave', 'blea');

Puis dans la condtion :

if (in_array($eqLogic->getEqType_name(), $listPlugins) && $eqLogic->getStatus('timeout', 0) != 0);

Pour ton soucis, il me semble que je t’avais déja expliqué, la page santé des plugin (Statut, available…) ne reflète pas forcément l’état de santé (lastCommunication) du core.
avec blea (que je n’ai pas) il est possible que le device passe KO car le rssi est faible ou en fonction d’une certaine valeur, il faut donc adapter le timeout du core en fonction de ton device.

Edit, j’ai survolé le code du plugin

et le status semble être enregistré dans le state donc peut-être en réadaptant le code :

if (in_array($eqLogic->getEqType_name(), $listPlugins) && ($eqLogic->getStatus('timeout', 0) != 0 || $eqLogic->getStatus('state', 'ok') == 'nok'));