Einrichtung von openthread mit dem Schlüssel SLZB-MR01

Hallo,

Ich versuche gerade, Matter mit dem Schlüssel SLZB-MR01 zu aktivieren, aber es gibt einige Dinge, die ich nicht verstehe.

Zuerst einmal hier eine Zusammenfassung dessen, was ich gemacht habe:

Der Thread-Border-Router wird mit POE nicht empfohlen:

Ich möchte daher den Thread-Border-Router nicht mit dem Schlüssel SLZB-MR01 verwenden und nicht von einer Apple TV oder anderen Elementen abhängen, die ich nicht kontrollieren kann.
Dafür möchte ich OpenThread verwenden.
Der SLZB-MR01 wird nur für das Thread-Radio verwendet.

Für die Installation von OpenThread auf einer VM, die ihr Netzwerk in IPv4 und IPv6 konfiguriert hat:

Installation von OpenThread mit Docker, indem ich diesem Tutorial folge:

Für den Teil, in dem die IP-Übertragung aktiviert wird:
Ich empfehle, die Datei herunterzuladen und den Namen der Schnittstelle (Standardmäßig wlan0) durch die verwendete Schnittstelle zu ersetzen, in meinem Fall ens18, und den Befehl « bash setup-host » auszuführen.

Das OpenThread-Bild funktioniert nicht mit TCP, aber ein Fork wurde erstellt, um mit dem TCP-Protokoll kompatibel zu sein, da der SLZB-MR01 über das Netzwerk verbunden wird:

Hier ist die docker-compose.yml-Datei, die ich erstellt habe:

services:
  otbr:
    image: bnutzer/otbr-tcp
    network_mode: host
    restart: unless-stopped
    privileged: true
    cap_drop:
      - NET_ADMIN   # Sollte iptables/ipset-Aktualisierungen verhindern
      - NET_RAW     # Kein roher Netzwerkzugriff
    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

Anschließend konnte ich mich auf die Weboberfläche von OpenThread auf Port 8080 verbinden.
Und hier verstehe ich nicht mehr viel :sweat_smile:
Wenn ich auf „Join“ gehe, sehe ich mehrere verfügbare Thread-Netzwerke:

Ich weiß nicht, wofür diese drei Netzwerke stehen.
Ich konnte keine Verbindung mit dem Schlüssel SLZB-MR01 herstellen, da ich keine Hardware-Adresse auf der Weboberfläche des Schlüssels finde und nichts auf dem Etikett des Schlüssels entspricht.

Können Sie mir bitte helfen, dies zu klären? :slight_smile:

Hallo @prohand,

Tolle Recherche :slight_smile:

Ich bin kein Experte auf diesem Gebiet, ich habe OpenThread noch nie getestet, also bist du mir auf diesem Gebiet voraus.

Meiner Meinung nach sind die 3 Thread-Netzwerke, die du in der « Join »-Schnittstelle siehst, wahrscheinlich bestehende Thread-Netzwerke, die in deiner Umgebung erkannt wurden (Nachbarn, andere Thread-Geräte usw.).

Du musst kein bestehendes Netzwerk « beitreten », du möchtest dein eigenes Thread-Netzwerk erstellen. Gehe stattdessen zum Reiter « Form », um ein neues Thread-Netzwerk zu erstellen.

Siehst du etwas in den Logs?

Ich sehe nicht viel in den Logs :frowning:
Eigentlich möchte ich nicht, dass der Schlüssel SLZB-MR01 bereits ein Netzwerk hat, aber vielleicht ist das nicht wichtig ^^
Ich werde mich Anfang nächster Woche wieder damit beschäftigen
In der Zwischenzeit, wenn wir Leute haben, die sich ein bisschen mit dem Thema auskennen, wäre ich für etwas Hilfe dankbar :slight_smile:
Danke im Voraus

Ich habe versucht, openthread mit dem Schlüssel zum Laufen zu bringen, bisher ohne Erfolg.

Ich habe das Gefühl, dass openthread nicht richtig mit dem Schlüssel kommuniziert oder ich verstehe etwas nicht :sweat_smile:

Ich habe ein Issue auf docker-otbr-tcp erstellt: RCP:TxPower 0 dBm · Issue #9 · bnutzer/docker-otbr-tcp · GitHub

Für den Docker-Teil von OpenThread musste ich die folgenden Befehle im Container ausführen, um Probleme mit ipset zu beheben:

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

Nach einem Austausch mit ChatGPT :blush: stellte sich heraus, dass man chip-tool verwenden sollte, um das Pairing zu erleichtern:

Auf der Host-Maschine habe ich ein snap install chip-tool durchgeführt und anschließend den folgenden Befehl ausgeführt:

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

Ich werde das Pairing heute Abend testen, da ich momentan remote arbeite.

Hmm, das scheint komplizierter zu sein, als ich dachte :sweat_smile:

Ich habe es nicht geschafft, mein Thread-Gerät mit OpenThread zu verbinden.
Ich habe es mit chip-tool versucht, aber ich habe das Gefühl, mir fehlen Informationen/Verständnis.
Ich habe es mit matter-server von HAOS versucht, aber auch hier konnte ich die Paarung nicht durchführen.

Ich habe es geschafft, etwas zu machen, indem ich HAOS und das gesamte Matter- und OpenThread-Paket direkt in HAOS installiert und den QR-Code über die Home-Assistant-App gescannt habe.

Ich kann die Funktionsweise der Home-Assistant-App weder mit chip-tool noch direkt mit meinem Telefon reproduzieren.

Falls jemand vorbeikommt und helfen kann, wäre das toll :slight_smile:

Bis dahin werde ich versuchen, es direkt über das Apple Home Thread-Netzwerk zu integrieren und es in Gladys hochzuladen, wobei mein Apple-Netzwerk nicht im gleichen VLAN wie Gladys ist :slight_smile:

Edit: Ich glaube, ich habe etwas verstanden :sweat_smile:
Ich teste es heute Abend und sage euch Bescheid :blush:

Tatsächlich muss die Anmeldung im Thread-Netzwerk mit einem Gerät erfolgen, das Bluetooth mit einer Anwendung hat, die es ermöglicht, dem Thread-Netzwerk beizutreten und den Dataset sowie den Payload einzugeben.

Auf iOS gibt es keine Anwendung, die dies ermöglicht, außer mit der Integration von Home Assistant, aber in unserem Fall ist es nicht möglich, diese zu verwenden, da sie speziell für Home Assistant gedacht ist.

Man benötigt also einen Dongle oder eine Bluetooth-Karte, die an die Maschine angeschlossen wird, auf der chip-tools ausgeführt wird.

In meinem Fall handelt es sich um eine virtuelle Maschine unter Proxmox, daher habe ich die Bluetooth-Karte direkt auf die VM weitergeleitet.

Daher habe ich Folgendes gemacht:

snap install chip-tools
apt install bluez

Anschließend mit dem folgenden Befehl den Dataset auf Ihrem Docker-OpenThread abrufen:

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

Anschließend den Payload abrufen, indem Sie mit einer QR-Code-App das Etikett Ihres Endgeräts scannen.
Bei mir war es in der Form: MT:XXXXXXXXXXX-XXXXXXX

Auf dem Computer, auf dem Sie chip-tools installiert haben, führen Sie den folgenden Befehl aus:

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

Was ergibt:

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

Sie werden sehen, dass die Anmeldung beginnt.
Leider habe ich immer noch ein Problem mit der folgenden Meldung:

[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.

Ich versuche derzeit, dieses Problem zu lösen :wink:
Ich halte Sie auf dem Laufenden, hoffentlich bald :grinning_face:

Ich kann mit dem folgenden Befehl zum nächsten Schritt übergehen:

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

Aber ich habe die folgenden Fehler:

[1768947207.598] [30741:30765] [CTL] Fehler beim Kommissionsschritt 'ThreadNetworkSetup': 'src/controller/CHIPDeviceController.cpp:2995: CHIP-Fehler 0x000000AC: Interner Fehler'
[1768947207.719] [30741:30741] [TOO] Ausführungsfehler des Befehls: src/controller/CHIPDeviceController.cpp:2995: CHIP-Fehler 0x000000AC: Interner Fehler

Gefundene Lösung:

Man musste hex: vor den Payload setzen:

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

Jetzt habe ich mein Gerät auf meinem OTBR :grinning_face: :

Jetzt muss ich nur noch sehen, wie ich es zu Gladys hinzufügen kann :smiling_face_with_three_hearts:

Vielen Dank für deine ganze Recherche @prohand, falls wir irgendwann die OpenThread-Border-Router-Integration in Gladys entwickeln, wird uns das sehr helfen!

Leider habe ich nicht herausgefunden, wie ich das Gerät integrieren kann, wenn es in OTBR eingebunden ist.

Ich denke, es wird ein weiteres Komponenten (matter-server) benötigt, wenn man beispielsweise einen HomePod Mini oder einen Apple TV 4K vollständig simulieren möchte.
Dies integriert den gesamten Integrationsanteil, den ich zuvor mit chip-tool und einem Matter-Server durchgeführt habe, der mir wahrscheinlich die Integration mit Gladys Assistant ermöglichen sollte.

Ich habe mich entschieden, matterjs-server zu verwenden, der python-matter-server ersetzen wird (es ist noch in Alpha/Beta), aber es ist die Lösung, die letztendlich in Home Assistant verwendet wird:

Es gibt nur einen Bug mit dem Bluetooth, den ich gemeldet habe und der hoffentlich diese Woche behoben wird:

Jedes Projekt kann es offensichtlich verwenden, aber es ist eine Matter-Zertifizierung erforderlich, wenn man es letztendlich in Gladys Assistant implementiert:

Ich halte Sie auf dem Laufenden, wenn ich es testen konnte, sobald der Bug auf ihrer Seite behoben ist, ich hoffe diese Woche :slight_smile:

Wenn Sie denken, dass ich auf dem falschen Weg bin, zögern Sie nicht, es mir zu sagen :slight_smile:

Bearbeitung:

Ich habe die Docker-Lösung für mich gewählt, aber man muss sehen, ob es funktioniert, wie man es in Gladys implementiert, da es nicht offiziell unterstützt wird:

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

Vielleicht direkt in das Docker von Gladys:

Hallo @prohand!

Matter-js-server basiert auf Matter.js, das ist bereits die Komponente, die wir in Gladys verwenden :slight_smile:

Daher kann Gladys alles tun, was matter-js-server tut! :smiley:

Kannst du mir beschreiben, wie du matter-js-server verwenden möchtest?

Ich beabsichtige, den Provisionierungsmodus über Bluetooth mit dieser Option in der matterjs-server-Schnittstelle zu verwenden:

image

Ich weiß nicht, ob du noch mehr Informationen brauchst.

Okay, das ist in Matter.js tatsächlich möglich, aber bisher habe ich diesen Teil noch nicht entwickelt :slight_smile:

Wofür genau möchtest du es verbinden?

Wirst du trotzdem OTBR verwenden? Ich verstehe nicht ganz, wie die Verbindung zu einem externen Thread-Server funktioniert?

Falls du mir den gesamten Prozess beschreiben kannst!

Also, wenn du den Prozess des Commissionings vom Button aus startest, den ich gezeigt habe (Commission new Thread device), wird er den auf dem Endgerät eingeschriebenen Code anfordern und den Payload des Thread-Netzwerks anfordern.

Den Payload des Thread-Netzwerks findest du mit diesem Befehl auf dem OTBR:

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

Danach wird er eine Verbindung zum Thread-Gerät über Bluetooth herstellen und die Verbindung zum OTBR herstellen

Ich weiß nicht, ob das klarer ist.

Aber ich denke, das Beste ist, wenn sie den Bug behoben haben, zeige ich dir den gesamten Prozess mit Screenshots :slight_smile:

Okay, ich bin dabei, den gesamten Prozess zu sehen!

Ich habe die berühmten Ikea Matter-Sensoren gekauft und heute versucht, einen Open Thread Border Router mit dem Thread-Netzwerk meines SLZB-MR01-Schlüssels einzurichten.

Bisher ist Open Thread Border Router aktiv und mit meinem SLZB-MR01-Schlüssel verbunden.

Ich habe Tests mit python-matter-server und etwas mit matterjs durchgeführt. Ehrlich gesagt, das ist nicht einfach…

Ich denke, in Zukunft wird man einen OTBR in Gladys benötigen, mit einem Tool zur Durchführung des Commissioning
Sobald ich ein wenig vorankomme und zu einem schlüssigen Ergebnis gelange, werde ich teilen, was ich gemacht habe.

Danke für dein Feedback und ich bestätige, dass es tatsächlich nicht einfach ist :smiling_face_with_tear:
Bisher bin ich aus persönlichen Gründen nicht wirklich weitergekommen, aber in etwa einer Woche kann ich wahrscheinlich Neuigkeiten von meiner Seite geben :wink:

Jedenfalls gebe ich heute auf, denn nach mehreren Stunden sind immer noch keine Geräte hinzugefügt worden… :sleepy_face: Es lebe Matter!
Im Moment bin ich absolut nicht von dieser Technologie begeistert!!!

Mit einer Apple TV oder einem HomePod ist das eher einfach, da alles bereits integriert ist.

Hier liegt die Schwierigkeit darin, alles selbst zu integrieren und zu verwalten, ohne auf proprietäre Geräte zurückzugreifen.

Aber wir schaffen das, verlieren wir nicht die Hoffnung :sweat_smile: