Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

OpenWeave Araçları

Kaynağı GitHub'da görüntüleyin

OpenWeave, OpenWeave dağıtımlarını yapılandırmak, yönetmek ve test etmek için bir dizi komut satırı aracı içerir.

Örgü araçları oluşturun

Weave weave-tools hedefi, dağıtım için seçilmiş Weave komut satırı araçlarından oluşan bir tar arşivi oluşturur. Aşağıdaki araçları içerir:

Araç Açıklama Bağımsız derleme konumu
gen-qr-code Bir QR kodu oluşturun /src/tools/misc
mock-device Generic Weave cihaz simülatörü /src/test-apps
weave Weave sertifikaları oluşturun ve yönetin /src/tools/weave
weave-device-descriptor QR kodlarını eşleştirmek için Weave cihaz tanımlayıcı dizelerini kodlayın ve kodunu çözün /src/test-apps
weave-device-mgr Cihaz eşleştirme sürecini yönetin /src/device-manager/python
weave-heartbeat Heartbeat profil mesajlarını gönderin ve alın /src/test-apps
weave-key-export Anahtar ihracat istekleri gönderin /src/test-apps
weave-ping Echo profil mesajlarını gönderin ve alın /src/test-apps

Hedefi oluşturmak için:

  1. Tüm derleme ön koşullarını yükleyin.
  2. OpenWeave'i BlueZ desteği olmadan yapılandırın:
    cd <path-to-openweave-core>
    ./configure --without-bluez
  3. Make the weave-tools target:
    make weave-tools
  4. Check the root openweave-core directory for the tar archive:
    ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

gen-qr-code

The gen-qr-code tool requires the Python qrcode module. Use pip to install it:

pip install --user qrcode

Cihaz eşleştirme amacıyla bir QR kodu oluşturmak için gen-qr-code kullanın. Aracın girdisi yerel bir dosyada bulunmalıdır. Örneğin, kullanıcıyı https://www.google.com adresine gönderen bir QR kodu oluşturmak için:

  1. QR kodu için dizeyle bir dosya oluşturun:
    echo "https://www.google.com" >> ~/ow_qrcode
  2. Generate a 64x64 QR code of that string:
    ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode
  3. To save the QR code as an image, specify an output file:
    ./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

The mock-device tool simulates a generic Weave node. Other tools and test case scripts use this tool to encapsulate Weave functionality. Instantiate mock devices on individual Happy nodes to test Weave functionality in a simulated topology.

For example, to start a Weave mock device listening on an IPv6 address of fd00:0:1:1::1, first add that IPv6 address to the lo (loopback) interface:

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

Ardından Weave sahte cihazını başlatın:

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

Tüm mevcut yapılandırma seçeneklerini görüntülemek için --help bayrağını kullanın.

örgü-aygıt-tanımlayıcı

weave-device-descriptor aracı, bir cihaz tanımlayıcı dizesini kodlar veya kodunu çözer. Bu diziler, Weave eşleştirme QR koduna kodlanmış bir cihaz için tanımlama bilgilerini içerir. Daha fazla bilgi için encode veya decode seçenekleriyle birlikte --help bayrağını kullanın.

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

kodlamak

Örneğin, bir cihaz tanımlayıcı dizesini aşağıdaki tanımlayıcı bilgilerle kodlamak için uygun bayrakları ve değerleri kullanın:

Alan Bayrak Değer
Satıcı kimliği -V 1
ürün kimliği -p 1
Ürün Revizyon Numarası -r 2
Seri numarası -s 18B4300000000004
Üretim tarihi -m 2018/05/02
802.15.4 MAC Adresi (Konu, BLE) -8 000D6F000DA80466
Eşleştirme Kodu -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$

QR kodunu oluşturmak için bu çıktı dizesini gen-qr-code aracıyla kullanın.

deşifre etmek

Bir aygıt tanımlayıcı dizesinin bir öğesinin kodunu decode için kod decode seçeneğini kullanın. Çözülecek öğe aşağıdaki sözdizimine sahiptir:

1 + <device-descriptor-element> + $

Örneğin, W:5CF370800E77 cihaz tanımlayıcı öğesinin kodunu çözmek için:

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

örgü kalp atışı

Kalp atışı profil mesajlarını iki Weave düğümü arasında gönderip almak için weave-heartbeat kullanın. Heartbeat, bir düğümün canlılığını ağdaki diğer düğümlere göstermek veya bir düğümün yapıya bağlı kalıp kalmadığını kontrol etmek için bir araç sağlar.

Başarılı bir Kalp Atışı, bir düğümün sunucu olarak hareket etmesini (Kalp Atışını dinleyen ve yanıtlayan) ve istemci olarak davranan (Kalp Atışını gönderen) bir düğüm gerektirir.

İki düğümü taklit etmek için geri döngü arayüzünü kullanarak weave-heartbeat aracını test edin:

  1. lo (geridöngü) arayüzüne her Kalp Atışı düğümü için kullanılacak IPv6 adreslerini ekleyin:
    sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64
  2. Start the Heartbeat server on the fd00:0:1:1::1 address and assign it a node-id of 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. Open a second terminal window and start the Heartbeat client on the fd00:0:1:1::2 IPv6 address with a node-id of 2 and the first node's IPv6 address as the destination for the 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: Binding0: 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: Binding0: Configuring
        WEAVE:EM: Binding0: Preparing
        WEAVE:EM: Binding0: Ready, peer 1 ([fd00:0:1:1::1]:11095) via UDP

  4. After a successful connection, node 2 sends Heartbeats to node 1, and node 1 logs Heartbeats received from node 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
    

Sahte bir cihazla kalp atışı

weave-heartbeat , hem sunucu hem de istemci için bir mock-device başlatır. Aynı Kalp Atışı işlevselliği, ilk weave-heartbeat atışı sunucusu yerine mock-device kullanılarak gösterilebilir:

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

örgü-ping

Echo profil mesajlarını iki Weave düğümü arasında gönderip almak için weave-ping kullanın. Bir Yankı yükü, talep eden düğüm tarafından sağlanan rastgele verilerden oluşur ve yanıtta aynen geri yankılanması beklenir. Echo, ağ bağlantısını ve gecikmeyi test etmek için bir yol sağlar.

Başarılı bir Yankı, bir düğümün sunucu olarak hareket etmesini (Yankı isteğini dinleyip yanıtlamasını) ve bir düğümün istemci olarak çalışmasını (Yankı isteğini göndermesini) gerektirir.

İki düğümü taklit etmek için geri döngü arayüzünü kullanarak weave-ping aracını test edin:

  1. lo (geridöngü) arayüzüne her Echo düğümü için kullanılacak IPv6 adreslerini ekleyin:
    sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64
  2. Start the Echo server on the fd00:0:1:1::1 address, assigning it a node-id of 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. Open a second terminal window and start the Echo client on the fd00:0:1:1::2 IPv6 address with a node-id of 2 and the first node's IPv6 address as the destination for the Echo request:

    ./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. After a successful connection, node 1 logs Echo Requests from node 2, and node 2 logs Echo Responses from node 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
    

Sahte bir cihazla yankı

weave-ping , hem sunucu hem de istemci için bir mock-device başlatır. Aynı Echo işlevselliği, ilk weave-ping Echo sunucusu yerine mock-device kullanılarak gösterilebilir:

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