โปรแกรมจัดการอุปกรณ์ Weave

ดูแหล่งที่มาใน GitHub

เครื่องมือ weave-device-mgr (Weave Device Manager) ทําหน้าที่เป็นอุปกรณ์ช่วยในระบบนิเวศของ Weave ซึ่งจะจัดการการจับคู่อุปกรณ์ รวมถึงการจัดสรรเครือข่ายและผ้า ฟังก์ชันการทํางานที่ยกมาจะคล้ายกับบทบาทของแอป Nest ในการจัดสรร จับคู่ และลงทะเบียนอุปกรณ์ Nest กับบริการ

โปรแกรมจัดการอุปกรณ์ Weave รวมอยู่ในบิลด์ของ weave-tools ในบิลด์ของแอปพลิเคชันแบบสแตนด์อโลน ซึ่งตั้งอยู่ที่ /src/device-manager/python

เรียกใช้

เมนูความช่วยเหลือพร้อมใช้งานระหว่างการทํางานของเครื่องมือ วิธีเริ่มต้นโปรแกรมจัดการอุปกรณ์ Weave และดูเมนูความช่วยเหลือ

./weave-device-mgr
help

เชื่อมต่อกับอุปกรณ์จําลอง

เนื่องจากโปรแกรมจัดการอุปกรณ์ Weave จะมีฟังก์ชันช่วยเหลือ คุณจึงต้องเชื่อมต่อกับอุปกรณ์นั้นก่อน หากต้องการทดสอบฟังก์ชันนี้ ให้ใช้โทโพโลยีจําลองที่มีความสุขและโหนดหนึ่งเรียกใช้อุปกรณ์ 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 และ Wedeve ID ของอุปกรณ์เอาต์พุตจากเอาต์พุตของคําสั่ง 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) ยืนยันเสียงสะท้อนที่ประสบความสําเร็จ

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 >