Erreurs div by zero dans le plugin sunshutter

Hello,

Je suis passé depuis peu à « sunshutter », qui est beaucoup plus rapide à prendre en main et compréhensible que le plugin « Volets » sur lequel je me cassais les dents depuis plus d’un an, mais ça c’est une autre histoire sans importance, Sunshutter envoie du gros steak :smiling_face_with_three_hearts:

Dans le log cron_execution, j’ai fréquemment des erreurs de division par zero:

PHP Warning: Division by zero in /var/www/html/plugins/sunshutter/core/class/sunshutter.class.php on line 509
PHP Warning: Division by zero in /var/www/html/plugins/sunshutter/core/class/sunshutter.class.php on line 569

J’aime bien avoir des logs propres, alors je suis allé regarder les sources et manifestement c’est 2x un bout de code identique (ligne 509 et 569) qui si vautre, si l’amplitude est nulle :
$ecart = ($delta/$amplitude)*100;

Dans son contexte, on voit que le calcul est fait 2 lignes plus haut sur les champs openPosition et closePosition de la config, et que ça doit correspondre à une différence nulle entre les deux :

    if($currentPosition !== null  && $lastPositionOrder !== null){
      $amplitude = abs($this->getConfiguration('shutter::closePosition',0)-$this->getConfiguration('shutter::openPosition',100));
      $delta = abs($currentPosition-$lastPositionOrder);
      $ecart = ($delta/$amplitude)*100;

Et c’est évidement le cas dans la WebUI :

Bref, j’ai ajouté des valeurs min/max chez moi, mais un petit test type « Si $amplitude = 0 Alors $amplitude = 100 » serait le bienvenu.
Ou bien, encore mieux, valider en GUI que c’est bien saisi (ou forcer des valeurs par défaut si vide ?)

Thanks !

Bonjour,
C’est corrigé

1 « J'aime »