Erreur sur la fonction cron du plugin : Unsupported operand types: float + string

depuis la dernière mise à jour et application des dépendances, il y a une erreur dans calculatePAPP :

0058|[2026-04-28 05:56:09] DEBUG  calculatepapp
0059|[2026-04-28 05:56:09] DEBUG  ----- Calcul de la puissance apparente moyenne -----
0060|[2026-04-28 05:56:09] DEBUG  Compteur 471 Cmd trouvée
0061|[2026-04-28 05:56:09] DEBUG  Compteur 471 HC : 67389 Valeur: 29485597
0062|[2026-04-28 05:56:09] DEBUG  Compteur 471 HP : 67390 Valeur: 25780
0063|[2026-04-28 05:56:09] ERROR  Erreur sur la fonction cron du plugin : Unsupported operand types: float + string
0064|#0 /var/www/html/plugins/teleinfo/core/class/teleinfo.class.php(37): teleinfo::calculatePAPP()
0065|#1 /var/www/html/core/class/plugin.class.php(369): teleinfo::cron()
0066|#2 /var/www/html/core/php/jeeCron.php(78): plugin::cron()
0067|#3 {main}

j’ai ajouté des cast (float) à partir de L 2523 :

                foreach ($eqLogic->getCmd('info') as $cmd) {
                    if ($cmd->getConfiguration('type') == "data" || $cmd->getConfiguration('type') == "") {
                        if (strpos($indexConsoHP, $cmd->getConfiguration('info_conso')) !== false) {
                            $ppapHp += (float)$cmd->execCmd();
							log::add('teleinfo', 'debug', 'Compteur ' . $cptId . ' HP : ' . $cmd->getId() . ' Valeur: ' . $ppapHp);
                        }
                        if (strpos($indexConsoHC, $cmd->getConfiguration('info_conso')) !== false) {
                            $ppapHc += (float)$cmd->execCmd();
							log::add('teleinfo', 'debug', 'Compteur ' . $cptId . ' HC : ' . $cmd->getId() . ' Valeur: ' . $ppapHc);
                        }
                    }
                }

et le log :

0068|[2026-04-28 06:02:09] DEBUG  calculatepapp
0069|[2026-04-28 06:02:09] DEBUG  ----- Calcul de la puissance apparente moyenne -----
0070|[2026-04-28 06:02:09] DEBUG  Compteur 471 Cmd trouvée
0071|[2026-04-28 06:02:09] DEBUG  Compteur 471 HC : 67389 Valeur: 29485597
0072|[2026-04-28 06:02:09] DEBUG  Compteur 471 HP : 67390 Valeur: 25780
0073|[2026-04-28 06:02:09] DEBUG  Compteur 471 HP : 60546 Valeur: 25780
0074|[2026-04-28 06:02:09] DEBUG  Compteur 471 HC : 60546 Valeur: 29485597
0075|[2026-04-28 06:02:09] DEBUG  Compteur 471 HP : 6904 Valeur: 30158565
0076|[2026-04-28 06:02:09] DEBUG  Compteur 471 Intervale depuis la dernière valeur : 0
0077|[2026-04-28 06:02:09] DEBUG  Compteur 471 Conso calculée : 0 Wh
0078|[2026-04-28 06:02:11] DEBUG  [TELEINFO_deamon_infoserial] test pid

Le patch résout l’erreur mais cela doit être plus profond car il y a répétition des calculs : 2 pour HC , 3 pour HP dont le 3ème qui est normalement la valeur du compteur Base, mais ce n’est pas la bonne valeur :


alors que dans les logs, il y a la bonne valeur :

0050|[2026-04-28 06:01:55] DEBUG  This is a message from teleinfo program 031961704588
0051|[2026-04-28 06:01:55] DEBUG  ADCO=031961704588|OPTARIF=BASE|ISOUSC=45|BASE=030132785|PTEC=TH|IINST=002|IMAX=090|PAPP=00000|HHPHC=A|device=031961704588|

Noter que j’étais en base, que je suis passé en HP/HC quelques jours et je suis revenu en base.

Salut, peux tu me montrer la page de configuration de ton équipement stp

Ton passage par hc hp s’est il fait avant le changement de version du plugin ?

à la vue des numéros de lignes que tu cites tu dois être avec la version stable. En béta j’ai modifié la fonction calculatePpapp suite à des remontées d’utilisateurs et cela va peut être résoudre ton problème. Voici la version modifiée, dis moi si cela résout ton pb:

    public static function calculatePAPP()
    {
        log::add('teleinfo', 'debug', 'calculatepapp ');
        $indexConsoHP = config::byKey('indexConsoHP', 'teleinfo', 'BASE,HCHP,EASF02,EASF04,EASF06,BBRHPJB,BBRHPJW,BBRHPJR,EJPHPM');
        $indexConsoHC = config::byKey('indexConsoHC', 'teleinfo', 'HCHC,EASF01,EASF03,EASF05,BBRHCJB,BBRHCJW,BBRHCJR,EJPHN');
        foreach (eqLogic::byType('teleinfo') as $eqLogic) {
            $cptId = strval($eqLogic->getId());
			$ppapHp  = 0;
			$ppapHc  = 0;
			$cmdPpap = null;
            foreach ($eqLogic->getCmd('info') as $cmd) {
                if ($cmd->getConfiguration('type') == 'stat') {
                    if ($cmd->getConfiguration('info_conso') == 'PPAP_MANUELLE') {
                        log::add('teleinfo', 'debug', __('----- Calcul de la puissance apparente moyenne -----', __FILE__));
                        $cmdPpap = $cmd;
                    }
                }
            }
            if ($cmdPpap !== null) {
                log::add('teleinfo', 'debug', 'Compteur ' . $cptId . ' Cmd trouvée');
                foreach ($eqLogic->getCmd('info') as $cmd) {
                    if ($cmd->getConfiguration('type') == "data" || $cmd->getConfiguration('type') == "") {
                        if (strpos($indexConsoHP, $cmd->getConfiguration('info_conso')) !== false) {
                            $ppapHp += (int)$cmd->execCmd();
							log::add('teleinfo', 'debug', 'Compteur ' . $cptId . ' HP : ' . $cmd->getId() . ' Valeur: ' . $ppapHp);
                        }
                        if (strpos($indexConsoHC, $cmd->getConfiguration('info_conso')) !== false) {
                            $ppapHc += (int)$cmd->execCmd();
							log::add('teleinfo', 'debug', 'Compteur ' . $cptId . ' HC : ' . $cmd->getId() . ' Valeur: ' . $ppapHc);
                        }
                    }
                }
                $cacheHc        = cache::byKey('teleinfo::ppap_manuelle::' . $cptId . '::hc', false);
                $datetimeMesure = date_create($cacheHc->getDatetime());
                $cacheHp        = cache::byKey('teleinfo::ppap_manuelle::' . $cptId . '::hp', false);
                $cacheHc = is_object($cacheHc) ? $cacheHc->getValue() : 0;
                $cacheHp = is_object($cacheHp) ? $cacheHp->getValue() : 0;
                $datetimeMesure = $datetimeMesure->getTimestamp();
                $datetime2      = time();
                $interval       = (float)$datetime2 - (float)$datetimeMesure;
                if ($interval!=0){
                    $consoResultat = ((((float)$ppapHp - (float)$cacheHp) + ((float)$ppapHc - (float)$cacheHc)) / $interval) * 3600;
                } else {
                    $consoResultat = 0;
                }
                log::add('teleinfo', 'debug', 'Compteur ' . $cptId . __(' Intervale depuis la dernière valeur :', __FILE__) . ' ' . $interval);
                log::add('teleinfo', 'debug', 'Compteur ' . $cptId . __(' Conso calculée :', __FILE__) . ' ' . intval($consoResultat) . ' Wh');
                $cmdPpap->event(intval($consoResultat));
                cache::set('teleinfo::ppap_manuelle::' . $cptId . '::hc', $ppapHc, 150);
                cache::set('teleinfo::ppap_manuelle::' . $cptId . '::hp', $ppapHp, 150);
            } else {
                log::add('teleinfo', 'debug', 'Compteur ' . $cptId . __(' Pas de calcul', __FILE__));
            }
        }
    }

non le passage s’est fait il y a 2 mois et je viens de mettre à jour le plugin.
En remplaçant la fonction calculatePAPP() il n’y a plus d’erreur mais toujours une valeur bizarre qui apparait :

0016|[2026-04-28 08:43:10] DEBUG  Compteur 471 Cmd trouvée
0017|[2026-04-28 08:43:10] DEBUG  Compteur 471 HC : 67389 Valeur: 29485597
0018|[2026-04-28 08:43:10] DEBUG  Compteur 471 HP : 67390 Valeur: 25780
0019|[2026-04-28 08:43:10] DEBUG  Compteur 471 HP : 60546 Valeur: 25780
0020|[2026-04-28 08:43:10] DEBUG  Compteur 471 HC : 60546 Valeur: 29485597
0021|[2026-04-28 08:43:10] DEBUG  Compteur 471 HP : 6904 Valeur: 30158585
0022|[2026-04-28 08:43:10] DEBUG  Compteur 471 Intervale depuis la dernière valeur : 59
0023|[2026-04-28 08:43:10] DEBUG  Compteur 471 Conso calculée : 0 Wh
0024|[2026-04-28 08:43:13] DEBUG  This is a message from teleinfo program 031961704588
0025|[2026-04-28 08:43:13] DEBUG  PAPP=00770|device=031961704588|

Concernant la 3ème valeur de HP

le mieux serait que tu supprimes les commandes HCHC et HCHP qui ont été créées lors de ton passage en hc hp sauf si tu veux les conserver

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