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

ابزارهای OpenWeave

jinja-placeholder-0 /index.md "> مشاهده منبع در GitHub

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

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

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

ابزار شرح محل ساخت مستقل
gen-qr-code یک کد QR ایجاد کنید /src/tools/misc
mock-device شبیه ساز دستگاه بافی عمومی /src/test-apps
weave مجوزهای Weave تولید و مدیریت کنید /src/tools/weave
weave-device-descriptor رمزگذاری و رمزگشایی رشته های توصیف کننده دستگاه Weave برای جفت کردن کدهای 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. weave-tools هدف قرار دهید:
     make weave-tools 
  4. فهرست اصلی openweave-core برای بایگانی تار بررسی کنید:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

gen-qr-code

ابزار gen-qr-code به ماژول qrcode Python qrcode . برای نصب آن از pip استفاده کنید:

 pip install --user qrcode

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

  1. برای رشته QR یک پرونده ایجاد کنید:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. کد QR 64x64 از آن رشته ایجاد کنید:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. برای ذخیره کد QR به عنوان یک تصویر ، یک فایل خروجی را مشخص کنید:
     ./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 گره Weave عمومی را شبیه سازی می کند. ابزارهای دیگر و اسکریپت های مورد آزمون از این ابزار برای محاصره کردن عملکرد Weave استفاده می کنند. برای آزمایش قابلیت های بافت در یک توپولوژی شبیه سازی شده ، دستگاه های مسخره را بر روی گره های مبارک فوری قرار دهید.

به عنوان مثال ، برای راه اندازی دستگاه Weave mock در گوش دادن به آدرس IPv6 از fd00:0:1:1::1 ، ابتدا آن آدرس IPv6 را به رابط lo (loopback) اضافه کنید:

 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

ضربان قلب

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

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

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

  1. آدرس IPv6 را برای استفاده از هر گره ضربان قلب به رابط lo (loopback) اضافه کنید:
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. سرور Heartbeat را در fd00:0:1:1::1 کنید و node-id از آن را به 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. پنجره ترمینال دوم را باز کنید و مشتری Heartbeat را در fd00:0:1:1::2 آدرس IPv6 با node-id 2 و آدرس IPv6 گره اول به عنوان مقصد برای ضربان قلب شروع کنید:

     ./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. پس از اتصال موفقیت آمیز ، گره 2 ضربان قلب را به گره 1 ارسال می کند ، و گره 1 ضربان قلب دریافت شده از گره 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 یک mock-device برای سرور و مشتری ارائه می دهد. همان عملکرد ضربان قلب را می توان با استفاده mock-device به جای اولین سرور ضربان weave-heartbeat قلب نشان داد:

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

پارچه بافی

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

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

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

  1. آدرس IPv6 را برای استفاده در هر گره اکو به رابط lo (loopback) اضافه کنید:
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. سرور Echo را در fd00:0:1:1::1 کنید و یک node-id 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. پنجره ترمینال دوم را باز کنید و مشتری Echo را در fd00:0:1:1::2 آدرس IPv6 با node-id 2 و آدرس IPv6 گره اول به عنوان مقصد درخواست 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. پس از اتصال موفقیت آمیز ، گره 1 گزارش های مربوط به گره 2 را وارد می کند ، و گره 2 سیاهههای مربوط به پاسخ های گره 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 برای سرور و مشتری ارائه می دهد. همان عملکرد Echo را می توان با استفاده mock-device به جای اولین سرور اکو weave-ping :

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