![]() |
OpenWeave inclut un ensemble d'outils de ligne de commande pour configurer, gérer et tester les déploiements OpenWeave.
Construire des outils de tissage
L' weave-tools
cible construit une archive de goudron de sélectionner des outils de ligne de commande tissage pour la distribution. Il comprend les outils suivants :
Outil | La description | Autonome construction emplacement |
---|---|---|
gen-qr-code | Générer un code QR | /src/tools/misc |
mock-device | Simulateur de dispositif générique Weave | /src/test-apps |
weave | Générer et gérer les certificats Weave | /src/tools/weave |
weave-device-descriptor | Encoder et décoder les chaînes de descripteur d'appareil Weave pour associer des codes QR | /src/test-apps |
weave-device-mgr | Gérer le processus d'appairage des appareils | /src/device-manager/python |
weave-heartbeat | Envoyer et recevoir Heartbeat des messages de profil | /src/test-apps |
weave-key-export | Envoyer des demandes d'exportation de clés | /src/test-apps |
weave-ping | Envoyer et recevoir d' écho messages de profil | /src/test-apps |
Pour construire la cible :
- Installer toutes les conditions de construction .
- Configurer OpenWeave sans support BlueZ:
cd <path-to-openweave-core>
./configure --without-bluez
- Make the
weave-tools
target:make weave-tools
- Check the root
openweave-core
directory for the tar archive:ls weave*
weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz
gen-qr-code
The gen-qr-code
tool requires the Python qrcode
module. Use pip
to install
it:
pip install --user qrcode
Utilisation gen-qr-code
pour générer un code QR à des fins d'appariement de l' appareil. L'entrée de l'outil doit résider dans un fichier local. Par exemple, pour générer un code QR qui envoie l'utilisateur à https://www.google.com :
- Créez un fichier avec la chaîne pour le code QR:
echo "https://www.google.com" >> ~/ow_qrcode
- Generate a 64x64 QR code of that string:
./gen-qr-code -v 1 -s 64 < ~/ow_qrcode
- To save the QR code as an image, specify an output file:
./gen-qr-code -v 1 -s 64 < ~/ow_qrcode > ~/ow_qrcode.png
Use theweave-device-descriptor
tool to generate the device descriptor string for use in a Weave device's pairing QR code.
mock-device
The mock-device
tool simulates a generic Weave node. Other tools and test case
scripts use this tool to encapsulate Weave functionality. Instantiate mock
devices on individual Happy nodes to test Weave functionality in a simulated
topology.
For example, to start a Weave mock device listening on an IPv6 address of
fd00:0:1:1::1
, first add that IPv6 address to the lo
(loopback) interface:
sudo ifconfig lo add fd00:0:1:1::1/64
Ensuite, démarrez le dispositif fictif Weave :
./mock-device -a fd00:0:1:1::1
WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:1:1::1]:11095
WEAVE:ML: Listening on IPv6 TCP endpoint
WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095
WEAVE:IN: IPV6_PKTINFO: 92
WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::1]:11095 (lo)
WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo)
WEAVE:ML: Listening on IPv6 multicast receive endpoint
WEAVE:EM: Cannot listen for BLE connections, null BleLayer
Weave Node Configuration:
Fabric Id: 1
Subnet Number: 1
Node Id: 1
WEAVE:SD: init()
Weave Node Configuration:
Fabric Id: 1
Subnet Number: 1
Node Id: 1
Listening Addresses:
fd00:0:1:1::1 (ipv6)
Pairing Server: fd00:0:1:1::1
Mock Time Sync is disabled and not initialized
Mock System Time Offset initialized to: 3.213773 sec
Listening for requests...
Weave Node ready to service events; PID: 256904; PPID: 251571
Utilisez le --help
drapeau pour afficher toutes les options de configuration disponibles.
descripteur-de-dispositif de tissage
Le weave-device-descriptor
Outil encode ou décode une chaîne de descripteur de dispositif. Ces chaînes contiennent des informations d'identification pour un appareil qui sont codées dans son code QR d'appariement Weave. Utilisez le --help
drapeau avec les encode
ou decode
des options pour plus d' informations.
./weave-device-descriptor encode --help
./weave-device-descriptor decode --help
encoder
Par exemple, pour coder une chaîne de descripteur de périphérique avec les informations d'identification suivantes, utilisez les indicateurs et les valeurs appropriés :
Domaine | Drapeau | Valeur |
---|---|---|
Fournisseur ID | -V | 1 |
Identifiant du produit | -p | 1 |
Numéro de révision du produit | -r | 2 |
Numéro de série | -s | 18B4300000000004 |
Date de fabrication | -m | 2018/05/02 |
Adresse MAC 802.15.4 (fil, BLE) | -8 | 000D6F000DA80466 |
Code d'appariement | -P | AB713H |
./weave-device-descriptor encode -V 1 -p 1 -r 2 -s 18B4300000000004 -m 2018/05/02 \
-8 000D6F000DA80466 -w 5CF370800E77 -P AB713H
1V:1$P:1$R:2$D:180502$S:18B4300000000004$L:000D6F000DA80466$W:5CF370800E77$C:AB713H$
Utilisez cette chaîne de sortie avec le gen-qr-code
outil pour générer le code QR.
décoder
Utiliser le decode
option pour décoder un élément d'une chaîne de descripteur de dispositif. L'élément à décoder a la syntaxe suivante :
1 + <device-descriptor-element> + $
Par exemple, pour décoder le W:5CF370800E77
élément de descripteur de dispositif:
./weave-device-descriptor decode 1W:5CF370800E77$
Primary WiFi MAC: 5C:F3:70:80:0E:77
tisser-battement de coeur
Utilisez weave-heartbeat
de weave-heartbeat
pour envoyer et recevoir Heartbeat des messages de profil entre deux noeuds Weave. Heartbeat fournit un moyen d'indiquer l'activité d'un nœud aux autres nœuds du réseau, ou de vérifier si un nœud reste connecté à la matrice.
Un Heartbeat réussi nécessite un nœud pour agir en tant que serveur (écouter et répondre au Heartbeat) et un nœud pour agir en tant que client (envoyant le Heartbeat).
Test de l' weave-heartbeat
de weave-heartbeat
outil en utilisant l'interface de bouclage pour imiter deux noeuds:
- Ajouter les adresses IPv6 à utiliser pour chaque noeud de pulsation à la
lo
(rebouclage) Interface:sudo ifconfig lo add fd00:0:1:1::1/64
sudo ifconfig lo add fd00:0:1:1::2/64
Start the Heartbeat server on the
fd00:0:1:1::1
address and assign it anode-id
of 1:./weave-heartbeat --node-addr fd00:0:1:1::1 --node-id 1 --listen
WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:1:1::1]:11095 WEAVE:ML: Listening on IPv6 TCP endpoint WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095 WEAVE:IN: IPV6_PKTINFO: 92 WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::1]:11095 (lo) WEAVE:ML: Listening on general purpose IPv6 UDP endpoint WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo) WEAVE:ML: Listening on IPv6 multicast receive endpoint WEAVE:EM: Cannot listen for BLE connections, null BleLayer Weave Node Configuration: Fabric Id: 1 Subnet Number: 1 Node Id: 1 Listening Addresses: fd00:0:1:1::1 (ipv6) Listening for Heartbeats... Weave Node ready to service events; PID: 170883; PPID: 170418Open a second terminal window and start the Heartbeat client on the
fd00:0:1:1::2
IPv6 address with anode-id
of 2 and the first node's IPv6 address as the destination for the Heartbeat:./weave-heartbeat --node-addr fd00:0:1:1::2 --node-id 2 --dest-addr fd00:0:1:1::1 1
WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:1:1::2]:11095 WEAVE:ML: Listening on IPv6 TCP endpoint WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095 WEAVE:IN: IPV6_PKTINFO: 92 WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::2]:11095 (lo) WEAVE:ML: Listening on general purpose IPv6 UDP endpoint WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo) WEAVE:ML: Listening on IPv6 multicast receive endpoint WEAVE:EM: Cannot listen for BLE connections, null BleLayer WEAVE:EM: Binding0: Allocated Weave Node Configuration: Fabric Id: 1 Subnet Number: 1 Node Id: 2 Listening Addresses: fd00:0:1:1::2 (ipv6) Sending Heartbeats via UDP to node 1 (fd00:0:1:1::1) every 1000 ms Weave Node ready to service events; PID: 170932; PPID: 170608 WEAVE:EM: Binding0: Configuring WEAVE:EM: Binding0: Preparing WEAVE:EM: Binding0: Ready, peer 1 ([fd00:0:1:1::1]:11095) via UDPAfter a successful connection, node 2 sends Heartbeats to node 1, and node 1 logs Heartbeats received from node 2:
Node 1 <code></code> WEAVE:EM: Msg rcvd 00000013:1 1 0000000000000002 0000 C993 0 MsgId:1380A259 WEAVE:EM: ec id: 1, AppState: 0xb8e89790 Heartbeat from node 2 (fd00:0:1:1::2): state=1, err=No Error ### Node 2 <code></code> WEAVE:EM: ec id: 1, AppState: 0x0 WEAVE:EM: Msg sent 00000013:1 1 0000000000000001 0000 C993 0 MsgId:1380A259 Heartbeat sent to node 1: state=1
Battement de coeur avec un appareil fictif
weave-heartbeat
instancie un mock-device
pour le serveur et le client. La même fonctionnalité de pulsations peut être démontrée à l'aide mock-device
l' weave-heartbeat
mock-device
à la place de la première weave-heartbeat
serveur battement de coeur:
./mock-device -a fd00:0:1:1::1
tisser-ping
Utilisez weave-ping
pour envoyer et recevoir d' écho messages de profil entre deux noeuds Weave. Une charge utile Echo se compose de données arbitraires fournies par le nœud demandeur et devrait être renvoyée textuellement dans la réponse. Echo fournit un moyen de tester la connectivité et la latence du réseau.
Un Echo réussi nécessite un nœud pour agir en tant que serveur (écouter et répondre à la requête Echo) et un nœud pour agir en tant que client (envoyer la requête Echo).
Test de l' weave-ping
outil en utilisant l'interface de bouclage pour imiter deux noeuds:
- Ajouter les adresses IPv6 à utiliser pour chaque noeud Echo à la
lo
(rebouclage) Interface:sudo ifconfig lo add fd00:0:1:1::1/64
sudo ifconfig lo add fd00:0:1:1::2/64
Start the Echo server on the
fd00:0:1:1::1
address, assigning it anode-id
of 1:./weave-ping --node-addr fd00:0:1:1::1 --node-id 1 --listen
WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:1:1::1]:11095 WEAVE:ML: Listening on IPv6 TCP endpoint WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095 WEAVE:IN: IPV6_PKTINFO: 92 WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::1]:11095 (lo) WEAVE:ML: Listening on general purpose IPv6 UDP endpoint WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo) WEAVE:ML: Listening on IPv6 multicast receive endpoint WEAVE:EM: Cannot listen for BLE connections, null BleLayer WEAVE:SD: init() Weave Node Configuration: Fabric Id: 1 Subnet Number: 1 Node Id: 1 Listening Addresses: fd00:0:1:1::1 (ipv6) Listening for Echo requests... Iteration 0 Weave Node ready to service events; PID: 120927; PPID: 113768 WEAVE:ECH: Listening...Open a second terminal window and start the Echo client on the
fd00:0:1:1::2
IPv6 address with anode-id
of 2 and the first node's IPv6 address as the destination for the Echo request:./weave-ping --node-addr fd00:0:1:1::2 --node-id 2 --dest-addr fd00:0:1:1::1 1
WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095 WEAVE:IN: IPV6_PKTINFO: 92 WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::2]:11095 (lo) WEAVE:ML: Listening on general purpose IPv6 UDP endpoint WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo) WEAVE:ML: Listening on IPv6 multicast receive endpoint WEAVE:EM: Cannot listen for BLE connections, null BleLayer WEAVE:SD: init() Weave Node Configuration: Fabric Id: 1 Subnet Number: 1 Node Id: 2 Listening Addresses: fd00:0:1:1::2 (ipv6) Sending Echo requests to node 1 at fd00:0:1:1::1 Iteration 0 Weave Node ready to service events; PID: 121125; PPID: 121017 WEAVE:ML: Con start 9A00 0000000000000001 0001 WEAVE:ML: Con DNS complete 9A00 0 WEAVE:ML: TCP con start 9A00 fd00:0:1:1::1 11095 WEAVE:ML: TCP con complete 9A00 0 WEAVE:ML: Con complete 9A00 Connection established to node 1 (fd00:0:1:1::1)After a successful connection, node 1 logs Echo Requests from node 2, and node 2 logs Echo Responses from node 1:
Node 1 <code></code> WEAVE:ML: Con rcvd AA00 fd00:0:1:1::2 41675 Connection received from node 2 (fd00:0:1:1::2) WEAVE:EM: Msg rcvd 00000001:1 15 0000000000000002 AA00 B8A5 0 MsgId:00000000 WEAVE:EM: ec id: 1, AppState: 0xfce0ca80 Echo Request from node 2 (fd00:0:1:1::2): len=15 ... sending response. WEAVE:EM: Msg sent 00000001:2 15 0000000000000002 AA00 B8A5 0 MsgId:00000000 WEAVE:EM: Msg rcvd 00000001:1 15 0000000000000002 AA00 B8A6 0 MsgId:00000001 ### Node 2 <code></code> WEAVE:EM: ec id: 1, AppState: 0xd239baa0 WEAVE:EM: Msg sent 00000001:1 15 0000000000000001 9A00 B8A5 0 MsgId:00000000 WEAVE:EM: Msg rcvd 00000001:2 15 0000000000000001 9A00 B8A5 0 MsgId:00000000 Echo Response from node 1 (fd00:0:1:1::1): 1/1(100.00%) len=15 time=0.228ms
Écho avec un appareil fictif
weave-ping
instancie un mock-device
pour le serveur et le client. La même fonctionnalité Echo peut être démontrée à l'aide mock-device
l' weave-ping
mock-device
à la place de la première weave-ping
serveur Echo:
./mock-device -a fd00:0:1:1::1