Mise en place openthread avec la clé SLZB-MR01

Bonjour,

Je suis en train de voir pour activer matter avec la clé SLZB-MR01 mais il y a des choses que je ne comprends pas.

Pour commencer voici le déroulé de ce que j’ai fais :

Le thread border router n’est pas recommandé avec le POE :
https://www.reddit.com/r/MatterProtocol/comments/1hl34i0/comment/m3js1kf/

Je ne veux donc pas utiliser le thread border router avec la clé SLZB-MR01 et n’y dépendre d’une Apple TV ou autre élément que je ne maitrise pas
Pour cela je veux utiliser openthread
LE SLZB-MR01 sera utilisé uniquement pour le Thread-Radio

Pour l’installation d’openthread sur une VM qui a son réseau de configuré en IPV4 et IPV6 :

Installation d’open thread avec docker en suivant ce tutoriel
:

Pour la partie activer le transfert IP :
Je vous conseil de télécharger le fichier et de modifier le nom de l’interface (Par defaut wlan0) par l’interface qui est utilisé, dans mon cas ens18 et de lancer la commande « bash setup-host »

L’image openthread ne fonctionne pas avec le TCP mais un fork a été fait pour être comptatible avec le protocole TCP vu que l’on joint le SLZB-MR01 via le réseau :
https://www.reddit.com/r/homeassistant/comments/1p73d9k/openthreadborderrouter_truenas_scale_docker/

Voici le fichier docker-compose.yml que j’ai créé :

services:
  otbr:
    image: bnutzer/otbr-tcp
    network_mode: host
    restart: unless-stopped
    privileged: true
    cap_drop:
      - NET_ADMIN   # Should prevent iptables/ipset updates
      - NET_RAW     # No raw network access
    devices:
      - /dev/net/tun
    environment:
      - RCP_HOST=IP_DU_SLZB-MR01
      - OTBR_THREAD_IF=wpan0
      - OTBR_BACKBONE_IF=ens18
      - OTBR_WEB_ENABLE=1
      - OTBR_REST_LISTEN_ADDRESS=127.0.0.1
    volumes:
      - ./otbr-data:/var/lib/thread

Ensuite j’ai pu me connecter sur l’interface web d’openthread sur le port 8080.
Et c’est la que je comprends plus trop :sweat_smile:
Lorsque je vais sur Join, j’ai plusieurs réseau thread disponible :

Je ne sais pas à quoi correspond ces 3 réseaux malheureusement
Je n’ai pas pu faire de lien avec la clé SLZB-MR01 car je ne trouve pas d’hardware address sur l’interface web de la clé et rien ne correspond sur l’étiquette de la clé

Pouvez-vous m’aider à éclaircir ceci svp ? :slight_smile:

Salut @prohand,

Top ton investigation :slight_smile:

Je ne suis pas expert sur le sujet, je n’ai jamais testé OpenThread donc tu es plus avancé que moi sur ce sujet.

À mon avis, les 3 réseaux Thread que tu vois dans l’interface « Join » sont probablement des réseaux Thread existants détectés dans ton environnement (voisins, autres appareils Thread, etc.).

Tu n’as pas besoin de « joindre » un réseau existant, tu veux créer ton propre réseau Thread. Va plutôt dans l’onglet « Form » pour créer un nouveau réseau Thread.

Est-ce que tu vois quelque chose dans les logs ?

Je ne vois pas grand chose dans les logs :frowning:
En faite j’aimerai pas que la clé SLZB-MR01 ai déjà un réseau de créé mais peut être que c’est pas important ^^
Je vais essayer de me repencher sur le sujet début de semaine prochaine
En attendant si nous avons des personnes qui connaissent un peu le sujet je veux bien un peu d’aide :slight_smile:
Merci d’avance

1 « J'aime »

J’ai essayé de faire fonctionne openthread avec la clé sans succès pour le moment.

J’ai l’impression qu’openthread ne communique pas correctement avec la clé ou alors il y a un truc que je ne comprends pas :sweat_smile:

J’ai créé une issue sur docker-otbr-tcp : RCP:TxPower 0 dBm · Issue #9 · bnutzer/docker-otbr-tcp · GitHub

1 « J'aime »

Pour la partie docker sur openthread j’ai du lancer les commandes suivantes dans le container pour résoudre les problèmes avec ipset :

ipset create otbr-ingress-deny-src-swap hash:net family inet6
ipset create otbr-ingress-allow-dst-swap hash:net family inet6
ipset create otbr-ingress-deny-src hash:net family inet6
ipset create otbr-ingress-allow-dst hash:net family inet6

Après des échanges avec ChatGPT :blush:, il s’avère qu’il faut utiliser chip-tool pour faciliter l’apparaige :

Sur la machine hôte j’ai fais un snap install chip-tool et ensuite j’ai lancé la commande suivante :

chip-tool pairing code 1 "code_sur_appareil_a_ajouter" --trace_decode 1

Je testerai l’appairage ce soir car je suis à distance pour le moment

1 « J'aime »

Bon sa a l’air plus compliqué que ce que je pensais :sweat_smile:

Je n’ai pas réussi à appairer mon matériel thread sur openthread.
J’ai tenté avec chip-tool mais j’ai l’impression qu’il me manque des infos/compréhension.
J’ai tenté avec matter-server de HAOS mais la aussi je ne suis pas arrivé à faire l’apparaige.

J’ai réussi à faire un truc en installant HAOS et toute la suite matter et openthread directement dans HAOS en scannant le qr-code via l’application de home assistant.

Je n’arrive pas à reproduire le fonctionnement de l’application home assistant que sa soit avec chip-tool ou directement avec mon téléphone.

Si une personne passe par là et qu’elle peut aider c’est avec plaisir :slight_smile:

En attendant je vois voir pour l’integrer directement via le reseau thread apple home et y faire remonter dans gladys sachant que mon réseau apple n’est pas sur le même vlan que Gladys :slight_smile:

Edit: Je penses avoir compris un truc :sweat_smile:
Je test ce soir et je vous redis :blush:

1 « J'aime »

En faite l’apparaige sur le réseau Thread doit se faire avec un appareil qui a le Bluetooth avec une application qui permet de joindre le réseau Thread et qui permet de rentrer le dataset et le payload

Sur IOS il n’existe pas d’application permettant de faire ceci sauf avec l’intégration de Home Assistant mais ce n’est pas possible de l’utiliser dans notre cas car c’est dédié à Home Assistant.

Il faut donc avoir un dongle ou une carte Bluetooth de connecter sur la machine ou l’on exécute chip-tools

De mon côté il s’agit d’une machine virtuelle sous proxmox donc j’ai fais remonter la carte bluetooth directement sur la VM.

Du coup j’ai fais comme ceci :

snap install chip-tools
apt install bluez

Ensuite récupérer avec la commande suivante le dataset sur votre docker openthread :

sudo docker exec -it openthread-otbr-1 sh -c "sudo ot-ctl dataset active -x"

Récupérer ensuite le payload en scannant avec une appli de QR code l’étiquette de votre end device.
Chez moi il était sous la forme : MT:XXXXXXXXXXX-XXXXXXX

Sur la machine ou vous avez installé chip-tools lancer la commande suivante :

chip-tool pairing code-thread  <node-id> <operationalDataset> <payload>

Ce qui donne :

chip-tool pairing code-thread 1 <Payload> <MT:XXXXXXXXXXX-XXXXXXX>

Vous allez voir l’apparaige commencer.
Malheureusement je rencontre encore un problème avec le message ci-dessous :

[1768945401.918] [26575:26599] [-] Unable to find PAA, err: src/credentials/attestation_verifier/DeviceAttestationVerifier.h:252: CHIP Error 0x0000004A: CA certificate not found, PAI's AKID: 40:97:46:A4:3D:7E:F1:51:B6:CD:D8:A0:9E:A4:76:FA:9B:DF:75:63
[1768945401.918] [26575:26599] [CTL] Error on commissioning step 'AttestationVerification': 'src/controller/CHIPDeviceController.cpp:1338: CHIP Error 0x00000020: Failed Device Attestation'
[1768945401.918] [26575:26599] [CTL] Failed verifying attestation information. Now checking DAC chain revoked status.

Je cherche actuellement comment résoudre ce problème :wink:
Je vous tiens au courant je l’espère rapidement :grinning_face:

J’arrive à aller à l’étape suivante avec la commande :

chip-tool pairing code-thread <Payload> <MT:XXXXXXXXXXX-XXXXXXX> --bypass-attestation-verifier true --only-allow-trusted-cd-keys false

Mais j’ai les erreurs suivante :

[1768947207.598] [30741:30765] [CTL] Error on commissioning step 'ThreadNetworkSetup': 'src/controller/CHIPDeviceController.cpp:2995: CHIP Error 0x000000AC: Internal error'
[1768947207.719] [30741:30741] [TOO] Run command failure: src/controller/CHIPDeviceController.cpp:2995: CHIP Error 0x000000AC: Internal error

Solution trouvée :

Il fallait rajouter hex: devant le payload :

chip-tool pairing code-thread hex:<Payload> <MT:XXXXXXXXXXX-XXXXXXX> --bypass-attestation-verifier true --only-allow-trusted-cd-keys false

J’ai bien maintenant mon appareil sur mon OTBR :grinning_face: :

Plus qu’a voir comment l’ajouter sur Gladys :smiling_face_with_three_hearts:

1 « J'aime »

Merci beaucoup pour toute ton investigation @prohand, si jamais on développe l’intégration OpenThread border router dans Gladys a un moment ça va beaucoup nous aider !

2 « J'aime »

Malheureusement je n’ai pas trouvé comment intégrer l’appareil lorsqu’il est intégré dans OTBR.

Je penses qu’il faut un autre composant (matter-server) si on veut simuler complétement un homepod mini ou un apple tv 4k par exemple.
Cela intègre toute la partie intégration que j’ai fais avant avec chip-tool et un serveur matter qui devrait surement pouvoir me permettre l’intégration avec Gladys Assistant.

J’ai choisi de prendre matterjs-server qui va succéder à python-matter-server (C’est encore en alpha/beta) mais c’est la solution qui sera utilisé à terme dans home assistant :

Il y a juste un bug avec le bluetooth que j’ai remonté et qui devrait être résolu dans la semaine :

Tout projet peut l’utiliser visiblement mais il faut passer une certification matter si on l’implémente à terme dans Gladys Assistant :

Je vous tiens au courant lorsque j’ai pu tester quand le bug sera résolu de leur côté, je l’espère dans la semaine :slight_smile:

Si vous pensez que je fais fausse route, n’hésitez pas à me le dire :slight_smile:

Edit :

J’ai pris la solution docker pour moi mais à voir si cela fonctionne comment on l’implémente dans Gladys car ce n’est pas officiellement supporté :

https://github.com/matter-js/matterjs-server/blob/main/docs/docker.md

Peut-être comme ceci directement dans le docker de Gladys :

1 « J'aime »

Salut @prohand !

Matter-js-server est basé sur Matter.js, c’est déjà la brique qu’on utilise dans Gladys :slight_smile:

Donc tout ce que fait matter-js-server, Gladys peut le faire ! :smiley:

Est-ce que tu peux me décrire comment tu comptes utiliser matter-js-server ?

Je compte utiliser le mode de commissionnement avec le bluetooth via cette option là dans l’interface de matterjs-server :

image

Je sais pas si tu as besoin de plus d’infos

Ok, c’est possible dans Matter.js effectivement mais pour l’instant je n’ai pas développé cette partie :slight_smile:

Ce serait pour connecter quel appareil précisément ?

Du coup tu vas quand même utiliser OTBR ? J’ai du mal à comprendre comment se passe la connexion avec un serveur Thread externe ?

Si jamais tu peux me décrire le processus complet !

En gros quand tu lances le processus de commissionnement depuis le bouton que j’ai montré (Commission new Thread device), il va demander le code inscrit sur le end device et il va demander le payload du réseau thread.

Le payload du réseau thread on le trouve avec cette commande sur l’OTBR :

sudo docker exec -it openthread-otbr-1 sh -c "sudo ot-ctl dataset active -x"

Ensuite il va effectuer une connexion sur le périphérique thread en bluetooth et faire la liaison avec l’OTBR

Je sais pas si c’est plus clair.

Mais je penses que le mieux c’est quand ils ont corrigés le bug je te montre le processus complet avec des captures d’écran :slight_smile:

Ok je suis preneur du processus complet oui !

J’ai acheté les fameux capteurs Ikea Matter alors j’ai essayé aujourd’hui de mettre en place Open Thread Border Router avec le réseau Thread de ma clé SLZB-MR01.

Pour l’instant Open Thread Border Router est actif et connecté à ma clé SLZB-MR01.

J’ai fait des tests avec python-matter-server et un peu avec matterjs
Franchement ce n’est pas simple…

Je pense que dans l’avenir il faudra un OTBR dans Gladys avec un outil pour faire le commisionning

Dès que j’avance un peu et que j’arrive à un résultat concluent je partagerai ce que j’ai fait.

1 « J'aime »

Merci pour ton retour et je confirme qu’effectivement ce n’est pas simple :smiling_face_with_tear:
Pour l’instant je n’ai pas trop avancé pour des raisons persos mais d’ici 1 semaine je pourrai sûrement donner des nouvelles de mon côté :wink:

En tout cas j’abandonne pour aujourd’hui car après plusieurs heures et toujours pas de devices ajouté… :sleepy_face: vive matter!
pour l’instant je ne suis absolument pas séduit par cette technologie!!!

Avec une Apple TV ou on HomePod c’est plutôt simple car tout est déjà intégré.

Ici la difficulté c’est de vouloir tout intégrer et gérer soit même sans passer par un équipement propriétaire.

Mais on va y arriver, ne perdons pas espoir :sweat_smile:

1 « J'aime »