在 GitHub 上查看來源 |
weave-device-mgr
(Weave Device Manager) 工具是 Weave 生態系統中的輔助裝置。它會管理裝置配對作業,包括網路和結構體的佈建作業。這項功能的功能類似於 Nest 應用程式在為 Nest 裝置進行佈建、配對及註冊至服務的角色。
weave-tools
版本包含 Weave Device Manager。在獨立應用程式版本中,則位於 /src/device-manager/python
。
執行
說明選單會在工具運作期間顯示。如要啟動 Weave Device Manager 並查看說明選單,請按照下列步驟操作:
./weave-device-mgr
help
連線至模擬裝置
Weave 裝置管理工具會提供輔助功能,因此您必須先將該功能連線至裝置。如要測試這項功能,請使用快樂模擬的拓樸,其中一個節點會執行模擬的 Weave 裝置,另一個則會執行裝置管理工具。
1. 建立快樂拓撲
在這個拓撲中,node01
會執行模擬裝置,而 node02
會執行裝置管理工具。開始前,請先安裝 Happy,並設定 Weave 支援。
安裝完成後,請建立簡單的快樂拓樸:
weave-state-load <path-to-openweave-core>/src/test-apps/happy/topologies/standalone/three_nodes_on_thread_weave.json
請查看「Happy and Weave」狀態,確認拓撲:
happy-state
State Name: happy
NETWORKS Name Type State Prefixes
Home thread UP 2001:0db8:0001:0002/64
NODES Name Interface Type IPs
node01 wpan0 thread fd00:0000:fab1:0006:1ab4:3000:0000:0004/64
2001:0db8:0001:0002:0200:00ff:fe00:0001/64
node02 wpan0 thread fd00:0000:fab1:0006:1ab4:3000:0000:0005/64
2001:0db8:0001:0002:0200:00ff:fe00:0002/64
node03 wpan0 thread 2001:0db8:0001:0002:0200:00ff:fe00:0003/64
fd00:0000:fab1:0006:1ab4:3000:0000:000a/64
weave-state
State Name: weave
NODES Name Weave Node Id Pairing Code
node01 18B4300000000004 AAA123
node02 18B4300000000005 AAA123
node03 18B430000000000A AAA123
FABRIC Fabric Id Global Prefix
fab1 fd00:0000:fab1::/48
2. 啟動模擬裝置
登入 node01
:
happy-shell node01
在 node01
中,使用該節點的 Weave IPv6 位址和有效的 Weave 配對碼,開啟模擬裝置。需要配對代碼才能在模擬裝置與裝置管理工具之間建立安全的 PASE 工作階段:
./mock-device --node-addr fd00:0:fab1:6:1ab4:3000:0:4 --pairing-code AB713H
WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:fab1:6:1ab4:3000:0:4]: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:fab1:6:1ab4:3000:0:4]:11095 (wpan0)
WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (wpan0)
WEAVE:ML: Listening on IPv6 multicast receive endpoint
WEAVE:EM: Cannot listen for BLE connections, null BleLayer
Weave Node Configuration:
Fabric Id: FAB1
Subnet Number: 6
Node Id: 18B4300000000004
WEAVE:SD: init()
Weave Node Configuration:
Fabric Id: FAB1
Subnet Number: 6
Node Id: 18B4300000000004
Listening Addresses:
fd00:0:fab1:6:1ab4:3000:0:4 (ipv6)
Pairing Server: fd00:0:fab1:6:1ab4:3000:0:4
Mock Time Sync is disabled and not initialized
Mock System Time Offset initialized to: -4.802583 sec
Listening for requests...
Weave Node ready to service events; PID: 41116; PPID: 40703
3. 啟動裝置管理工具
開啟新的終端機視窗,然後登入 node02
happy-shell node02
在 node02
中啟動裝置管理工具:
./weave-device-mgr
WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095
WEAVE:IN: IPV6_PKTINFO: 92
WEAVE:ML: Listening on general purpose IPv4 UDP endpoint
WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [::]:11095 ()
WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
WEAVE:ML: Adding wpan0 to interface table
WEAVE:ML: Binding IPv6 UDP interface endpoint to [fd00:0:fab1:6:1ab4:3000:0:5]:11095 (wpan0)
WEAVE:ML: Listening on IPv6 UDP interface endpoint
Weave Device Manager Shell
weave-device-mgr >
4. 連線至模擬裝置
在裝置管理工具 (node02
) 中,使用模擬裝置建立安全的 PASE 工作階段。使用 happy-state
和 weave-state
指令輸出的模擬裝置 Weave IPv6 位址和節點 ID,以及配對碼:
connect fd00:0:fab1:6:1ab4:3000:0:4 18B4300000000004 --pairing-code AB713H
WEAVE:DM: Initiating connection to device
WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095
WEAVE:IN: IPV6_PKTINFO: 92
WEAVE:ML: Listening on general purpose IPv4 UDP endpoint
WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [::]:11095 ()
WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
WEAVE:ML: Adding wpan0 to interface table
WEAVE:ML: Binding IPv6 UDP interface endpoint to [fd00:0:fab1:6:1ab4:3000:0:5]:11095 (wpan0)
WEAVE:ML: Listening on IPv6 UDP interface endpoint
WEAVE:EM: ec id: 1, AppState: 0x8d3777e0
WEAVE:DM: Sending IdentifyRequest to locate device
WEAVE:EM: Msg sent 0000000E:1 16 18B4300000000004 0000 986B 0 MsgId:23C64568
WEAVE:EM: Msg rcvd 0000000E:2 104 18B4300000000004 0000 986B 0 MsgId:8F1FC90B
WEAVE:DM: Received identify response from device 18B4300000000004 ([fd00:0:fab1:6:1ab4:3000:0:4]:11095%wpan0)
WEAVE:DM: Initiating weave connection to device 18B4300000000004 (fd00:0:fab1:6:1ab4:3000:0:4)
WEAVE:ML: Con start AFC0 18B4300000000004 0001
WEAVE:ML: TCP con start AFC0 fd00:0:fab1:6:1ab4:3000:0:4 11095
WEAVE:ML: TCP con complete AFC0 0
WEAVE:ML: Con complete AFC0
WEAVE:DM: Connected to device
WEAVE:DM: Initiating PASE session
WEAVE:EM: ec id: 1, AppState: 0x21da95c0
WEAVE:EM: Msg sent 00000004:1 296 18B4300000000004 AFC0 986C 0 MsgId:00000002
WEAVE:SM: StartSessionTimer
WEAVE:EM: Msg rcvd 00000004:2 284 18B4300000000004 AFC0 986C 0 MsgId:00000000
WEAVE:EM: Msg rcvd 00000004:3 144 18B4300000000004 AFC0 986C 0 MsgId:00000001
WEAVE:EM: Msg sent 00000004:4 176 18B4300000000004 AFC0 986C 0 MsgId:00000003
WEAVE:EM: Msg rcvd 00000004:5 32 18B4300000000004 AFC0 986C 0 MsgId:00000002
WEAVE:SM: CancelSessionTimer
WEAVE:DM: Secure session established
Connected to device.
weave-device-mgr (18B4300000000004 @ fd00:0:fab1:6:1ab4:3000:0:4) >
模擬裝置 (node01
) 的輸出內容,可確認連線成功:
WEAVE:EM: Msg rcvd 0000000E:1 16 0000000000000001 0000 986B 0 MsgId:23C64568 WEAVE:EM: ec id: 1, AppState: 0x3aadf480 IdentifyRequest received from node 1 (fd00:0:fab1:6:1ab4:3000:0:5) Target Fabric Id: FFFFFFFFFFFFFFFF Target Modes: 00000000 Target Vendor Id: FFFF Target Product Id: FFFF Sending IdentifyResponse WEAVE:EM: Msg sent 0000000E:2 104 0000000000000001 0000 986B 0 MsgId:8F1FC90B WEAVE:ML: Con rcvd 3960 fd00:0:fab1:6:1ab4:3000:0:5 38798 Connection received from node 18B4300000000005 (fd00:0:fab1:6:1ab4:3000:0:5) WEAVE:EM: Msg rcvd 00000004:1 296 0000000000000001 3960 986C 0 MsgId:00000002 WEAVE:EM: ec id: 1, AppState: 0x3aaf1f60 WEAVE:SM: StartSessionTimer WEAVE:EM: Msg sent 00000004:2 284 0000000000000001 3960 986C 0 MsgId:00000000 WEAVE:EM: Msg sent 00000004:3 144 0000000000000001 3960 986C 0 MsgId:00000001 WEAVE:EM: Msg rcvd 00000004:4 176 0000000000000001 3960 986C 0 MsgId:00000003 WEAVE:EM: Msg sent 00000004:5 32 0000000000000001 3960 986C 0 MsgId:00000002 WEAVE:ML: Message Encryption Key: Id=2C51 Type=SessionKey Peer=0000000000000001 EncType=01 Key=BB00C9BE96F188D7672255A2DC6AC14F,B0615B2BD5F97FC1B7AEC8C6FD59207D3B7CBFE6 WEAVE:SM: CancelSessionTimer Secure session established with node 1 (fd00:0:fab1:6:1ab4:3000:0:5) WEAVE:SM: Release session key: Id=2C51 Peer=0000000000000001 Reserve=0
5. 測試連線
從裝置管理工具 (node02
) 將 Weave Echo 要求傳送至模擬裝置,以便測試連線:
ping
WEAVE:DM: DataLength: 0, payload: 0, next: (nil)
WEAVE:EM: ec id: 1, AppState: 0x8d3777e0
WEAVE:EM: Msg sent 00000001:1 0 18B4300000000004 AFC0 986F 0 MsgId:00000000
WEAVE:EM: Msg rcvd 00000001:2 0 18B4300000000004 AFC0 986F 0 MsgId:00000000
Ping complete
模擬裝置 (node01
) 的輸出內容會確認 Echo 是否成功:
WEAVE:EM: Msg rcvd 00000001:1 0 0000000000000001 3960 986F 0 MsgId:00000000 WEAVE:EM: ec id: 1, AppState: 0x3aadfbb0 WEAVE:SM: Reserve session key: Id=2CFF Peer=0000000000000001 Reserve=1 Echo Request from node 1 (fd00:0:fab1:6:1ab4:3000:0:5): len=0 ... sending response. WEAVE:EM: Msg sent 00000001:2 0 0000000000000001 3960 986F 0 MsgId:00000000 WEAVE:SM: Release session key: Id=2CFF Peer=0000000000000001 Reserve=0
6. 與模擬裝置中斷連線
使用裝置管理工具中斷與模擬裝置的連線:
close
WEAVE:DM: Closing connection to device
WEAVE:ML: Con closed 8FC0 4002
WEAVE:ML: Removing session key: Id=2873 Peer=18B4300000000004
WEAVE:ML: Closing endpoints
weave-device-mgr >