مشاهده منبع در GitHub |
OpenWeave شامل مجموعه ای از ابزارهای خط فرمان برای پیکربندی، مدیریت و آزمایش استقرار OpenWeave است.
ابزار بافتنی بسازید
هدف Weave weave-tools
یک آرشیو تار از ابزارهای انتخابی خط فرمان Weave را برای توزیع ایجاد می کند. این شامل ابزارهای زیر است:
ابزار | شرح | محل ساخت مستقل |
---|---|---|
gen-qr-code | یک کد QR ایجاد کنید | /src/tools/misc |
mock-device | شبیه ساز دستگاه بافت عمومی | /src/test-apps |
weave | گواهیهای 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 | پیام های پروفایل Echo را ارسال و دریافت کنید | /src/test-apps |
برای ساختن هدف:
- همه پیش نیازهای ساخت را نصب کنید.
- OpenWeave را بدون پشتیبانی 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
از gen-qr-code
برای ایجاد یک کد QR برای اهداف جفت کردن دستگاه استفاده کنید. ورودی ابزار باید در یک فایل محلی باشد. به عنوان مثال، برای ایجاد یک کد QR که کاربر را به https://www.google.com می فرستد:
- یک فایل با رشته کد 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
سپس دستگاه 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 |
آدرس MAC 802.15.4 (Thread، 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 weave-heartbeat
Heartbeat برای ارسال و دریافت پیام های نمایه بین دو گره Weave استفاده کنید. ضربان قلب وسیله ای برای نشان دادن زنده بودن یک گره به گره های دیگر در شبکه یا بررسی اینکه آیا یک گره به فابریک متصل است یا خیر، فراهم می کند. Heartbeat
یک Heartbeat موفق به یک گره نیاز دارد که به عنوان یک سرور (گوش دادن و پاسخ دادن به ضربان قلب) و یک گره به عنوان مشتری (ارسال ضربان قلب) عمل کند.
ابزار weave-heartbeat
را با استفاده از رابط loopback برای تقلید از دو گره آزمایش کنید:
- آدرس های IPv6 مورد استفاده برای هر گره Heartbeat را به رابط
lo
(Loopback) اضافه کنید: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
ضربان قلب با دستگاه ساختگی
weave-heartbeat
یک mock-device
هم برای سرور و هم برای مشتری ایجاد می کند. همان عملکرد Heartbeat را می توان با استفاده mock-device
به جای اولین سرور weave-heartbeat
Heartbeat نشان داد:
./mock-device -a fd00:0:1:1::1
بافت پینگ
از weave-ping
برای ارسال و دریافت پیام های پروفایل Echo بین دو گره Weave استفاده کنید. یک بار Echo شامل داده های دلخواه است که توسط گره درخواست کننده ارائه می شود و انتظار می رود که در پاسخ به کلمه بازتاب داده شود. Echo وسیله ای برای آزمایش اتصال و تأخیر شبکه فراهم می کند.
یک Echo موفق به یک گره نیاز دارد تا به عنوان یک سرور (گوش دادن به درخواست اکو و پاسخ به آن) و یک گره به عنوان مشتری (ارسال درخواست اکو) عمل کند.
ابزار weave-ping
را با استفاده از رابط loopback برای تقلید از دو گره آزمایش کنید:
- آدرس های IPv6 مورد استفاده برای هر گره Echo را به رابط
lo
(Loopback) اضافه کنید: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
اکو با دستگاه ساختگی
weave-ping
یک mock-device
هم برای سرور و هم برای کلاینت معرفی می کند. همان عملکرد اکو را می توان با استفاده mock-device
به جای اولین سرور Echo- weave-ping
نشان داد:
./mock-device -a fd00:0:1:1::1