Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Ferramentas OpenWeave

jinja-placeholder-0 /index.md "> Ver fonte no GitHub

OpenWeave inclui um conjunto de ferramentas de linha de comando para implantações de configurar, gerenciar e testar OpenWeave.

Desenvolver tecer-tools

A weave-tools -alvo constrói um arquivo tar de selecionar ferramentas de linha de comando do Weave para distribuição. Ele inclui as seguintes ferramentas:

Ferramenta Descrição Standalone construção local
gen-qr-code Gerar um código QR /src/tools/misc
mock-device simulador dispositivo tecer genérico /src/test-apps
weave Gerar e gerenciar certificados Weave /src/tools/weave
weave-device-descriptor Codificar e decodificar Weave cordas descritor dispositivo para emparelhar os códigos QR /src/test-apps
weave-device-mgr Gerenciar o processo de emparelhamento do dispositivo /src/device-manager/python
weave-heartbeat Enviar e receber Pulsação mensagens em seu perfil /src/test-apps
weave-key-export Enviar pedidos importantes de exportação /src/test-apps
weave-ping Enviar e receber eco mensagens em seu perfil /src/test-apps

Para construir o alvo:

  1. Instale todos os pré-requisitos de construção .
  2. Configurar OpenWeave sem apoio BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Fazer a weave-tools -alvo:
     make weave-tools 
  4. Verifique a raiz openweave-core diretório para o arquivo tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

gen-qr-code

O gen-qr-code ferramenta requer o Python qrcode módulo. Use pip para instalá-lo:

 pip install --user qrcode

Use gen-qr-code para gerar um código QR para fins dispositivo de emparelhamento. A entrada para a ferramenta deve residir em um arquivo local. Por exemplo, para gerar um código QR que envia o usuário para https://www.google.com :

  1. Crie um arquivo com a string para o código QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Gerar um código QR 64x64 desse string:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Para salvar o código QR como uma imagem, especificar um arquivo de saída:
     ./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.

falsamente dispositivo

O mock-device ferramenta simula um nó Weave genérico. Outras ferramentas e scripts caso de teste usar essa ferramenta para encapsular funcionalidade Weave. dispositivos de simulação instanciar nos nós Boas individuais para testar a funcionalidade em tecer uma topologia simulado.

Por exemplo, para iniciar uma escuta dispositivo simulada Weave em um endereço IPv6 de fd00:0:1:1::1 , primeiro adicione o endereço IPv6 ao lo (loopback) Interface:

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

Em seguida, o dispositivo começar simulada tecer:

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

Use o --help bandeira para visualizar todas as opções de configuração disponíveis.

weave-device-descritor

Os weave-device-descriptor codifica ferramenta ou decodifica uma corda descritor dispositivo. Essas seqüências contêm informações de identificação para um dispositivo que é codificada em seu código de emparelhamento QR Weave. Use o --help bandeira com as encode ou decode opções para mais informações.

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

codificar

Por exemplo, para codificar uma string descritor dispositivo com as seguintes informações de identificação, use as bandeiras e valores apropriados:

Campo Bandeira Valor
ID do fornecedor -V 1
ID do produto -p 1
Produto Número de Revisão -r 2
Número de série -s 18B4300000000004
Data de fabricação -m 2018/05/02
802.15.4 MAC Address (Thread, BLE) -8 000D6F000DA80466
Código de emparelhamento -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$

Usar essa seqüência de saída com o gen-qr-code ferramenta para gerar o código QR.

decodificar

Utilizar a decode opção para decodificar um elemento de uma seqüência de descritor de dispositivo. O elemento de descodificação tem a seguinte sintaxe:

1 + <device-descriptor-element> + $

Por exemplo, para descodificar o W:5CF370800E77 elemento descritor dispositivo:

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

tecer-pulsação

Use weave-heartbeat para enviar e receber pulsação mensagens em seu perfil entre dois nós Weave. Batimento cardíaco proporciona um meio para indicar vivacidade de um nó para os outros nós na rede, ou para verificar se um nó mantém-se ligado ao tecido.

A Heartbeat bem sucedido requer um nó para agir como um servidor (para ouvir e responder à pulsação) e um nó para agir como um cliente (o envio da pulsação).

Testar a weave-heartbeat de ferramenta através da interface de circuito fechado para imitar dois nós:

  1. Adicione os endereços IPv6 a serem utilizados para cada nó de pulsação à lo de interface (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Inicie o servidor de pulsação no fd00:0:1:1::1 endereço e atribuir-lhe um 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. Abra uma segunda janela de terminal e iniciar o cliente pulsação na fd00:0:1:1::2 endereço IPv6 com um node-id de 2 e endereço IPv6 do primeiro nó como o destino para a pulsação:

     ./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. Após uma conexão bem-sucedida, o nó 2 envia Heartbeats para o nó 1 e nó 1 registros Heartbeats recebidos do nó 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
     

Batimento cardíaco com um aparelho de simulação

weave-heartbeat instancia um mock-device de servidor e cliente. A mesma funcionalidade de pulsação pode ser demonstrada utilizando mock-device no lugar do primeiro weave-heartbeat servidor de pulsação:

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

tecer-ping

Use weave-ping para enviar e receber eco mensagens em seu perfil entre dois nós Weave. Uma carga de eco consiste em dados arbitrários fornecidos pelo nó requerente e está prevista para ser ecoou de volta na íntegra na resposta. Echo fornece um meio para conectividade de rede de teste e latência.

Um eco de sucesso requer um nó para agir como um servidor (escutando e respondendo à solicitação de eco) e um nó para agir como um cliente (o envio da solicitação de eco).

Testar a weave-ping ferramenta usando a interface de circuito fechado para imitar dois nós:

  1. Adicione os endereços IPv6 a serem utilizados para cada nó eco à lo de interface (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Inicie o servidor de eco sobre o fd00:0:1:1::1 endereço, atribuindo-lhe um 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. Abra uma segunda janela de terminal e iniciar o cliente eco na fd00:0:1:1::2 endereço IPv6 com um node-id de 2 e endereço IPv6 do primeiro nó como destino para o pedido de eco:

     ./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. Depois de uma ligação bem sucedida, o nó 1 toras Eco Pedidos de nó 2 e nó 2 logs Responses eco nó 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 com um dispositivo de branco

weave-ping instancia um mock-device de servidor e cliente. A mesma funcionalidade do eco pode ser demonstrada utilizando mock-device no lugar do primeiro weave-ping servidor de eco:

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