Khắc phục sự cố

Ứng dụng mẫu

Nếu gặp vấn đề khi sử dụng Home API, bạn có thể thu thập nhật ký để gỡ lỗi thêm. Để thu thập nhật ký từ thiết bị di động, bạn cần có Cầu gỡ lỗi Android (adb). Nếu bạn cần trợ lý của Google hỗ trợ, hãy thu thập nhật ký từ cả thiết bị Android và trung tâm, sau đó mở một Trình theo dõi sự cố kèm theo thông tin và nhật ký liên quan.

Thu thập nhật ký Android

Thiết bị di động của bạn phải được kết nối với máy cục bộ cho tất cả các bước liên quan đến adb.

Cài đặt adb

Nếu bạn chưa thực hiện, hãy thiết lập Cầu gỡ lỗi Android trên máy cục bộ:

  1. Cài đặt "adb" trên máy tính.
  2. Bật Tuỳ chọn cho nhà phát triển và Gỡ lỗi qua USB trên điện thoại Android.

Lấy mã thiết bị di động

  1. Lấy mã nhận dạng của thiết bị di động:
    adb devices
    List of devices attached
    device-id    device
  2. Lưu trữ giá trị này trong một biến có tên là phoneid:
    phoneid=device-id

Thông tin phiên bản

Bạn nên thu thập tất cả thông tin về phiên bản liên quan đến chế độ thiết lập của mình bất cứ khi nào bạn quyết định thu thập nhật ký. Bạn cần làm việc này nếu cần chia sẻ vấn đề với Google.

  1. Lưu nhiều thông tin thiết bị vào các biến:
    containerinfo=$(adb -s $phoneid shell dumpsys package com.google.android.gms | grep -m 1 "versionName" || true); ghainfo=$(adb -s $phoneid shell dumpsys package com.google.android.apps.chromecast.app | grep -m 1 "versionName" || true); androidversion=$(adb -s $phoneid shell getprop ro.build.version.release || true); androidapiversion=$(adb -s $phoneid shell getprop ro.build.version.sdk || true); chimeradump=$(adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider || true); homemoduleinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.home" || true); optionalhomemoduleinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.optional_home" || true); threadinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.threadnetwork" || true); enabledfeatures=$(echo "$chimeradump" | grep "Enabled features" | grep -i "home" | sort -u || true)
  2. Lưu tất cả biến vào một tệp có tên là _versions.txt:

    Mở rộng để hiện các lệnh lưu biến vào tệp

    Bạn có thể sao chép và dán toàn bộ khối vào một thiết bị đầu cuối cùng một lúc.

    versionfile="_versions.txt"
    echo "Saving version info to $versionfile"
    echo "Container version: $containerinfo" > $versionfile
    echo "Home Module version: $homemoduleinfo" >> $versionfile
    echo "Optional Home Module version: $optionalhomemoduleinfo" >> $versionfile
    echo "Thread Module version: $threadinfo" >> $versionfile
    echo "GHA version: $ghainfo" >> $versionfile
    echo "Android version: $androidversion" >> $versionfile
    echo "Android API version: $androidapiversion" >> $versionfile
    echo "Found enabled features: $enabledfeatures" >> $versionfile
  3. Xác minh nội dung của _versions.txt:
    cat _versions.txt

    Mở rộng để xem kết quả của tệp mẫu

    Container version:     versionName=26.26.34 (190400-945364269)
    Home Module version:             com.google.android.gms.home [v262634001]
    Optional Home Module version:         com.google.android.gms.optional_home [262634025] ...
    Thread Module version:             com.google.android.gms.threadnetwork [v262634001]
    GHA version:     versionName=4.22.28.0
    Android version: 14
    Android API version: 34
    Found enabled features:             Enabled features: appsearch_impl, brella_dynamite, dck_management...
    Giờ đây, bạn có thể cung cấp tệp này cho Google khi cần để khắc phục sự cố.

Bật cờ gỡ lỗi chi tiết

Trước khi thu thập nhật ký thiết bị Android hoặc chạy báo cáo lỗi, hãy định cấu hình dung lượng bộ nhớ đệm của trình ghi nhật ký và bật thẻ gỡ lỗi chi tiết cho các thành phần của Google Home và GMS:

# Clear existing device logs and expand logger buffer size
adb -s $phoneid logcat -b all -c
adb -s $phoneid logcat -G 8M

# Enable displaying seconds on the screen
adb -s $phoneid shell settings put secure clock_seconds 1

# Enable GMS Service ID verbose flags
adb -s $phoneid shell setprop log.tag.gms_svc_id:168 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:304 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:305 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:319 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:336 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:360 VERBOSE

# Enable GHP and Matter log tags
adb -s $phoneid shell setprop log.tag.CameraCommissioningPlugin VERBOSE
adb -s $phoneid shell setprop log.tag.HomeSdk VERBOSE
adb -s $phoneid shell setprop log.tag.HomeClient VERBOSE
adb -s $phoneid shell setprop log.tag.InteractionApiChimeraService VERBOSE
adb -s $phoneid shell setprop log.tag.MatterCommissioner VERBOSE
adb -s $phoneid shell setprop log.tag.SampleApp VERBOSE

Thu thập nhật ký Android bằng tập lệnh

Cách ghi lại nhật ký thiết bị Android trực tiếp trong phiên gỡ lỗi:

  1. Làm theo hướng dẫn trong phần Bật cờ gỡ lỗi chi tiết để xoá nhật ký hiện có, mở rộng dung lượng bộ nhớ đệm và đặt thẻ ghi nhật ký chi tiết.
  2. Đóng tất cả ứng dụng đang chạy trên thiết bị di động.
  3. Xoá dữ liệu nhiễu trong vùng đệm nhật ký hiện có trước khi bắt đầu kiểm thử:
    adb -s $phoneid logcat -c
  4. Bắt đầu quá trình thu thập nhật ký trong cửa sổ dòng lệnh:
    adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt
    Để cửa sổ dòng lệnh này mở. Thao tác này sẽ thu thập nhật ký từ thiết bị của bạn trong suốt thời gian quá trình này chạy.
  5. Chạy ứng dụng và thực hiện tất cả thao tác cần thiết trên giao diện người dùng để tái hiện vấn đề.
  6. Sau khi hoàn tất, hãy dừng quy trình logcat trong dòng lệnh bằng cách nhấn tổ hợp phím Ctrl+C (hoặc Cmd+C trên máy Mac).
  7. Nhật ký của phiên này được lưu trong android-logs_YYYYMMDDmmss.txt. Đính kèm cả android-logs_YYYYMMDDmmss.txt và _versions.txt vào mọi báo cáo lỗi.

Thu thập nhật ký Android bằng adb bugreport

Chụp báo cáo lỗi đầy đủ trên Android khi bạn cần chia sẻ thông tin chẩn đoán chi tiết về các vấn đề ở cấp hệ thống, tệp kết xuất bộ nhớ hoặc gỡ lỗi Bluetooth và mạng cấp thấp:

  • Uỷ quyền Matter BLE: Khi báo cáo vấn đề uỷ quyền Matter liên quan đến BLE, hãy bật Nhật ký theo dõi HCI Bluetooth trong Tuỳ chọn cho nhà phát triển (Cài đặt > Tuỳ chọn cho nhà phát triển > Bật nhật ký theo dõi HCI Bluetooth) trước khi tái hiện vấn đề.
  • Thiết lập trước khi kiểm thử: Trước khi chạy kiểm thử, hãy làm theo các bước trong phần Bật cờ gỡ lỗi chi tiết để bật thuộc tính gỡ lỗi chi tiết trên thiết bị của bạn.
  • Ghi lại báo cáo lỗi: Sau khi chạy kiểm thử và tái hiện vấn đề, hãy chạy lệnh sau để tạo bản lưu trữ báo cáo lỗi đầy đủ:
    adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip
  • Thông tin gỡ lỗi nâng cao: Tệp android-bugreport_YYYYMMDDmmss.zip được tạo chứa dữ liệu chẩn đoán toàn diện ở cấp hệ thống, bao gồm cả tệp báo lỗi hệ thống đầy đủ, số liệu thống kê về bộ nhớ, thông tin chẩn đoán pin và dấu vết hệ thống con cấp thấp, cung cấp thêm thông tin nâng cao để gỡ lỗi.

Nhật ký thiết bị Cast Hub

Bạn có thể xem nhật ký thiết bị cho Google Nest Hub bằng phương thức này. Phương thức này được hỗ trợ cho các mẫu sau:

  • Google Home
  • Google Nest Audio
  • Google Nest Hub
  • Google Nest Mini

Cách bật trung tâm Cast để truy xuất nhật ký cục bộ:

  1. Thiết lập Cầu gỡ lỗi Android.
  2. Lấy địa chỉ IP của trung tâm:

    • Trên trung tâm điều khiển (nếu có màn hình):
      1. Vuốt xuống từ đầu màn hình
      2. Nhấn vào biểu tượng Cài đặt
      3. Tìm địa chỉ IP của thiết bị: Trên Nest Hub (2nd gen), hãy chuyển đến phần Thông tin thiết bị > Thông tin kỹ thuật > Địa chỉ IP
    • Trong ứng dụng GHA trên điện thoại:
      1. Nhấn vào thiết bị để mở trang thông tin chi tiết về thiết bị
      2. Nhấn vào biểu tượng Cài đặt để mở trang cài đặt
      3. Tìm địa chỉ IP của thiết bị: chuyển đến phần Thông tin thiết bị > Thông tin kỹ thuật > Địa chỉ IP
  3. Trên máy tính kết nối với cùng một mạng Wi-Fi như thiết bị:

      adb connect ip-address
      adb logcat
    

  4. Để cung cấp nhật ký cho người khác, hãy thực hiện thao tác không thành công và chuyển kết quả sang tệp văn bản:

      adb logcat -d > platform-logs.txt
    

Tự động hoá

Phát hiện đường viền

Các quy trình tự động hoá trong hệ sinh thái Google Home có tính năng phát hiện thay đổi. Đây là logic giúp xác minh rằng một điều kiện khởi động chỉ kích hoạt khi có sự thay đổi trạng thái thực tế, thay vì một bản cập nhật trạng thái chỉ lặp lại trạng thái trước đó của thiết bị.

Ví dụ: nếu việc bật đèn là một điều kiện khởi động, thì tính năng phát hiện cạnh sẽ xác minh rằng điều kiện khởi động chỉ kích hoạt nếu thiết bị đèn đó chuyển từ trạng thái tắt sang bật, thay vì từ bật sang bật (không thay đổi).

Quy trình tự động hoá không hoạt động như mong đợi

Sau khi tính đến việc phát hiện cạnh, nếu một quy trình tự động hoá không hoạt động như mong đợi, hãy làm như sau:

  1. Kiểm tra từng thiết bị để đảm bảo thiết bị đó hoạt động đúng cách, độc lập với quy trình tự động hoá của bạn.

  2. Hãy xem biểu đồ tự động hoá cho quy trình tự động hoá của bạn, so sánh biểu đồ đó với DSL tự động hoá để phát hiện mọi giả định có thể không chính xác của bạn.

  3. Quan sát trạng thái thiết bị trong ứng dụng Google Home trong quá trình thực thi quy trình tự động hoá.

  4. Kiểm tra để đảm bảo rằng tất cả thiết bị mà quy trình tự động hoá tham chiếu đều có trong nhà mà bạn muốn. Việc xoá một thiết bị mà quy trình tự động hoá phụ thuộc vào có thể gây ra hậu quả ngoài ý muốn. Xem phần Tác động của việc xoá thiết bị đối với quy trình tự động hoá.

Quy trình tự động hoá chạy không đúng lúc

Nếu quy trình tự động hoá chạy không đúng lúc, hãy kiểm tra tiêu chí của điều kiện khởi động. Bạn có thể cần thêm logic bổ sung để đảm bảo rằng thay đổi về trạng thái chỉ được ghi lại một lần và chỉ kích hoạt quy trình tự động hoá một lần.

Quy trình tự động hoá không biên dịch

Đảm bảo ứng dụng của bạn chứa tất cả các lệnh nhập cần thiết, bao gồm cả từng lớp tương ứng với các loại nút khác nhau cũng như các đặc điểm mà bạn đang tham chiếu.

Không xác thực được quy trình tự động hoá đã tạo

Nếu quy trình tạo tự động hoá không vượt qua quy trình xác thực, thì một thông báo cảnh báo hoặc thông báo lỗi sẽ cung cấp thông tin về vấn đề. Để biết thêm thông tin, hãy tham khảo tài liệu tham khảo về ValidationIssueType.

Hàm danh sách gửi ngoại lệ

Khi gọi hàm List của Automation API, trình xử lý đọc có thể gửi ngoại lệ do thiếu các tính năng của API. Để giảm thiểu vấn đề này, hãy xoá quy trình tự động hoá bị ảnh hưởng.

Để thực hiện việc này:

  1. Kiểm tra để đảm bảo bạn đã cài đặt adb. Xem phần Cài đặt adb.
  2. Truy xuất mã nhận dạng của quy trình tự động hoá từ nhật ký Android bằng cách gọi:

    adb logcat -s GhpNative

    Nhật ký mẫu:

    adb logcat -s GhpNative level:debug | grep -A 10 -B 10 AutomationManagerTrait\.ListResponse
    
    INTERACTION RESPONSE -> SendCommandsResponse:
    1 {
    1: "automation@global"
    3 {
      1: "home.internal.traits.automation.AutomationManagerTrait.ListResponse"
      2:
      5 {
        1: "type.googleapis.com/home.internal.traits.automation.AutomationManagerTrait.ListResponse"
        1 {
            1: "1111-2222-3333-44444-55555" // Automation ID to delete
            2: "structure@2222-3333-4444-5555-6666"
    ...

    Nếu cần xoá nhiều mã tự động hoá, bạn có thể sử dụng trình chuyển trang của thiết bị đầu cuối để kiểm soát kết quả:

    adb logcat -s GhpNative level:debug | less
  3. Xoá quy trình tự động hoá bằng mã nhận dạng của quy trình tự động hoá:

    structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
    

Discovery API ghi lại cảnh báo khi một đặc điểm bị huỷ đăng ký

Nếu Discovery API ghi lại cảnh báo cho Trait not found, thì tức là API đang cố gắng sử dụng đặc điểm cho các đề xuất của Discovery, nhưng sẽ không thành công vì đặc điểm này không được đăng ký trong quá trình khởi chạy. Ví dụ:

09-03 17:45:20.578 10646 10646 W AutomationSdk: trait_id: "home.matter.6006.clusters.fc43" and Exception occurred com.google.home.HomeException: 18: Trait not found: home.matter.6006.clusters.fc43
09-03 17:45:20.578 10646 10646 W AutomationSdk: While converting candidate: # com.google.home.platform.traits.AutomationCandidateNode@76f0b582

Giá trị nhận dạng đặc điểm là home.matter.6006.clusters.fc43, tương ứng với RelativeHumidityControl. Để xác định tên đặc điểm từ mã nhận dạng, hãy xem Chỉ mục đặc điểm.

Trong ví dụ này, RelativeHumidityControl cần được đăng ký trong quá trình khởi chạy ứng dụng. Hãy tham khảo phần Đăng ký đặc điểm để thêm đặc điểm của bạn vào sổ đăng ký.

OAuth

Nếu bạn có sẵn một ứng dụng OAuth

Nếu đã có một ứng dụng OAuth đã xác minh cho một ứng dụng đã phát hành, bạn có thể sử dụng ứng dụng OAuth hiện có để thử nghiệm Home API.

Bạn không cần phải đăng ký Google Home Developer Console để thử nghiệm và sử dụng Home API. Tuy nhiên, bạn vẫn cần có một bản đăng ký Developer Console được phê duyệt để phát hành ứng dụng, ngay cả khi bạn có một ứng dụng OAuth đã xác minh từ một chế độ tích hợp khác.

Bạn cần lưu ý những điểm sau:

  • Có giới hạn 100 người dùng khi sử dụng ứng dụng OAuth hiện có. Để biết thông tin về cách thêm người dùng thử nghiệm, hãy tham khảo bài viếtThiết lập màn hình xin phép bằng OAuth. Ngoài quy trình xác minh OAuth, Home API còn áp đặt giới hạn 100 người dùng có thể cấp quyền cho ứng dụng của bạn. Giới hạn này sẽ được dỡ bỏ sau khi bạn hoàn tất quy trình đăng ký Developer Console.

  • Developer Console registration phải được gửi để phê duyệt khi bạn đã sẵn sàng hạn chế các quyền cấp theo loại thiết bị thông qua OAuth để chuẩn bị cập nhật ứng dụng bằng Home API.

Đối với Google Cloud ứng dụng vẫn đang chờ xác minh OAuth, người dùng không thể hoàn tất quy trình OAuth cho đến khi quy trình xác minh hoàn tất. Nếu bạn tìm cách cấp quyền, hệ thống sẽ báo lỗi sau:

Access blocked: <Project Name> has not completed the Google verification process.