PHP Warning: Undefined array key "device_id" dans updatePetsStatus() (PHP 8.x)

Bonjour @JMVedrine,

Sous Debian 12 / PHP 8.2, j’ai un warning PHP qui survient dans le log “cron_execution” lors de la mise à jour des statuts des animaux :

PHP Warning: Undefined array key "device_id" in /plugins/surepetcare/core/class/surepetcare.class.php on line 563

**
Cause probable :**

Comme indiqué dans le commentaire du code ligne 569 (« Ceci peut se produire si on a mis à jour la position par une commande »), le tableau $pet['status']['activity'] ne contient pas toujours la clé device_id. Sous PHP 8.2, y accéder directement lève un warning.

Correction proposée :

Dans plugins/surepetcare/core/class/surepetcare.class.php, lignes 563-564 :

// Remplacer :

$device_id = $pet['status']['activity']['device_id'];
$eqLogic2 = self::byLogicalId('dev.' . $device_id, 'surepetcare');

// Par :
$device_id = $pet['status']['activity']['device_id'] ?? null;
$eqLogic2 = !empty($device_id) ? self::byLogicalId('dev.' . $device_id, 'surepetcare') : null;

Cela évite l’avertissement PHP 8 et conserve (normalement !) exactement le comportement attendu. Merci beaucoup pour ton plugin, franchement il me sert tout le temps :ok_hand::folded_hands:.

(PS : Ce problème n’est absolument pas bloquant !!)

Bon week-end

Bonjour @aztazt merci pour le rapport de bug et la proposition de correction.

Ma production est encore en PHP 7 et mon jeedom de test en PHP 8 est à l’arrêt car le ventilateur de mon nuc est HS et j’attends un remplacement venu de Chine.

De plus mon installation sure petcare a un problème car le hub a cessé de communiquer avec tous les équipements. J’ai acheté un hub de remplacement mais impossible de le configurer ni de le réinitialiser, comme il m’est arrivé déja ouvert je soupçonne que c’est un produit retourné que Zooplus m’a vendu ! je vais devoir contacter l’assistance de Sure Petcare.
Tout çà pour dire que je vais avoir du mal à tester, mais je vais publier une version corrigée et les utilisateurs testeront :grinning_face:

1 « J'aime »

C’est très sympa, merci pour le support (en aveugle pour le coup :slight_smile: )
J’essaierai de faire le béta testeur et de te faire des retours constructifs et, si je peux, pertinents !