Erreur plugin ecocompteur Legrand

Bonsoir la communauté,
Depuis la maj Debian 12 et PHP 8.0, j’ai une erreur sur le cron de l’écocompteur Legrand.
Erreur sur la fonction cron du plugin : Unsupported operand types: string + string
J’ai testé la version Beta, même erreur.
Merci pour votre aide.


Informations Jeedom

Core : 4.5.1 (master)
DNS Jeedom : non

Plugin : Ecocompteur Legrand
Version : 2025-03-31 01:09:52 (stable)

Bonsoir

Pouvez vous envoyer les logs de EcoLegrand en mode debug et http.errror

J’ai fait un test dans mon environnement de test en Debian 12 et PHP8 et je n’ai pas rencontré de problème

Votre souci doit venir du type d’information que vous récupérez et les logs devraient m’aider à trouver l’origine du problème

Ci-joints.
EcoLegrand.txt (3,5 Mo)
httperror.txt (2,2 Ko)

L’erreur des logs pointe vers la ligne 174 du fichier /var/www/html/plugins/EcoLegrand/core/class/EcoLegrand.class.php
Ca concernerait: $offset = $cmd->getConfiguration(‹ offset ›, ‹ 0 ›);
if (is_numeric($offset)) {
$value = $value + $offset;
}

Je ne sais pas si c’est lié mais par ailleurs, je n’ai plus d’actualisation de la puissance instantanée et du dernier refresh. En revanche, les valeurs de compteurs continuent de s’incrémenter.


Bonjour,

Essayez avec cette syntaxe :

                        if (is_numeric($offset)) {
                            $value = floatval($value) + floatval($offset);
                        }

C’est pour palier à cette erreur (si c’est celle-ci qui pose problème) :
[2025-12-28 00:27:22][ERROR] Erreur sur la fonction cron du plugin : Unsupported operand types: string + string

EDIT:
Par ailleurs, le problème va se poser aussi pour les lignes suivantes :

Il faudrait remplacer par :

                        if ($seuil != '' && $reset != '') {
                            if (is_numeric($seuil) && is_numeric($offset)) {
                                if (floatval($value) - floatval($offset)) > floatval($seuil)) {
                                    log::add('EcoLegrand', 'debug', __('refresh_json', __FILE__) . 'Compteur ' . $name . ' Seuil ' . $seuil . ' Value ' . $value . ' Offset ' . $cmd->getConfiguration('offset') . '--> ' . $value);

                                    if ($this->reset_counter($reset)) {
                                        // reset wp.cgi?wp=536+2+12724+-1+-1+4+0.0
                                        $cmd->setConfiguration('offset', round(floatval($value), 6));
                                        $cmd->save();
                                    }
                                }
                            }
                        }

Lignes 179 et 184 modifiées.

L’auteur du plugin @bernard.dandrea devrait proposer un correctif, je pense.

A+
Michel

1 « J'aime »

bonjour et merci pour le correctif

j’ai fait la modification en béta et cela devrait être dispo demain sur le market

j’aurais bien aimé voir le log EcoLegrand pour savoir ce qu’il y a dans les champs retournés par l’ecocompteur

SVP, marquer le problème comme réglé si c’est le cas

Bernard

Bonjour,
J’ai fait la correction du code ligne 174 et ca fonctionne. En revanche, il doit y avoir un soucis de syntaxe dans la proposition de modification des lignes 177 à 189 proposées par @Michel_F car cela me génère une erreur.

Je l’avais mis plus haut en txt joint. N’était-ce pas le log attendu ?

J’ai modifié les lignes avec cette syntaxe :

 if ($seuil != '' && $reset != '') {
    if (is_numeric($seuil) && is_numeric($offset)) {
        if (($value - $offset) > $seuil) {
            log::add('EcoLegrand', 'debug', __('refresh_json', __FILE__) . 'Compteur ' . $name . ' Seuil ' . $seuil . ' Value ' . $value . ' Offset ' . $cmd->getConfiguration('offset') . '--> ' . $value);
            if ($this->reset_counter($reset)) {
                // reset wp.cgi?wp=536+2+12724+-1+-1+4+0.0
                $cmd->setConfiguration('offset', round($value, 6));
                $cmd->save();
            }
        }
    }

et cela fonctionne. Il semble qu’il y avait une parenthèse manquante dans la proposition de correction. Le problème est résolu. Merci pour votre aide @Michel_F et @bernard.dandrea.

Bonjour,

Il doit y avoir une erreur de copié/collé car les floatval ne sont pas présents.

Il y avait une parenthèse ouvrante manquante initialement après le if.

1 « J'aime »

merci

ça devrait être OK en beta demain

@mathni : désolé, je n’avais pas vu les logs

1 « J'aime »

Petite erreur dans la beta. désolé

la version corrigée sera disponible demain en beta

d’ici là, si vous avez déjà appliqué la mise à jour, vous pouvez supprimer une parenthèse fermante en ligne 184

Bonjour,

Il ne faut pas plutôt en ajouter une ?

Edit : promis dans 2 jours j’arrête le champagne !
Aucune erreur en réalité.

je ne pense pas: 3 parenthèses ouvrantes et 3 fermantes

1 « J'aime »

En effet même si j’ai relu 10 fois. Les restes de foie gras probablement :stuck_out_tongue::joy:

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