Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Outils OpenWeave

jinja-placeholder-0 /index.md "> Afficher la source sur GitHub

OpenWeave comprend un ensemble d'outils de ligne de commande pour configurer, gérer et tester les déploiements OpenWeave.

Construire des outils de tissage

La cible des weave-tools crée une archive tar de certains outils de ligne de commande Weave pour la distribution. Il comprend les outils suivants:

Outil La description Emplacement de construction autonome
gen-qr-code Générer un code QR /src/tools/misc
mock-device Simulateur d'appareil générique Weave /src/test-apps
weave Générez et gérez les certificats Weave /src/tools/weave
weave-device-descriptor Encodez et décodez les chaînes de descripteurs de périphériques Weave pour coupler les codes QR /src/test-apps
weave-device-mgr Gérer le processus de couplage des appareils /src/device-manager/python
weave-heartbeat Envoyer et recevoir des messages de profil Heartbeat /src/test-apps
weave-key-export Envoyer des demandes d'exportation de clés /src/test-apps
weave-ping Envoyer et recevoir des messages de profil Echo /src/test-apps

Pour construire la cible:

  1. Installez tous les prérequis de build .
  2. Configurez OpenWeave sans le support BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Rendre la cible des weave-tools :
     make weave-tools 
  4. Vérifiez le openweave-core racine openweave-core pour l'archive tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

code-gen-qr

L'outil gen-qr-code nécessite le module Python qrcode . Utilisez pip pour l'installer:

 pip install --user qrcode

Utilisez gen-qr-code pour générer un code QR à des fins de couplage d'appareils. 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 vers https://www.google.com :

  1. Créez un fichier avec la chaîne du code QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Générez un code QR 64x64 de cette chaîne:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Pour enregistrer le code QR sous forme d'image, spécifiez un fichier de sortie:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode > ~/ow_qrcode.png
    Use the weave-device-descriptor tool to generate the device descriptor string
    for use in a Weave device's pairing QR code.

appareil-maquette

L'outil de mock-device simule un nœud Weave générique. D'autres outils et scripts de cas de test utilisent cet outil pour encapsuler la fonctionnalité Weave. Instanciez des périphériques simulés sur des nœuds Happy individuels pour tester la fonctionnalité Weave dans une topologie simulée.

Par exemple, pour démarrer un périphérique de simulation Weave écoutant sur une adresse IPv6 de fd00:0:1:1::1 , ajoutez d'abord cette adresse IPv6 à l'interface lo (bouclage):

 sudo ifconfig lo add fd00:0:1:1::1/64

Ensuite, démarrez le périphérique de simulation 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 l'indicateur --help pour afficher toutes les options de configuration disponibles.

descripteur de dispositif de tissage

L'outil de weave-device-descriptor code ou décode une chaîne de descripteur de périphérique. Ces chaînes contiennent des informations d'identification pour un appareil qui sont encodées dans son code QR de couplage Weave. Utilisez l'indicateur --help avec les options d' encode ou de decode 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:

Champ Drapeau Valeur
Fournisseur ID -V 1
ID 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 (Thread, 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 l'outil gen-qr-code pour générer le code QR.

décoder

Utilisez l'option decode pour décoder un élément d'une chaîne de descripteur de périphérique. L'élément à décoder a la syntaxe suivante:

1 + <device-descriptor-element> + $

Par exemple, pour décoder l'élément de descripteur de périphérique W:5CF370800E77 :

 ./weave-device-descriptor decode 1W:5CF370800E77$
Primary WiFi MAC: 5C:F3:70:80:0E:77

tissage-battement de coeur

Utilisez weave-heartbeat pour envoyer et recevoir des messages de profil Heartbeat entre deux nœuds Weave. Heartbeat fournit un moyen pour indiquer la vivacité d'un nœud aux autres nœuds du réseau, ou pour vérifier si un nœud reste connecté à la structure.

Un Heartbeat réussi nécessite qu'un nœud agisse en tant que serveur (écoute et répond au Heartbeat) et un nœud agit en tant que client (envoie le Heartbeat).

Testez l'outil weave-heartbeat à l'aide de l'interface de bouclage pour imiter deux nœuds:

  1. Ajoutez les adresses IPv6 à utiliser pour chaque nœud Heartbeat à l'interface lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Démarrez le serveur Heartbeat sur l' fd00:0:1:1::1 et attribuez-lui un node-id de 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: 170418

  3. Ouvrez une deuxième fenêtre de terminal et démarrez le client Heartbeat sur l'adresse IPv6 fd00:0:1:1::2 avec un node-id de 2 et l'adresse IPv6 du premier nœud comme destination du 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: Binding 0 : 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: Binding 0 : Configuring
        WEAVE:EM: Binding 0 : Preparing
        WEAVE:EM: Binding 0 : Ready, peer 1 ([fd00:0:1:1::1]:11095) via UDP

  4. Après une connexion réussie, le nœud 2 envoie des pulsations au nœud 1 et le nœud 1 enregistre les pulsations reçues du nœud 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 cœur avec un appareil simulé

weave-heartbeat instancie un mock-device pour le serveur et le client. La même fonctionnalité Heartbeat peut être démontrée en utilisant mock-device à la place du premier serveur Heartbeat weave-heartbeat :

 ./mock-device -a fd00:0:1:1::1

tissage

Utilisez weave-ping pour envoyer et recevoir des messages de profil Echo entre deux nœuds 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 écho réussi nécessite qu'un nœud agisse en tant que serveur (écoute et répond à la requête Echo) et un nœud agit en tant que client (envoi de la requête Echo).

Testez l'outil de weave-ping à l'aide de l'interface de bouclage pour imiter deux nœuds:

  1. Ajoutez les adresses IPv6 à utiliser pour chaque nœud Echo à l'interface lo (bouclage):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Démarrez le serveur Echo sur l' fd00:0:1:1::1 , en lui attribuant un node-id de node-id de 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...

  3. Ouvrez une deuxième fenêtre de terminal et démarrez le client Echo sur l'adresse IPv6 fd00:0:1:1::2 avec un node-id de 2 et l'adresse IPv6 du premier nœud comme destination de la requête Echo:

     ./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)

  4. Après une connexion réussie, le nœud 1 enregistre les demandes d'écho du nœud 2 et le nœud 2 enregistre les réponses d'écho du nœud 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 simulé

weave-ping instancie un mock-device pour le serveur et le client. La même fonctionnalité Echo peut être démontrée en utilisant mock-device à la place du premier serveur Echo de weave-ping :

 ./mock-device -a fd00:0:1:1::1