1. บทนำ
Matter เป็นโปรโตคอลการเชื่อมต่อที่มอบโอกาสที่น่าตื่นเต้นสำหรับการพัฒนาอุปกรณ์อัจฉริยะ ใน Codelab นี้ คุณจะได้สร้างอุปกรณ์ Matter เครื่องแรก ดูข้อมูลเกี่ยวกับ Matter ได้ที่ศูนย์นักพัฒนาแอป Google Home: Matter หรือเว็บไซต์ Connectivity Standards Alliance
สิ่งที่คุณจะได้เรียนรู้
- วิธีผสานรวมอุปกรณ์จริงกับ Matter
- วิธีคอมมิชชันและควบคุมอุปกรณ์ Matter ด้วย Google Home
สิ่งที่คุณต้องมี
- ฮับ ซึ่งก็คืออุปกรณ์ Google Nest ที่รองรับ Matter เช่น Nest Hub (รุ่นที่ 2)
- บอร์ดประเมิน Matter ESP32-DevkitC หรือ ESP32 M5STACK ของ Espressif Systems
- PC ที่ใช้ Linux
- มีความรู้พื้นฐานเกี่ยวกับ Linux
2. ตั้งค่าสภาพแวดล้อม
ระบุอุปกรณ์แบบอนุกรม
ขั้นตอนแรกในการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์คือการพิจารณาว่าอุปกรณ์ของคุณเชื่อมต่อกับพอร์ตอนุกรมใด ข้อมูลนี้จะช่วยให้คุณตั้งโปรแกรมและโต้ตอบกับบอร์ดสำหรับนักพัฒนาแอปได้
- เชื่อมต่อบอร์ดสำหรับนักพัฒนาซอฟต์แวร์กับคอมพิวเตอร์โดยใช้สาย USB
- ดูในระบบไฟล์
/devเพื่อค้นหาอุปกรณ์บอร์ดสำหรับนักพัฒนาซอฟต์แวร์ คุณจำกัดการค้นหาให้แคบลงได้โดยระบุคำนำหน้าอุปกรณ์ของบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ ESP32 ของ Espressif ใช้/dev/ttyUSBxuser@host $ ls /dev/ttyUSB* /dev/ttyUSB0
ตั้งค่าฮับ
ตั้งค่าฮับโดยใช้บัญชี Google เดียวกันกับที่คุณตั้งใจจะใช้สำหรับโค้ดแล็บนี้
ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์
ข้อกำหนดเบื้องต้น
เราได้ทดสอบวิธีการเหล่านี้ใน Debian Linux และควรใช้งานได้ใน Linux ส่วนใหญ่ที่พัฒนาจาก Debian ซึ่งรวมถึง Ubuntu หากคุณใช้การกระจาย Linux อื่น ขั้นตอนการตั้งค่าการขึ้นต่อกันอาจแตกต่างจากที่ระบุไว้ต่อไปนี้
ติดตั้งการอ้างอิง
เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งไบนารีแพ็กเกจ Linux ที่จำเป็นซึ่งอาจยังไม่ได้ติดตั้ง
$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \ libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \ python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev screen
ตั้งค่า SDK
คุณจะต้องมี Espressif SDK (Espressif IoT Development Framework หรือ "ESP-IDF") เพื่อทำ Codelab นี้ต่อ
- สร้างไดเรกทอรีเพื่อเก็บ ESP-IDF โดยใช้คำสั่งต่อไปนี้
$ mkdir ~/esp-idf_tools
- โคลน ESP-IDF จาก GitHub ไปยังไดเรกทอรีนี้
$ cd ~/esp-idf_tools $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
- ติดตั้ง Toolchain ให้เสร็จสมบูรณ์
$ cd ./esp-idf $ ./install.sh $ cd ~/
ตั้งค่า Matter SDK
- โคลนที่เก็บ Matter แบบโอเพนซอร์ส
$ git clone https://github.com/project-chip/connectedhomeip.git $ cd ./connectedhomeip $ git fetch origin v1.0-branch $ git checkout FETCH_HEAD
- ดึงข้อมูลโมดูลย่อยของที่เก็บ
$ ./scripts/checkout_submodules.py --shallow --platform esp32
- เริ่มต้นสภาพแวดล้อมในการพัฒนา Matter โดยทำดังนี้
$ source ./scripts/bootstrap.sh
3. Google Home Developer Console
Google Home Developer Console คือเว็บแอปพลิเคชันที่คุณใช้จัดการการผสานรวม Matter กับ Google Home
อุปกรณ์ Matter ที่ผ่านการรับรอง Matter จาก Connectivity Standards Alliance (Alliance) จะใช้งานได้ในระบบนิเวศของ Google Home อุปกรณ์ที่อยู่ระหว่างการพัฒนาและยังไม่ได้รับการรับรองจะสามารถเปิดใช้ในระบบนิเวศของ Google Home ได้ภายใต้เงื่อนไขบางประการ ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดในการจับคู่
สร้างโปรเจ็กต์นักพัฒนาแอป
เริ่มต้นโดยไปที่ Google Home Developer Console
- คลิกสร้างโปรเจ็กต์
- ป้อนชื่อโปรเจ็กต์ที่ไม่ซ้ำกัน แล้วคลิกสร้างโปรเจ็กต์

- คลิก + เพิ่มการผสานรวม ซึ่งจะนำคุณไปยังหน้าจอแหล่งข้อมูล Matter ที่คุณสามารถดูเอกสารประกอบการพัฒนา Matter และอ่านเกี่ยวกับเครื่องมือบางอย่างได้
- เมื่อพร้อมที่จะดำเนินการต่อ ให้คลิกถัดไป: พัฒนา ซึ่งจะแสดงหน้าเช็กลิสต์ Matter
- คลิกถัดไป: ตั้งค่า
- ในหน้าตั้งค่า ให้ป้อนชื่อผลิตภัณฑ์
- คลิกเลือกประเภทอุปกรณ์ แล้วเลือกประเภทอุปกรณ์จากเมนูแบบเลื่อนลง (ในกรณีนี้คือ
Light) - ในรหัสผู้ให้บริการ (VID) ให้เลือกVID ทดสอบ แล้วเลือก 0xFFF1 จากเมนูแบบเลื่อนลงของ VID ทดสอบ ในรหัสผลิตภัณฑ์ (PID) ให้ป้อน 0x8000 แล้วคลิกบันทึกและดำเนินการต่อ จากนั้นคลิกบันทึกในหน้าถัดไป ใช้ค่า VID/PID ที่แน่นอนเหล่านี้ เนื่องจากขั้นตอน Codelab ในภายหลังจะขึ้นอยู่กับค่าเหล่านี้

- ตอนนี้คุณจะเห็นการผสานรวมของคุณในส่วนการผสานรวม Matter
- รีบูตฮับเพื่อให้แน่ใจว่าฮับจะได้รับการกำหนดค่าโปรเจ็กต์การผสานรวม Matter ล่าสุด หากต้องเปลี่ยน VID หรือ PID ในภายหลัง คุณจะต้องรีบูตหลังจากบันทึกโปรเจ็กต์เพื่อให้การเปลี่ยนแปลงมีผล ดูวิธีการรีบูตแบบทีละขั้นตอนได้ที่รีสตาร์ทอุปกรณ์ Google Nest หรือ Google Wifi
4. สร้างอุปกรณ์
ตัวอย่างทั้งหมดใน Matter จะอยู่ในโฟลเดอร์ examples ในที่เก็บข้อมูล Github มีตัวอย่างหลายรายการให้ใช้งาน แต่เราจะมุ่งเน้นที่ lighting-app ในโค้ดแล็บนี้
ตัวอย่างนี้เป็นอุปกรณ์อย่างง่ายที่ปรากฏใน Google Home เป็นหลอดไฟเปิด/ปิด ซึ่งตอบสนองต่อคำสั่งเปิดและปิด การทำให้ควบคุมหลอดไฟจริงได้นั้นอยู่นอกเหนือขอบเขตของ Codelab นี้
กำหนดค่าบิลด์
- กำหนดค่า Matter SDK และเปิดใช้งานสภาพแวดล้อมการสร้าง Matter โดยทำดังนี้
$ cd ~/esp-idf_tools/esp-idf $ source export.sh $ cd ~/connectedhomeip $ source ./scripts/activate.sh
- เปิดใช้ Ccache ซึ่งจะช่วยเร่งกระบวนการสร้าง
$ export IDF_CCACHE_ENABLE=1
- ไปที่
lighting-appไดเรกทอรีบิลด์ ESP32 แล้วตั้งค่าสถาปัตยกรรมเป้าหมาย$ cd ./examples/lighting-app/esp32 $ idf.py set-target esp32
- เรียกใช้ยูทิลิตีการกำหนดค่า
$ idf.py menuconfig
- เลือก
Demo -> Device Typeแล้วตั้งค่าDevice Typeเป็นESP32-DevKitC - กดปุ่มลูกศรซ้ายเพื่อกลับไปที่เมนูระดับบนสุด
- เลือก
Component config ---> - เลือก
CHIP Device Layer ---> - เลือก
Device Identification Options ---> - ตั้งค่า
Vendor IDเป็น VID ที่ Alliance กำหนด หรือ VID ทดสอบ - ตั้งค่า
Product IDเป็น PID ที่คุณตั้งค่าในการผสานรวม Matter ใน Google Home Developer Console - กด S เพื่อบันทึก
- กด Return เพื่อยอมรับเส้นทางเริ่มต้นที่จะบันทึกการกำหนดค่า
- กดส่งคืนเพื่อปิดกล่องโต้ตอบการยืนยันการบันทึก
- กด Q เพื่อออกจากยูทิลิตีการกำหนดค่า
- เรียกใช้ยูทิลิตีการกำหนดค่า
เรียกใช้บิลด์
เรียกใช้สคริปต์บิลด์
idf.py build
การสร้างควรเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด
ตั้งโปรแกรมอุปกรณ์
- เชื่อมต่อบอร์ดสำหรับนักพัฒนาซอฟต์แวร์กับคอมพิวเตอร์โดยใช้สาย USB
- ล้างเฟิร์มแวร์ก่อนหน้าในอุปกรณ์ (หากคุณมีบอร์ดสำหรับนักพัฒนาซอฟต์แวร์เพียงบอร์ดเดียวที่เชื่อมต่อกับคอมพิวเตอร์ คุณอาจไม่ต้องใช้ตัวเลือก
-p {device}- ระบบจะตรวจหาอุปกรณ์โดยอัตโนมัติ)idf.py -p {device} erase-flash - คัดลอกแอปพลิเคชันใหม่ไปยังบอร์ดสำหรับนักพัฒนาแอปโดยใช้คำสั่งต่อไปนี้
idf.py -p {device} flash
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการแฟลชได้ที่หน้าเอกสารประกอบของ Espressifesptool.py
5. เชื่อมต่อกับอุปกรณ์
- เปิดหน้าต่างเทอร์มินัล
- จดบันทึกไดเรกทอรีที่คุณอยู่ จากนั้นเชื่อมต่อกับอุปกรณ์ Matter ใหม่โดยใช้ GNU
screenดังนี้$ screen -L {device} 115200 - หากเห็นคอนโซลว่างเปล่า ให้กดปุ่มรีเซ็ตเพื่อเริ่มกระบวนการบูตอุปกรณ์
6. ตั้งค่าอุปกรณ์
หมายเหตุ: ขั้นตอนนี้จะสำเร็จก็ต่อเมื่อคุณตั้งค่าโปรเจ็กต์ใน Google Home Developer Console แล้ว
Nest Hub
คุณต้องมีฮับเพื่อเตรียมใช้งานอุปกรณ์ใน Fabric ของ Matter นี่คืออุปกรณ์ Google Nest เช่น Nest Hub (รุ่นที่ 2) ที่รองรับ Matter และจะทำหน้าที่เป็นทั้ง Border Router สำหรับอุปกรณ์ที่เปิดใช้ Thread และเป็นเส้นทางการดำเนินการในพื้นที่สำหรับการกำหนดเส้นทางเจตนาของสมาร์ทโฮม
โปรดดูรายการนี้เพื่อดูว่าฮับใดรองรับ Matter
โปรดตรวจสอบสิ่งต่อไปนี้ก่อนเริ่มกระบวนการคอมมิชชัน
- ฮับจะจับคู่กับบัญชี Google เดียวกันกับที่คุณใช้ลงชื่อเข้าใช้ใน Google Home Console
- ฮับอยู่ในเครือข่าย Wi-Fi เดียวกันกับคอมพิวเตอร์ที่คุณใช้เรียกใช้อุปกรณ์ Matter เสมือน
- ฮับอยู่ในโครงสร้างเดียวกันกับที่คุณใช้ในแอป Google Home ("บ้าน" ในกราฟ Google Home แสดงถึงโครงสร้างของคุณ)
จับคู่อุปกรณ์
ทำตามวิธีการจับคู่ ESP32 เพื่อจับคู่อุปกรณ์
หมายเหตุ: หากใช้ M5STACK โปรดทราบว่าหน้าจอจะว่างเปล่าหลังจากแฟลช ดังนั้นคุณจะต้องดูคิวอาร์โค้ดโดยใช้ URL ที่ปรากฏในคอนโซล หรือจะพิมพ์รหัสการจับคู่ด้วยตนเองแทนก็ได้
ตัวอย่างเอาต์พุตของคอนโซลที่แสดง URL ของคิวอาร์โค้ด
I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]
การแก้ปัญหา
การจัดเตรียมไม่สำเร็จ
- ตรวจสอบว่าคุณได้สร้างโปรเจ็กต์ที่มีชุดค่า VID/PID ที่ถูกต้องใน Google Home Console
- โปรดตรวจสอบว่าคุณป้อน VID และ PID ที่ถูกต้องในการกำหนดค่าบิลด์
- ตรวจสอบว่าคุณเลือก
Device Typeที่ถูกต้องในการกำหนดค่าบิลด์
ดูเคล็ดลับการแก้ปัญหาเพิ่มเติมได้ที่หน้าการแก้ปัญหาเกี่ยวกับ Matter
7. ควบคุมอุปกรณ์
เมื่อจัดสรรอุปกรณ์ที่รองรับ Matter เรียบร้อยแล้วและปรากฏในแอป Google Home เป็นหลอดไฟ คุณอาจลองควบคุมอุปกรณ์โดยใช้ Google Assistant, แอป Google Home หรือโปรแกรมจำลอง Google Assistant ในส่วนขยาย Google Home สำหรับ VS Code
Google Assistant
ใช้ Google Assistant ในโทรศัพท์หรือฮับเพื่อสลับสถานะอุปกรณ์จากคำสั่งเสียง เช่น พูดว่า "Ok Google สลับไฟ"
ดูตัวอย่างคำสั่งเพิ่มเติมได้ที่ส่วนควบคุมอุปกรณ์สมาร์ทโฮมด้วยคำสั่งเสียงของควบคุมอุปกรณ์สมาร์ทโฮมที่เพิ่มลงในแอป Google Home
แอป Google Home
คุณอาจแตะป้ายกำกับเปิดและปิดข้างไอคอนหลอดไฟที่แสดงในแอป Google Home
ดูข้อมูลเพิ่มเติมได้ที่ควบคุมอุปกรณ์ด้วยแอป Google Home
โปรแกรมจำลอง Google Assistant
ในส่วนขยาย Google Home สำหรับ VS Code คุณสามารถใช้ Google Assistant Simulator เพื่อออกคำพูดไปยังอุปกรณ์โดยใช้อินเทอร์เฟซคล้ายแชท
8. ยินดีด้วย
คุณสร้างและเปิดใช้อุปกรณ์ Matter เครื่องแรกเรียบร้อยแล้ว ยอดเยี่ยม!
ในโค้ดแล็บนี้ คุณได้เรียนรู้วิธีการต่อไปนี้
- ติดตั้งสภาพแวดล้อมการพัฒนา Matter ตั้งแต่ข้อกำหนดไปจนถึงสถานะที่ใช้งานได้
- สร้างและเรียกใช้อุปกรณ์ Matter
- จัดสรรและควบคุมอุปกรณ์จาก Google Home
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Matter ได้ที่แหล่งข้อมูลต่อไปนี้
- ข้อมูลเบื้องต้นเกี่ยวกับ Matter จาก Google Home ซึ่งคุณจะได้เรียนรู้แนวคิดและหลักการสำคัญของโปรโตคอล Matter
- ข้อกำหนด Matter, คลังอุปกรณ์ Matter และคลังคลัสเตอร์แอปพลิเคชัน Matter ซึ่งเผยแพร่โดย Connected Standard Alliance
- ที่เก็บ Matter ใน GitHub