Erreur avec le plugin Teleinfos sous Jeedom v4.4 + Debian 12 (PHP 8.2.7)

Et tu aurais les logs de la mise à jour des dépendances qui a raté ?

J’ai trouvé le problème, dans le fichier post-install.sh :

BASEDIR=/var/www/html/plugins/teleinfo/ressources

Comme je dois avoir 4 vhosts apache2, mon répertoire de base est /var/www/html/jeedom/plugins/teleinfo/ressources, donc l’installation ne se fait pas au bon endroit - ça doit être le seul cas où le répertoire de base est codé en dur.

Par contre, j’ai activé le module PHP-FPM pour perdurer sur PHP7.4, j’ai toujours l’erreur de calcul de statistique. Je ne comprend pas trop. Est-ce qu’il est fait appel à PHP cli ?

Ah zut, je vais voir comment corriger ça

Euh… Je n’en sais rien. Comment on voit ça ?

ok c’est réglé pour la prochaine mise à jour

Bonsoir,

J’ai corrigé ce qui n’allait pas dans le fichier core/class/teleinfo.class.php :
ligne 977 : ${$d} = ${$b} * (float)${$e} / 1000;
Visiblement la variable ${$e} est transmise sous forme de string, alors qu’un entier ou flottant est attendu. Je présume que Coutkwhindex0 est un float, donc j’ai rajouté la conversion en flottant.
Ça bloquait tous le fonctionnement du plugin, le reste semble totalement fonctionnel.

Bonjour @Jean-Baptiste , je regarde la correction que tu proposes et je ne retrouve pas cette ligne sans le fichier dont tu parles… Je retrouve en ligne 1033 quelque chose qui ressemble à ce dont tu parles:

$$d = $$b * $$e / 1000;

C’est cette ligne que tu proposes de modifier?

Tu as quelle version de teleinfo?

Bonjour,

Version 4.8.3.
Il s’agit de ce bloc :

if (${$a} >= 1) {
       log::add('teleinfo', 'debug', 'Index à trouver ' . $i . ' = ' . $a);
	log::add('teleinfo', 'debug', 'Id Index ' . $i . ' = ' . ${$a});
	$cmd = cmd::byId(${$a});
	$statMaxToday = $cmd->getStatistique($startDateToday->format('Y-m-d 00:00:00'), $endDateToday->format('Y-m-d H:i:s'))['max'];
	$statMinToday = $cmd->getStatistique($startDateToday->format('Y-m-d 00:00:00'), $endDateToday->format('Y-m-d H:i:s'))['min'];
	log::add('teleinfo', 'debug', ' ==> Valeur Index ' . $i . ' MAX : ' . intval($statMaxToday));
	log::add('teleinfo', 'debug', ' ==> Valeur Index ' . $i . ' MIN : ' . intval($statMinToday));
	${$b} = intval($statMaxToday) - intval($statMinToday);
	log::add('teleinfo', 'debug', 'Total Index ' . $i . ' --> ' . ${$b});
       ${$d} = ${$b} * (float)${$e} / 1000;**

ok merci, c’est bien la ligne 1033

tu as modifié les $$d en ${$d} il y a une raison pour ça?

int suffit je pense, ce ne sont que des nombres entiers

Je ne me rappelle plus, il devait y avoir une raison, mais ça semble fonctionner sans.
J’ai mis float, de mémoire il s’agit d’un coût de kWh, mais je n’ai pas compris comment il était traité.

Bonjour,

Une autre modification que j’avais oubliée, fichier /teleinfo/desktop/php/teleinfo.php

$fichiers = array_diff(array(scandir($dir)), array('.', '..'));

Sans ça, impossible de charger la page principale - Il s’agit de la version 2024-04-28 10:24:57 bêta du plugin.

Salut @Jean-Baptiste , tu ne l’as pas oublié c’est une nouvelle fonctionnalité que je viens de rajouter pour sauvegarder et restaurer des historiques. Par contre ça fonctionne chez moi sur un jeedom de test en debian 12 que je viens de créer. J’ai sans doute oublié de tester lorsque le répertoire est vide…

Merci :+1:

je viens de tester et ça fonctionne chez moi sur debian 12 et php 8.2.18. C’est qq chose qui a été réglé après php 8.2.7 ou je loupe un truc?

lorsque je fais ta modif alors dans la liste des fichiers à restaurer ça me donne :