Bonjour,
Je remonte mon problème, lors que je scan les équipements sur ma freebox.
J’ai un message d’erreur :
Erreur sur Freebox_OS::FreeboxPUT() : Le nom de la commande ne peut pas être vide :Freebox_OSCmd Object
(
\[id:protected\] =>
\[logicalId:protected\] => ether-6e:ee:64:ea:a6:ea
\[generic_type:protected\] =>
\[eqType:protected\] =>
\[name:protected\] =>
\[order:protected\] =>
\[type:protected\] => info
\[subType:protected\] => binary
\[eqLogic_id:protected\] => 695
\[isHistorized:protected\] => 0
\[unite:protected\] =>
\[configuration:protected\] =>
\[template:protected\] =>
\[display:protected\] =>
\[value:protected\] =>
\[isVisible:protected\] => 1
\[alert:protected\] =>
\[\_collectDate:protected\] =>
\[\_valueDate:protected\] =>
\[\_eqLogic:protected\] =>
\[\_needRefreshWidget:protected\] => 1
\[\_needRefreshAlert:protected\] =>
\[\_changed:protected\] => 1
)
#0 /var/www/html/plugins/Freebox_OS/core/class/Freebox_OS.class.php(535): cmd->save()
#1 /var/www/html/plugins/Freebox_OS/core/class/Free_CreateEq.class.php(1002): Freebox_OS-AddCommand()
#2 /var/www/html/plugins/Freebox_OS/core/class/Free_CreateEq.class.php(75): Free_CreateEq::createEq_network_SP()
#3 /var/www/html/plugins/Freebox_OS/core/class/Free_Update.class.php(654): Free_CreateEq::createEq()
#4 /var/www/html/plugins/Freebox_OS/core/class/Free_Update.class.php(108): Free_Update::update_network()
#5 /var/www/html/plugins/Freebox_OS/core/class/Freebox_OS.class.php(327): Free_Update::UpdateAction()
#6 /var/www/html/core/php/jeeCron.php(87): Freebox_OS::FreeboxPUT()
#7 {main}
Cela semble venir de certain équipement qui ont un nom vide :
[BUG FIX] Erreur « Le nom de la commande ne peut pas être vide » lors du scan des appareils réseau
J’ai corrigé le bug qui provoque l’erreur lors du scan des équipements connectés à la Freebox :
Cause du problème
Dans le fichier core/class/Free_CreateEq.class.php, fonction createEq_network_SP(), la vérification du nom de l’appareil se fait avant le nettoyage du nom (ligne ~911) :
> if ($result\[‹ primary_name ›\] != ‹ ›) {
> // …
> $result\[‹ primary_name ›\] = str_replace(array_keys($replace_device_type), $replace_device_type, $result\[‹ primary_name ›\]);
Or le str_replace supprime certains caractères ([ et ] sont remplacés par ‹ ›). Si le nom de l’appareil ne contient que ces caractères, il devient une chaîne vide après le remplacement. La commande est alors créée avec un nom vide, ce qui fait planter cmd->save().
Conséquence : l’exception interrompt le foreach en cours, donc tous les appareils suivants dans la liste ne sont pas traités et n’apparaissent pas dans Jeedom.
Correction proposée
Après l’extraction de l’adresse MAC (vers la ligne 956), ajouter le fallback suivant :
> if (isset($result\[‹ l2ident ›\])) {
> $ident = $result\[‹ l2ident ›\];
> if ($ident\[‹ type ›\] == ‹ mac_address ›) {
> $mac_address = $ident\[‹ id ›\];
> }
> }
>
> // Ajout : si le nom est vide après nettoyage, utiliser l’adresse MAC comme nom
> if (trim($result\[‹ primary_name ›\]) === ‹ ›) {
> $result\[‹ primary_name ›\] = $mac_address ?? $result\[‹ id ›\];
> }
Cela place le contrôle après l’extraction de la MAC et avant la construction des listes actifs/non-actifs, de sorte que le nom de fallback est cohérent partout (listes + commande créée).
Note : ce bug est particulièrement observable avec les appareils utilisant une adresse MAC randomisée (Android 10+, iOS 14+) qui peuvent retourner un primary_name contenant uniquement des caractères spéciaux depuis l’API Freebox.
Merci pour ce super plugin !
Informations Jeedom
Core : 4.6.1 (master)
DNS Jeedom : non
Plugin : Freebox
Version : 2026-06-16 07:18:25 (beta)
Statut Démon : Démarré - (2026-07-02 07:00:14)
Santé
🟢 Matériel : RPI 4 B
🟢 Système à jour : OK
🟢 Cron actif : OK
🟢 Scénario actif : OK
🟢 Démarré : OK 2026-06-26 18:43:22
🟢 Date système (dernière heure enregistrée) : OK 2026-07-02 11:26:11 (2026-07-02 10:54:02)
🟢 Droits sudo : OK
🟢 Version Jeedom : 4.6.1
🟢 Version OS : debian 11.11
🟢 Version PHP : 7.4.33
🟢 Nombre de processus Apache : 13
🟢 Version OS : Linux RPIJeedom 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux [11.11]
🟢 Version database : 10.5.29-MariaDB-0+deb11u1
🟢 Espace disque libre : 76 %
🟢 Connexion active/max/autorisée : 15/118/151
🟢 Taille base de données : 10.08 GB
🟢 Espace disque libre tmp : 74 %
🟢 Mémoire disponible : 46 % (Total 3793 Mo)
🟢 Mémoire suffisante : 0
🟢 Erreur I/O : 0
🟢 Swap disponible : 65 % (Total 4096 Mo)
🟢 Swappiness : 10 %
🟢 Charge : 1.85 - 1.47 - 1.36
🟢 Configuration réseau interne : OK
🟢 Configuration réseau externe : OK
🟢 Node : v22.23.1
🟢 Python : Python 3.9.2
🟢 Python 3 : Python 3.9.2
🟢 Persistance du cache : OK
🟢 Apache private tmp : OK
Informations complémentaires
Box [fbxgw1r] ; Box_name [Freebox Server Mini (r1)] ; Firmware [4.12.1] ; Mode [router] ; IP Box [mafreebox.freebox.fr]
Nom [Jeedom-StVrain] ; API [v16] ; Box compatible avec la domotique [KO] ; Cron pour la domotique [0] ; Box compatible avec les VM []
Scans : EQ [02/07/2026 11:21:59] ; Tiles [] ; Parental [02/07/2026 11:20:20]
Box compatible avec le mode Eco Wifi [0] ; Box compatible avec les LED rouges [0] ; Box compatible avec l'orientation du texte sur l'afficheur [1]