สร้างอุปกรณ์ Matter

1. บทนำ

Matter เป็นโปรโตคอลการเชื่อมต่อที่นำมาซึ่งโอกาสที่น่าตื่นเต้นสำหรับการพัฒนาอุปกรณ์อัจฉริยะ ใน Codelab นี้ คุณจะได้สร้างอุปกรณ์ Matter เครื่องแรก หากต้องการดูข้อมูลเกี่ยวกับ Matter โปรดไปที่ Google Home Developer Center: Matter หรือ เว็บไซต์ Connectivity Standards Alliance

สิ่งที่คุณจะได้เรียนรู้

  • วิธีผสานรวมอุปกรณ์จริงกับ Matter
  • วิธีตั้งค่าและควบคุมอุปกรณ์ Matter ด้วย Google Home

สิ่งที่คุณต้องมี

  • ฮับ ซึ่งเป็นอุปกรณ์ Google Nest ที่รองรับ Matter เช่น Nest Hub (รุ่นที่ 2)
  • บอร์ดประเมินผล Matter ของ Espressif Systems ESP32-DevkitC หรือ ESP32 M5STACK
  • PC ที่ใช้ Linux
  • ความรู้พื้นฐานเกี่ยวกับ Linux

2. ตั้งค่าสภาพแวดล้อม

ระบุอุปกรณ์ซีเรียล

ขั้นตอนแรกในการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์คือการกำหนดพอร์ตอนุกรมที่อุปกรณ์เชื่อมต่ออยู่ ข้อมูลนี้จะช่วยให้คุณเขียนโปรแกรมและโต้ตอบกับบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ได้

  1. เชื่อมต่อบอร์ดสำหรับนักพัฒนาซอฟต์แวร์กับคอมพิวเตอร์โดยใช้สาย USB
  2. ดูในระบบไฟล์ /dev เพื่อค้นหาอุปกรณ์บอร์ดสำหรับนักพัฒนาซอฟต์แวร์ คุณสามารถจำกัดการค้นหาให้แคบลงได้โดยระบุคำนำหน้าอุปกรณ์ของบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ ESP32 ของ Espressif ใช้ /dev/ttyUSBx ดังนี้
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

ตั้งค่าฮับ

ตั้งค่าฮับโดยใช้บัญชี Google เดียวกับที่คุณต้องการใช้สำหรับ Codelab นี้

ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์

ข้อกำหนดเบื้องต้น

เราได้ทดสอบคำแนะนำเหล่านี้ใน Debian Linux และควรใช้ได้กับ Linux ส่วนใหญ่ที่พัฒนาจาก Debian รวมถึง Ubuntu หากคุณใช้ Linux ที่พัฒนาจาก Debian อื่น ขั้นตอนการตั้งค่าทรัพยากร 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 Development Framework หรือ "ESP-IDF")

  1. สร้างไดเรกทอรีเพื่อเก็บ ESP-IDF โดยใช้คำสั่งต่อไปนี้
    $ mkdir ~/esp-idf_tools
    
  2. โคลน ESP-IDF จาก GitHub ลงในไดเรกทอรีนี้โดยใช้คำสั่งต่อไปนี้
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. ติดตั้ง Toolchain ให้เสร็จสมบูรณ์โดยใช้คำสั่งต่อไปนี้
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

ตั้งค่า Matter SDK

  1. โคลนที่เก็บ Matter แบบโอเพนซอร์สโดยใช้คำสั่งต่อไปนี้
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. ดึงข้อมูลโมดูลย่อยของที่เก็บโดยใช้คำสั่งต่อไปนี้
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. เริ่มต้นสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ 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

  1. คลิกสร้างโปรเจ็กต์
  2. ป้อนชื่อโปรเจ็กต์ที่ไม่ซ้ำกัน แล้วคลิกสร้างโปรเจ็กต์ กล่องโต้ตอบสร้างโปรเจ็กต์ใหม่
  3. คลิก + เพิ่มการผสานรวม ซึ่งจะนำคุณไปยังหน้าจอแหล่งข้อมูล Matter ที่คุณสามารถดูเอกสารประกอบการพัฒนา Matter และอ่านเกี่ยวกับเครื่องมือบางอย่างได้
  4. เมื่อพร้อมที่จะดำเนินการต่อ ให้คลิกถัดไป: พัฒนา ซึ่งจะแสดงหน้ารายการตรวจสอบ Matter
  5. คลิกถัดไป: ตั้งค่า
  6. ในหน้าการตั้งค่า ให้ป้อนชื่อผลิตภัณฑ์
  7. คลิกเลือกประเภทอุปกรณ์ แล้วเลือกประเภทอุปกรณ์จากเมนูแบบเลื่อนลง (ในกรณีนี้คือ Light)
  8. ใน Vendor ID (VID) ให้เลือก Test VID แล้วเลือก 0xFFF1 จากเมนูแบบเลื่อนลง Test VID ใน Product ID (PID) ให้ป้อน 0x8000 แล้วคลิกบันทึกและดำเนินการต่อ จากนั้นคลิกบันทึก ในหน้าถัดไป ใช้ค่า VID/PID ที่แน่นอนเหล่านี้ เนื่องจากขั้นตอน Codelab ในภายหลังจะขึ้นอยู่กับค่าเหล่านี้
    การตั้งค่าโปรเจ็กต์
  9. ตอนนี้คุณจะเห็นการผสานรวมในส่วนการผสานรวม Matter
  10. รีบูตฮับเพื่อให้แน่ใจว่าฮับได้รับการกำหนดค่าโปรเจ็กต์การผสานรวม Matter ล่าสุด หากคุณต้องเปลี่ยน VID หรือ PID ในภายหลัง คุณจะต้องรีบูตหลังจากบันทึกโปรเจ็กต์เพื่อให้การเปลี่ยนแปลงมีผล ดูวิธีการรีบูตทีละขั้นตอนได้ที่รีสตาร์ทอุปกรณ์ Google Nest หรือ Google Wifi

4. สร้างอุปกรณ์

ตัวอย่างทั้งหมดใน Matter จะอยู่ในโฟลเดอร์ examples ในที่เก็บ GitHub มีตัวอย่างมากมายให้ใช้งาน แต่ใน Codelab นี้เราจะเน้นที่ lighting-app

ตัวอย่างนี้เป็นอุปกรณ์ง่ายๆ ที่ปรากฏใน Google Home เป็นหลอดไฟเปิด/ปิด ซึ่งตอบสนองต่อคำสั่งเปิดและปิด การทำให้ควบคุมหลอดไฟจริงได้นั้นอยู่นอกเหนือขอบเขตของ Codelab นี้

กำหนดค่าบิลด์

  1. กำหนดค่า Matter SDK และเปิดใช้งานสภาพแวดล้อมของบิลด์ Matter
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. เปิดใช้ Ccache ซึ่งจะเร่งกระบวนการบิลด์โดยใช้คำสั่งต่อไปนี้
    $ export IDF_CCACHE_ENABLE=1
    
  3. ย้ายไปยังไดเรกทอรีบิลด์ ESP32 ของ lighting-app และตั้งค่าสถาปัตยกรรมเป้าหมายโดยใช้คำสั่งต่อไปนี้
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. เรียกใช้ยูทิลิตีการกำหนดค่าโดยใช้คำสั่งต่อไปนี้
      $ idf.py menuconfig
      
    2. เลือก Demo -> Device Type และตั้งค่า Device Type เป็น ESP32-DevKitC
    3. กดปุ่มลูกศรซ้ายเพื่อกลับไปที่เมนูระดับบนสุด
    4. เลือก Component config --->
    5. เลือก CHIP Device Layer --->
    6. เลือก Device Identification Options --->
    7. ตั้งค่า Vendor ID เป็น VID ที่ Alliance กำหนดให้คุณ หรือ VID สำหรับการทดสอบ
    8. ตั้งค่า Product ID เป็น PID ที่คุณตั้งค่าในการผสานรวม Matter ใน Google Home Developer Console
    9. กด S เพื่อบันทึก
    10. กด Return เพื่อยอมรับเส้นทางเริ่มต้นที่จะบันทึกการกำหนดค่า
    11. กด Return เพื่อปิดกล่องโต้ตอบการยืนยันการบันทึก
    12. กด Q เพื่อออกจากยูทิลิตีการกำหนดค่า

เรียกใช้บิลด์

เรียกใช้สคริปต์บิลด์โดยใช้คำสั่งต่อไปนี้

idf.py build

บิลด์ควรเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด

เขียนโปรแกรมอุปกรณ์

  1. เชื่อมต่อบอร์ดสำหรับนักพัฒนาซอฟต์แวร์กับคอมพิวเตอร์โดยใช้สาย USB
  2. ล้างเฟิร์มแวร์ก่อนหน้าในอุปกรณ์ (หากคุณมีบอร์ดสำหรับนักพัฒนาซอฟต์แวร์เพียงเครื่องเดียวที่เชื่อมต่อกับคอมพิวเตอร์ คุณอาจละเว้นตัวเลือก -p {device} ได้ เนื่องจากระบบควรตรวจพบอุปกรณ์โดยอัตโนมัติ) โดยใช้คำสั่งต่อไปนี้
    idf.py -p {device} erase-flash
    
  3. คัดลอกแอปพลิเคชันใหม่ไปยังบอร์ดสำหรับนักพัฒนาซอฟต์แวร์โดยใช้คำสั่งต่อไปนี้
    idf.py -p {device} flash
    

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการแฟลชได้ที่หน้าเอกสารประกอบ Espressif esptool.py

5. เชื่อมต่อกับอุปกรณ์

  1. เปิดหน้าต่างเทอร์มินัล
  2. จดบันทึกไดเรกทอรีที่คุณอยู่ จากนั้นเชื่อมต่อกับอุปกรณ์ Matter ใหม่โดยใช้ screen ของ GNU โดยใช้คำสั่งต่อไปนี้
    $ screen -L {device} 115200
    
  3. หากเห็นคอนโซลว่างเปล่า ให้กดปุ่ม RESET เพื่อเริ่มกระบวนการบูตอุปกรณ์

6. ตั้งค่าอุปกรณ์

หมายเหตุ: ขั้นตอนนี้จะสำเร็จก็ต่อเมื่อคุณได้ตั้งค่าโปรเจ็กต์ใน Google Home Developer Console แล้ว

Nest Hub

คุณต้องมีฮับเพื่อตั้งค่าอุปกรณ์ใน Fabric ของ Matter ฮับเป็นอุปกรณ์ Google Nest เช่น Nest Hub (รุ่นที่ 2) ที่รองรับ Matter และจะทำหน้าที่เป็นทั้ง Border Router สำหรับอุปกรณ์ที่เปิดใช้ Thread และเส้นทางการดำเนินการในเครื่องสำหรับการกำหนดเส้นทาง Intent ของสมาร์ทโฮม

โปรดดู รายการนี้ เพื่อดูว่าฮับใดบ้างที่รองรับ Matter

โปรดตรวจสอบสิ่งต่อไปนี้ก่อนเริ่มกระบวนการตั้งค่า

  • ฮับจับคู่กับบัญชี Google เดียวกับที่คุณใช้ลงชื่อเข้าใช้ Google Home Console
  • ฮับอยู่ในเครือข่าย Wi-Fi เดียวกับคอมพิวเตอร์ที่คุณใช้เรียกใช้อุปกรณ์ Matter เสมือน
  • ฮับอยู่ในโครงสร้างเดียวกับที่คุณใช้ในแอป Google Home ("บ้าน" ใน Google Home Graph แสดงถึงโครงสร้างของคุณ)

จับคู่อุปกรณ์

ทำตามวิธีการจับคู่ 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]]

การแก้ปัญหา

การตั้งค่าไม่สำเร็จ

ดูเคล็ดลับการแก้ปัญหาเพิ่มเติมได้ที่หน้าการแก้ปัญหา Matter

7. ควบคุมอุปกรณ์

เมื่อตั้งค่าอุปกรณ์ที่สอดคล้องกับ Matter สำเร็จและอุปกรณ์ปรากฏในแอป Google Home เป็นหลอดไฟแล้ว คุณสามารถลองควบคุมอุปกรณ์โดยใช้ Google Assistant, แอป Google Home หรือ Google Assistant Simulator ใน Google Home Extension สำหรับ VS Code

Google Assistant

ใช้ Google Assistant ในโทรศัพท์หรือฮับเพื่อสลับสถานะอุปกรณ์จากคำสั่งเสียง เช่น พูดว่า "Ok Google สลับไฟของฉัน"

ดูตัวอย่างคำสั่งเพิ่มเติมได้ในส่วน ควบคุมอุปกรณ์สมาร์ทโฮมด้วยคำสั่งเสียง ของ ควบคุมอุปกรณ์สมาร์ทโฮมที่เพิ่มลงในแอป Google Home

แอป Google Home

คุณสามารถแตะป้ายกำกับเปิด และปิด ข้างไอคอนหลอดไฟที่แสดงในแอป Google Home

ดูข้อมูลเพิ่มเติมได้ที่ ควบคุมอุปกรณ์ด้วยแอป Google Home

Google Assistant Simulator

ใน Google Home Extension สำหรับ VS Code คุณสามารถออกเสียงให้อุปกรณ์โดยใช้ Google Assistant Simulator ผ่านอินเทอร์เฟซคล้ายแชท

8. ยินดีด้วย

คุณสร้างและตั้งค่าอุปกรณ์ Matter เครื่องแรกสำเร็จแล้ว ยอดเยี่ยม!

ใน Codelab นี้ คุณได้เรียนรู้วิธีการต่อไปนี้

  • ติดตั้งสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ Matter ตั้งแต่ข้อกำหนดไปจนถึงสถานะการทำงาน
  • สร้างและเรียกใช้อุปกรณ์ Matter
  • ตั้งค่าและควบคุมอุปกรณ์จาก Google Home

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Matter ได้จากแหล่งข้อมูลต่อไปนี้

  • Matter Primer โดย Google Home ซึ่งคุณจะได้เรียนรู้แนวคิดและหลักการที่สำคัญของโปรโตคอล Matter
  • ข้อมูลจำเพาะ Matter, คลังอุปกรณ์ Matter และคลังคลัสเตอร์แอปพลิเคชัน Matter ที่เผยแพร่โดย Connected Standard Alliance
  • ที่เก็บ Matter GitHub