🚀 Matter & Gladys Assistant : C’est parti!

Non j’utilise leur plugin matterbridge-example-dynamic-platform, c’est vraiment pratique ça gĂ©nĂšre des dizaines d’appareils de tous les types qui existent, ça permet de tester plein d’appareils !

J’ai poussĂ© une image pour corriger un petit bug, dans certains cas j’avais des appareils avec une deviceData vide ce qui cassait l’intĂ©gration :slight_smile:

Par contre, j’arrive bien à contrîler les prises dans Matterbridge, donc bonne nouvelle tout fonctionne !

C’est juste l’appareil « CookTop Â» que je n’arrive pas Ă  contrĂŽler, mais je me demande si ce n’est pas juste un capteur


Ah, je crois avoir compris:

Comme ce sont des plaques de cuisson, elles ne sont contrĂŽlable qu’en OFF, pas On (ce qui serait trĂšs dangereux!). Ca permet d’éteindre Ă  distance uniquement :slight_smile:

Bon, un nouveau truc Ă  implĂ©menter aha, mais bon je ne crois pas qu’il y ait tant que ça d’appareil sur le marchĂ© pour ça, donc c’est pas ma prioritĂ©.

1 « J'aime »

Ce matin, j’ajoute le contrĂŽle de 2 fonctionnalitĂ©s indispensables : gestion de la luminositĂ© et couleur des ampoules connectĂ©es :rocket:

Je teste tout ça en rĂ©el avec l’excellente ampoule Nanoleaft Matter Thread E27 :

3 « J'aime »

Je viens de publier une nouvelle image avec gestion des couleurs et luminosité des ampoules :slight_smile:

3 « J'aime »

Je viens de publier une nouvelle image avec la gestion des capteurs d’humiditĂ© :droplet:

3 « J'aime »

Je viens de publier une nouvelle image avec la gestion des thermostats (chauffage + climatisation), pour l’instant je gĂšre la tempĂ©rature cible ainsi que l’allumage/extinction :fire:

3 « J'aime »

On ne t’arrĂȘte plus ! :grinning:

2 « J'aime »

une Machine notre @pierre-gilles :grin:

Quelques retours de tests

Une excellente feature ! Je vois les numéro des Endpoint dans les noms des devices à ajouter et les ajoutés.

Par contre, je viens de supprimer le plugin somfy dans matterbridge et les devices appairés sont toujours présents :thinking:
Ensuite réinstallation du plugin et je me retrouve donc avec des nouveaux numéros de Endpoint MAIS Gladys a gardé les anciens numéros pour les devices appairés.
J’ai testĂ© le haut/bas et ça ne marche pas.

J’ai dĂ©commissionnĂ© ce matterbridge, les appareils somfy appairĂ©s ont bien disparu.

J’ai ajoutĂ© le matterbidge et les appareils somfy sont rĂ©apparus avec leurs nouveaux Endpoint, et mes appareils sauvegardĂ©s ne sont plus reliĂ©s Ă  rien :frowning: , obligation de les supprimer et tout refaire.

De ce que j’ai pu voir (avec le plugin somfy), les Endpoint changent Ă  chaque rĂ©installation comme tu le dis, par contre les serialNumber et uniqueId sont identiques Ă  chaque fois. Je ne sais pas si ça peut ĂȘtre une piste.

Il faudrait aussi un spinner lorsque l’on dĂ©commissionne un device car dĂ©commissionner un matterbridge peut prendre du temps et on ne sait pas si ça tourne ou pas.

Oui, les devices appairĂ©s ne disparaissent pas mĂȘme si tu les supprime cĂŽtĂ© Matterbridge, c’est comme ça que fonctionne Matter.

De ma mĂȘme maniĂšre, si ma prise connectĂ©e Eve Energy est injoignable, elle reste visible partout (sur mon iPhone par exemple, elle reste dans Homekit).

Pour le coup, ce comportement vient de Matter et pas de Gladys.

Oui, malheureusement comme le plugin change les numĂ©ros de endpoint on ne peut pas faire de matching entre l’ancien et le nouveau.

Par contre, on pourrait Ă  la limite afficher un « Pas de rĂ©ponse Â» sur l’ancien, c’est ce que fait iOS par exemple :

Ce n’est pas suffisant malheureusement, le uniqueId est propre au device « parent Â» Matter, hors dans ce device je peux avoir plusieurs « child_device Â» avec chacun une liste de fonctionnalitĂ©s.

Il n’y a aucun identifiant en dessous qui ne varie pas.

Je serais curieux de voir ce qui se passe sur un autre controller Matter, tu pourrais tester le mĂȘme comportement sur iOS ou sur Google Home ?

Bien vu! Je vais ajouter ça :slight_smile:

J’ai fais plusieurs tentative en passant sur Matterbridge de « bridge Â» Ă  « childbridge Â» et oui, bien sur le endpoint change mais les endpoint des fonctionnalitĂ© est toujours dans le meme ordre, soit le endpoint du device + 1 etc. Donc en soit, tu devrais pouvoir les reappairer ensemble mais en essayant d’une autre facon.
Pour moi je reste sur le fait que :

  • le node_id est un parametre => qui peut changer
  • le endpoint est un parametre => qui peut changer.

Si pour le external_id tu prends :

  • device => le numero de serie si dispo, ou le unique_id si dispo, ou autre chose 
 (a trouver si rien d’autre de disponible alors tu previens que les donnĂ©es historiques seront perdues en cas de reappairage)
  • features => external_id du device + « -1 Â» pour le premier endpoint du device, « -2 Â» pour le second etc.

Normalement il n’y a aucune raison que tu ne puisse pas les reassocier et tu met a jour les parametres « node_id Â» et « endpoint Â» pour chacun des devices


Tu te bases sur l’utilisation de Matterbridge, ils font leur sauce en interne mais ça n’est pas reprĂ©sentatif du protocole Matter dans son ensemble, ce n’est pas suffisant pour tirer des conclusions :slight_smile:

Je ne pense pas que l’approche que tu proposes soit conforme au standard Matter, et je n’ai encore vu aucune autre implĂ©mentation dans l’écosystĂšme Matter fonctionner de cette maniĂšre.

Cela dit, tu as raison sur un point : on pourrait envisager de proposer Ă  l’utilisateur de rattacher un nouvel appareil Ă  un ancien, Ă  condition que les deux aient exactement les mĂȘmes fonctionnalitĂ©s dans le mĂȘme ordre.

Mais ce n’est pas toujours possible, car :

  • Un appareil physique peut recevoir des mises Ă  jour et exposer de nouvelles fonctionnalitĂ©s au fil des Ă©volutions du protocole.
  • Dans le cas de Matterbridge, le logiciel lui-mĂȘme peut Ă©voluer et ajouter des fonctionnalitĂ©s Ă  des appareils dĂ©jĂ  intĂ©grĂ©s.

Je vais malgré tout approfondir le sujet pour voir comment Apple ou Google gÚrent ce cas. Mon objectif reste de suivre le standard Matter de la maniÚre la plus rigoureuse possible.

@Terdious j’ai testĂ© une approche de matching (pour remplacer les devices) basĂ© sur le couple unique_id + position, mais bon le risque c’est vraiment de merger un device dans un autre device. Je n’ai rien vu dans la spec qui garantisse ce fonctionnement.

Du moment que ça reste juste un matching au remplacement, ça me dĂ©range moins. CĂŽtĂ© external_id, on garde l’approche actuelle qui est l’approche officielle.

Ce serait top d’avoir l’info en « direct Â» !

Une idĂ©e comme au passage : et si on avait un bouton qui permettrait de dĂ©commissionner et de rĂ©appairer automatiquement l’appareil, ce serait jouable tu penses ?
Ca permettrait d’avoir un refresh des devices appairĂ©s. Ca pourra ĂȘtre dispo uniquement sur du matterbridge, pas forcĂ©ment sur des devices unitaires comme les tiens actuellement (car pas d’intĂ©rĂȘt je pense).

Non pas vraiment, car pour le coup il n’y a pas d’identifiant unique à ce niveau.

(Et je vous vois venir, non « VendorID Â» et « ProductID Â» ne sont pas des identifiants uniques :stuck_out_tongue: )

Dans le cas de Matterbridge, l’identifiant unique est au niveau du child device qui reprĂ©sente un appareil, donc je peux proposer Ă  l’utilisateur un matching Ă  ce niveau lĂ  ! Je pense que ça ne marchera pas parfaitement, mais ça sera mieux que rien


J’en profite pour te relancer sur ça :slight_smile:

Ajout d’un spinner lors du decommissioning:

1 « J'aime »

Ajout d’un badge sur les noeuds dĂ©connectĂ©s :

1 « J'aime »

et avec un ping6, tu penses que ça fonctionnerait mieux pour des tests plutĂŽt que checker l’inet6 de l’interface rĂ©seau ?
Quand je dĂ©sactive ipv6 sur le syno, j’ai bien inet6 qui disparait lors du ifconfig sur le syno (pas dans le terminal du docker gladys, je n’arrive pas Ă  checker car pas de commande rĂ©seau d’installĂ©e).

Alors j’ai vraiment des trucs que je ne comprends plus :frowning: et qui dĂ©passent mes compĂ©tences docker/rĂ©seau.
Sur mon syno j’ai donc activĂ© l’IPV6 sur le rĂ©seau :


mes dockers (dont Gladys) sont en host et l’ipv6 semble non actif :

et pourtant matterbridge voit de l’ipv6 et c’est l’ipv6 dy syno lui-mĂȘme (normal car host) :thinking:

@Terdious @pierre-gilles docker sur PC/MAC ou NAS ?

Tu fais bien !! (par contre je n’ai pas de gg home)

Alors je viens de tester sur iOS :

  • crĂ©ation d’un domicile dans l’app Maison
  • apparaige avec Matterbridge via qrcode : ok
  • dĂ©tection auto des appareils somfy et ajout dans Maison dans diffĂ©rentes piĂšces et crĂ©ation d’une scĂšne open/close
  • tests de montĂ©e/descente : ok (pas terrible je trouve la gestion des sliders)
  • test de la scĂšne : ok
  • dĂ©sactivation du plugin somfy dans matterbridge : TOUS les devices (sauvegardĂ©s donc) disparaissent de Maison ainsi que scĂšne associĂ©e
  • rĂ©activation du plugin : TOUS les devices somfy rĂ©apparaissent et sont tous placĂ©s dans une seule piĂšce par dĂ©faut (garage) mais la scĂšne n’est pas revenue
  • test open/close : ok
  • suppression du plugin somfy dans matterbridge : TOUS les devices (sauvergadĂ©s donc) disparaissent de Maison
  • rĂ©installation du plugin somfy (donc nouveau Endpoint : TOUS les devices somfy rĂ©apparaissent et sont tous placĂ©s dans une seule piĂšce par dĂ©faut (garage)
  • test open/close : OK

Chose intĂ©ressante, le plugin matterbridge-somfy a « retrouvĂ© Â» les anciens Endpoint et semble les faire coĂŻncider avec les nouveaux :


Je dĂ©commissionne et rajoute matterbridge dans Gladys : les noms gardent les anciens Endpoint mais il semble qu’une synchro ce soit passĂ©e car mon volet de test (Salon PF) me redemande une piĂšce Ă  sauvegarder alors que j’avais mis « maison Â». Par contre l’open/close ne fonctionne pas.
Je redĂ©commissionne et rajoute de nouveau 
 enfin j’essaye car ça ne veut plus :frowning:
image

Je n’utilise pas exactement ifconfig, j’utilise dans Node.js le module core os:

https://nodejs.org/api/os.html#osnetworkinterfaces

Je fais:

const interfaces = os.networkInterfaces()

Ce qui me renvoie quelque chose de ce style:

{
  lo: [
    {
      address: '127.0.0.1',
      netmask: '255.0.0.0',
      family: 'IPv4',
      mac: '00:00:00:00:00:00',
      internal: true,
      cidr: '127.0.0.1/8'
    },
    {
      address: '::1',
      netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
      family: 'IPv6',
      mac: '00:00:00:00:00:00',
      scopeid: 0,
      internal: true,
      cidr: '::1/128'
    }
  ],
  eth0: [
    {
      address: '192.168.1.108',
      netmask: '255.255.255.0',
      family: 'IPv4',
      mac: '01:02:03:0a:0b:0c',
      internal: false,
      cidr: '192.168.1.108/24'
    },
    {
      address: 'fe80::a00:27ff:fe4e:66a1',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '01:02:03:0a:0b:0c',
      scopeid: 1,
      internal: false,
      cidr: 'fe80::a00:27ff:fe4e:66a1/64'
    }
  ]
} 

Ensuite, je regarde si des adresse « IPv6 Â» sont disponibles :slight_smile:

Normalement, si tu n’as plus d’interfaces ipv6, ça devrait aussi disparaitre cĂŽtĂ© Gladys.

Si tu veux voir le rĂ©sultat de la commande chez toi, tu peux ouvrir l’inspecteur de ton navigateur et sĂ©lectionner cette requĂȘte :

Pas sûr de comprendre la question ? Je développe sur Mac et mon Gladys tourne sur un Beelink mini S12 Pro :slight_smile:

Merci du test ! :slight_smile:

Ok, je m’en doutais, iOS ne garde aucune trace des appareils, et donc n’a pas a faire de matching ancien ↔ nouveau, il supprime tout. C’est violent je trouve :sweat_smile: Aprùs, pour l’instant sur ces plateformes, il n’y a pas d’historiques (pas de vue graphique), donc ils s’en foutent un peu du legacy, ce qui n’est pas notre cas.

Pour info, je n’avais pas encore poussĂ© mes amĂ©liorations de ce matin, donc tu as testĂ© la version de samedi soir :stuck_out_tongue:

Je viens de pousser un nouveau build Docker avec cette fois-ci le matching automatique basĂ© sur le couple « UNIQUE_ID + position Â» (solution imparfaite je le rappelle, mais « good enough Â»)

Pour autant, tu dois encore le voir dans la liste dans « paramĂštres Â» non? Le decommissioning n’a pas du marcher

1 « J'aime »