[Matter] Support des clusters MediaPlayback, KeypadInput et LevelControl pour les appareils média

Bonjour à tous !

Je viens de tester le nouveau système Matterbridge AI Plugin Factory
de Pierre-Gilles pour intégrer mon Freebox Player Delta (Devialet)
dans Gladys via Matter.

Le plugin généré fonctionne très bien côté Matterbridge :
:white_check_mark: Authentification via validation sur l’écran Freebox
:white_check_mark: Découverte automatique du player
:white_check_mark: Device visible dans Gladys via Matter

Le plugin expose correctement les clusters Matter suivants :

  • OnOff
  • LevelControl (volume)
  • MediaPlayback (play/pause/stop/next/prev)
  • KeypadInput (télécommande virtuelle)

Mais côté Gladys, seul le cluster OnOff est reconnu
(comme « commutateur »), et il ne fonctionne pas non plus
car le on/off d’un lecteur média est différent d’une ampoule.

Est-il possible d’ajouter le support des clusters suivants
dans l’intégration Matter de Gladys ?

  • MediaPlayback → play, pause, stop, next, previous
  • KeypadInput → envoi de touches (ok, back, home,
    up, down, left, right)
  • LevelControl dans un contexte média → volume
    (pas luminosité)
  • OnOff pour un lecteur média → power on/off
    (différent d’une lampe)

Ce serait une avancée énorme pour tous les utilisateurs
qui ont des appareils médias (TV, lecteurs, box TV…)
et qui utilisent Matterbridge pour les intégrer.

Le plugin Freebox est disponible ici pour ceux qui veulent tester :

Merci !

Oui, c’est tout à fait possible ! Et c’est totalement l’idée de Matter, je veux tout couvrir à 100% dans Gladys pour qu’ensuite toutes les intégrations « non-Matter » puissent être faites dans Matterbridge.

Je regarderai dès que je peux, sinon si quelqu’un veut faire une PR, il est le bienvenu :blush:

Update — PR soumise + cartographie des clusters Matter manquants

Bonjour à tous !

Petite mise à jour sur mon aventure Matter/Matterbridge,
en toute transparence : je ne suis pas développeur du tout.
Je m’appuie sur Claude (IA d’Anthropic) et l’éditeur Cursor
pour m’aider à comprendre le code et contribuer.
Sans eux je n’aurais jamais pu faire ce qui suit :slightly_smiling_face:

Ce qui s’est passé depuis mon post initial

Suite au retour de Pierre-Gilles disant qu’une PR était
bienvenue, on s’est lancés. Voilà le résultat :

:backhand_index_pointing_right: PR #2533 soumise sur le repo Gladys :

Elle ajoute le support de trois clusters Matter manquants :

  • MediaPlayback → play, pause, stop
  • KeypadInput → navigation (haut/bas/gauche/droite/ok/retour)
  • LevelControl (sans lighting) → volume

Tout ça pour que les appareils médias bridgés via Matterbridge
(TV, box, lecteurs…) exposent de vraies fonctionnalités
dans Gladys, pas juste un commutateur.

Le bot CodeRabbit a déjà fait une review automatique avec
deux nitpicks mineurs que je suis en train de corriger.

Cartographie des clusters Matter manquants

En creusant le sujet, j’ai fait une comparaison entre
toutes les features disponibles en MQTT et leur couverture
côté Matter. Résultat : environ 50% des features Gladys
n’ont pas encore de cluster Matter.

Priorités hautes (clusters Matter standards, bien documentés) :

  • DoorLock → LOCK (serrures)
  • PowerSource → BATTERY (niveau batterie)
  • SmokeCoAlarm → SMOKE_SENSOR + CO_SENSOR
  • BooleanState → OPENING_SENSOR (capteurs d’ouverture)

Priorités moyennes :

  • ColorControl temperature → couleur de blanc (chaud/froid)
  • FanControl → mode ventilation/clim
  • CarbonDioxideConcentration → CO2_SENSOR

Features qui n’existent nulle part encore :light_bulb:
En réfléchissant plus loin, il y a des usages que ni MQTT
ni Matter ne couvrent aujourd’hui dans Gladys :

  • Valve/irrigation (le cluster Matter ValveConfigAndControl
    existe déjà !)
  • Compteur eau/gaz (consommation en m³)
  • Niveau de réservoir (cuve fioul, piscine)
  • Présence humaine radar mmWave (plus précis qu’un PIR)

Question pour la communauté

Y a-t-il des features qui vous manquent dans Gladys
aujourd’hui ? Des appareils que vous n’arrivez pas
à intégrer correctement ?

Et si des vrais développeurs veulent reprendre ces
clusters prioritaires, le chemin est maintenant balisé —
les deux fichiers à modifier sont
convertToGladysDevice.js et matter.setValue.js,
et le pattern est très clair à suivre :slightly_smiling_face:

Salut @b3n.0 :slight_smile:

Je ne sais pas si tu as vu dans la PR, mais on exécute des dizaines de checks pour vérifier que la PR est bonne : tests unitaires, linting, formattage, code coverage, etc…

Il faut également tester la modification en conditions réelles avant de pouvoir la valider. Je ne sais pas si tu as déjà pu faire cette partie ?

Tu trouveras dans la PR une checklist à compléter avant de passer à l’étape suivante. Je t’invite à parcourir les différents points et à me faire signe une fois les correctifs appliqués et les vérifications effectuées.

Si c’est trop compliqué pour toi, tiens moi au courant et je referais une PR :slight_smile:

Salut @pierre-gilles :slightly_smiling_face:

Merci pour ton retour, j’ai bien parcouru la checklist et appliqué les correctifs demandés à l’aide de Cursor.

Test en conditions réelles : pas encore, je dois fouiller dans un placard pour retrouver un vieux Raspberry, je dois avoir une vieux RPi 2B, en espérant qu’il supporte !?

Top, par contre tu feras attention ta PR modifie des fichiers en dehors du scope de ta PR (Scene.cy.js)

C’est trop vieux, on ne fait plus de build armv6 ^^

Tu peux tester sur ta machine de dev par contre, pas besoin forcément de le lancer en déporté :slight_smile:

La PR a été fermée et une nouvelle créée en limitant au scope de la PR…

Les tests ont été passés, manque le test en condition réel :
npm run dev échoue (apparemment node.js trop récent sur ma machine… C’est possible ça ?)

Merci pour ta PR, par contre petite question, tu as fais le choix d’utiliser une fonctionnalité « Télévision » dans Gladys, est-ce que dans Matter, MediaPlayback est forcément lié à une télévision, ou c’est aussi utilisé par la musique ?

Comment ce cluster est affiché sur d’autres systèmes Matter ? sur iOS par exemple?

Et oui … ! Dans la spec Matter, MediaPlayback est un cluster
générique — il n’est pas réservé aux TV. Il est utilisé aussi bien
par les box TV, les enceintes connectées, les lecteurs musicaux, etc.

La spec Matter distingue deux device types principaux :

  • « Casting Video Player » (TV, box)
  • « Basic Audio Player » / « Speaker » (enceintes, lecteurs audio)

…mais les deux peuvent utiliser MediaPlayback.
S’ajoute ensuite Channel, KeypadInput et LevelControl suivant l’usage final.

Pour l’affichage dans iOS Home, honnêtement je ne sais pas —
c’est une bonne question et je n’ai pas eu l’occasion de tester.

Du coup ta question sur le choix de design :
vaut-il mieux rester sur la catégorie TELEVISION existante dans Gladys
(qui a déjà tous les types play/pause/volume/navigation), ou utiliser
MUSIC, ou créer quelque chose de plus générique ?

Je m’en remets complètement à ton jugement là-dessus :slightly_smiling_face:

Salut @b3n.0,

C’est vraiment cool de vouloir aider, et prend pas mal mon retour hein :smiley:

Le truc c’est que si tu transmets juste mes messages à Claude et que tu me renvoies sa réponse, je pourrais faire la même chose de mon côté directement, donc l’intermédiaire perd un peu de son intérêt :joy:

Ce que je cherche vraiment, c’est la partie que Claude ne peut pas faire à ta place : répondre aux questions que je t’ai posées ! C’est le travail d’un humain qui connaît son contexte, et c’est là où tu as une vraie valeur ajoutée :smiley: