Mesh-Netzwerk-Inbetriebnahme

Quelle auf GitHub ansehen

Auftraggeber und Mitbearbeiter

Für die Inbetriebnahme ist ein Gerät mit der Rolle „Provisioner“ und ein Gerät mit der Rolle „Joiner“ erforderlich. Der Bevollmächtigte ist entweder ein Thread-Gerät in einem bestehenden Thread-Netzwerk oder ein Gerät außerhalb des Thread-Netzwerks (z. B. ein Smartphone), das die Rolle des Bevollmächtigten übernimmt. Das Gerät, das dem Thread-Netzwerk beitreten möchte, wird als Joiner bezeichnet.

Ein Thread-Beauftragter wird verwendet, um ein Gerät im Netzwerk zu authentifizieren. Es überträgt keine Thread-Netzwerk-Anmeldedaten wie den Netzwerkschlüssel.

In diesem Leitfaden wird die grundlegende Inbetriebnahme des Mesh-Netzwerks ohne externen Commissioner oder Border Router behandelt. Weitere Informationen zur Verwendung eines externen Bevollmächtigten finden Sie unter Externe Thread-Bevollmächtigung.

Ein Beispiel für die Inbetriebnahme mit virtuellen Geräten finden Sie im Codelab zur OpenThread-Simulation.

Rollen aktivieren

Verwenden Sie die folgenden cmake-Optionen, um die Rollen „Beauftragter“ und „Teilnehmer“ zu aktivieren:

Option Beschreibung
-DOT_COMMISSIONER=ON Aktiviert die Rolle „Provisioner“
-DOT_JOINER=ON Aktiviert die Rolle „Teilnehmer“

So erstellen Sie beispielsweise die CC2538-Beispielplattform, die nur als Joiner verwendet werden soll:

./script/build -DOT_JOINER=ON

Flashen Sie jedes Binärprogramm auf das gewünschte Gerät. Ein Gerät dient als Kommissionierer, das andere als Teilnehmer.

Spezifische Anleitungen zum Erstellen und Flashen unterstützter Plattformen finden Sie im OpenThread-Repository der jeweiligen Plattform. Das Repository finden Sie in der GitHub-Organisation zu OpenThread.

Netzwerk erstellen

Erstellen Sie ein Netzwerk auf dem Gerät, das als Verantwortlicher fungiert:

dataset init new
Done
dataset
Active Timestamp: 1
Channel: 13
Channel Mask: 07fff800
Ext PAN ID: d63e8e3e495ebbc3
Mesh Local Prefix: fd3d:b50b:f96d:722d/64
Network Key: dfd34f0f05cad978ec4e32b0413038ff
Network Name: OpenThread-8f28
PAN ID: 0x8f28
PSKc: c23a76e98f1a6483639b1ac1271e2e27
Security Policy: 0, onrcb
Done
dataset commit active
Done
ifconfig up
Done
thread start
Done

Warten Sie einige Sekunden und prüfen Sie, ob das Gerät zum Thread-Leiter geworden ist:

state
leader
Done

Rolle „Beauftragte“ übernehmen

Weisen Sie auf demselben Gerät die Rolle „Beauftragter“ zu:

commissioner start
Done

Mit dem Platzhalter „*“ kannst du jedem Teilnehmer mit den angegebenen Anmeldedaten erlauben, dem Netzwerk beizutreten. Die Anmeldedaten für den Teilnehmer werden zusammen mit der erweiterten PAN-ID und dem Netzwerknamen verwendet, um den vorinstallierten Schlüssel für das Gerät (PSKd) zu generieren. Der PSKd wird dann zur Authentifizierung eines Geräts während der Thread-Inbetriebnahme verwendet. Die Anmeldedaten für den Joiner müssen für jedes Gerät eindeutig sein.

commissioner joiner add * J01NME
Done

Auf einen bestimmten Joiner beschränken

Wenn Sie die Inbetriebnahme auf ein bestimmtes Joiner-Gerät beschränken möchten, verwenden Sie den Parameter eui64. Dies ist die werkseitig zugewiesene IEEE EUI-64 des Geräts.

Rufen Sie auf dem Gerät, das als Joiner dient, die EUI-64 ab:

eui64
2f57d222545271f1
Done

Verwenden Sie diesen Wert im commissioner joiner-Befehl auf dem Commissioner-Gerät anstelle des Platzhalters *:

commissioner joiner add 2f57d222545271f1 J01NME
Done

Rolle „Teilnehmer“ starten

Setzen Sie das Gerät, das als Joiner verwendet wird, auf die Werkseinstellungen zurück. Aktivieren Sie dann die Joiner-Rolle mit denselben Joiner-Anmeldedaten, die für den Commissioner angegeben wurden:

factoryreset
ifconfig up
Done
joiner start J01NME
Done

Warten Sie einige Sekunden auf die Bestätigung:

Join success!

Das Joiner-Gerät hat sich erfolgreich beim Controller authentifiziert und Anmeldedaten für das Thread-Netzwerk erhalten.

Starten Sie jetzt Thread auf dem Joiner-Gerät:

thread start
Done

Authentifizierung validieren

Prüfen Sie den Status auf dem Gerät, das dem Netzwerk beigetreten ist. Innerhalb von zwei Minuten ändert sich der Status von „untergeordnet“ zu „Router“:

state
child
Done
...
state
router
Done