Xây dựng thiết bị Matter

1. Giới thiệu

Matter là một giao thức kết nối mang lại những cơ hội thú vị cho việc phát triển các thiết bị thông minh. Trong lớp học lập trình này, bạn sẽ tạo thiết bị theo chuẩn Matter đầu tiên. Để tìm hiểu về Matter, hãy truy cập vào Trung tâm dành cho nhà phát triển của Google Home: Matter hoặc trang web của Liên minh Tiêu chuẩn kết nối.

Kiến thức bạn sẽ học được

  • Cách tích hợp một thiết bị thực với Matter.
  • Cách lắp ráp và điều khiển thiết bị Matter bằng Google Home.

Bạn cần có

2. Thiết lập môi trường

Xác định thiết bị nối tiếp

Bước đầu tiên trong quá trình thiết lập môi trường phát triển là xác định cổng nối tiếp mà thiết bị của bạn được kết nối. Thông tin này sẽ cho phép bạn lập trình và tương tác với bảng nhà phát triển của mình.

  1. Kết nối bảng nhà phát triển với máy tính bằng cáp USB.
  2. Xem trong hệ thống tệp /dev để tìm thiết bị bảng của nhà phát triển. Bạn có thể thu hẹp phạm vi tìm kiếm bằng cách chỉ định tiền tố thiết bị của bảng nhà phát triển. ESP32 của Espressif sử dụng /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Thiết lập thiết bị trung tâm

Thiết lập trung tâm bằng cách sử dụng chính Tài khoản Google mà bạn định dùng cho lớp học lập trình này.

Thiết lập môi trường phát triển

Điều kiện tiên quyết

Những hướng dẫn này đã được thử nghiệm trên Debian Linux và sẽ hoạt động trên hầu hết các bản phân phối Linux dựa trên Debian, bao gồm cả Ubuntu. Nếu bạn đang làm việc với một bản phân phối Linux khác, thì quy trình thiết lập phần phụ thuộc có thể khác với các bước sau đây.

Cài đặt phần phụ thuộc

Chạy lệnh sau để cài đặt các tệp nhị phân của gói Linux có thể chưa được cài đặt bắt buộc:

$ 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

Thiết lập SDK

Để tiếp tục lớp học lập trình này, bạn cần có SDK Espressif (Khung phát triển Espressif IoT hay "ESP-IDF").

  1. Tạo một thư mục để chứa ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Sao chép ESP-IDF từ GitHub vào thư mục này:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. Hoàn tất quá trình cài đặt chuỗi công cụ:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Thiết lập SDK Matter

  1. Sao chép kho lưu trữ nguồn mở của Matter:
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. Tìm nạp các mô-đun con của kho lưu trữ:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Tự thân khởi động môi trường phát triển Matter:
    $ source ./scripts/bootstrap.sh
    

3. Bảng điều khiển dành cho nhà phát triển trên Google Home

Google Home Developer Console là một ứng dụng web để bạn quản lý các công cụ tích hợp Matter với Google Home.

Mọi thiết bị Matter đã vượt qua chứng nhận Matter của Liên minh Tiêu chuẩn Kết nối (Liên minh) đều hoạt động trong hệ sinh thái Google Home. Thiết bị đang trong quá trình phát triển và chưa được chứng nhận có thể được ủy quyền trong hệ sinh thái Google Home với một số điều kiện nhất định. Hãy xem bài viết Hạn chế về tính năng ghép nối để biết thêm thông tin.

Tạo dự án của nhà phát triển

Để bắt đầu, hãy truy cập Google Home Developer Console:

  1. Nhấp vào Tạo dự án.
  2. Nhập một tên riêng biệt cho dự án, rồi nhấp vào Tạo dự án. Hộp thoại tạo dự án mới
  3. Nhấp vào + Thêm công cụ tích hợp. Sau đó, bạn sẽ được chuyển đến màn hình Tài nguyên dữ liệu. Tại đây, bạn có thể xem tài liệu về hoạt động phát triển Matter và đọc về một số công cụ.
  4. Khi bạn đã sẵn sàng tiếp tục, hãy nhấp vào Tiếp theo: Phát triển. Thao tác này sẽ cho thấy trang Danh sách kiểm tra các yếu tố.
  5. Nhấp vào Tiếp theo: Thiết lập
  6. Trên trang Thiết lập, hãy nhập Tên sản phẩm.
  7. Nhấp vào Chọn loại thiết bị rồi chọn loại thiết bị trong trình đơn thả xuống (trong trường hợp này là Light).
  8. Trong phần Mã nhà cung cấp (VID), hãy chọn VID Thử nghiệm rồi chọn 0xFFF1 trong trình đơn thả xuống Thử nghiệm VID. Trong mã sản phẩm (PID), hãy nhập 0x8000 rồi nhấp vào Lưu & tiếp tục, rồi nhấp vào Lưu trên trang sau. Bạn có thể dùng các giá trị VID/PID chính xác này, các bước trong lớp học lập trình sau này sẽ phụ thuộc vào các giá trị đó. Thiết lập dự án
  9. Bây giờ, bạn sẽ thấy dữ liệu tích hợp trong mục Tích hợp đối tượng.
  10. Hãy khởi động lại thiết bị trung tâm để đảm bảo thiết bị đó nhận được cấu hình dự án tích hợp theo chuẩn Matter mới nhất. Nếu sau này phải thay đổi VID hoặc PID, bạn cũng cần khởi động lại sau khi lưu dự án để thay đổi có hiệu lực. Hãy xem bài viết Khởi động lại thiết bị Google Nest hoặc Google Wifi để biết hướng dẫn khởi động lại từng bước.

4. Tạo thiết bị

Tất cả ví dụ trong Matter đều được đặt trong thư mục ví dụ trong kho lưu trữ GitHub. Có một số mẫu, nhưng chúng ta sẽ tập trung vào lớp học lập trình này về lighting-app (ứng dụng chiếu sáng).

Đây là một thiết bị đơn giản xuất hiện trong Google Home dưới dạng Đèn/Bật/Tắt, phản hồi các lệnh Bật và Tắt. Việc thiết lập chế độ điều khiển đèn điện thực tế nằm ngoài phạm vi của lớp học lập trình này.

Định cấu hình bản dựng

  1. Định cấu hình SDK Matter và kích hoạt môi trường bản dựng Matter:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. Bật Ccache để tăng tốc quá trình xây dựng:
    $ export IDF_CCACHE_ENABLE=1
    
  3. Chuyển đến thư mục bản dựng ESP32 lighting-app và đặt cấu trúc mục tiêu:
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. Chạy tiện ích cấu hình:
      $ idf.py menuconfig
      
    2. Chọn Demo -> Device Type rồi đặt Device Type thành ESP32-DevKitC.
    3. Nhấn phím mũi tên trái để quay lại trình đơn cấp cao nhất.
    4. Chọn Component config --->.
    5. Chọn CHIP Device Layer --->.
    6. Chọn Device Identification Options --->.
    7. Đặt Vendor ID thành VID do Liên minh chỉ định hoặc VID thử nghiệm.
    8. Đặt Product ID thành PID mà bạn đặt khi tích hợp Matter trong Google Home Developer Console.
    9. Nhấn vào nút S để lưu.
    10. Nhấn vào Return để chấp nhận đường dẫn mặc định sẽ lưu cấu hình.
    11. Nhấn vào Quay lại để đóng hộp thoại xác nhận lưu.
    12. Nhấn Q để thoát khỏi tiện ích cấu hình.

Chạy bản dựng

Gọi tập lệnh bản dựng:

idf.py build

Bản dựng phải hoàn tất và không gặp lỗi.

Lập trình thiết bị

  1. Kết nối bảng nhà phát triển với máy tính bằng cáp USB.
  2. Xoá sạch mọi chương trình cơ sở trước đó trên thiết bị (nếu chỉ có một bảng nhà phát triển được kết nối với máy tính, bạn có thể bỏ tuỳ chọn -p {device} – thiết bị sẽ tự động được phát hiện):
    idf.py -p {device} erase-flash
    
  3. Sao chép ứng dụng mới vào bảng dành cho nhà phát triển bằng:
    idf.py -p {device} flash
    

Bạn có thể xem thêm thông tin về các tuỳ chọn nhấp nháy tại trang tài liệu esptool.py của Espressif.

5. Kết nối với thiết bị

  1. Mở một cửa sổ dòng lệnh.
  2. Ghi lại thư mục bạn đang truy cập, sau đó kết nối với thiết bị Matter mới bằng GNU screen:
    $ screen -L {device} 115200
    
  3. Nếu bạn thấy một bảng điều khiển trống, hãy nhấn nút ĐẶT LẠI để bắt đầu quá trình khởi động thiết bị.

6. Ủy quyền cho thiết bị

Lưu ý: Bước này sẽ chỉ thành công nếu bạn đã thiết lập dự án trong Google Home Developer Console.

Nest Hub

Cần có một thiết bị trung tâm để vận hành thiết bị trên vải Matter. Đây là một thiết bị Google Nest, chẳng hạn như Nest Hub (thế hệ 2), hỗ trợ Matter và sẽ đóng vai trò vừa là Bộ định tuyến biên cho các thiết bị hỗ trợ giao thức Thread, vừa là một đường dẫn thực hiện cục bộ để định tuyến các ý định của Nhà thông minh.

Tham khảo danh sách này để biết trung tâm hỗ trợ Matter.

Trước khi bắt đầu quy trình vận hành, hãy kiểm tra để đảm bảo rằng:

  • Thiết bị trung tâm của bạn được ghép nối với cùng một Tài khoản Google mà bạn đã dùng để đăng nhập trên Google Home Console.
  • Thiết bị trung tâm của bạn kết nối với cùng một mạng Wi-Fi với máy tính mà bạn đang dùng để chạy Thiết bị Matter ảo.
  • Thiết bị trung tâm của bạn nằm trong cùng cấu trúc mà bạn đang sử dụng trên Ứng dụng Google Home. ("nhà" trong Google Home Graph đại diện cho cấu trúc của bạn).

Ghép nối thiết bị

Làm theo hướng dẫn ghép nối ESP32 để ghép nối thiết bị.

Lưu ý: Nếu bạn đang sử dụng M5STACK, hãy lưu ý rằng màn hình của thiết bị sẽ vẫn trống sau khi được nhấp nháy, vì vậy bạn sẽ phải xem mã QR bằng URL xuất hiện trong bảng điều khiển. Hoặc bạn có thể nhập mã ghép nối thủ công.

Ví dụ về kết quả của bảng điều khiển hiển thị URL của mã QR:

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]]

Khắc phục sự cố

Không uỷ quyền được

Để biết thêm các mẹo khắc phục sự cố, hãy xem trang Khắc phục sự cố về vấn đề.

7. Điều khiển thiết bị

Sau khi thiết bị theo chuẩn Matter của bạn được chạy thành công và xuất hiện trong ứng dụng Google Home dưới dạng bóng đèn, bạn có thể thử điều khiển thiết bị bằng Trợ lý Google, ứng dụng Google Home hoặc Trình mô phỏng Trợ lý Google trong Tiện ích Google Home cho VS Code.

Trợ lý Google

Sử dụng Trợ lý Google trên điện thoại hoặc thiết bị trung tâm để bật/tắt trạng thái của thiết bị qua lệnh thoại, chẳng hạn như nói "Ok Google, bật/tắt đèn của tôi".

Hãy xem phần Điều khiển các thiết bị nhà thông minh bằng lệnh thoại trong bài viết Điều khiển các thiết bị nhà thông minh được thêm vào ứng dụng Google Home để biết thêm ví dụ về các lệnh.

Ứng dụng Google Home

Bạn có thể nhấn vào các nhãn BậtTắt bên cạnh biểu tượng bóng đèn xuất hiện trên ứng dụng Google Home.

Hãy xem phần Điều khiển thiết bị bằng ứng dụng Google Home để biết thêm thông tin.

Trình mô phỏng Trợ lý Google

Trong Tiện ích Google Home dành cho Mã VS, bằng cách sử dụng Trình mô phỏng Trợ lý Google, bạn có thể đưa ra cách phát âm cho thiết bị của mình bằng một giao diện giống như trò chuyện.

8. Xin chúc mừng!

Bạn đã tạo và chạy thành công thiết bị Matter đầu tiên của mình. Tuyệt vời!

Trong lớp học lập trình này, bạn đã tìm hiểu cách:

  • Cài đặt môi trường phát triển Matter từ yêu cầu đến trạng thái làm việc.
  • Tạo và chạy thiết bị theo chuẩn Matter.
  • Cài đặt và kiểm soát thiết bị của bạn từ Google Home.

Để tìm hiểu thêm về Matter, hãy tham khảo các tài liệu tham khảo sau: