Plugin Matterbridge para Magic Home y Gladys

¡Excelente! ¡Muy limpio :)!

Si alguna vez quieres hacerlo más simple y permitir que otras personas utilicen esta integración, podrías escribir un pequeño plugin Matterbridge (con la ayuda de la IA, relativamente fácil), así este dispositivo se convertiría en Matter y, por lo tanto, compatible con Gladys (¡pero no solo con Gladys!)

El plugin es solo un simple archivo JS donde mapeas tus comandos LED Magic Home a un SDK Matter, y luego solo necesitas alojar el plugin en un repositorio Git para luego instalarlo en Matterbridge.

Matterbridge se lanza en un clic en Gladys:

Je t’avoue que j’avais exploré cette possibilité. Mais je me suis heurté à pas mal de problèmes pour activer l’IPv6 sur mon réseau. Et j’ai des services professionnels qui tournent chez moi aussi donc j’ai un peu peur de foutre le bordel.

mais ça peut être intéressant à explorer parce que de toute façon même si ce que j’ai fait fonctionne c’est loin d’être parfait. il y a du délai, et si on veut commencer à changer les couleurs de plusieurs choses à la fois, ça pose problème.

En soit, si tu fais juste tourner Matterbridge sur la même machine que Gladys, ça passera même pas sur ton réseau, donc tu peux « ignorer » le warning qui te dit que tu as besoin d’une interface ipv6, à mon avis ça marchera quand même (pas sûr à 100%, mais d’expérience ça marche)

J’ai créé un plugin Matterbridge custom pour mes bandeaux LED Magic Home (5 contrôleurs RGBWW exposés en extendedColorLight). Le on/off et la luminosité fonctionnent parfaitement, mais les couleurs ne passent jamais.

Erreur dans les logs Gladys

ValidationDatatypeMismatchError/128: Expected number, got object.
at TlvNumberSchema.validate (/src/server/services/matter/node_modules/@matter/types/src/tlv/TlvNumber.ts:110:19)
at ObjectSchema.validate (…)
at Object.ClusterClient.commands. [as moveToHueAndSaturation]
at MatterHandler.setValue (/src/server/services/matter/lib/matter.setValue.js:160:24)

Cause identifiée dans matter.setValue.js ligne ~160

await colorControl.moveToHueAndSaturation({
  hue: matterHue,
  saturation: matterSaturation,
  transitionTime: null,                    // ← devrait être 0
  optionsMask: { executeIfOff: true },     // ← objet au lieu d'un nombre (bitmap)
  optionsOverride: {},                     // ← objet au lieu de 0
});

Le optionsMask est passé comme objet JS, mais ColorControl.moveToHueAndSaturation de la lib @matter/main attend un nombre (bitmap). Le même pattern fonctionne pour LevelControl.moveToLevel parce que ce cluster accepte les objets, mais  
ColorControl les refuse.

Fix proposé

await colorControl.moveToHueAndSaturation({
  hue: matterHue,
  saturation: matterSaturation,
  transitionTime: 0,
  optionsMask: 1,
  optionsOverride: 0,
});

Environnement

- Gladys v4 (image gladysassistant/gladys:v4)
- Matterbridge 3.6.1 (luligu/matterbridge:latest)
- Plugin custom matterbridge-magic-home avec device type extendedColorLight
- NAS Synology DS1520+, Docker, --network=host

Tu veux que je fasse un nouveau poste vu que ce n’est plus vraiment la même intégration ?

Je me suis permis de splitter la conversation pour matterbridge et garder le tuto MQTT propre.

Top merci !

Génial le plugin! Tu l’as publié quelque part ?

Ah, à la limite tu peux faire une PR corrective dans Gladys (si c’est dans tes cordes?)

Sinon je peux m’en charger :slight_smile:

Je peux mais je me dis que ce serait peut-être mieux d’attendre que le système des couleurs fonctionne dans Matter et puis comme ça je publie le plugin terminé.

Je peux regarder pour faire une PR, oui, mais je n’ai fait ça qu’une seule fois, et c’était différent parce que je proposais simplement un build pour Windows sur une application.

Comme tu le sens, et n’hésite pas si tu as des questions pour créer une PR ! Sinon je m’en chargerais

Ok je me lance :wink:

Merci pour le correctif @David-Digitis, c’est bon pour moi, c’est mergé et ça partira dans la prochaine version de Gladys :slight_smile:

Correctif live dans Gladys Assistant 4.72 :