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

1. ข้อมูลเบื้องต้น

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

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

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

สิ่งที่ต้องมี

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

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

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

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

ตั้งค่าฮับ

ตั้งค่า Hub โดยใช้บัญชี 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 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

Google Home Developer Console คือเว็บแอปพลิเคชันที่คุณจัดการการผสานรวม Matter กับ Google Home ได้

อุปกรณ์ Matter ที่ผ่านการรับรอง Connectivity Standards Alliance (Alliance) Matter ใช้งานได้ในระบบนิเวศของ Google Home อุปกรณ์ที่อยู่ระหว่างการพัฒนาที่ไม่ผ่านการรับรองสามารถมอบหมายในระบบนิเวศของ Google Home ได้ภายใต้เงื่อนไขบางประการ ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดในการจับคู่

สร้างโปรเจ็กต์นักพัฒนาซอฟต์แวร์

เริ่มต้นด้วยการไปที่ Google Home Developer Console

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

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

ตัวอย่างทั้งหมดใน Matter จะอยู่ในโฟลเดอร์ตัวอย่างในที่เก็บ GitHub ซึ่งมีตัวอย่างอยู่หลายรายการ แต่เรามุ่งเน้นที่ Codelab นี้ซึ่งอยู่ที่แอปการจัดแสง

ตัวอย่างนี้เป็นอุปกรณ์ง่ายๆ ที่ปรากฏใน 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 ที่พาร์ทเนอร์กําหนด หรือ 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 เครื่องใหม่โดยใช้ GNU screen:
    $ screen -L {device} 115200
    
  3. หากคุณเห็นคอนโซลที่ว่างเปล่า ให้กดปุ่มรีเซ็ตเพื่อเริ่มกระบวนการเปิดเครื่องอุปกรณ์

6. จัดเตรียมอุปกรณ์

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

Nest Hub

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

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

ก่อนเริ่มขั้นตอนการเริ่มใช้งาน ให้ตรวจสอบให้แน่ใจว่า

  • Hub จะจับคู่กับบัญชี Google เดียวกับที่คุณใช้ลงชื่อเข้าใช้ในคอนโซล Google Home
  • ฮับอยู่ในเครือข่าย Wi-Fi เดียวกันกับคอมพิวเตอร์ที่คุณใช้ในการเรียกใช้อุปกรณ์ Virtual 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]]

การแก้ปัญหา

การจัดเตรียมไม่สำเร็จ

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

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

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

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