Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

OpenWeave Tools

jinja-placeholder-0 /index.md "> Quelle auf GitHub anzeigen

OpenWeave enthält eine Reihe von Befehlszeilentools zum Konfigurieren, Verwalten und Testen von OpenWeave-Bereitstellungen.

Bauen Sie Webwerkzeuge

Die weave-tools Ziel baut ein tar - Archiv von ausgewählten Weave Kommandozeilen - Tools für die Verteilung. Es enthält die folgenden Tools:

Werkzeug Beschreibung Standalone-Build- Standort
gen-qr-code Generieren Sie einen QR-Code /src/tools/misc
mock-device Generic Weave Gerätesimulator /src/test-apps
weave Generieren und verwalten Sie Weave-Zertifikate /src/tools/weave
weave-device-descriptor Codieren und Decodieren Sie Weave Device Descriptor Strings zum Koppeln von QR-Codes /src/test-apps
weave-device-mgr Verwalten Sie den Gerätekopplungsprozess /src/device-manager/python
weave-heartbeat Senden und Empfangen von Heartbeat- /src/test-apps
weave-key-export Senden Sie wichtige Exportanforderungen /src/test-apps
weave-ping Senden und Empfangen von Profilnachrichten für Echo /src/test-apps

So erstellen Sie das Ziel:

  1. Installieren Sie alle Build-Voraussetzungen .
  2. Konfigurieren Sie OpenWeave ohne BlueZ-Unterstützung:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Machen Sie die weave-tools Ziel:
     make weave-tools 
  4. Überprüfen Sie das openweave-core Stammverzeichnis für das Tar-Archiv:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

gen-qr-code

Das gen-qr-code Tool benötigt das Python- qrcode gen-qr-code Modul. Verwenden Sie pip , um es zu installieren:

 pip install --user qrcode

Verwenden Sie gen-qr-code , um einen QR-Code für Gerätepaarungszwecke zu generieren. Die Eingabe für das Tool muss sich in einer lokalen Datei befinden. So generieren Sie beispielsweise einen QR-Code, der den Benutzer an https://www.google.com sendet:

  1. Erstellen Sie eine Datei mit der Zeichenfolge für den QR-Code:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Generieren Sie einen 64x64-QR-Code dieser Zeichenfolge:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Geben Sie eine Ausgabedatei an, um den QR-Code als Bild zu speichern:
     ./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.

Scheingerät

Das mock-device Tool simuliert einen generischen Weave-Knoten. Andere Tools und Testfallskripte verwenden dieses Tool, um die Weave-Funktionalität zu kapseln. Instanziieren Sie Scheingeräte auf einzelnen Happy-Knoten, um die Weave-Funktionalität in einer simulierten Topologie zu testen.

Um beispielsweise ein Weave-Mock-Gerät zu starten, das eine IPv6-Adresse von fd00:0:1:1::1 , fügen Sie zuerst diese IPv6-Adresse zur lo Loopback-Schnittstelle hinzu:

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

Starten Sie dann das Weave-Mock-Gerät:

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

Verwenden Sie das Flag --help , um alle verfügbaren Konfigurationsoptionen anzuzeigen.

Webgerät-Deskriptor

Das weave-device-descriptor Tool codiert oder decodiert eine Device-Deskriptor-Zeichenfolge. Diese Zeichenfolgen enthalten Identifizierungsinformationen für ein Gerät, das in seinem Weave-Pairing-QR-Code codiert ist. Verwenden Sie das Flag --help mit den encode oder decode , um weitere Informationen zu erhalten.

 ./weave-device-descriptor encode --help
./weave-device-descriptor decode --help

kodieren

Verwenden Sie beispielsweise die entsprechenden Flags und Werte, um eine Gerätedeskriptorzeichenfolge mit den folgenden identifizierenden Informationen zu codieren:

Feld Flagge Wert
Hersteller-ID -V 1
Produkt ID -p 1
Produktversionsnummer -r 2
Ordnungsnummer -s 18B4300000000004
Herstellungsdatum -m 2018/05/02
802.15.4 MAC-Adresse (Thread, BLE) -8 000D6F000DA80466
Pairing-Code -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$

Verwenden Sie diese Ausgabezeichenfolge mit dem Tool gen-qr-code , um den QR gen-qr-code zu generieren.

dekodieren

Verwenden Sie die decode , um ein Element einer Gerätedeskriptorzeichenfolge zu dekodieren. Das zu dekodierende Element hat die folgende Syntax:

1 + <device-descriptor-element> + $

So dekodieren Sie beispielsweise das W:5CF370800E77 :

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

Webherzschlag

Verwenden Sie weave-heartbeat , um Heartbeat- zwischen zwei Weave-Knoten zu senden und zu empfangen. Heartbeat bietet eine Möglichkeit, den anderen Knoten im Netzwerk die Lebendigkeit eines Knotens anzuzeigen oder zu überprüfen, ob ein Knoten mit der Fabric verbunden bleibt.

Für einen erfolgreichen Heartbeat muss ein Knoten als Server fungieren (auf den Heartbeat warten und darauf reagieren) und ein Knoten als Client (Senden des Heartbeat).

Testen Sie das weave-heartbeat Tool mithilfe der Loopback-Schnittstelle, um zwei Knoten nachzuahmen:

  1. Fügen Sie der lo (Loopback) -Schnittstelle die IPv6-Adressen hinzu, die für jeden Heartbeat-Knoten verwendet werden sollen:
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Starten Sie den Heartbeat-Server unter der fd00:0:1:1::1 und weisen Sie ihm eine node-id von 1 zu:

     ./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. Öffnen Sie ein zweites Terminalfenster und starten Sie den Heartbeat-Client auf der IPv6-Adresse fd00:0:1:1::2 mit einer node-id von 2 und der IPv6-Adresse des ersten Knotens als Ziel für den 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. Nach einer erfolgreichen Verbindung sendet Knoten 2 Heartbeats an Knoten 1 und Knoten 1 protokolliert Heartbeats, die von Knoten 2 empfangen wurden:

     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
     

Herzschlag mit einem Scheingerät

weave-heartbeat instanziiert ein mock-device für Server und Client. Dieselbe Heartbeat-Funktionalität kann demonstriert werden, indem anstelle des ersten Heartbeat-Servers für weave-heartbeat mock-device verwendet wird:

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

Weben-Ping

Verwenden Sie weave-ping , um Echo Profilnachrichten zwischen zwei Weave-Knoten zu senden und zu empfangen. Eine Echo-Nutzlast besteht aus beliebigen Daten, die vom anfordernden Knoten bereitgestellt werden, und es wird erwartet, dass sie in der Antwort wörtlich wiedergegeben werden. Echo bietet eine Möglichkeit, die Netzwerkkonnektivität und -latenz zu testen.

Für ein erfolgreiches Echo muss ein Knoten als Server fungieren (auf die Echo-Anforderung warten und darauf reagieren) und ein Knoten als Client (Senden der Echo-Anforderung).

Testen Sie das weave-ping Tool mithilfe der Loopback-Schnittstelle, um zwei Knoten nachzuahmen:

  1. Fügen Sie der lo (Loopback) -Schnittstelle die IPv6-Adressen hinzu, die für jeden Echo-Knoten verwendet werden sollen:
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Starten Sie den Echo-Server unter der fd00:0:1:1::1 und node-id Sie ihm eine node-id von 1 zu:

     ./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. Öffnen Sie ein zweites Terminalfenster und starten Sie den Echo-Client auf der IPv6-Adresse fd00:0:1:1::2 mit einer node-id von 2 und der IPv6-Adresse des ersten Knotens als Ziel für die Echo-Anforderung:

     ./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. Nach einer erfolgreichen Verbindung protokolliert Knoten 1 Echoanforderungen von Knoten 2 und Knoten 2 Echoantworten von Knoten 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
     

Echo mit einem Scheingerät

weave-ping instanziiert ein mock-device für Server und Client. Dieselbe Echo-Funktionalität kann demonstriert werden, indem anstelle des ersten weave-ping Echo-Servers ein mock-device verwendet wird:

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