Skip to content

fix: Gestion des groupes (zones) cassée pour les configurations multi-hubs + retour false silencieux #43

@jkurz78

Description

@jkurz78

Description

Bonjour,

La gestion des groupes (zones Ajax) dans la méthode sync() de ajaxSystem.class.php comporte deux bugs qui rendent l'armement par zone inutilisable dans certaines configurations.
Bug 1 — Collision des logicalId entre groupes de hubs différents
Les groupes Ajax ont des identifiants locaux au hub (00000001, 00000002, etc.). Deux hubs distincts peuvent avoir des groupes avec les mêmes IDs. Or le lookup dans sync() se fait globalement sans filtrer par hub :
php$eqLogic = eqLogic::byLogicalId($group['id'], 'ajaxSystem');
Résultat : les groupes du second hub écrasent ceux du premier lors de la synchronisation. Par exemple, si Hub A a un groupe 00000001 ("Cellule") et Hub B a aussi 00000001 ("Maison"), seul le dernier synchronisé existe dans Jeedom.
Bug 2 — Aucune validation du retour API pour /groups
Quand l'API retourne false au lieu d'un tableau de groupes, le foreach échoue silencieusement — aucun groupe n'est créé, aucune erreur n'est loggée. L'utilisateur n'a aucun moyen de diagnostiquer le problème sans analyser les logs DEBUG.
Bug 3 — refreshData() ne gère pas le type group
Quand refreshData() est appelée sans données (depuis refreshAllData()), le type group n'est pas traité — seuls hub et device le sont. Les groupes ne sont donc jamais rafraîchis en dehors de la sync initiale.

NOTE: Je prépare une PR avec un correctif pour les trois bugs.

Type de matériel / Hardware type

VM

Version de Jeedom / Jeedom Version

4.4.20

Navigateur / Browser

Arc mais sans relation

Étapes pour reproduire / Steps to reproduce

  1. Avoir un compte Ajax avec 2 hubs (ex: Hub 2 4G + Hub 2 Plus), chacun avec des groupes activés
  2. Lancer la synchronisation via Plugin → Ajax System → Synchroniser
  3. Observer que les groupes du premier hub sont écrasés par ceux du second (mêmes logicalId 00000001, 00000002)
  4. Si l'API retourne false pour l'endpoint /groups d'un hub, aucune erreur visible, aucun groupe créé

Environnement :
Plugin : Ajax Systems (ici)
Configuration : 2 hubs Ajax (Hub 2 4G firmware 2.38.111 + Hub 2 Plus firmware 2.33.113), chacun avec 2+ groupes
Jeedom Core : 4.4.20

Logs

Synchronisation mars 2026 — groupes OK pour Hub 1, retour false pour Hub 2 :
[2026-03-20 10:28:19][DEBUG] : [request] .../hubs/0014B92D/groups => null
[2026-03-20 10:28:19][DEBUG] : [{"id":"00000001","groupName":"Cellule",...},{"id":"00000002","groupName":"Soutes",...}]
...
[2026-03-20 10:28:35][DEBUG] : [request] .../hubs/000BF237/groups => null
[2026-03-20 10:28:35][DEBUG] : false
Synchronisation novembre 2025 — les 2 hubs retournent des groupes, mais le bug de collision produit le même résultat :
[2025-11-15 10:42:39][DEBUG] : Hub 0014B92D groups : [{"id":"00000001","groupName":"Cellule"},{"id":"00000002","groupName":"Soutes"}]
[2025-11-15 10:48:17][DEBUG] : Hub 000BF237 groups : [{"id":"00000001","groupName":"Maison"},{"id":"00000002","groupName":"Essai"},{"id":"00000003","groupName":"Renault Master"}]
→ Les groupes "Cellule" et "Soutes" du Hub 1 étaient écrasés par "Maison" et "Essai" du Hub 2 (même logicalId 00000001 et 00000002).
Problème également signalé par d'autres utilisateurs sur la communauté Jeedom :

https://community.jeedom.com/t/alarm-status-not-correctly-updated/142015
https://community.jeedom.com/t/commander-plusieurs-groupes/142084
https://community.jeedom.com/t/afficher-et-commander-plusieurs-groupes/142002

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions