1. บทนำ
Matter เป็นโปรโตคอลการเชื่อมต่อที่จะมอบโอกาสที่น่าตื่นเต้นในการพัฒนาอุปกรณ์อัจฉริยะ คุณจะได้สร้างอุปกรณ์ Matter เครื่องแรกใน Codelab นี้ ดูข้อมูลเกี่ยวกับ Matter ได้ที่ศูนย์นักพัฒนาแอป Google Home: Matter หรือเว็บไซต์ Connectivity Standards Alliance
สิ่งที่คุณจะได้เรียนรู้
- วิธีผสานรวมอุปกรณ์จริงกับ Matter
- วิธีจัดเตรียมและควบคุมอุปกรณ์ Matter ด้วย Google Home
สิ่งที่ต้องมี
- ฮับ คืออุปกรณ์ Google Nest ที่รองรับ Matter เช่น Nest Hub (รุ่นที่ 2)
- บอร์ดการประเมิน Matter ของ Espressif Systems ESP32-DevkitC หรือ ESP32 M5STACK
- พีซีที่ใช้ Linux
- ความรู้พื้นฐานเกี่ยวกับ Linux
2. ตั้งค่าสภาพแวดล้อมของคุณ
ระบุอุปกรณ์ซีเรียล
ขั้นตอนแรกในการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์คือการกำหนดพอร์ตอนุกรมของอุปกรณ์ที่เชื่อมต่ออยู่ ข้อมูลนี้จะช่วยให้คุณสามารถจัดโปรแกรมและโต้ตอบกับคณะกรรมการนักพัฒนาซอฟต์แวร์ได้
- เชื่อมต่อบอร์ดนักพัฒนาซอฟต์แวร์กับคอมพิวเตอร์โดยใช้สาย USB
- ดูในระบบไฟล์
/dev
เพื่อหาอุปกรณ์กระดานของนักพัฒนาซอฟต์แวร์ คุณจำกัดขอบเขตการค้นหาได้โดยระบุคำนำหน้าอุปกรณ์ของกระดานนักพัฒนาซอฟต์แวร์ ESP32 ของ Espressif ใช้/dev/ttyUSBx
:user@host $ ls /dev/ttyUSB* /dev/ttyUSB0
ตั้งค่าฮับ
ตั้งค่าฮับโดยใช้บัญชี Google เดียวกับที่คุณตั้งใจจะใช้สำหรับ Codelab นี้
ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์
ข้อกำหนดเบื้องต้น
คำแนะนำเหล่านี้ได้รับการทดสอบใน Debian Linux และควรใช้งานกับ Linux ส่วนใหญ่ที่ใช้ Debian รวมถึง Ubuntu ได้ หากคุณทำงานกับ Linux ดิสทริบิวชันอื่น ขั้นตอนการตั้งค่าทรัพยากร Dependency อาจแตกต่างกันไปดังต่อไปนี้
ติดตั้งการอ้างอิง
เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งไบนารีของแพ็กเกจ 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
หากต้องการใช้ Codelab นี้ต่อ คุณจะต้องมี Espressif SDK (เฟรมเวิร์กการพัฒนา Espressif IoT หรือ "ESP-IDF")
- สร้างไดเรกทอรีที่มี 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 ~/
ตั้งค่า SDK ของ Matter
- โคลนที่เก็บ 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 คือเว็บแอปพลิเคชันที่คุณจัดการการผสานรวม 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 จะอยู่ในโฟลเดอร์ตัวอย่างในที่เก็บ GitHub ตัวอย่างมีมากมายให้เลือกใช้ แต่ Codelab นี้จะมุ่งเน้นที่แอปการจัดแสง
ตัวอย่างนี้เป็นอุปกรณ์ง่ายๆ ที่ปรากฏใน 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 ที่พาร์ทเนอร์กำหนดหรือ VID ทดสอบ - ตั้งค่า
Product ID
เป็น PID ที่คุณตั้งค่าไว้ในการผสานรวม Matter ใน Google Home Developer Console - กด S เพื่อบันทึก
- กด Return เพื่อยอมรับเส้นทางเริ่มต้นที่จะบันทึกการกำหนดค่า
- กด Return เพื่อปิดกล่องโต้ตอบการยืนยันการบันทึก
- กด Q เพื่อออกจากยูทิลิตีการกำหนดค่า
- เรียกใช้ยูทิลิตีการกำหนดค่า
เรียกใช้บิลด์
เรียกใช้สคริปต์บิลด์
idf.py build
บิลด์ควรเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด
ตั้งโปรแกรมอุปกรณ์
- เชื่อมต่อบอร์ดนักพัฒนาซอฟต์แวร์กับคอมพิวเตอร์โดยใช้สาย USB
- ล้างเฟิร์มแวร์ก่อนหน้าทั้งหมดออกจากอุปกรณ์ (หากคุณมีบอร์ดนักพัฒนาซอฟต์แวร์เพียงตัวเดียวเชื่อมต่อกับคอมพิวเตอร์ ก็ไม่ใช้ตัวเลือก
-p {device}
ได้ ซึ่งควรตรวจพบอุปกรณ์โดยอัตโนมัติ) ดังนี้idf.py -p {device} erase-flash
- คัดลอกแอปพลิเคชันใหม่ของคุณไปยังบอร์ดสำหรับนักพัฒนาซอฟต์แวร์โดยใช้:
idf.py -p {device} flash
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการกะพริบได้ที่หน้าเอกสารประกอบของ Espressif esptool.py
5. เชื่อมต่อกับอุปกรณ์
- เปิดหน้าต่างเทอร์มินัล
- จดไดเรกทอรีที่คุณอยู่ แล้วเชื่อมต่อกับอุปกรณ์ Matter เครื่องใหม่โดยใช้ GNU
screen
$ screen -L {device} 115200
- หากคุณเห็นคอนโซลที่ว่างเปล่า ให้กดปุ่มรีเซ็ตเพื่อเริ่มต้นกระบวนการเปิดเครื่อง
6. ค่าคอมมิชชันอุปกรณ์
หมายเหตุ: ขั้นตอนนี้จะสำเร็จในกรณีที่คุณได้ตั้งค่าโปรเจ็กต์ใน Google Home Developer Console แล้วเท่านั้น
Nest Hub
คุณต้องมีฮับเพื่อให้อุปกรณ์ของคุณทำงานบนผ้า Matter อุปกรณ์ Google Nest เช่น Nest Hub (รุ่นที่ 2) ที่รองรับ Matter และจะทำหน้าที่เป็น Border Router สำหรับอุปกรณ์ที่เปิดใช้ Thread และเป็นเส้นทางการดำเนินการตามคำสั่งซื้อภายในสำหรับการกำหนดเส้นทาง Intent ของสมาร์ทโฮม
โปรดดูรายการนี้เพื่อดูว่าฮับใดที่รองรับ Matter
ก่อนเริ่มใช้กระบวนการทำงาน โปรดตรวจสอบให้แน่ใจว่า
- ฮับจะจับคู่กับบัญชี Google เดียวกับที่คุณใช้ลงชื่อเข้าใช้คอนโซล Google Home
- ฮับอยู่ในเครือข่าย 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
- ตรวจสอบว่าคุณป้อน VID และ PID ที่ถูกต้องในการกำหนดค่าบิลด์
- ตรวจสอบว่าคุณเลือก
Device Type
ที่ถูกต้องในการกำหนดค่าบิลด์
สําหรับเคล็ดลับการแก้ปัญหาเพิ่มเติม โปรดดูหน้าการแก้ปัญหา Matter
7. ควบคุมอุปกรณ์
เมื่อมีการมอบหมายอุปกรณ์ที่เป็นไปตาม Matter เรียบร้อยแล้วและปรากฏในแอป Google Home เป็นหลอดไฟ คุณอาจลองควบคุมอุปกรณ์โดยใช้ Google Assistant, แอป Google Home หรือเครื่องมือจำลอง Google Assistant ในส่วนขยาย Google Home สำหรับโค้ดเทียบกับโค้ด
Google Assistant
ใช้ Google Assistant ในโทรศัพท์หรือฮับเพื่อสลับสถานะของอุปกรณ์จากคำสั่งเสียง เช่น พูดว่า "Ok Google เปิดไฟของฉัน"
ดูตัวอย่างคำสั่งเพิ่มเติมได้ในส่วนควบคุมอุปกรณ์สมาร์ทโฮมด้วยคำสั่งเสียงของควบคุมอุปกรณ์สมาร์ทโฮมที่เพิ่มลงในแอป Google Home
แอป Google Home
คุณอาจแตะป้ายกำกับเปิดและปิดข้างไอคอนหลอดไฟที่แสดงในแอป Google Home
ดูข้อมูลเพิ่มเติมได้ที่ควบคุมอุปกรณ์ด้วยแอป Google Home
เครื่องจำลอง Google Assistant
ในส่วนขยาย Google Home สำหรับ VS โดยใช้เครื่องจำลองของ Google Assistant คุณจะออกเสียงในอุปกรณ์ได้โดยใช้อินเทอร์เฟซที่มีลักษณะเหมือนการแชท
8. ยินดีด้วย
คุณสร้างและใช้อุปกรณ์ Matter เครื่องแรกสำเร็จแล้ว ยอดเยี่ยม!
คุณได้เรียนรู้วิธีต่อไปนี้ใน Codelab
- ติดตั้งสภาพแวดล้อมการพัฒนา Matter จากข้อกำหนดเป็นสถานะกำลังทำงาน
- สร้างและเรียกใช้อุปกรณ์ Matter
- ค่าคอมมิชชันและควบคุมอุปกรณ์จาก Google Home
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Matter ได้ในข้อมูลอ้างอิงต่อไปนี้
- Matter Primer โดย Google Home ที่คุณจะได้เรียนรู้แนวคิดและหลักการที่สำคัญของโปรโตคอล Matter
- ข้อมูลจำเพาะของ Matter, ไลบรารีอุปกรณ์ Matter และไลบรารีแอปพลิเคชัน Matter ที่เผยแพร่โดย Connected Standard Alliance
- ที่เก็บ Matter GitHub