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

1. บทนำ

Matter เป็นโปรโตคอลการเชื่อมต่อที่จะมอบโอกาสที่น่าตื่นเต้นในการพัฒนาอุปกรณ์อัจฉริยะ คุณจะได้สร้างอุปกรณ์ Matter เครื่องแรกใน Codelab นี้ ดูข้อมูลเกี่ยวกับ 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
    

ตั้งค่าฮับ

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

  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 ~/
    

ตั้งค่า SDK ของ Matter

  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 คือเว็บแอปพลิเคชันที่คุณจัดการการผสานรวม 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. ในรหัสผู้ให้บริการ (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. ไปที่ไดเรกทอรีบิลด์ lighting-app ESP32 และตั้งค่าสถาปัตยกรรมเป้าหมายดังนี้
    $ 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 สำหรับอุปกรณ์ที่เปิดใช้ 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]]

การแก้ปัญหา

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

สําหรับเคล็ดลับการแก้ปัญหาเพิ่มเติม โปรดดูหน้าการแก้ปัญหา 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