Google is committed to advancing racial equity for Black communities. See how.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

ابزار OpenWeave

مشاهده منبع در GitHub

OpenWeave شامل مجموعه ای از ابزارهای خط فرمان برای پیکربندی ، مدیریت و آزمایش استقرارهای OpenWeave است.

ابزارهای بافت بسازید

هدف weave-tools بایگانی تار از ابزارهای خط فرمان Weave را برای توزیع انتخاب می کند. این شامل ابزارهای زیر است:

ابزار شرح مکان ساخت مستقل
gen-qr-code کد QR ایجاد کنید /src/tools/misc
mock-device شبیه ساز دستگاه عمومی Weave /src/test-apps
weave ایجاد و مدیریت گواهینامه های Weave /src/tools/weave
weave-device-descriptor برای جفت شدن کدهای QR رشته های توصیفی دستگاه را ببندید و رمزگشایی کنید /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. OpenWeave را بدون پشتیبانی BlueZ پیکربندی کنید:
    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

برای تولید کد QR برای اهداف جفت شدن دستگاه ، gen-qr-code استفاده کنید. ورودی ابزار باید در یک فایل محلی قرار داشته باشد. به عنوان مثال ، برای تولید یک کد QR که کاربر را به https://www.google.com ارسال می کند :

  1. برای کد QR پرونده ای با رشته ایجاد کنید:
    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

سپس دستگاه Weave mock را راه اندازی کنید:

./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 یک رشته توصیف کننده دستگاه را رمزگذاری یا رمزگشایی می کند. این رشته ها حاوی اطلاعات شناسایی دستگاهی هستند که در کد QR مرتبط سازی Weave آن رمزگذاری شده اند. برای اطلاعات بیشتر از پرچم --help همراه گزینه های encode یا decode استفاده کنید.

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

رمزگذاری

به عنوان مثال ، برای رمزگذاری رشته توصیفگر دستگاه با اطلاعات شناسایی زیر ، از پرچم ها و مقادیر مناسب استفاده کنید:

رشته پرچم ارزش
شناسه فروشنده -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$

برای تولید کد QR از این رشته خروجی با ابزار gen-qr-code استفاده کنید.

رمزگشایی

از گزینه decode برای رمزگشایی عنصری از رشته توصیف کننده دستگاه استفاده کنید. عنصر رمزگشایی دارای نحو زیر است:

1 + <device-descriptor-element> + $

به عنوان مثال ، برای رمزگشایی عنصر توصیف کننده دستگاه W:5CF370800E77 :

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

بافتن ضربان قلب

برای ارسال و دریافت پیام های نمایه Heartbeat بین دو گره Weave weave-heartbeat استفاده کنید. ضربان قلب وسیله ای را برای نشان دادن زنده بودن یک گره به گره های دیگر شبکه یا بررسی اینکه یک گره به پارچه متصل است باقی می گذارد.

یک ضربان قلب موفق به یک گره نیاز دارد تا به عنوان یک سرور (گوش دادن به قلب او و پاسخ دادن به آن) عمل کند و یک گره نیز به عنوان مشتری (ارسال ضربان قلب) عمل کند.

ابزار weave-heartbeat با استفاده از رابط loopback برای تقلید از دو گره آزمایش کنید:

  1. آدرس های IPv6 مورد استفاده برای هر گره Heartbeat را به رابط lo (loopback) اضافه کنید:
    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
    

ضربان قلب با دستگاه مسخره

weave-heartbeat heartbe یک نمونه mock-device برای سرور و سرویس گیرنده به وجود می آورد. عملکرد مشابه ضربان قلب را می توان با استفاده mock-device به جای اولین سرور ضربان weave-heartbeat :

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

پینگ ببافید

برای ارسال و دریافت پیام های پروفایل Echo بین دو گره Weave از weave-ping استفاده کنید. محموله Echo شامل داده های دلخواهی است که توسط گره درخواست کننده ارائه می شود و انتظار می رود در پاسخ به صورت لفظی تکرار شود. اکو ابزاری را برای آزمایش اتصال و تأخیر شبکه فراهم می کند.

یک اکو موفق نیاز به یک گره دارد که به عنوان سرور عمل کند (به درخواست Echo گوش فرا می دهد و به آن پاسخ می دهد) و یک گره برای ایفای نقش مشتری (ارسال درخواست Echo) نیاز دارد.

ابزار weave-ping با استفاده از رابط loopback برای تقلید از دو گره آزمایش کنید:

  1. آدرس های IPv6 مورد استفاده برای هر گره Echo را به رابط lo (loopback) اضافه کنید:
    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
    

با دستگاه ساختگی اکو کنید

weave-ping یک mock-device هم برای سرور و هم برای کلاینت ایجاد می کند. با استفاده mock-device به جای اولین سرور اکو weave-ping می توان عملکرد مشابه اکو را نشان داد:

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