Hands-on Matter - Der Matter-Lichtschalter (Teil 3)

In Teil 1 und Teil 2 haben wir einen Blick auf die grundlegenden Konzepte geworfen und sind durch die all-cluster-app für ein Beispiel-Matter-Gerät gegangen und haben mit unserer CLI ein Licht an- und ausgeschaltet. Jetzt werden wir einen Matter-Lichtschalter implementieren, der dies für uns tun wird, um unser Setup zu vervollständigen.

Um den Lichtschalter einzurichten, ziehen Sie zunächst die neuesten Änderungen aus dem Matter-Repository und richten Sie das light switch example wie folgt ein:

# Only perform this if you do not have the esp idf tool setup already.
mkdir ${HOME}/tools
cd ${HOME}/tools
git clone https://github.com/espressif/esp-idf.git
cd esp-idf
git checkout v4.4
git submodule update --init
./install.sh
. ./export.sh

# Move to your matter repo
cd ~/connectedhomeip
git pull

# This will remove your environmental settings just in case you have errors during the activate.
rm -r .environment 

# Bootstrap and activate Matter repo
source ./scripts/bootstrap.sh
source ./scripts/activate.sh

# Move to example
cd examples/light-switch-app/esp32

# Set the target
idf.py set-target esp32

# Build the app
idf.py build

# Flash it to your device
idf.py -p /dev/ttyUSB0 flash monitor

Jetzt haben wir den Lichtschalter mit der Firmware geflasht, um fortzufahren, müssen wir das Gerät als einen existierenden Knoten zu unserer Fabric hinzufügen, wie wir es in Teil 2 mit dem chip-tool gemacht haben.

./chip-tool pairing ble-wifi 12344320 "IoT Testing" NotTheRealPassword 20202021 3840

Der Lichtschalter hat die Node-ID 12344320 (und die all-cluster-app hatte die Node-ID 12344321).

Nun müssen wir die all-cluster-app [12344321] mit einer Zugriffskontrollliste (ACL) versehen, die dem Lichtschalter _[12344320] den Zugriff auf den On-Off-Cluster (Endpunkt 1, Cluster 6) erlaubt. Schauen wir uns den folgenden Befehl genauer an:

./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": [12344320], "targets": null }]' 12344321 0

Die Kommentare erläutern die verwendete ACL etwas näher:

[{
    "fabricIndex": 1, // Symbolisiert die Fabric, zu der die ACL gehört (wichtig für Multi-Fabric-Nutzung)
    "privilege": 5, // 5 steht für das höchste Privileg (Administer)
    "authMode": 2, // CASE-Authentifizierung (1 - PASE-Authentifizierung)
    "subjects": [112233], // Bezieht sich auf die chip-tool Node-Id
    "targets": null // null bedeutet wildcard, daher sind alle Endpunkte targets
}, {
    "fabricIndex": 1,
    "privilege": 3, // 3 - "operate"
    "authMode": 2, // CASE-Authentifizierung
    "subjects": [12344320], // Node ID des Lichtschaltersh
    "targets": null // wildcard, "operate" für alle Endpunkte
}]

Die Node Id 12344321 (all-cluster.app) und der Endpunkt 0 sind reserviert für Matter-spezifische Cluster, z. B. Binding, Pairing, etc.

Die erste ACL wurde bei der Inbetriebnahme erstellt und ermöglicht unserem CLI-Tool (chip-tool) den Zugriff und die Verwaltung der beiden Geräte. Die zweite ACL gibt dem Lichtschalter den Zugriff, um den On-Off-Cluster (oder in diesem Fall alle Cluster) zu bedienen. (Dies sind zu viele Rechte und sollten im produktiven Einsatz eingeschränkt werden, aber für ein Beispiel ist es ausreichend.)

./chip-tool binding write binding '[{"fabricIndex": 1, "node":12344321, "endpoint":1, "cluster":6}]' 12344320 1

Das binding teilt dem Lichtschalter mit, wo er operate nutzen kann:

[{
    "fabricIndex": 1, // Symbolisiert die Struktur, zu der die ACL gehört
    "node": 12344321, // Noden Id der Leuchte (all-cluster-app)
    "endpoint": 1, // Endpunkt des On-Off-Clusters
    "cluster": 6 //  On-Off-Cluster
}]

Jetzt können Sie den Boot-Knopf auf dem ESP-Licht (in der Nähe des USB-Ports) drücken und Sie werden sehen, dass sich das Licht einschaltet.

Damit ist unsere Serie abgeschlossen, wir haben jetzt ein durchgängig funktionierendes Beispiel. Unsere beiden Matter-Geräte kommunizieren miteinander und wir haben alle grundlegenden Konzepte kennengelernt, um mit der Arbeit an unseren eigenen Ideen zu beginnen.

In Teil 4 werden wir einen Schritt weiter gehen und uns mit Matter Bridges beschäftigen, dies wird besonders für alle interessant sein, die bereits ein Smart Home System besitzen oder unterhalten.

Tim Conrad — Senior Security Consultant

15. Februar 2022

Haben Sie Fragen oder wollen Sie ein Matter Projekt realisieren?

Patrick Sernetz — Head of Solution Architecture

Hi, ich bin Patrick. Haben Sie Fragen zu Matter? Kontaktieren Sie mich gerne per E-Mail.