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 लक्ष्य वितरण के लिए चुनिंदा बुन कमांड लाइन उपकरण का एक टार संग्रह बनाता है। इसमें निम्नलिखित उपकरण शामिल हैं:

साधन विवरण स्टैंडअलोन बिल्ड लोकेशन
gen-qr-code एक QR कोड जनरेट करें /src/tools/misc
mock-device जेनेरिक वेव डिवाइस सिम्युलेटर /src/test-apps
weave बुनें प्रमाणपत्रों को बनाएं और प्रबंधित करें /src/tools/weave
weave-device-descriptor सांकेतिक शब्दों में बदलना और क्यूआर कोड बाँधने के लिए डिवाइस डिस्क्रिप्टर तार बुनें /src/test-apps
weave-device-mgr डिवाइस युग्मन प्रक्रिया को प्रबंधित करें /src/device-manager/python
weave-heartbeat हार्टबीट प्रोफ़ाइल संदेश भेजें और प्राप्त करें /src/test-apps
weave-key-export मुख्य निर्यात अनुरोध भेजें /src/test-apps
weave-ping इको प्रोफाइल संदेश भेजें और प्राप्त करें /src/test-apps

लक्ष्य बनाने के लिए:

  1. सभी बिल्ड पूर्वापेक्षाएँ स्थापित करें।
  2. BlueZ समर्थन के बिना OpenWeave कॉन्फ़िगर करें:
     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

जनरल-qr-कोड

gen-qr-code उपकरण के लिए पायथन qrcode मॉड्यूल की आवश्यकता होती है। इसे स्थापित करने के लिए pip का उपयोग करें:

 pip install --user qrcode

डिवाइस युग्मन उद्देश्यों के लिए क्यूआर कोड उत्पन्न करने gen-qr-code लिए gen-qr-code का उपयोग करें। टूल के लिए इनपुट को स्थानीय फ़ाइल में रहना चाहिए। उदाहरण के लिए, https://www.google.com पर उपयोगकर्ता को भेजने वाला एक QR कोड उत्पन्न करने के लिए:

  1. QR कोड के लिए स्ट्रिंग के साथ एक फ़ाइल बनाएँ:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. उस स्ट्रिंग का 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 टूल एक जेनेरिक वेव नोड का अनुकरण करता है। अन्य उपकरण और परीक्षण केस स्क्रिप्ट्स इस उपकरण का उपयोग बुन की कार्यक्षमता को छोटा करने के लिए करते हैं। एक नकली टोपोलॉजी में बुनाई की कार्यक्षमता का परीक्षण करने के लिए अलग-अलग हैप्पी नोड्स पर त्वरित मॉक डिवाइस।

उदाहरण के लिए, एक fd00:0:1:1::1 IPv6 पते पर सुनने वाले fd00:0:1:1::1 मॉक डिवाइस को शुरू करने के लिए fd00:0:1:1::1 , पहले उस आईपीवी 6 एड्रेस को lo (लूपबैक) इंटरफेस में जोड़ें:

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

फिर बुन मॉक डिवाइस शुरू करें:

 ./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 टूल एक डिवाइस डिस्क्रिप्टर स्ट्रिंग को एन्कोड या डिकोड करता है। इन स्ट्रिंग्स में एक डिवाइस के लिए जानकारी की पहचान करना शामिल है जो कि वीवे पेयरिंग क्यूआर कोड में एन्कोडेड है। अधिक जानकारी के लिए encode या decode विकल्पों के साथ --help ध्वज का उपयोग करें।

 ./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 मैक एड्रेस (थ्रेड, 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 टूल के साथ इस आउटपुट स्ट्रिंग का उपयोग करें।

व्याख्या करना

डिवाइस डिस्क्रिप्टर स्ट्रिंग के एक तत्व को decode करने के लिए 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 एड्रेस को lo (लूपबैक) इंटरफ़ेस में जोड़ें:
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. fd00:0:1:1::1 पर हार्टबीट सर्वर शुरू करें fd00:0:1:1::1 पता और इसे 1 का node-id असाइन करें:

     ./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. एक दूसरा टर्मिनल विंडो खोलें और हार्टबीट क्लाइंट को fd00:0:1:1::2 पर शुरू करें fd00:0:1:1::2 node-id के साथ आईपीवी 6 एड्रेस और हार्टबीट के लिए गंतव्य के रूप में पहला नोड का आईपीवी 6 एड्रेस:

     ./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 धड़कन के weave-heartbeat धड़कन सर्वर के स्थान पर mock-device का उपयोग करके उसी दिल की धड़कन की कार्यक्षमता का प्रदर्शन किया जा सकता है:

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

बुनाई-पिंग

दो बुनें नोड्स के बीच इको प्रोफाइल संदेश भेजने और प्राप्त करने के लिए weave-ping का उपयोग करें। एक इको पेलोड में अनुरोधित नोड द्वारा आपूर्ति की गई मनमाना डेटा शामिल होता है और प्रतिक्रिया में वापस शब्दशः प्रतिध्वनित होने की उम्मीद की जाती है। इको नेटवर्क कनेक्टिविटी और विलंबता का परीक्षण करने का एक साधन प्रदान करता है।

एक सफल इको के लिए सर्वर के रूप में कार्य करने के लिए एक नोड की आवश्यकता होती है (इको अनुरोध के लिए सुनना और जवाब देना) और एक नोड को क्लाइंट के रूप में कार्य करने के लिए (इको अनुरोध भेजना)।

दो नोड्स की नकल करने के लिए लूपबैक इंटरफ़ेस का उपयोग करके weave-ping टूल का परीक्षण करें:

  1. lo (लूपबैक) इंटरफ़ेस के लिए प्रत्येक इको नोड के लिए उपयोग किए जाने वाले IPv6 पतों को जोड़ें:
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. fd00:0:1:1::1 पर इको सर्वर शुरू करें fd00:0:1:1::1 पता, इसे 1 का node-id निर्दिष्ट करते हुए:

     ./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. दूसरा टर्मिनल विंडो खोलें और fd00:0:1:1::2 पर इको क्लाइंट शुरू करें fd00:0:1:1::2 node-id के साथ आईपीवी 6 पता और इको अनुरोध के लिए गंतव्य के रूप में पहला नोड का आईपीवी 6 पता:

     ./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 को mock-device करता है। पहले weave-ping इको सर्वर के स्थान पर mock-device का उपयोग करके समान इको कार्यक्षमता का प्रदर्शन किया जा सकता है:

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