Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

أدوات OpenWeave

jinja-placeholder-0 /index.md "> عرض المصدر على جيثب

يتضمن OpenWeave مجموعة من أدوات سطر الأوامر لتكوين عمليات النشر OpenWeave وإدارتها واختبارها.

بناء أدوات نسج

يقوم هدف weave-tools بإنشاء أرشيف tar من أدوات سطر أوامر Weave المحددة للتوزيع. يتضمن الأدوات التالية:

أداة وصف موقع بناء مستقل
gen-qr-code إنشاء رمز الاستجابة السريعة /src/tools/misc
mock-device جهاز محاكاة نسج عام /src/test-apps
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 إرسال واستقبال الصدى الرسائل الشخصية /src/test-apps

لبناء الهدف:

  1. قم بتثبيت جميع المتطلبات الأساسية للبناء .
  2. تكوين OpenWeave بدون دعم BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. جعل هدف weave-tools :
     make weave-tools 
  4. تحقق openweave-core الدليل openweave-core لأرشيف tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

كود gen-qr

تتطلب أداة gen-qr-code وحدة Python qrcode . استخدم pip لتثبيته:

 pip install --user qrcode

استخدم gen-qr-code لإنشاء رمز 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. لحفظ رمز الاستجابة السريعة كصورة ، حدد ملف إخراج:
     ./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 (استرجاع):

 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$

استخدم سلسلة الإخراج هذه مع أداة gen-qr-code لإنشاء رمز QR.

فك تشفير

استخدام decode خيار فك عنصرا من سلسلة واصف الجهاز. يحتوي عنصر فك الترميز على بناء الجملة التالي:

1 + <device-descriptor-element> + $

على سبيل المثال ، لفك شفرة عنصر واصف جهاز W:5CF370800E77 :

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

نسج ضربات القلب

استخدم weave-heartbeat لإرسال واستقبال رسائل ملف التعريف نبض القلب بين عقدتين من نسج. يوفر نبض القلب وسيلة للإشارة إلى حيوية عقدة واحدة إلى العقد الأخرى في الشبكة ، أو للتحقق مما إذا كانت العقدة متصلة بالنسيج أم لا.

يتطلب نبض القلب الناجح عقدة واحدة لتكون بمثابة خادم (الاستماع إلى نبضات القلب والاستجابة لها) وعقدة واحدة لتكون بمثابة عميل (إرسال نبضات القلب).

اختبار أداة weave-heartbeat باستخدام واجهة الاسترجاع لمحاكاة عقدتين:

  1. أضف عناوين IPv6 ليتم استخدامها لكل عقدة Heartbeat إلى واجهة lo (استرجاع):
     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 لكل من الخادم والعميل. يمكن إظهار نفس وظيفة Heartbeat باستخدام mock-device بدلاً من أول خادم Heartbeat weave-heartbeat القلب:

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

نسج بينغ

استخدم weave-ping لإرسال رسائل Echo واستلامها بين عقدتين Weave. تتكون حمولة الصدى من بيانات عشوائية مقدمة من العقدة الطالبة ومن المتوقع أن يتم تكرارها حرفيا في الرد. يوفر Echo وسيلة لاختبار اتصال الشبكة ووقت الاستجابة.

يتطلب صدى ناجح عقدة واحدة لتكون بمثابة خادم (الاستماع لطلب الصدى والاستجابة له) وعقدة واحدة لتكون بمثابة عميل (إرسال طلب الصدى).

اختبار أداة weave-ping باستخدام واجهة الاسترجاع لمحاكاة عقدتين:

  1. أضف عناوين IPv6 ليتم استخدامها لكل عقدة صدى إلى واجهة lo (استرجاع):
     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 للعقدة الأولى كوجهة لطلب الصدى:

     ./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 بدلاً من أول خادم Echo weave-ping server:

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