在 GitHub 上查看源代码 |
weave-device-mgr
(Weave 设备管理器)工具在 Weave 生态系统中充当辅助设备。它管理设备配对,包括网络和 Fabric 预配。它提供的功能类似于 Nest 应用在预配、配对和将 Nest 设备注册到服务中所发挥的作用。
Weave 设备管理器包含在 weave-tools
build 中。在独立应用 build 中,它位于 /src/device-manager/python
下。
运行
在工具运行期间,可以使用帮助菜单。如需启动 Weave Device Manager 并查看帮助菜单,请执行以下操作:
./weave-device-mgr
help
连接到模拟设备
由于 Weave 设备管理器提供辅助功能,因此您必须先将其连接到设备。如需测试此功能,请使用 Happy 模拟拓扑,其中一个节点运行模拟的 Weave 设备,另一个节点运行设备管理器。
1. 创建快乐拓扑
在此拓扑中,node01
将运行模拟设备,而 node02
将运行设备管理器。开始之前,请先安装 Happy 并将其配置为支持 Weave。
安装完成后,创建一个简单的 Happy 拓扑:
weave-state-load <path-to-openweave-core>/src/test-apps/happy/topologies/standalone/three_nodes_on_thread_weave.json
检查“Happy”和“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 >