Google is committed to advancing racial equity for Black communities. See how.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Công cụ OpenWeave

jinja-giữ chỗ-0 /index.md "> Xem nguồn trên GitHub

OpenWeave bao gồm một tập hợp các công cụ dòng lệnh để cấu hình, quản lý và kiểm tra các triển khai OpenWeave.

Xây dựng công cụ dệt

Mục tiêu weave-tools xây dựng một kho lưu trữ tar của các công cụ dòng lệnh Chọn để phân phối. Nó bao gồm các công cụ sau:

Dụng cụ Sự miêu tả Vị trí xây dựng độc lập
gen-qr-code Tạo mã QR /src/tools/misc
mock-device Trình giả lập thiết bị dệt chung /src/test-apps
weave Tạo và quản lý chứng chỉ Dệt /src/tools/weave
weave-device-descriptor Mã hóa và giải mã Chuỗi mô tả thiết bị dệt để ghép mã QR /src/test-apps
weave-device-mgr Quản lý quá trình ghép nối thiết bị /src/device-manager/python
weave-heartbeat Gửi và nhận tin nhắn hồ sơ Heartbeat /src/test-apps
weave-key-export Gửi yêu cầu xuất chính /src/test-apps
weave-ping Gửi và nhận Echo tin nhắn hồ sơ /src/test-apps

Để xây dựng mục tiêu:

  1. Cài đặt tất cả các điều kiện tiên quyết xây dựng .
  2. Định cấu hình OpenWeave mà không cần hỗ trợ BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Đặt mục tiêu weave-tools :
     make weave-tools 
  4. Kiểm tra thư mục gốc openweave-core cho kho lưu trữ tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

mã gen-qr

Công cụ gen-qr-code yêu cầu mô-đun qrcode Python. Sử dụng pip để cài đặt nó:

 pip install --user qrcode

Sử dụng mã gen-qr-code để tạo mã QR cho mục đích ghép nối thiết bị. Đầu vào cho công cụ phải nằm trong một tệp cục bộ. Ví dụ: để tạo mã QR gửi người dùng đến https://www.google.com :

  1. Tạo một tệp với chuỗi cho mã QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Tạo mã QR 64x64 của chuỗi đó:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Để lưu mã QR dưới dạng hình ảnh, chỉ định tệp đầu ra:
     ./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.

thiết bị giả

Công cụ mock-device mô phỏng một nút Dệt chung. Các công cụ và tập lệnh trường hợp thử nghiệm khác sử dụng công cụ này để đóng gói chức năng Dệt. Khởi tạo các thiết bị giả trên các nút Happy riêng lẻ để kiểm tra chức năng Dệt trong cấu trúc liên kết mô phỏng.

Ví dụ: để khởi động thiết bị mô phỏng kiểu dệt nghe trên địa chỉ IPv6 là fd00:0:1:1::1 , trước tiên hãy thêm địa chỉ IPv6 đó vào giao diện lo (loopback):

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

Sau đó khởi động thiết bị Dệt giả:

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

Sử dụng cờ --help để xem tất cả các tùy chọn cấu hình có sẵn.

thiết bị dệt-mô tả

Công cụ weave-device-descriptor mã hóa hoặc giải mã chuỗi mô tả thiết bị. Các chuỗi này chứa thông tin nhận dạng cho một thiết bị được mã hóa thành mã QR ghép nối của nó. Sử dụng cờ --help với các tùy chọn encode hoặc decode để biết thêm thông tin.

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

mã hóa

Ví dụ: để mã hóa chuỗi mô tả thiết bị với thông tin nhận dạng sau, hãy sử dụng các cờ và giá trị phù hợp:

Cánh đồng Cờ Giá trị
Nhà cung cấp dữ liệu thông tin -V 1
ID sản phẩm -p 1
Số sửa đổi sản phẩm -r 2
Số sê-ri -s 18B4300000000004
Ngày sản xuất -m 2018/05/02
Địa chỉ MAC 802.15.4 (Chủ đề, BLE) -8 000D6F000DA80466
Mã ghép -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$

Sử dụng chuỗi đầu ra này với công cụ gen-qr-code để tạo mã QR.

giải mã

Sử dụng tùy chọn decode để giải mã một phần tử của chuỗi mô tả thiết bị. Phần tử để giải mã có cú pháp sau:

1 + <device-descriptor-element> + $

Ví dụ: để giải mã phần tử mô tả thiết bị W:5CF370800E77 :

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

nhịp tim

Sử dụng kiểu weave-heartbeat để gửi và nhận tin nhắn hồ sơ Heartbeat giữa hai nút Dệt. Heartbeat cung cấp một phương tiện để biểu thị mức độ sống của một nút đối với các nút khác trong mạng hoặc để kiểm tra xem một nút có được kết nối với kết cấu không.

Một Heartbeat thành công đòi hỏi một nút để hoạt động như một máy chủ (lắng nghe và phản hồi với Heartbeat) và một nút để hoạt động như một máy khách (gửi Heartbeat).

Kiểm tra công cụ weave-heartbeat bằng giao diện loopback để bắt chước hai nút:

  1. Thêm địa chỉ IPv6 sẽ được sử dụng cho mỗi nút Heartbeat vào giao diện lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Khởi động máy chủ Heartbeat trên địa chỉ fd00:0:1:1::1 và gán cho nó một node-id là 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. Mở cửa sổ đầu cuối thứ hai và khởi động ứng dụng khách Heartbeat trên địa chỉ IPv6 fd00:0:1:1::2 với node-id là 2 và địa chỉ IPv6 của nút đầu tiên làm đích cho 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. Sau khi kết nối thành công, nút 2 sẽ gửi Heartbeats đến nút 1 và nút 1 ghi nhật ký Heartbeats nhận được từ nút 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
     

Nhịp tim với một thiết bị giả

weave-heartbeat một mock-device cho cả máy chủ và máy khách. Chức năng Heartbeat tương tự có thể được thể hiện bằng cách sử dụng mock-device thay cho máy chủ Heartbeat weave-heartbeat đầu tiên:

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

dệt-ping

Sử dụng Weave weave-ping để gửi và nhận thông báo hồ sơ Echo giữa hai nút Dệt. Một tải trọng Echo bao gồm dữ liệu tùy ý được cung cấp bởi nút yêu cầu và dự kiến ​​sẽ được lặp lại nguyên văn trong phản hồi. Echo cung cấp một phương tiện để kiểm tra kết nối mạng và độ trễ.

Một Echo thành công yêu cầu một nút để hoạt động như một máy chủ (lắng nghe và phản hồi yêu cầu Echo) và một nút để hoạt động như một máy khách (gửi yêu cầu Echo).

Kiểm tra công cụ weave-ping bằng giao diện loopback để bắt chước hai nút:

  1. Thêm các địa chỉ IPv6 được sử dụng cho mỗi nút Echo vào giao diện lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Khởi động máy chủ Echo trên địa chỉ fd00:0:1:1::1 , gán cho nó một node-id là 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. Mở cửa sổ đầu cuối thứ hai và khởi động ứng dụng khách Echo trên địa chỉ IPv6 fd00:0:1:1::2 với node-id là 2 và địa chỉ IPv6 của nút đầu tiên làm đích cho yêu cầu 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. Sau khi kết nối thành công, nút 1 ghi lại các yêu cầu Echo từ nút 2 và nút 2 ghi lại các phản hồi Echo từ nút 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 với một thiết bị giả

weave-ping khởi tạo một mock-device cho cả máy chủ và máy khách. Chức năng Echo tương tự có thể được thể hiện bằng cách sử dụng mock-device thay cho máy chủ Echo weave-ping đầu tiên:

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