1. ข้อมูลเบื้องต้น
OpenThread ที่เผยแพร่โดย Google เป็นการใช้งานโปรโตคอลโอเพนซอร์สสําหรับเครือข่าย Thread Google Nest ได้เปิดตัว OpenThread เพื่อทําให้เทคโนโลยีที่ใช้ในผลิตภัณฑ์ Nest พร้อมใช้งานอย่างกว้างขวางสําหรับนักพัฒนาซอฟต์แวร์ เพื่อเร่งการพัฒนาผลิตภัณฑ์สําหรับบ้านที่เชื่อมต่อ
ข้อมูลจําเพาะของชุดข้อความกําหนดโปรโตคอลการสื่อสารระหว่างอุปกรณ์ไร้สายที่เชื่อถือได้และมีความปลอดภัยตามมาตรฐาน IPv6 สําหรับแอปพลิเคชันในบ้าน OpenThread ใช้ Thread Network Layer ทั้งหมด ซึ่งรวมถึง IPv6, 6LoWPAN, IEEE 802.15.4 พร้อมระบบ MAC, การสร้าง Mesh Link และ Mesh Routing
Codelab นี้จะแนะนําการจําลองเครือข่ายเทรดในอุปกรณ์ที่จําลองขึ้นมา
สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่าห่วงโซ่เครื่องมือบิวด์ของ OpenThread
- วิธีจําลองเครือข่ายเทรด
- วิธีตรวจสอบสิทธิ์โหนดชุดข้อความ
- วิธีจัดการเครือข่ายเทรดด้วย OpenThread Daemon
สิ่งที่ต้องมี
- Git
- ความรู้เบื้องต้นเกี่ยวกับ Linux, การกําหนดเส้นทางเครือข่าย
2. ตั้งค่าระบบบิวด์
Git
ต้องใช้ Git เพื่อสิ้นสุด Codelab นี้ โปรดดาวน์โหลดและติดตั้งก่อนดําเนินการต่อ
เมื่อติดตั้งเรียบร้อยแล้ว ให้ทําตามวิธีการของระบบปฏิบัติการนั้นๆ เพื่อดาวน์โหลดและสร้าง OpenThread
XCode สําหรับ Mac OS X
ต้องใช้ XCode เพื่อติดตั้งและสร้าง OpenThread บน Mac OS X
หลังจากติดตั้ง XCode แล้ว ให้ติดตั้งเครื่องมือบรรทัดคําสั่ง XCode
$ xcode-select --install
สร้างบน Linux / Mac OS X
คําแนะนําในการติดตั้งเหล่านี้ได้รับการทดสอบใน Ubuntu Server 14.04 LTS และ Mac OS X Sierra 10.12.6
ติดตั้ง OpenThread คําสั่ง bootstrap
ให้ตรวจสอบว่าได้ติดตั้ง Toolchain แล้วและมีการกําหนดค่าสภาพแวดล้อมอย่างถูกต้อง
$ mkdir -p ~/src $ cd ~/src $ git clone --recursive https://github.com/openthread/openthread.git $ cd openthread $ ./script/bootstrap
การใช้ Windows
หากต้องการใช้ Windows เราขอแนะนําให้ใช้ Codelab เวอร์ชัน Docker
3. สร้างแอปพลิเคชัน OpenThread
เมื่อติดตั้งเสร็จแล้ว ให้สร้างแอปพลิเคชัน OpenThread ตัวอย่าง สําหรับ Codelab นี้ เราจะใช้ตัวอย่างการจําลอง
$ cd ~/src/openthread $ ./script/cmake-build simulation
ตอนนี้สร้าง OpenThread Daemon:
$ ./script/cmake-build posix -DOT_DAEMON=ON
4. จําลองเครือข่ายเทรด
แอปพลิเคชันตัวอย่างที่คุณจะใช้สําหรับ Codelab นี้จะสาธิตแอปพลิเคชัน OpenThread ที่เปิดเผยอินเทอร์เฟซและการกําหนดค่า OpenThread ผ่านทางอินเทอร์เฟซบรรทัดคําสั่ง (CLI) พื้นฐาน
แบบฝึกหัดนี้จะนําคุณสู่ขั้นตอนขั้นต่ําที่จําเป็นสําหรับการใช้คําสั่ง ping กับอุปกรณ์ชุดข้อความจําลองอีกเครื่องหนึ่งจากอุปกรณ์ชุดข้อความจําลองอีกเครื่อง
รูปด้านล่างจะอธิบายโทโพโลยีเครือข่ายขั้นพื้นฐานของเทรด สําหรับแบบฝึกหัดนี้ เราจะจําลอง 2 โหนดภายในวงกลมสีเขียว ได้แก่ Thread Leader และ Thread Router ที่มีเส้นเชื่อมต่อ 1 เส้นระหว่างกัน
ใช้คําสั่ง ping กับโหนด
1. เริ่มต้นโหนด 1
ไปที่ไดเรกทอรี openthread
และสร้างกระบวนการ CLI สําหรับอุปกรณ์ Thread จําลองโดยใช้ไบนารี ot-cli-ftd
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
หมายเหตุ: หากคุณไม่เห็นข้อความแจ้ง >
หลังจากเรียกใช้คําสั่งนี้ ให้กด enter
ไบนารีนี้จะนําอุปกรณ์ OpenThread ที่จําลองมาจาก POSIX มีการใช้ไดรเวอร์วิทยุ IEEE 802.15.4 ที่ด้านบนของ UDP (ส่งเฟรม IEEE 802.15.4 ภายในเปย์โหลด UDP)
อาร์กิวเมนต์ของ 1
เป็นตัวบ่งชี้ไฟล์ที่แสดงบิตของส่วน IEEE EUI-64 ที่ "กําหนด" น้อยที่สุดสําหรับอุปกรณ์ที่จําลอง นอกจากนี้ ค่านี้ยังใช้เมื่อเชื่อมโยงกับพอร์ต UDP สําหรับการจําลองวิทยุ IEEE 802.15.4 (พอร์ต = 9000 + ตัวบ่งชี้ไฟล์) แต่ละอินสแตนซ์ของอุปกรณ์ Thread ที่จําลองขึ้นใน Codelab นี้จะใช้ตัวบอกไฟล์ที่แตกต่างกัน
หมายเหตุ: ใช้เฉพาะข้อบ่งชี้ไฟล์จํานวน 1
หรือมากกว่าตามที่ระบุไว้ใน Codelab นี้เมื่อคุณสร้างกระบวนการสําหรับอุปกรณ์ที่จําลองขึ้น ตัวบ่งชี้ไฟล์ 0
สงวนไว้สําหรับการใช้งานอื่นๆ
สร้างชุดข้อมูลการดําเนินการใหม่และคอมมิตเป็นชุดข้อมูลที่ทํางานอยู่ ชุดข้อมูลการดําเนินการคือการกําหนดค่าสําหรับเครือข่ายเทรดที่คุณกําลังสร้าง
> dataset init new Done > dataset Active Timestamp: 1 Channel: 20 Channel Mask: 07fff800 Ext PAN ID: d6263b6d857647da Mesh Local Prefix: fd61:2344:9a52:ede0/64 Network Key: e4344ca17d1dca2a33f064992f31f786 Network Name: OpenThread-c169 PAN ID: 0xc169 PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4 Security Policy: 0, onrcb Done
ส่งชุดข้อมูลนี้เป็นชุดข้อมูลที่ใช้งานอยู่:
> dataset commit active Done
แสดงอินเทอร์เฟซ IPv6:
> ifconfig up Done
เริ่มต้นการดําเนินการโปรโตคอลเทรด:
> thread start Done
รอสักครู่และตรวจสอบว่าอุปกรณ์เป็นผู้นําชุดข้อความแล้ว ตัวแปรหลักคืออุปกรณ์ที่รับผิดชอบในการจัดการการกําหนดรหัสเราเตอร์
> state leader Done
ดูที่อยู่ IPv6 ที่กําหนดให้กับอินเทอร์เฟซชุดข้อความของโหนด 1 (ผลลัพธ์ของคุณจะแตกต่างออกไป)
> ipaddr fd61:2344:9a52:ede0:0:ff:fe00:fc00 fd61:2344:9a52:ede0:0:ff:fe00:5000 fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 fe80:0:0:0:94da:92ea:1353:4f3b Done
บันทึกประเภทที่อยู่ IPv6 ต่อไปนี้
- ขึ้นต้นด้วย
fd
= Mesh-local - ขึ้นต้นด้วย
fe80
= link-local
ประเภทที่อยู่ Mesh-local จะได้รับการจัดประเภทเพิ่มเติม
- มี
ff:fe00
= เครื่องระบุตําแหน่งเราเตอร์ (RLOC) - ไม่มี
ff:fe00
= ตัวระบุปลายทาง (EID)
ระบุ EID ในเอาต์พุตของคอนโซล ให้จดบันทึกไว้สําหรับใช้ในภายหลัง ในเอาต์พุตตัวอย่างข้างต้น EID คือ
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
2. เริ่มต้นโหนด 2
เปิดเทอร์มินัลใหม่ และไปยังไดเรกทอรี openthread
แล้วสร้างกระบวนการ CLI นี่คืออุปกรณ์เธรดจําลองที่ 2:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
หมายเหตุ: หากคุณไม่เห็นข้อความแจ้ง >
หลังจากเรียกใช้คําสั่งนี้ ให้กด enter
กําหนดค่าคีย์เครือข่ายเทรดและรหัส PAN โดยใช้ค่าเดียวกันกับชุดข้อมูลการดําเนินการของโหนด 1
> dataset networkkey e4344ca17d1dca2a33f064992f31f786 Done > dataset panid 0xc169 Done
ส่งชุดข้อมูลนี้เป็นชุดข้อมูลที่ใช้งานอยู่:
> dataset commit active Done
แสดงอินเทอร์เฟซ IPv6:
> ifconfig up Done
เริ่มต้นการดําเนินการโปรโตคอลเทรด:
> thread start Done
อุปกรณ์จะตั้งตัวเองเป็นเด็ก Thread Child มีค่าเท่ากับอุปกรณ์ปลายทาง ซึ่งเป็นอุปกรณ์เทรดที่ส่งและรับการรับส่งข้อมูล unicast เฉพาะกับอุปกรณ์หลักเท่านั้น
> state child Done
คุณจะเห็นการเปลี่ยนสถานะจาก child
เป็น router
ภายใน 2 นาที เราเตอร์เทรดมีความสามารถในการกําหนดเส้นทางการรับส่งข้อมูลระหว่างอุปกรณ์เทรด เรียกอีกอย่างว่าเครือข่ายระดับบนสุด
> state router Done
ยืนยันเครือข่าย
วิธีง่ายๆ ในการยืนยันเครือข่ายที่ทํางานร่วมกันคือการดูที่ตารางเราเตอร์
1. ตรวจสอบการเชื่อมต่อ
ในโหนด 2 ให้รับ RLOC16 RLOC16 คือ 16 บิตสุดท้ายของที่อยู่ RLOC IPv6 ของอุปกรณ์
> rloc16 5800 Done
ในโหนด 1 ให้ตรวจสอบตารางเราเตอร์สําหรับ RLOC16 ของโหนด 2 ตรวจสอบว่าโหนด 2 สลับไปยังสถานะของเราเตอร์ก่อนแล้ว
> router table | ID | RLOC16 | Next Hop | Path Cost | LQI In | LQI Out | Age | Extended MAC | +----+--------+----------+----------+-------+---------+-----+------------------+ | 20 | 0x5000 | 63 | 0 | 0 | 0 | 0 | 96da92ea13534f3b | | 22 | 0x5800 | 63 | 0 | 3 | 3 | 23 | 5a4eb647eb6bc66c |
พบ RLOC ของโหนด 1 ของ 0xa800
ในตารางที่ยืนยันว่าเชื่อมต่อกับ Mesh แล้ว
2. ใช้คําสั่ง ping กับโหนด 1 จากโหนด 2
ยืนยันการเชื่อมต่อระหว่างอุปกรณ์ชุดข้อความจําลอง 2 รายการ ในโหนดที่ 2 ping
EID ที่กําหนดให้กับโหนด 1:
> ping fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 > 16 bytes from fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6: icmp_seq=1 hlim=64 time=12ms
กด enter
เพื่อกลับไปที่ข้อความแจ้ง >
CLI
ทดสอบเครือข่าย
ตอนนี้คุณสามารถส่ง Ping ระหว่างอุปกรณ์เทรด 2 ชุดที่จําลองเสร็จสมบูรณ์แล้ว ให้ทดสอบเครือข่ายที่ทํางานร่วมกันโดยการนําโหนด 1 โหนดมาใช้แบบออฟไลน์
กลับไปที่โหนด 1 และหยุดชุดข้อความ:
> thread stop Done
เปลี่ยนไปใช้โหนด 2 และตรวจสอบสถานะ ภายใน 2 นาที โหนด 2 ตรวจพบว่าผู้นํา (โหนด 1) ออฟไลน์อยู่ และคุณควรเห็นการเปลี่ยนโหนด 2 เป็น leader
ของเครือข่าย
> state router Done ... > state leader Done
เมื่อยืนยันแล้ว ให้หยุดชุดข้อความและรีเซ็ตโหนดเป็นค่าเริ่มต้นเป็นค่าเริ่มต้น 2 ก่อนออก ระบบจะรีเซ็ตข้อมูลเป็นค่าเริ่มต้นเพื่อให้แน่ใจว่าจะไม่มีการอัปเดตข้อมูลเข้าสู่ระบบเครือข่ายเทรดที่เราใช้ในการฝึกครั้งถัดไป
> thread stop Done > factoryreset > > exit
รีเซ็ตเป็นค่าเริ่มต้นและออกจากโหนด 1
> factoryreset > > exit
โปรดดูที่ OpenThread CLI Reference เพื่อดูคําสั่ง CLI ที่มีทั้งหมด
5. ตรวจสอบสิทธิ์โหนดด้วยค่าคอมมิชชัน
ในแบบฝึกหัดก่อนหน้า คุณจะต้องตั้งค่าเครือข่ายเทรดด้วยอุปกรณ์จําลอง 2 เครื่องและการเชื่อมต่อที่ได้รับการยืนยัน อย่างไรก็ตาม การดําเนินการนี้จะอนุญาตให้มีการส่งผ่านลิงก์เฉพาะ IPv6 ที่ไม่ผ่านการตรวจสอบสิทธิ์ระหว่างอุปกรณ์เท่านั้น ในการกําหนดเส้นทางการรับส่งข้อมูล IPv6 ระหว่างกัน (และอินเทอร์เน็ตผ่านเราเตอร์ Thread Border) จะต้องมีการตรวจสอบสิทธิ์โหนด
อุปกรณ์ 1 เครื่องต้องทําหน้าที่เป็นเจ้าหน้าที่เพื่อที่จะตรวจสอบสิทธิ์ ค่าคอมมิชชันคือเซิร์ฟเวอร์การตรวจสอบสิทธิ์ที่ได้รับเลือกในปัจจุบันสําหรับอุปกรณ์เทรดใหม่ รวมถึงผู้ให้สิทธิ์ในการจัดทําข้อมูลรับรองเครือข่ายเพื่อให้อุปกรณ์เข้าร่วมเครือข่าย
ในแบบฝึกหัดนี้ เราจะใช้โทโพโลยีแบบ 2 โหนดแบบเดียวกับก่อนหน้านี้ สําหรับผู้นํา Threader Leader จะทําหน้าที่เป็น Commissioner หรือ Thread Router ในฐานะผู้เชื่อม
1. สร้างเครือข่าย
หากทําแบบฝึกหัดก่อนหน้า คุณควรเปิดหน้าต่างเทอร์มินัล 2 หน้าต่างอยู่แล้ว หากไม่มี อย่าลืมว่าอุปกรณ์ต้องเปิดและพร้อมใช้งาน โหนดหนึ่งจะใช้โหนด 1 ส่วนอีกโหนดหนึ่งคือโหนด 2
ในโหนด 1 ให้สร้างกระบวนการ CLI:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
หมายเหตุ: หากคุณไม่เห็นข้อความแจ้ง >
หลังจากเรียกใช้คําสั่งนี้ ให้กด enter
สร้างชุดข้อมูลการดําเนินการใหม่ คอมมิตเป็นชุดข้อมูลที่ทํางานอยู่ แล้วเริ่มชุดข้อความ:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 12 Channel Mask: 07fff800 Ext PAN ID: e68d05794bf13052 Mesh Local Prefix: fd7d:ddf7:877b:8756/64 Network Key: a77fe1d03b0e8028a4e13213de38080e Network Name: OpenThread-8f37 PAN ID: 0x8f37 PSKc: f9debbc1532487984b17f92cd55b21fc Security Policy: 0, onrcb Done
ส่งชุดข้อมูลนี้เป็นชุดข้อมูลที่ใช้งานอยู่:
> dataset commit active Done
แสดงอินเทอร์เฟซ IPv6:
> ifconfig up Done
เริ่มต้นการดําเนินการโปรโตคอลเทรด:
> thread start Done
รอสักครู่และตรวจสอบว่าอุปกรณ์เป็นผู้นําชุดข้อความไปแล้ว
> state leader Done
2. เริ่มบทบาทค่าคอมมิชชัน
ขณะที่ยังอยู่บนโหนด 1 ให้เริ่มบทบาทค่าคอมมิชชัน:
> commissioner start Done
อนุญาตให้ตัวเชื่อม (โดยใช้ไวลด์การ์ด *
) ด้วยข้อมูลเข้าสู่ระบบตัวเชื่อม J01NME
เพื่อกําหนดค่าคอมมิชชันให้กับเครือข่าย ตัวเชื่อมเป็นอุปกรณ์ที่ผู้ดูแลระบบที่เป็นมนุษย์เพิ่มเข้ามาในเครือข่ายเทรดค่าคอมมิชชัน
> commissioner joiner add * J01NME Done
3. เริ่มบทบาทผู้เชื่อม
ในหน้าต่างเทอร์มินัลครั้งที่ 2 ให้สร้างกระบวนการ CLI ใหม่ นี่คือโหนด 2
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
ในโหนด 2 ให้เปิดใช้บทบาทตัวเชื่อมโดยใช้ข้อมูลรับรองตัวเชื่อม J01NME
> ifconfig up Done > joiner start J01NME Done
... รอการยืนยันสักครู่ ...
Join success
ในฐานะผู้เชื่อม อุปกรณ์ (โหนด 2) ได้ตรวจสอบสิทธิ์ตัวเองกับกรรมาธิการ (โหนด 1) เรียบร้อยแล้ว และได้รับข้อมูลเข้าสู่ระบบเครือข่ายเทรด
เมื่อโหนด 2 ผ่านการตรวจสอบสิทธิ์แล้ว ให้เริ่มชุดข้อความ:
> thread start Done
4. ตรวจสอบการตรวจสอบสิทธิ์เครือข่าย
ตรวจสอบ state
ในโหนด 2 เพื่อยืนยันว่าเข้าร่วมเครือข่ายแล้ว ภายใน 2 นาที โหนด 2 เปลี่ยนจาก child
เป็น router
:
> state child Done ... > state router Done
5. รีเซ็ตการกําหนดค่า
โปรดรีเซ็ตการกําหนดค่าเพื่อเตรียมพร้อมสําหรับการฝึกปฏิบัติครั้งต่อไป ในโหนดแต่ละรายการ หยุดชุดข้อความ รีเซ็ตเป็นค่าเริ่มต้น และออกจากอุปกรณ์เทรดที่จําลองขึ้น ดังนี้
> thread stop Done > factoryreset > > exit
คุณอาจต้องกด enter
2-3 ครั้งเพื่อนําข้อความแจ้ง >
กลับมาหลังคําสั่ง factoryreset
6. จัดการเครือข่ายด้วย OpenThread Daemon
สําหรับแบบฝึกหัดนี้ เราจะจําลองอินสแตนซ์ CLI 1 อินสแตนซ์ (อุปกรณ์ SoC เทรดที่ฝังอยู่) และอินสแตนซ์ Radio Co-Processor (RCP) 1 อินสแตนซ์
ot-daemon
คือโหมดของแอป OpenThread Posix ที่ใช้ซ็อกเก็ต UNIX เป็นอินพุตและเอาต์พุต เพื่อให้แกน OpenOpen ทํางานเป็นบริการ ไคลเอ็นต์สื่อสารกับบริการนี้ได้โดยเชื่อมต่อกับซ็อกเก็ตโดยใช้ OpenThread CLI เป็นโปรโตคอล
ot-ctl
คือ CLI ที่ ot-daemon
ให้ไว้เพื่อจัดการและกําหนดค่า RCP โดยเราจะเชื่อมต่อ RCP กับเครือข่ายที่สร้างโดยอุปกรณ์เทรด
ใช้ Ot-daemon
แบบฝึกหัดนี้จะใช้หน้าต่างเทอร์มินัล 3 บาน ซึ่งสอดคล้องกับกรณีต่อไปนี้
- อินสแตนซ์ CLI ของอุปกรณ์ชุดข้อความจําลอง (โหนด 1)
- กระบวนการ
ot-daemon
- อินสแตนซ์ CLI
ot-ctl
รายการ
หากทําแบบฝึกหัดก่อนหน้า คุณควรเปิดหน้าต่างเทอร์มินัล 2 หน้าต่างอยู่แล้ว เปิดรายการที่ 3 เพื่อให้แน่ใจว่าคุณจะทําหน้าต่างเทอร์มินัลได้ 3 หน้าต่าง
1. เริ่มต้นโหนด 1
ในหน้าต่างเทอร์มินัลแรก ให้สร้างกระบวนการ CLI สําหรับอุปกรณ์ชุดข้อความจําลอง ดังนี้
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
หมายเหตุ: หากคุณไม่เห็นข้อความแจ้ง >
หลังจากเรียกใช้คําสั่งนี้ ให้กด enter
สร้างชุดข้อมูลการดําเนินการใหม่ คอมมิตเป็นชุดข้อมูลที่ทํางานอยู่ แล้วเริ่มชุดข้อความ:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 13 Channel Mask: 07fff800 Ext PAN ID: 97d584bcd493b824 Mesh Local Prefix: fd55:cf34:dea5:7994/64 Network Key: ba6e886c7af50598df1115fa07658a83 Network Name: OpenThread-34e4 PAN ID: 0x34e4 PSKc: 38d6fd32c866927a4dfcc06d79ae1192 Security Policy: 0, onrcb Done
ส่งชุดข้อมูลนี้เป็นชุดข้อมูลที่ใช้งานอยู่:
> dataset commit active Done
แสดงอินเทอร์เฟซ IPv6:
> ifconfig up Done
เริ่มต้นการดําเนินการโปรโตคอลเทรด:
> thread start Done
ดูที่อยู่ IPv6 ที่กําหนดให้กับอินเทอร์เฟซชุดข้อความของโหนด 1
> ipaddr fd55:cf34:dea5:7994:0:ff:fe00:fc00 fd55:cf34:dea5:7994:0:ff:fe00:d000 fd55:cf34:dea5:7994:460:872c:e807:c4ab fe80:0:0:0:9cd8:aab6:482f:4cdc Done >
ตามที่อธิบายไว้ในขั้นตอนจําลองเครือข่ายเทรด ที่อยู่ 1 รายการเป็นลิงก์ภายใน (fe80
) และที่อยู่ 3 รายการเป็น Mesh-Local (fd
) EID คือที่อยู่ Mesh-Local ที่ไม่มี ff:fe00
ในที่อยู่ ในเอาต์พุตตัวอย่างนี้ EID คือ fd55:cf34:dea5:7994:460:872c:e807:c4ab
ระบุ EID ที่เฉพาะเจาะจงจากเอาต์พุต ipaddr
ซึ่งจะใช้เพื่อสื่อสารกับโหนด
2. เริ่ม Od-ememon
ในหน้าต่างเทอร์มินัลที่สอง ให้ไปที่ไดเรกทอรี openthread
แล้วเริ่มต้น ot-daemon
สําหรับโหนด RCP ซึ่งเราจะเรียกว่าโหนด 2 ใช้แฟล็กรายละเอียดขนาด -v
เพื่อให้คุณเห็นเอาต์พุตบันทึกและยืนยันว่ามีการใช้งานบันทึกอยู่ และอย่าลืมใช้ sudo
ดังนี้
$ cd ~/src/openthread $ sudo ./build/posix/src/posix/ot-daemon -v \ 'spinel+hdlc+forkpty://build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=2'
เมื่อสําเร็จ ot-daemon
ในโหมดแบบละเอียดจะสร้างเอาต์พุตในลักษณะดังนี้
ot-daemon[12463]: Running OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; POSIX; Aug 30 2022 10:55:05 ot-daemon[12463]: Thread version: 4 ot-daemon[12463]: Thread interface: wpan0 ot-daemon[12463]: RCP version: OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; SIMULATION; Aug 30 2022 10:54:10
เปิดเทอร์มินัลนี้ทิ้งไว้และเริ่มการทํางานในเบื้องหลัง คุณจะไม่ป้อนคําสั่งใดๆ เพิ่มเติมอีก
3. ใช้ ot-ctl เพื่อเข้าร่วมเครือข่าย
เรายังไม่ได้เปิดใช้โหนด 2 (RCP ot-daemon
) กับเครือข่ายเทรดใดๆ เลย นี่เป็นที่มาของ ot-ctl
ot-ctl
ใช้ CLI เดียวกับแอป OpenThread CLI ดังนั้น คุณจึงควบคุมโหนด ot-daemon
ได้เหมือนกับอุปกรณ์ Thread อื่นๆ ที่จําลองขึ้นมา
ในหน้าต่างที่ 3 ให้เริ่ม ot-ctl
$ sudo ./build/posix/src/posix/ot-ctl >
หมายเหตุ: หากคุณไม่เห็นข้อความแจ้ง >
หลังจากเรียกใช้คําสั่งนี้ ให้กด enter
คุณจะใช้ ot-ctl
ในหน้าต่างเทอร์มินัลที่ 3 นี้ในการจัดการโหนด 2 (โหนด RCP) ที่เริ่มต้นในหน้าต่างเทอร์มินัลที่ 2 ด้วย ot-daemon
ตรวจสอบ state
ของโหนด 2 ว่า
> state disabled Done
รับ eui64
ของโหนด 2 เพื่อจํากัดการเข้าร่วมของผู้รวมที่เจาะจง ดังนี้
> eui64 18b4300000000001 Done
ในโหนด 1 (หน้าต่างเทอร์มินัลแรก) ให้เริ่มค่าคอมมิชชันและจํากัดการเข้าร่วมเฉพาะ eui64 ดังนี้
> commissioner start Done > commissioner joiner add 18b4300000000001 J01NME Done
ในโหนดที่ 2 (หน้าต่างเทอร์มินัลที่สาม) ให้เรียกอินเทอร์เฟซเครือข่ายและเข้าร่วมเครือข่าย:
> ifconfig up Done > joiner start J01NME Done
... รอการยืนยันสักครู่ ...
Join success
ในฐานะผู้เข้าร่วม RCP (Node 2) ได้ตรวจสอบสิทธิ์ตัวเองกับ Commissioner (Node 1) และได้รับข้อมูลรับรอง Thread Network เรียบร้อยแล้ว
จากนั้นเข้าร่วมโหนด 2 กับเครือข่ายเทรด:
> thread start Done
4. ตรวจสอบการตรวจสอบสิทธิ์เครือข่าย
ตรวจสอบ state
ในโหนด 2 เพื่อยืนยันว่าเข้าร่วมเครือข่ายแล้ว ภายใน 2 นาที โหนด 2 เปลี่ยนจาก child
เป็น router
:
> state child Done ... > state router Done
5. ตรวจสอบการเชื่อมต่อ
ปิด ot-ctl
โดยใช้คําสั่ง Ctrl+D หรือ exit
และใช้คําสั่ง ping กับโหนด 1 ในบรรทัดคําสั่งในเครื่องโฮสต์โดยใช้ EID กับคําสั่ง ping6
ถ้าอินสแตนซ์ ot-daemon
ของ RCP เข้าร่วมและสื่อสารกับเครือข่ายเทรดสําเร็จแล้ว จะได้รับคําสั่ง ping สําเร็จ
$ ping6 -c 4 fd55:cf34:dea5:7994:460:872c:e807:c4ab PING fd55:cf34:dea5:7994:460:872c:e807:c4ab (fd55:cf34:dea5:7994:460:872c:e807:c4ab): 56 data bytes 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=0 ttl=64 time=4.568 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=1 ttl=64 time=6.396 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=2 ttl=64 time=7.594 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=3 ttl=64 time=5.461 ms --- fd55:cf34:dea5:7994:460:872c:e807:c4ab ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 4.568/6.005/7.594/1.122 ms
7. ยินดีด้วย
คุณได้จําลองเครือข่ายเทรดแรกสําเร็จแล้วโดยใช้ OpenThread ยอดเยี่ยม
ใน Codelab นี้ คุณได้เรียนรู้วิธีการต่อไปนี้
- ตั้งค่าห่วงโซ่เครื่องมือบิวด์ของ OpenThread
- จําลองเครือข่ายเทรด
- ตรวจสอบโหนดชุดข้อความ
- จัดการเครือข่ายเทรดด้วย OpenThread Daemon
หากต้องการดูข้อมูลเพิ่มเติม ให้ดูข้อมูลอ้างอิงเหล่านี้