PHP Warning: Undefined array key

Bonsoir,

j’ai remarqué parfois dans la log cron, quelques warning sur des clés non définies (php >8) :

3992|PHP Warning:  Undefined array key "result" in /var/www/html/plugins/Freebox_OS/core/class/Free_Refresh.class.php on line 1337
3993|PHP Warning:  Trying to access array offset on null in /var/www/html/plugins/Freebox_OS/core/class/Free_Refresh.class.php on line 1337

S’est produit lorsque j’avais un freeplug indispo visiblement

4464|PHP Warning:  Undefined array key "value" in /var/www/html/plugins/Freebox_OS/core/class/Free_Refresh.class.php on line 820

Arrive à chaque refresh système quand j’ai la température de mon sdd qui ne remonte plus.

Je les ai corrigées à la main en rajoutant des tests array_key_exists()

Cdt

PS : j’ai vu que pour les freeplugs on cherchait à remonter les taux rx/tx mais je n’ai jamais eu les commandes sur les équipements.

Bonsoir
Quel est la version du plugin ?

Les données remontaient son erroné c’est pour ça que je ne le remonte pas je crois

Pardon, version beta du 2024-07-12 01:13:29

Du 12 juillet ? Ou du 22 ?
J’ai fait une mise à jour hier soir

Les lignes donnaient ne correspondent au système cela m étonne

Elle est bien du 12/07, je l’ai pas mise à jour justement.
Les corrections sont pour les fonctions refresh_system (case sensors) et refresh_freeplug si c’est plus clair pour toi.

Pour celui la, j’ai ajouté un contrôle

Par contre pour les Freeplug, il y a déjà un contrôle qui est fait
peut-tu me donner les logs de la partie Freeplug (il suffit d’enregistrer l’équipement)
voici. l’exemple

0000|[2024-07-22 21:40:10] DEBUG  : ──────────▶︎  Mise à jour : Freeplug - 34:27:92:1A:B6:70  ◀︎───────────
0001|[2024-07-22 21:40:10] DEBUG  : [Freebox Request Connexion] : GET sur la l'adresse mafreebox.freebox.fr/api/v12/freeplug/34:27:92:1A:B6:70(null)
0002|[2024-07-22 21:40:10] DEBUG  : [Freebox Request Result] : {"msg":"Erreur freeplug : Pas de plug avec cet identifiant","success":false,"error_code":"nosta"}
0003|[2024-07-22 21:40:10] DEBUG  :  ───▶︎ AUCUN FREEPLUG AVEC CET ID
0004|[2024-07-22 21:40:10] DEBUG  : ───────────────────────────────────────────

Depuis quand les scans n’ont pas été fait ?

Je vais le refaire et vérifier car je ne le fait que si il y a une nouveauté qui est indiquée dans la doc.
Mais pour l’erreur sur le freeplug ça me l’a fait qu’une fois. Je peux toujours en débrancher un pour voir ce que ça sort…
Merci

Ah
C’est à ce moment qu’il faudra avoir le log. Je vais ajouter un contrôle sur chaque variable.
Il y a peut être une variable qui ne remonte pas tout le temps

Si le freeplug n’est pas trouvé, c’est ce qui se passe chez moi donc ce cas est déjà géré
Bonne soirée

Je verrais cela ce week-end

ça sort -1 en valeur, donc l’appli free doit les récupérer/convertir autrement…

Surement mais il y a rien de noté dans l’API malheureusement

Bonsoir
J’ai réécrit complètement le système de mise à jour des valeurs
Il faut absolument lancer une recherche standards et parental ainsi qu’une recherche dans les équipements systèmes et wifi.
Tout n est pas forcément résolu mais cela devrait en corrigé beaucoup

La beta devrait être dispo demain
Bonne soirée

Merci beaucoup, je vais pouvoir tester ce week-end

Il reste encore des Warnings
J en ai corrigé encore ce matin
Je vais faire un message d’actualité dans la journée

1 « J'aime »

Hello,

je viens de faire la màj ce matin seulement.
Il y a une petite coquille dans le nom d’une commande :
image

Je reviendrai avec un peu plus de recul pour les warnings s’il y en a encore :slight_smile:

Edit :

5042|PHP Warning: Undefined array key « id » in /var/www/html/plugins/Freebox_OS/core/class/Free_Refresh.class.php on line 675

Je pense qu’il n’a pas la bonne clé dans cette partie :

       foreach ($EqLogics->getCmd('info') as $Cmd) {
            if (isset($result['expansions'])) {
                foreach ($result['expansions'] as $system) {
                    if ($Cmd->getLogicalId('data') == $system['slot']) {
                        if (isset($system['present'])) {
                            $EqLogics->checkAndUpdateCmd($system['id'], $system['present']);
                            log::add('Freebox_OS', 'debug', ':fg-info:───▶︎ ' . $Cmd->getName() . ' ::/fg: ' . $system['present']);
                        }

Si je suis la logique, ça serait la clé $system[‹ slot ›] qu’il faudrait pour checkAndUpdateCmd()

Edit 2 :
La commande serial du système ne se met plus à jour :confused:

Hello
Merci de ton retour

corrigé mais je te laisse corriger sur ta box

Oui c’est ça, c’est corrigé

c’est corrigé

EDIT
Les corrections seront dispo demain uniquement sur la beta

1 « J'aime »

J’ai également refait une découverte de commande sur disque dur (depuis longtemps vu les nouvelles commandes créées) et l’équipement se met en warning à cause de la valeur battery à 0 :confused:


Je dois pourvoir l’enlever sur l’eqLogic 159 en bdd, mais est-ce que ça pourrait le faire chez d’autres aussi ?

Vu le temps que j’ai mis pour le trouver. ce bug ne date pas de ces jour-ci

J’ai pas complètement trouvé pour virer le warn battery encore, mais j’ai trouvé un bug sur le refresh des commandes role pour les menbres raid :

                    foreach ($disks['members'] as $members_raid) {
                        if ($Cmd->getLogicalId() != $members_raid['id'] . '_role') continue;
                        $EqLogics->checkAndUpdateCmd($members_raid['id'] . '_role', $members_raid['role']);
                        log::add('Freebox_OS', 'debug', ':fg-info:───▶︎ ' . $Cmd->getName() . ' ::/fg: ' . $members_raid['role']);
                    }

Il manque l’ittération pour valoriser $Cmd, sinon ça conserve la dernière valeur de la boucle précédente, et ne met à jour qu’un seul disque.

                      foreach ($EqLogics->getCmd('info') as $Cmd) {

tu es sur ?
il y a cette ligne juste avant

if ($Cmd->getLogicalId() != $members_raid['id'] . '_role') continue;

J’ai poussé quand même une correction

Ça ne boucle pas non et c’est uniquement la dernière valeur qui matche