![]() |
OpenWeave menyertakan seperangkat alat baris perintah untuk mengonfigurasi, mengelola, dan menguji penerapan OpenWeave.
Bangun alat tenun
The weave-tools
sasaran membangun arsip tar alat baris perintah Weave pilih untuk distribusi. Ini termasuk alat-alat berikut:
Alat | Deskripsi | Standalone membangun lokasi |
---|---|---|
gen-qr-code | Buat kode QR | /src/tools/misc |
mock-device | Simulator perangkat Weave Generik | /src/test-apps |
weave | Hasilkan dan kelola sertifikat Weave | /src/tools/weave |
weave-device-descriptor | Encode dan decode Menenun string deskriptor perangkat untuk memasangkan kode QR | /src/test-apps |
weave-device-mgr | Kelola proses pemasangan perangkat | /src/device-manager/python |
weave-heartbeat | Mengirim dan menerima Heartbeat pesan profil | /src/test-apps |
weave-key-export | Kirim permintaan ekspor utama | /src/test-apps |
weave-ping | Mengirim dan menerima Echo pesan profil | /src/test-apps |
Untuk membangun sasaran:
- Instal semua membangun prasyarat .
- Konfigurasi OpenWeave tanpa dukungan BlueZ:
cd <path-to-openweave-core>
./configure --without-bluez
- Make the
weave-tools
target:make weave-tools
- 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
Gunakan gen-qr-code
untuk menghasilkan kode QR untuk tujuan perangkat pasangan. Input untuk alat harus berada di file lokal. Misalnya, untuk menghasilkan kode QR yang mengirimkan pengguna untuk https://www.google.com :
- Buat file dengan string untuk kode QR:
echo "https://www.google.com" >> ~/ow_qrcode
- Generate a 64x64 QR code of that string:
./gen-qr-code -v 1 -s 64 < ~/ow_qrcode
- 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 theweave-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
Kemudian mulai perangkat tiruan Weave:
./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
Gunakan --help
bendera untuk melihat semua opsi konfigurasi yang tersedia.
menenun-perangkat-deskriptor
The weave-device-descriptor
mengkodekan alat atau decode perangkat deskriptor tali. String ini berisi informasi pengenal untuk perangkat yang dikodekan ke dalam kode QR pasangan Weave-nya. Gunakan --help
bendera dengan encode
atau decode
pilihan untuk informasi lebih lanjut.
./weave-device-descriptor encode --help
./weave-device-descriptor decode --help
menyandi
Misalnya, untuk menyandikan string deskriptor perangkat dengan informasi pengenal berikut, gunakan tanda dan nilai yang sesuai:
Bidang | Bendera | Nilai |
---|---|---|
ID Penjual | -V | 1 |
ID Produk | -p | 1 |
Nomor Revisi Produk | -r | 2 |
Nomor seri | -s | 18B4300000000004 |
Tanggal pembuatan | -m | 2018/05/02 |
802.15.4 Alamat MAC (Utas, BLE) | -8 | 000D6F000DA80466 |
Kode Penyandingan | -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$
Menggunakan output string ini dengan gen-qr-code
alat untuk menghasilkan kode QR.
membaca sandi
Gunakan decode
pilihan untuk memecahkan kode unsur string perangkat deskriptor. Elemen yang akan didekode memiliki sintaks berikut:
1 + <device-descriptor-element> + $
Misalnya, untuk memecahkan kode W:5CF370800E77
perangkat descriptor elemen:
./weave-device-descriptor decode 1W:5CF370800E77$
Primary WiFi MAC: 5C:F3:70:80:0E:77
menenun-detak jantung
Gunakan weave-heartbeat
untuk mengirim dan menerima Heartbeat pesan profil antara dua node Weave. Detak jantung menyediakan sarana untuk menunjukkan keaktifan satu node ke node lain dalam jaringan, atau untuk memeriksa apakah sebuah node tetap terhubung ke fabric.
Detak Jantung yang sukses membutuhkan satu node untuk bertindak sebagai server (mendengarkan dan menanggapi Detak Jantung) dan satu node untuk bertindak sebagai klien (mengirim Detak Jantung).
Uji weave-heartbeat
alat menggunakan antarmuka loopback untuk meniru dua node:
- Tambahkan alamat IPv6 yang akan digunakan untuk setiap node Heartbeat ke
lo
(loopback) antarmuka:sudo ifconfig lo add fd00:0:1:1::1/64
sudo ifconfig lo add fd00:0:1:1::2/64
Start the Heartbeat server on the
fd00:0:1:1::1
address and assign it anode-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: 170418Open a second terminal window and start the Heartbeat client on the
fd00:0:1:1::2
IPv6 address with anode-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 UDPAfter 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
Detak jantung dengan perangkat tiruan
weave-heartbeat
instantiates mock-device
untuk server dan client. Fungsi Heartbeat yang sama dapat ditunjukkan dengan menggunakan mock-device
di tempat pertama weave-heartbeat
Heartbeat Server:
./mock-device -a fd00:0:1:1::1
menenun
Gunakan weave-ping
untuk mengirim dan menerima Echo pesan profil antara dua node Weave. Payload Echo terdiri dari data arbitrer yang disediakan oleh node yang meminta dan diharapkan digaungkan kembali kata demi kata dalam respons. Echo menyediakan sarana untuk menguji konektivitas jaringan dan latensi.
Echo yang berhasil membutuhkan satu node untuk bertindak sebagai server (mendengarkan dan menanggapi permintaan Echo) dan satu node untuk bertindak sebagai klien (mengirim permintaan Echo).
Uji weave-ping
tool menggunakan antarmuka loopback untuk meniru dua node:
- Tambahkan alamat IPv6 yang akan digunakan untuk setiap node Echo ke
lo
(loopback) antarmuka:sudo ifconfig lo add fd00:0:1:1::1/64
sudo ifconfig lo add fd00:0:1:1::2/64
Start the Echo server on the
fd00:0:1:1::1
address, assigning it anode-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...Open a second terminal window and start the Echo client on the
fd00:0:1:1::2
IPv6 address with anode-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)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
Gema dengan perangkat tiruan
weave-ping
instantiates mock-device
untuk server dan client. Fungsi Echo yang sama dapat ditunjukkan dengan menggunakan mock-device
di tempat pertama weave-ping
Echo Server:
./mock-device -a fd00:0:1:1::1