1. Einführung
OpenThread, das von Google veröffentlicht wurde, ist eine Open-Source-Implementierung des Thread-Netzwerkprotokolls. Google Nest hat OpenThread veröffentlicht, um Entwicklern die in Nest-Produkten verwendete Technologie allgemein zugänglich zu machen und so die Entwicklung von Produkten für das vernetzte Zuhause zu beschleunigen.
Die Thread-Spezifikation definiert ein IPv6-basiertes, zuverlässiges, sicheres und energiesparendes Kommunikationsprotokoll für drahtlose Geräte zwischen Geräten für Heimanwendungen. OpenThread implementiert alle Thread-Netzwerkschichten, einschließlich IPv6, 6LoWPAN, IEEE 802.15.4 mit MAC-Sicherheit, Mesh-Link-Einrichtung und Mesh-Routing.
In diesem Codelab erfahren Sie, wie Sie ein Thread-Netzwerk auf simulierten Geräten simulieren.
Lerninhalte
- OpenThread-Build-Toolchain einrichten
- Thread-Netzwerk simulieren
- Thread-Knoten authentifizieren
- So verwalten Sie ein Thread-Netzwerk mit OpenThread Daemon
Voraussetzungen
- git
- Grundkenntnisse in Linux, Netzwerkrouting
2. Build-System einrichten
Git
Für dieses Codelab ist Git erforderlich. Lade die App herunter und installiere sie, bevor du fortfährst.
Folgen Sie nach der Installation der Anleitung für Ihr Betriebssystem, um OpenThread herunterzuladen und zu erstellen.
XCode für Mac OS X
XCode ist erforderlich, um OpenThread unter Mac OS X zu installieren und zu erstellen.
Installieren Sie nach der Installation von XCode die XCode-Befehlszeilentools:
$ xcode-select --install
Build auf Linux / Mac OS X
Diese Installationsanweisungen wurden auf Ubuntu Server 14.04 LTS und Mac OS X Sierra 10.12.6 getestet.
Installieren Sie OpenThread. Mit den bootstrap
-Befehlen wird dafür gesorgt, dass die Toolchain installiert und die Umgebung richtig konfiguriert ist:
$ mkdir -p ~/src $ cd ~/src $ git clone --recursive https://github.com/openthread/openthread.git $ cd openthread $ ./script/bootstrap
Unter Windows
Wenn Sie Windows bevorzugen, empfehlen wir Ihnen, die Docker-Version dieses Codelabs auszuprobieren.
3. OpenThread-Anwendungen erstellen
Sobald die Installation abgeschlossen ist, erstellen Sie die OpenThread-Beispielanwendung. In diesem Codelab verwenden wir das Simulationsbeispiel.
$ cd ~/src/openthread $ ./script/cmake-build simulation
Erstellen Sie jetzt den OpenThread-Daemon:
$ ./script/cmake-build posix -DOT_DAEMON=ON
4. Thread-Netzwerk simulieren
Die Beispielanwendung, die Sie für dieses Codelab verwenden, zeigt eine minimale OpenThread-Anwendung, die die OpenThread-Konfigurations- und Verwaltungsoberflächen über eine einfache Befehlszeilenschnittstelle (CLI) verfügbar macht.
In dieser Übung werden die minimalen Schritte beschrieben, die erforderlich sind, um ein simuliertes Thread-Gerät von einem anderen simulierten Thread-Gerät aus mit Ping zu kontaktieren.
Die folgende Abbildung zeigt eine grundlegende Thread-Netzwerktopologie. Für diese Übung simulieren wir die beiden Knoten innerhalb des grünen Kreises: einen Thread Leader und einen Thread Router mit einer einzigen Verbindung zwischen ihnen.
Knoten pingen
1. Node 1 starten
Rufen Sie das Verzeichnis openthread
auf und rufen Sie mit dem ot-cli-ftd
-Binärprogramm die Befehlszeile für ein simuliertes Thread-Gerät auf.
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
Hinweis:Wenn die Eingabeaufforderung >
nach dem Ausführen dieses Befehls nicht angezeigt wird, drücken Sie enter
.
Diese Binärdatei implementiert ein auf POSIX simuliertes OpenThread-Gerät. Der IEEE 802.15.4-Funktreiber wird über UDP implementiert (IEEE 802.15.4-Frames werden innerhalb von UDP-Nutzlasten übergeben).
Das Argument von 1
ist ein Dateideskriptor, der die Bits mit der geringsten Signifikanz der auf Werkseinstellung zugewiesenen Bits darstellt. IEEE EUI-64 für das simulierte Gerät Dieser Wert wird auch verwendet, wenn eine Bindung an einen UDP-Port für die IEEE 802.15.4-Radioemulation (Port = 9000 + Dateideskriptor) erfolgt. Für jede Instanz eines simulierten Thread-Geräts in diesem Codelab wird ein anderer Dateideskriptor verwendet.
Hinweis:Verwenden Sie beim Erstellen des Prozesses für ein simuliertes Gerät nur Dateideskriptoren ab 1
, wie in diesem Codelab beschrieben. Der Dateideskriptor 0
ist für andere Zwecke reserviert.
Erstellen Sie ein neues operatives Dataset und führen Sie einen Commit als aktives Dataset aus. Das operative Dataset ist die Konfiguration für das Thread-Netzwerk, das Sie erstellen.
> dataset init new Done > dataset Active Timestamp: 1 Channel: 20 Channel Mask: 07fff800 Ext PAN ID: d6263b6d857647da Mesh Local Prefix: fd61:2344:9a52:ede0/64 Network Key: e4344ca17d1dca2a33f064992f31f786 Network Name: OpenThread-c169 PAN ID: 0xc169 PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4 Security Policy: 0, onrcb Done
Übernehmen Sie für dieses Dataset ein Commit als aktives Dataset:
> dataset commit active Done
Rufen Sie die IPv6-Schnittstelle auf:
> ifconfig up Done
Thread-Protokollvorgang starten:
> thread start Done
Warte einige Sekunden und überprüfe, ob das Gerät zum Thread-Leader geworden ist. Der Leader ist das Gerät, das für die Verwaltung der Router-ID-Zuweisung verantwortlich ist.
> state leader Done
Sehen Sie sich die IPv6-Adressen an, die der Thread-Schnittstelle von Node 1 zugewiesen sind (die Ausgabe wird anders aussehen):
> ipaddr fd61:2344:9a52:ede0:0:ff:fe00:fc00 fd61:2344:9a52:ede0:0:ff:fe00:5000 fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 fe80:0:0:0:94da:92ea:1353:4f3b Done
Beachten Sie die spezifischen IPv6-Adresstypen:
- Beginnt mit
fd
= Mesh-local - Beginnt mit
fe80
= link-local
Lokale Mesh-Adresstypen sind weiter klassifiziert:
- Enthält
ff:fe00
= Router Locator (RLOC) - Enthält nicht
ff:fe00
= Endpunkt-ID (EID)
Ermitteln Sie die EID in der Konsolenausgabe und notieren Sie sie sich zur späteren Verwendung. In der obigen Beispielausgabe lautet die EID:
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
2. Knoten 2 starten
Öffnen Sie ein neues Terminal, wechseln Sie zum Verzeichnis openthread
und starten Sie den Befehlszeilenprozess. Das ist dein zweites simuliertes Thread-Gerät:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
Hinweis:Wenn die Eingabeaufforderung >
nach dem Ausführen dieses Befehls nicht angezeigt wird, drücken Sie enter
.
Konfigurieren Sie den Thread-Netzwerkschlüssel und die PAN-ID mit denselben Werten wie im operativen Dataset von Knoten 1:
> dataset networkkey e4344ca17d1dca2a33f064992f31f786 Done > dataset panid 0xc169 Done
Übernehmen Sie für dieses Dataset ein Commit als aktives Dataset:
> dataset commit active Done
Rufen Sie die IPv6-Schnittstelle auf:
> ifconfig up Done
Thread-Protokollvorgang starten:
> thread start Done
Das Gerät initialisiert sich selbst als untergeordnetes Element. Ein untergeordnetes Thread-Element entspricht einem Endgerät. Dabei handelt es sich um ein Thread-Gerät, das Unicast-Traffic nur mit einem übergeordneten Gerät überträgt und empfängt.
> state child Done
Innerhalb von zwei Minuten sollte sich der Status von child
zu router
ändern. Ein Thread-Router kann Traffic zwischen Thread-Geräten weiterleiten. Sie wird auch als übergeordnetes Element bezeichnet.
> state router Done
Netzwerk prüfen
Eine einfache Möglichkeit, das Mesh-Netzwerk zu überprüfen, besteht darin, einen Blick auf die Routertabelle zu werfen.
1. Verbindung überprüfen
Rufen Sie auf Knoten 2 das RLOC16 ab. Der RLOC16 sind die letzten 16 Bit der RLOC-IPv6-Adresse des Geräts.
> rloc16 5800 Done
Prüfen Sie auf Knoten 1 die Routertabelle auf RLOC16 von Knoten 2. Achten Sie darauf, dass Knoten 2 zuerst in den Routerstatus gewechselt ist.
> router table | ID | RLOC16 | Next Hop | Path Cost | LQI In | LQI Out | Age | Extended MAC | +----+--------+----------+----------+-------+---------+-----+------------------+ | 20 | 0x5000 | 63 | 0 | 0 | 0 | 0 | 96da92ea13534f3b | | 22 | 0x5800 | 63 | 0 | 3 | 3 | 23 | 5a4eb647eb6bc66c |
Der RLOC von Knoten 1 von 0xa800
ist in der Tabelle zu finden. Dies bestätigt, dass er mit dem Mesh-Netzwerk verbunden ist.
2. Knoten 1 von Knoten 2 aus pingen
Prüfen Sie die Verbindung zwischen den beiden simulierten Thread-Geräten. ping
die EID, die Knoten 1 in Node 2 zugewiesen ist:
> ping fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 > 16 bytes from fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6: icmp_seq=1 hlim=64 time=12ms
Drücken Sie enter
, um zur Eingabeaufforderung >
in der Befehlszeile zurückzukehren.
Netzwerk testen
Nachdem Sie nun erfolgreich einen Ping zwischen zwei simulierten Thread-Geräten senden können, testen Sie das Mesh-Netzwerk, indem Sie einen Knoten offline schalten.
Kehren Sie zu Knoten 1 zurück und beenden Sie Thread:
> thread stop Done
Wechseln Sie zu Knoten 2 und prüfen Sie den Status. Innerhalb von zwei Minuten erkennt Knoten 2, dass der Leader (Knoten 1) offline ist, und Sie sollten sehen, dass Knoten 2 zur leader
des Netzwerks wechselt:
> state router Done ... > state leader Done
Sobald dies bestätigt ist, beenden Sie Thread und setzen Sie Node 2 auf die Werkseinstellungen zurück, bevor Sie den Vorgang beenden. Es wird auf die Werkseinstellungen zurückgesetzt, um sicherzustellen, dass die Thread-Netzwerkanmeldedaten, die wir in dieser Übung verwendet haben, nicht für die nächste Übung übernommen werden.
> thread stop Done > factoryreset > > exit
Auch auf die Werkseinstellungen zurücksetzen und Node 1 beenden:
> factoryreset > > exit
Informationen zu allen verfügbaren CLI-Befehlen finden Sie in der OpenThread-CLI-Referenz.
5. Knoten bei der Inbetriebnahme authentifizieren
In der vorherigen Übung haben Sie ein Thread-Netzwerk mit zwei simulierten Geräten und geprüfter Konnektivität eingerichtet. Dadurch wird jedoch nur nicht authentifizierter IPv6-Link-Local-Traffic zwischen Geräten zugelassen. Um globalen IPv6-Traffic zwischen den Knoten (und dem Internet über einen Thread-Border-Router) weiterzuleiten, müssen die Knoten authentifiziert werden.
Für die Authentifizierung muss ein Gerät als Commissioner fungieren. Der Commissioner ist der aktuell ausgewählte Authentifizierungsserver für neue Thread-Geräte und der Autorisierer für die Bereitstellung der Netzwerkanmeldedaten, die für die Geräte beim Netzwerkbeitritt erforderlich sind.
In dieser Übung verwenden wir dieselbe Topologie mit zwei Knoten wie zuvor. Bei der Authentifizierung fungiert der Thread-Leader als Commissioner, der Thread-Router als Joiner.
1. Netzwerk erstellen
Wenn Sie mit der vorherigen Übung fortfahren, sollten bereits zwei Terminalfenster geöffnet sein. Falls nicht, achten Sie darauf, dass zwei geöffnet und einsatzbereit sind. Eine dient als Node 1, die andere als Node 2.
Rufen Sie in Knoten 1 den CLI-Prozess auf:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
Hinweis:Wenn die Eingabeaufforderung >
nach dem Ausführen dieses Befehls nicht angezeigt wird, drücken Sie enter
.
Erstellen Sie ein neues operatives Dataset, übergeben Sie den Commit als aktives Dataset und starten Sie Thread:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 12 Channel Mask: 07fff800 Ext PAN ID: e68d05794bf13052 Mesh Local Prefix: fd7d:ddf7:877b:8756/64 Network Key: a77fe1d03b0e8028a4e13213de38080e Network Name: OpenThread-8f37 PAN ID: 0x8f37 PSKc: f9debbc1532487984b17f92cd55b21fc Security Policy: 0, onrcb Done
Übernehmen Sie für dieses Dataset ein Commit als aktives Dataset:
> dataset commit active Done
Rufen Sie die IPv6-Schnittstelle auf:
> ifconfig up Done
Thread-Protokollvorgang starten:
> thread start Done
Warten Sie einige Sekunden und prüfen Sie, ob das Gerät ein Thread-Leader wurde:
> state leader Done
2. Rolle „Beauftragte“ übernehmen
Starten Sie die Provisioner-Rolle, während Sie sich noch auf Knoten 1 befinden:
> commissioner start Done
Zulassen, dass alle Joiner (mithilfe des Platzhalters *
) mit den Anmeldedaten J01NME
im Netzwerk eine Inbetriebnahme vornehmen. Ein Joiner ist ein Gerät, das von einem menschlichen Administrator einem in Auftrag gegebenen Thread-Netzwerk hinzugefügt wird.
> commissioner joiner add * J01NME Done
3. Einstiegsrolle starten
Erzeugen Sie in einem zweiten Terminalfenster einen neuen CLI-Prozess. Das ist Node 2.
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
Aktivieren Sie auf Knoten 2 die Joiner-Rolle mithilfe der J01NME
-Joiner-Anmeldedaten.
> ifconfig up Done > joiner start J01NME Done
... warten Sie einige Sekunden auf die Bestätigung ...
Join success
Als Joiner hat sich das Gerät (Knoten 2) erfolgreich beim Commissioner (Knoten 1) authentifiziert und die Anmeldedaten für das Thread-Netzwerk erhalten.
Nachdem Knoten 2 authentifiziert wurde, starten Sie Thread:
> thread start Done
4. Netzwerkauthentifizierung validieren
Prüfen Sie, ob state
auf Knoten 2 jetzt dem Netzwerk beigetreten ist. Innerhalb von zwei Minuten wird Knoten 2 von child
auf router
umgestellt:
> state child Done ... > state router Done
5. Konfiguration zurücksetzen
Setzen Sie die Konfiguration zurück, um sich auf die nächste Übung vorzubereiten. Beenden Sie Thread auf jedem Knoten, setzen Sie ihn auf die Werkseinstellungen zurück und beenden Sie das simulierte Thread-Gerät:
> thread stop Done > factoryreset > > exit
Möglicherweise müssen Sie enter
mehrmals drücken, um die >
-Eingabeaufforderung nach einem factoryreset
-Befehl wieder einzublenden.
6. Netzwerk mit OpenThread Daemon verwalten
In dieser Übung simulieren wir eine Befehlszeileninstanz (ein einzelnes eingebettetes SoC-Thread-Gerät) und eine RCP-Instanz (Radio Co-Processor).
ot-daemon
ist ein Modus der OpenThread-Posix-Anwendung, der einen UNIX-Socket als Ein- und Ausgabe verwendet, damit OpenThread Core als Dienst ausgeführt werden kann. Ein Client kann mit diesem Dienst kommunizieren, indem er eine Verbindung zum Socket herstellt und die OpenThread-Befehlszeile als Protokoll verwendet.
ot-ctl
ist eine von ot-daemon
bereitgestellte Befehlszeile zum Verwalten und Konfigurieren der RCP. Damit verbinden wir das RCP mit dem Netzwerk, das vom Thread-Gerät erstellt wurde.
ot-DaemonSet verwenden
In dieser Übung werden drei Terminal-Fenster verwendet, die Folgendem entsprechen:
- CLI-Instanz des simulierten Thread-Geräts (Knoten 1)
ot-daemon
-Prozessot-ctl
Befehlszeileninstanz
Wenn Sie mit der vorherigen Übung fortfahren, sollten Sie bereits zwei Terminalfenster geöffnet haben. Öffnen Sie ein drittes, um sicherzustellen, dass Ihnen drei Terminalfenster für diese Übung zur Verfügung stehen.
1. Node 1 starten
Rufen Sie im ersten Terminalfenster den CLI-Prozess für das simulierte Thread-Gerät auf:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
Hinweis:Wenn die Eingabeaufforderung >
nach dem Ausführen dieses Befehls nicht angezeigt wird, drücken Sie enter
.
Erstellen Sie ein neues operatives Dataset, übergeben Sie den Commit als aktives Dataset und starten Sie Thread:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 13 Channel Mask: 07fff800 Ext PAN ID: 97d584bcd493b824 Mesh Local Prefix: fd55:cf34:dea5:7994/64 Network Key: ba6e886c7af50598df1115fa07658a83 Network Name: OpenThread-34e4 PAN ID: 0x34e4 PSKc: 38d6fd32c866927a4dfcc06d79ae1192 Security Policy: 0, onrcb Done
Übernehmen Sie für dieses Dataset ein Commit als aktives Dataset:
> dataset commit active Done
Rufen Sie die IPv6-Schnittstelle auf:
> ifconfig up Done
Thread-Protokollvorgang starten:
> thread start Done
Sehen Sie sich die IPv6-Adressen an, die der Thread-Schnittstelle von Knoten 1 zugewiesen sind:
> ipaddr fd55:cf34:dea5:7994:0:ff:fe00:fc00 fd55:cf34:dea5:7994:0:ff:fe00:d000 fd55:cf34:dea5:7994:460:872c:e807:c4ab fe80:0:0:0:9cd8:aab6:482f:4cdc Done >
Wie im Schritt Thread-Netzwerk simulieren erläutert, sind eine Adresse link-local (fe80
) und drei Mesh-Local-Adressen (fd
). Die EID ist die lokale Adresse des Mesh-Netzwerks, die nicht ff:fe00
in der Adresse enthält. In dieser Beispielausgabe lautet die EID fd55:cf34:dea5:7994:460:872c:e807:c4ab
.
Ermitteln Sie die spezifische EID aus der ipaddr
-Ausgabe, die für die Kommunikation mit dem Knoten verwendet wird.
2. ot-DaemonSet starten
Gehen Sie im zweiten Terminalfenster zum Verzeichnis openthread
und starten Sie ot-daemon
für einen RCP-Knoten, den wir Node 2 nennen. Verwenden Sie das ausführliche Flag -v
, damit Sie die Logausgabe sehen und prüfen können, ob sie ausgeführt wird. Verwenden Sie dabei sudo
:
$ cd ~/src/openthread $ sudo ./build/posix/src/posix/ot-daemon -v \ 'spinel+hdlc+forkpty://build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=2'
Bei Erfolg generiert ot-daemon
im ausführlichen Modus eine Ausgabe ähnlich der folgenden:
ot-daemon[12463]: Running OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; POSIX; Aug 30 2022 10:55:05 ot-daemon[12463]: Thread version: 4 ot-daemon[12463]: Thread interface: wpan0 ot-daemon[12463]: RCP version: OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; SIMULATION; Aug 30 2022 10:54:10
Lass dieses Terminal geöffnet und im Hintergrund laufen. Sie geben keine weiteren Befehle ein.
3. Mit „ot-ctl“ dem Netzwerk beitreten
Knoten 2 (das RCP für ot-daemon
) wurde noch in keinem Thread-Netzwerk in Betrieb genommen. Hier kommt ot-ctl
ins Spiel. ot-ctl
verwendet dieselbe Befehlszeile wie die OpenThread-CLI-Anwendung. Daher können Sie ot-daemon
-Knoten auf dieselbe Weise steuern wie die anderen simulierten Thread-Geräte.
Starten Sie ot-ctl
in einem dritten Terminalfenster:
$ sudo ./build/posix/src/posix/ot-ctl >
Hinweis:Wenn die Eingabeaufforderung >
nach dem Ausführen dieses Befehls nicht angezeigt wird, drücken Sie enter
.
In diesem dritten Terminalfenster verwenden Sie ot-ctl
, um Knoten 2 (den RCP-Knoten) zu verwalten, den Sie im zweiten Terminalfenster mit ot-daemon
gestartet haben. Prüfen Sie den state
von Knoten 2:
> state disabled Done
Rufen Sie die eui64
von Knoten 2 ab, um den Join auf den jeweiligen Joiner zu beschränken:
> eui64 18b4300000000001 Done
Starten Sie auf Node 1 (erstes Terminalfenster) den Commissioner und beschränken Sie den Beitritt auf diese eui64:
> commissioner start Done > commissioner joiner add 18b4300000000001 J01NME Done
Rufen Sie in Knoten 2 (drittes Terminalfenster) die Netzwerkschnittstelle auf und treten Sie dem Netzwerk bei:
> ifconfig up Done > joiner start J01NME Done
... warten Sie einige Sekunden auf die Bestätigung ...
Join success
Als Joiner hat sich der RCP (Node 2) beim Commissioner (Knoten 1) erfolgreich authentifiziert und die Anmeldedaten für das Thread-Netzwerk erhalten.
Verbinden Sie Knoten 2 jetzt mit dem Thread-Netzwerk:
> thread start Done
4. Netzwerkauthentifizierung validieren
Prüfen Sie, ob state
auf Knoten 2 jetzt dem Netzwerk beigetreten ist. Innerhalb von zwei Minuten wird Knoten 2 von child
auf router
umgestellt:
> state child Done ... > state router Done
5. Konnektivität validieren
Beenden Sie ot-ctl
mit dem Befehl Strg + D oder exit
und pingen Sie in der Befehlszeile Ihres Hostcomputers Node 1 an. Verwenden Sie dabei seine EID mit dem Befehl ping6
. Wenn die RCP-Instanz ot-daemon
erfolgreich mit dem Thread-Netzwerk verbunden wurde und mit dem Netzwerk kommuniziert, ist der Ping erfolgreich:
$ ping6 -c 4 fd55:cf34:dea5:7994:460:872c:e807:c4ab PING fd55:cf34:dea5:7994:460:872c:e807:c4ab (fd55:cf34:dea5:7994:460:872c:e807:c4ab): 56 data bytes 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=0 ttl=64 time=4.568 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=1 ttl=64 time=6.396 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=2 ttl=64 time=7.594 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=3 ttl=64 time=5.461 ms --- fd55:cf34:dea5:7994:460:872c:e807:c4ab ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 4.568/6.005/7.594/1.122 ms
7. Glückwunsch!
Sie haben Ihr erstes Thread-Netzwerk mit OpenThread simuliert. Super!
In diesem Codelab haben Sie Folgendes gelernt:
- OpenThread-Build-Toolchain einrichten
- Thread-Netzwerk simulieren
- Thread-Knoten authentifizieren
- Thread-Netzwerk mit OpenThread Daemon verwalten
Weitere Informationen finden Sie hier: