Hello chers devs du #plugin-zwavejs,
J’ai constaté des erreurs incessantes dans le log http.error au sujets du plugin :
4978|[Sun Apr 23 19:24:55.894989 2023] [php7:notice] [pid 29508] [client 127.0.0.1:40818] PHP Notice: Undefined offset: 1 in /var/www/html/plugins/zwavejs/core/class/zwavejs.class.php on line 1658
4979|[Sun Apr 23 19:24:55.895006 2023] [php7:notice] [pid 29508] [client 127.0.0.1:40818] PHP Notice: Undefined offset: 2 in /var/www/html/plugins/zwavejs/core/class/zwavejs.class.php on line 1659
4980|[Sun Apr 23 19:24:56.892099 2023] [php7:notice] [pid 17489] [client 127.0.0.1:40836] PHP Notice: Undefined offset: 1 in /var/www/html/plugins/zwavejs/core/class/zwavejs.class.php on line 1658
4981|[Sun Apr 23 19:24:56.892117 2023] [php7:notice] [pid 17489] [client 127.0.0.1:40836] PHP Notice: Undefined offset: 2 in /var/www/html/plugins/zwavejs/core/class/zwavejs.class.php on line 1659
4982|[Sun Apr 23 19:24:58.016408 2023] [php7:notice] [pid 20309] [client 127.0.0.1:59746] PHP Notice: Undefined offset: 1 in /var/www/html/plugins/zwavejs/core/class/zwavejs.class.php on line 1658
4983|[Sun Apr 23 19:24:58.016427 2023] [php7:notice] [pid 20309] [client 127.0.0.1:59746] PHP Notice: Undefined offset: 2 in /var/www/html/plugins/zwavejs/core/class/zwavejs.class.php on line 1659
Les lignes 1658 et 1659 font référence à la fonction updateCmd() et plus précisement à :
$endpoint = $cmdId[1];
$property = $cmdId[2];
En activant le log de debug à l’entrée de la fonction, j’ai constaté que $cmdId peut ne pas être découplable (cf lastActive) par la fonction explode() un peu plus haut :
1852|[2023-04-23 19:24:55]DEBUG : [updateCmd] 50-0-value-65537 672.51
1853|[2023-04-23 19:24:55]DEBUG : [updateCmd] lastActive 1682270695843
1854|[2023-04-23 19:24:55]DEBUG : [updateCmd] 50-0-value-65537 672.51
1855|[2023-04-23 19:24:56]DEBUG : [updateCmd] 50-0-value-66049 71.33
1856|[2023-04-23 19:24:56]DEBUG : [updateCmd] lastActive 1682270696706
1857|[2023-04-23 19:24:56]DEBUG : [updateCmd] 50-0-value-66049 71.33
1858|[2023-04-23 19:24:57]DEBUG : [updateCmd] 50-0-value-66561 244.78
1859|[2023-04-23 19:24:58]DEBUG : [updateCmd] lastActive 1682270697810
1860|[2023-04-23 19:24:58]DEBUG : [updateCmd] 50-0-value-66561 244.78
1861|[2023-04-23 19:24:58]DEBUG : [updateCmd] 50-0-value-66817 0.53
1862|[2023-04-23 19:24:58]DEBUG : [updateCmd] lastActive 1682270698699```
Après analyse de la fonction, le fait que $cmdId[1] et $cmdId[2] n’existe pas (=null) n’a pas d’incidence sur l’execution. Ne comprenant pas exactement ce que fait la fonction, j’ai donc simplement remplacé les lignes 1658 et 1659 par :
$endpoint = (count($cmdId) > 1) ? $cmdId[1] : null;
$property = (count($cmdId) > 2) ? $cmdId[2] : null;
Plus d’erreur, même fonctionnement.
Je vous laisse juger s’il faut intégrer la correction dans le plugin ou la modifier, ou pas.
Bad
