Посмотреть исходный код на GitHub |
Инструмент weave-device-mgr
(Диспетчер устройств Weave) служит вспомогательным устройством в экосистеме Weave. Он управляет сопряжением устройств, включая подготовку сети и структуры. Предоставляемые им функциональные возможности аналогичны роли, которую приложение Nest играет в подготовке, сопряжении и регистрации устройства Nest в Сервисе.
Менеджер устройств Weave включен в сборку weave-tools
. В автономной сборке приложения он находится по адресу /src/device-manager/python
.
Бегать
Меню справки доступно во время работы инструмента. Чтобы запустить диспетчер устройств Weave и просмотреть меню справки:
./weave-device-mgr
help
Подключиться к фиктивному устройству
Поскольку Weave Device Manager выполняет вспомогательную функцию, сначала необходимо подключить его к устройству. Чтобы протестировать эту функциональность, используйте смоделированную топологию 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
поднимите фиктивное устройство, используя IPv6-адрес Weave этого узла и действительный код сопряжения 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 с фиктивным устройством. Используйте IPv6-адрес и идентификатор узла Weave фиктивного устройства из выходных данных команд happy-state
и weave-state
, а также код сопряжения:
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. Проверьте соединение
Отправьте запрос Weave Echo из диспетчера устройств ( node02
) на фиктивное устройство, чтобы проверить соединение:
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 >