Erreur cron du plugin sous Debian 12

Bonjour,

Sous Debian 12 et Jeedom 4.5 j’ai cette erreur toutes les minutes : Erreur sur la fonction cron du plugin : Division by zero.
Version stable du plugin.

Je ne sais pas si c’est lié à cette erreur dans le log cron_execution :

PHP Deprecated:  Optional parameter $Type declared before required parameter $visible is implicitly treated as a required parameter in /var/www/html/plugins/Volets/core/class/Volets.class.php on line 1059
PHP Deprecated:  Optional parameter $SubType declared before required parameter $visible is implicitly treated as a required parameter in /var/www/html/plugins/Volets/core/class/Volets.class.php on line 1059

Bonjour,

J’ai trouvé la raison de cette erreur après investigations.

S’il est saisi la valeur zéro dans le paramètre « Dégagement de toit » dans l’onglet Azimuth alors cela génère cette erreur.

En effet le cron appelle la fonction GetAltitudeRatio dans laquelle se trouve cette formule ligne 938 :

$AltitudeDirect = round(rad2deg(atan($this->getConfiguration('HauteurFenetreToit', 0.2) / $this->getConfiguration('DegagementToit', 0.35))),2);

Donc dans cette formule si le paramètre « Dégagement de toit » est à zéro (et donc non-vide) il y a division par zéro.

2 solutions pour corriger ce problème :

  • ne pas rentrer zéro pour ce paramètre. Cependant il pourrait être nécessaire d’utiliser une valeur plus faible que celle par défaut dans ce cas (0.35)
  • d’où la 2ème solution de vérifier avant d’effectuer le calcul si le paramètre « Dégagement de toit » est à zéro. Si c’est le cas on le force à 0.001.

Il faut donc modifier la ligne 938 dans le fichier Volets.class.php (sous plugin/Volets/class) ainsi :

if($this->getConfiguration('DegagementToit') != 0)
       $DegagementToit = $this->getConfiguration('DegagementToit', 0.35);
else
       $DegagementToit = 0.001;
$AltitudeDirect = round(rad2deg(atan($this->getConfiguration('HauteurFenetreToit', 0.2) / $DegagementToit)),2);

AVANT MODIFICATION :

$AltitudeDirect = round(rad2deg(atan($this->getConfiguration('HauteurFenetreToit', 0.2) / $this->getConfiguration('DegagementToit', 0.35))),2);

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.