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 대상은 배포 할 select Weave 명령 행 도구의 tar 아카이브를 빌드합니다. 다음과 같은 도구가 포함되어 있습니다.

수단 기술 독립형 빌드 위치
gen-qr-code QR 코드 생성 /src/tools/misc
mock-device 일반 직조 장치 시뮬레이터 /src/test-apps
weave 직조 인증서 생성 및 관리 /src/tools/weave
weave-device-descriptor QR 코드 페어링을위한 Weave 장치 설명자 문자열 인코딩 및 디코딩 /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. tar 아카이브에 대한 루트 openweave-core 디렉토리를 확인하십시오.
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

겐 QR 코드

gen-qr-code 도구에는 Python qrcode 모듈이 필요합니다. pip 를 사용하여 설치하십시오.

 pip install --user qrcode

gen-qr-code 를 사용하여 장치 페어링 목적으로 QR 코드를 생성하십시오. 도구의 입력은 로컬 파일에 있어야합니다. 예를 들어 https://www.google.com으로 사용자를 보내는 QR 코드를 생성 하려면 다음을 수행 하십시오 .

  1. QR 코드에 대한 문자열로 파일을 작성하십시오.
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. 해당 문자열의 64x64 QR 코드를 생성하십시오.
     ./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 도구는 일반 직조 노드를 시뮬레이션합니다. 다른 도구 및 테스트 케이스 스크립트는이 도구를 사용하여 직조 기능을 캡슐화합니다. 개별 해피 노드에서 모의 ​​디바이스를 인스턴스화하여 시뮬레이션 된 토폴로지에서 위브 기능을 테스트하십시오.

예를 들어, IPv6 주소 fd00:0:1:1::1 에서 청취하는 위브 모의 디바이스를 시작하려면 먼저 해당 IPv6 주소를 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 도구는 장치 설명자 문자열을 인코딩하거나 디코딩합니다. 이 문자열에는 Weave 페어링 QR 코드로 인코딩 된 디바이스에 대한 식별 정보가 포함되어 있습니다. 자세한 내용은 --help 플래그를 인 encode 또는 decode 옵션과 함께 사용하십시오.

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

인코딩

예를 들어, 다음 식별 정보로 장치 설명자 문자열을 인코딩하려면 적절한 플래그와 값을 사용하십시오.

깃발
공급 업체 ID -V 1
제품 ID -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 장치 디스크립터 요소를 디코딩하려면 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::1node-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 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 를 인스턴스화합니다. 첫 번째 weave-heartbeat 비트 weave-heartbeat 비트 서버 대신 mock-device 를 사용하여 동일한 하트 비트 기능을 시연 할 수 있습니다.

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

직조 핑

weave-ping 사용하여 두 개의 직조 노드간에 에코 _ 이더넷 프로파일 메시지를 보내고받습니다. 에코 페이로드는 요청 노드에서 제공 한 임의의 데이터로 구성되며 응답에서 그대로 다시 에코됩니다. Echo는 네트워크 연결 및 대기 시간을 테스트하는 수단을 제공합니다.

성공적인 에코 (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. fd00:0:1:1::1 주소에서 Echo 서버를 시작하여 fd00:0:1:1::1node-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 IPv6 주소에서 node-id 가 2이고 첫 번째 노드의 IPv6 주소가 Echo 요청의 fd00:0:1:1::2 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 를 인스턴스화합니다. 첫 번째 weave-ping 에코 서버 대신 mock-device 를 사용하여 동일한 에코 기능을 시연 할 수 있습니다.

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