Quelle auf GitHub ansehen |
Das Tool weave-device-mgr
(Weave Device Manager) dient als Hilfsgerät im Weave-System. Er verwaltet die Gerätekopplung, einschließlich Netzwerk- und Stoffbereitstellung. Die Funktion entspricht der Rolle, die die Nest App bei der Bereitstellung, der Kopplung und der Registrierung eines Nest-Geräts beim Dienst spielt.
Weave Device Manager ist im weave-tools
-Build enthalten. In einem eigenständigen Anwendungs-Build befindet sie sich unter /src/device-manager/python
.
Ausführen
Das Hilfemenü ist während des Gerätebetriebs verfügbar. So starten Sie Weave Device Manager und rufen das Hilfemenü auf:
./weave-device-mgr
help
Mit einem simulierten Gerät verbinden
Da Weave Device Manager eine unterstützende Funktion ist, müssen Sie es zuerst mit einem Gerät verbinden. Sie können diese Funktion testen, indem Sie eine simulierte fröhliche Topologie verwenden, bei der ein Knoten ein Pseudo-Weave-Gerät und ein anderer den Geräte-Manager ausführt.
1. Happy Topologie erstellen
In dieser Topologie wird node01
das simulierte Gerät und node02
den Gerätemanager ausführen. Installieren Sie zuerst Happy und konfigurieren Sie es für den Weave-Support.
Erstellen Sie nach der Installation eine einfache Happy Topologie:
weave-state-load <path-to-openweave-core>/src/test-apps/happy/topologies/standalone/three_nodes_on_thread_weave.json
Überprüfen Sie den Status „Happy“ und „Weave“, um die Topologie zu bestätigen:
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. Mock-Gerät starten
In node01
anmelden:
happy-shell node01
Rufe in node01
ein Mock-Gerät mit dieser Weave-IPv6-Adresse dieses Knotens sowie einem gültigen Weave-Kopplungscode auf. Ein Kopplungscode ist erforderlich, um eine sichere PASE-Sitzung zwischen dem Mock-Gerät und dem Gerätemanager herzustellen:
./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. Gerätemanager starten
Neues Terminalfenster öffnen und sich bei node02
anmelden
happy-shell node02
Starten Sie im node02
den Gerätemanager:
./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. Mit dem Mock-Gerät verbinden
Richten Sie im Gerätemanager (node02
) eine sichere PASE-Sitzung mit dem Mock-Gerät ein. Verwenden Sie die Mockve-IP-Adresse und -Knoten-ID des Geräts aus der Ausgabe der Befehle happy-state
und weave-state
sowie den zugehörigen Kopplungscode:
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) >
Die Ausgabe des simulierten Geräts (node01
) bestätigt eine erfolgreiche Verbindung:
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. Verbindung testen
Sende eine Weave-Echo-Anfrage vom Gerätemanager (node02
) an das Mock-Gerät, um die Verbindung zu testen:
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
Die Ausgabe des simulierten Geräts (node01
) bestätigt das erfolgreiche 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. Verbindung zum Mock-Gerät trennen
So trennen Sie die Verbindung zu einem Pseudo-Gerät:
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 >