Bug remettant les valeurs des équipements à zéro

Bonjour

J’ai détecté un bug dans le plugin qui remet à zéro les valeurs d’un équipement si celui-ci n’est pas accessible (problème rf). En effet, dans ce cas, le tableau de valeurs récupéré ne contient pas les valeurs des différentes commandes de l’équipement. Pour corriger ce bug, il suffit de tester l’existence de la valeur dans le tableau récupéré.
Il faut modifier à la ligne 363 de netatmopro.class.php

$eqLogic->checkAndUpdateCmd($key, $room[$key]);

remplacé par :

if(array_key_exists($key, $room)){
    $eqLogic->checkAndUpdateCmd($key, $room[$key]);
} else {
    log::add('netatmopro', 'warning', 'La clé ' . $key . ' n existe pas dans le tableau');
}

Serait-il possible de mettre à jour le plugin dans une prochaine version ?

Merci !

Manifestement, ma correction n’est pas suffisante… il faut aussi faire le test un peu plus loin dans le code, ligne 392 :

if(array_key_exists($key, $module)){
    $eqLogic->checkAndUpdateCmd($key, $module[$key]);
} else {
    log::add('netatmopro', 'warning', $eqLogic->getHumanName() . ' - La clé ' . $key . ' n existe pas dans le module : ' . var_export($module, true));
}

Une autre solution sans doute plus simple, serait de ne faire aucune mise à jour des données de l’équipement si le champ ‹ reachable › est à false (sauf bien sur le champs reachable lui même)… Ca a du sens : si l’équipement n’est pas joignable, les informations ne peuvent pas être correctes…

@thanaus tu en penses quoi ?

Bonsoir @scanab
Désolé du retard mais j"ai été quelque peu débordé ces derniers mois avec le COVID, déménagement et les vacances.
Je check mon code ASAP mais je pense que tu as tout à fait raison.

1 « J'aime »