Google is committed to advancing racial equity for Black communities. See how.
このページは Cloud Translation API によって翻訳されました。
Switch to English

OpenWeaveツール

jinja-placeholder-0 /index.md "> GitHubでソースを表示する

OpenWeaveには、OpenWeaveデプロイメントを構成、管理、およびテストするための一連のコマンドラインツールが含まれています。

織りツールを構築する

weave-toolsターゲットは、配布用の選択されたWeaveコマンドラインツールのtarアーカイブを構築します。次のツールが含まれています。

ツール説明 スタンドアロンのビルド場所
gen-qr-code QRコードを生成する /src/tools/misc
mock-device Generic Weaveデバイスシミュレータ /src/test-apps
weave Weave証明書の生成と管理 /src/tools/weave
weave-device-descriptor QRコードをペアリングするためのWeaveデバイス記述子文字列をエンコードおよびデコードする /src/test-apps
weave-device-mgr デバイスのペアリングプロセスを管理する /src/device-manager/python
weave-heartbeat Heartbeatのプロフィールメッセージを送受信する /src/test-apps
weave-key-export 鍵のエクスポートリクエストを送信する /src/test-apps
weave-ping Echo プロファイルメッセージの送受信 /src/test-apps

ターゲットを構築するには:

  1. すべてのビルド前提条件をインストールします。
  2. BlueZサポートなしでOpenWeaveを構成します。
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. weave-toolsターゲットをweave-tools
     make weave-tools 
  4. ルートのopenweave-coreディレクトリでtarアーカイブを確認します。
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

gen-qr-code

gen-qr-codeツールには、Python qrcodeモジュールが必要です。それをインストールするには、 pipを使用します。

 pip install --user qrcode

gen-qr-codeを使用して、デバイスのペアリング用のQRコードを生成します。ツールの入力はローカルファイルに存在する必要があります。たとえば、ユーザーをhttps://www.google.comに送信するQRコードを生成するには:

  1. QRコードの文字列を含むファイルを作成します。
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. その文字列の64x64 QRコードを生成します。
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. QRコードを画像として保存するには、出力ファイルを指定します。
     ./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.

モックデバイス

mock-deviceツールは、一般的なWeaveノードをシミュレートします。他のツールとテストケーススクリプトは、このツールを使用してWeave機能をカプセル化します。シミュレートされたトポロジでWeave機能をテストするために、個々のHappyノードでモックデバイスをインスタンス化します。

たとえば、 fd00:0:1:1::1 IPv6アドレスでリッスンするWeaveモックデバイスを開始するには、最初にそのIPv6アドレスをlo (ループバック)インターフェイスに追加します。

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

次に、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

--helpフラグを使用して、使用可能なすべての構成オプションを表示します。

weave-device-descriptor

weave-device-descriptorツールは、デバイス記述子文字列をエンコードまたはデコードします。これらの文字列には、WeaveペアリングQRコードにエンコードされたデバイスの識別情報が含まれています。詳細については、 encodeオプションまたはdecodeオプションで--helpフラグを使用してください。

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

エンコード

たとえば、次の識別情報でデバイス記述子文字列をエンコードするには、適切なフラグと値を使用します。

フィールド国旗
ベンダーID -V 1
製品番号 -p 1
製品リビジョン番号 -r 2
シリアルナンバー -s 18B4300000000004
製造日付 -m 2018/05/02
802.15.4 MACアドレス(スレッド、BLE) -8 000D6F000DA80466
ペアリングコード -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$

この出力文字列をgen-qr-codeツールで使用して、QRコードを生成します。

デコードする

decodeオプションを使用して、デバイス記述子文字列の要素をデコードします。デコードする要素の構文は次のとおりです。

1 + <device-descriptor-element> + $

たとえば、 W:5CF370800E77デバイス記述子要素をデコードするには:

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

織りハートビート

weave-heartbeatを使用して、2つのWeaveノード間でHeartbeatのプロファイルメッセージを送受信します。ハートビートは、ネットワーク内の他のノードに対して1つのノードの活性を示す手段、またはノードがファブリックに接続されたままであるかどうかを確認する手段を提供します。

ハートビートが成功するには、1つのノードがサーバーとして機能し(ハートビートをリッスンして応答する)、1つのノードがクライアントとして機能する(ハートビートを送信する)必要があります。

ループバックインターフェイスを使用して2つのノードを模倣するweave-heartbeatツールをテストします。

  1. 各ハートビートノードで使用するIPv6アドレスをlo (ループバック)インターフェイスに追加します。
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. fd00:0:1:1::1アドレスでハートビートサーバーを起動し、 node-idを1に割り当てnode-id

     ./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. 2番目のターミナルウィンドウを開き、 fd00:0:1:1::2 IPv6アドレスでハートビートクライアントを起動しnode-idは2で、最初のノードのIPv6アドレスはハートビートの宛先です。

     ./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. 接続が成功すると、ノード2はハートビートをノード1に送信し、ノード1はノード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
     

模擬装置によるハートビート

weave-heartbeatは、サーバーとクライアントの両方のmock-deviceをインスタンス化します。同じハートビート機能は、最初のweave-heartbeatビートハートビートサーバーの代わりにmock-deviceを使用することで実証できます。

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

織りピン

weave-pingを使用して、2つのWeaveノード間でEcho プロファイルメッセージを送受信します。エコーペイロードは、要求元ノードから提供される任意のデータで構成され、応答でそのままエコーバックされることが期待されます。 Echoは、ネットワーク接続と遅延をテストする手段を提供します。

エコーが成功するには、1つのノードがサーバーとして機能し(エコー要求をリッスンして応答する)、1つのノードがクライアントとして機能する(エコー要求を送信する)必要があります。

ループバックインターフェイスを使用して2つのノードを模倣するweave-pingツールをテストしweave-ping

  1. 各エコーノードで使用するIPv6アドレスをlo (ループバック)インターフェイスに追加します。
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Echoサーバーをfd00:0:1:1::1アドレスで起動し、 node-idを1に割り当てnode-id

     ./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. 2番目のターミナルウィンドウを開き、 fd00:0:1:1::2 IPv6アドレスでEchoクライアントを開始しnode-idは2、最初のノードのIPv6アドレスは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. 接続が成功すると、ノード1はノード2からのエコー要求を記録し、ノード2はノード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
     

模擬装置によるエコー

weave-pingは、サーバーとクライアントの両方のmock-deviceをインスタンス化します。同じエコー機能は、最初のweave-pingエコーサーバーの代わりにmock-deviceを使用して実証できます。

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