Google is committed to advancing racial equity for Black communities. See how.
Esta página se ha traducido con Cloud Translation API.
Switch to English

Herramientas OpenWeave

Jinja-marcador de posición-0 /index.md "> Ver código fuente en GitHub

OpenWeave incluye un conjunto de herramientas de línea de comandos para los despliegues de configurar, administrar y OpenWeave prueba.

Construir armadura-herramientas

La weave-tools objetivo construye un archivo tar de seleccionar las herramientas de línea de comandos de la armadura para la distribución. Incluye las siguientes herramientas:

Herramienta Descripción Acumulación autónomo ubicación
gen-qr-code Generar un código QR /src/tools/misc
mock-device simulador dispositivo Weave Genérico /src/test-apps
weave Generar y gestionar certificados Weave /src/tools/weave
weave-device-descriptor cuerdas descriptor de dispositivos de codificación y decodificación de la armadura para el emparejamiento de los códigos QR /src/test-apps
weave-device-mgr Administrar el proceso de emparejamiento dispositivo /src/device-manager/python
weave-heartbeat Enviar y recibir Heartbeat mensajes perfil /src/test-apps
weave-key-export Enviar solicitudes de exportación clave /src/test-apps
weave-ping Enviar y recibir Echo mensajes perfil /src/test-apps

Para construir el objetivo:

  1. Instalar todos los prerrequisitos de construcción .
  2. Configurar OpenWeave sin apoyo BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Hacer que la weave-tools de destino:
     make weave-tools 
  4. Compruebe la raíz openweave-core directorio para el archivo tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

Gen-QR-Code

El gen-qr-code herramienta requiere el pitón qrcode módulo. Use pip para instalarlo:

 pip install --user qrcode

Uso gen-qr-code para generar un código QR para los propósitos de emparejamiento de dispositivos. La entrada para la herramienta debe residir en un archivo local. Por ejemplo, para generar un código QR que envía al usuario https://www.google.com :

  1. Crear un archivo con la cadena para el código QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Generar un código QR de 64x64 esa cadena:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Para guardar el código QR como una imagen, especificar un archivo de salida:
     ./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.

maqueta dispositivo

La mock-device herramienta simula un nodo de la armadura genérico. Otras herramientas y scripts de test utilizan esta herramienta para encapsular la funcionalidad de la armadura. Crear instancias de dispositivos simulados en los nodos individuales felices para probar la funcionalidad de la armadura en una topología simulado.

Por ejemplo, para iniciar un dispositivo de escucha maqueta de la armadura en una dirección IPv6 de fd00:0:1:1::1 , primer complemento que la dirección IPv6 a la lo (loopback) Interfaz:

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

A continuación, iniciar el dispositivo maqueta de la armadura:

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

Usar la --help bandera para ver todas las opciones de configuración disponibles.

armadura-dispositivo-descriptor

Los weave-device-descriptor codifica o descodifica una herramienta cadena de descriptor de dispositivo. Estas cadenas contienen información de identificación para un dispositivo que se codifica en su armadura de código de emparejamiento QR. Usar la --help , marca con las encode o decode opciones para obtener más información.

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

codificar

Por ejemplo, para codificar una cadena de descriptores dispositivo con la siguiente información de identificación, utilizar las banderas y valores apropiados:

Campo Bandera Valor
Vendor ID -V 1
identificación de producto -p 1
Producto Número de revisión -r 2
Número de serie -s 18B4300000000004
Fecha de fabricación -m 2018/05/02
802.15.4 Dirección MAC (Tema, BLE) -8 000D6F000DA80466
Código de emparejamiento -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$

Utilice esta cadena de salida con el gen-qr-code herramienta para generar el código QR.

descodificar

Usar la decode opción para decodificar un elemento de una cadena de descriptor de dispositivo. El elemento de decodificación tiene la sintaxis siguiente:

1 + <device-descriptor-element> + $

Por ejemplo, para decodificar el W:5CF370800E77 elemento descriptor dispositivo:

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

armadura-latido del corazón

Uso weave-heartbeat para enviar y recibir Heartbeat mensajes perfil entre dos nodos de la armadura. Heartbeat proporciona un medio para indicar liveness de un nodo a los otros nodos en la red, o para comprobar si un restos nodo conectado a la tela.

Un latido del corazón con éxito requiere un nodo a actuar como un servidor (escuchar y respuesta a la del latido del corazón) y un nodo a actuar como un cliente (el envío del latido del corazón).

Prueba de la weave-heartbeat herramienta mediante la interfaz de bucle de retorno para imitar dos nodos:

  1. Añadir las direcciones IPv6 que se utilizarán para cada nodo del latido del corazón a la lo interfaz (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Iniciar el servidor en el latido del corazón fd00:0:1:1::1 dirección y asignarle 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. Abrir una segunda ventana de terminal e inicie el cliente Latido del corazón en el fd00:0:1:1::2 direcciones IPv6 con un node-id de 2 y la dirección IPv6 del primer nodo como el destino para el latido del corazón:

     ./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. Después de una conexión con éxito, el nodo 2 envía latidos del corazón al nodo 1 y el nodo 1 registros de latidos del corazón recibida desde el nodo 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
     

Latido del corazón con un dispositivo mock

weave-heartbeat instancia un mock-device para el servidor y el cliente. La misma funcionalidad Heartbeat se puede demostrar mediante el uso de mock-device en lugar de la primera weave-heartbeat servidor Heartbeat:

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

armadura-ping

El uso weave-ping para enviar y recibir Echo mensajes perfil entre dos nodos de la armadura. Una carga útil Echo consta de datos arbitrarios suministrados por el nodo solicitante y se espera que se hizo eco de vuelta verbatim en la respuesta. Echo proporciona un medio para la conectividad de red de prueba y la latencia.

Un eco con éxito requiere un nodo a actuar como un servidor (escuchar y respuesta a la solicitud de eco) y un nodo a actuar como un cliente (el envío de la solicitud de eco).

Prueba de la weave-ping herramienta mediante la interfaz de bucle de retorno para imitar dos nodos:

  1. Añadir las direcciones IPv6 que se utilizarán para cada nodo Echo a la lo interfaz (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Iniciar el servidor de eco en el fd00:0:1:1::1 dirección, asignándole un 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. Abrir una segunda ventana de terminal e inicie el cliente Echo en el fd00:0:1:1::2 direcciones IPv6 con un node-id de 2 y la dirección IPv6 del primer nodo como el destino para la solicitud 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. Después de una conexión con éxito, el nodo 1 registros de peticiones de eco desde el nodo 2 y el nodo 2 logs Respuestas eco del nodo 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
     

Eco con un dispositivo mock

weave-ping instancia un mock-device para el servidor y el cliente. La misma funcionalidad Echo se puede demostrar mediante el uso de mock-device en lugar de la primera weave-ping servidor Echo:

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