Ứ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 cần Google trợ giúp, hãy thu thập nhật ký từ cả thiết bị Android và trung tâm, đồng thời mở một phiếu yêu cầu trong trình theo dõi vấn đề 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ộ trong 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ộ:
- Cài đặt "adb" trên máy tính.
- 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
- Lấy mã nhận dạng của thiết bị di động:
adb devicesList of devices attached device-id device
- 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 quyết định thu thập nhật ký. Bạn phải cung cấp thông tin này nếu cần chia sẻ vấn đề với Google.
- 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) - Lưu tất cả cá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
- Xác minh nội dung của
_versions.txt:cat _versions.txtGiờ đây, bạn có thể cung cấp tệp này cho Google khi cần để khắc phục sự cố.Mở rộng để hiện 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...
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 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 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 VERBOSEThu thập nhật ký Android bằng tập lệnh
Cách ghi lại nhật ký trực tiếp của thiết bị Android trong phiên gỡ lỗi:
- 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.
- Đóng tất cả ứng dụng đang chạy trên thiết bị di động.
- Xoá nhiễu bộ đệm nhật ký hiện có trước khi bắt đầu kiểm thử:
adb -s $phoneid logcat -c - Bắt đầu quy trình thu thập nhật ký trong cửa sổ dòng lệnh:
Không đóng cửa sổ dòng lệnh này. Thao tác này sẽ ghi lại nhật ký từ thiết bị của bạn trong suốt thời gian quy trình chạy.adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt - Chạy ứng dụng và thực hiện tất cả các thao tác trên giao diện người dùng cần thiết để tái hiện vấn đề.
- Sau khi hoàn tất, hãy dừng quy trình
logcattrong thiết bị đầu cuối bằng cách nhấn tổ hợp phím Ctrl+C (hoặc Cmd+C trên máy Mac). - Nhật ký của phiên này được lưu trong
android-logs_YYYYMMDDmmss.txt. Đính kèm cảandroid-logs_YYYYMMDDmmss.txtvà_versions.txtvào mọi báo cáo lỗi.
Thu thập nhật ký Android bằng báo cáo lỗi adb
Ghi lại báo cáo lỗi đầy đủ của 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, kết xuất sự cố hoặc gỡ lỗi mạng và Bluetooth ở cấp thấp:
- Quy trình thiết lập Matter qua BLE: Khi báo cáo vấn đề về quy trình thiết lập Matter qua BLE, hãy bật Nhật ký theo dõi HCI Bluetooth trong phần 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 các 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 thử nghiệm và tái hiện vấn đề, hãy chạy lệnh sau để tạo một tệp 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ả kết xuất hệ thống đầy đủ, số liệu thống kê về bộ nhớ, thông tin chẩn đoán về pin và dấu vết hệ thống con cấp thấp, cung cấp thông tin nâng cao hơn để gỡ lỗi.
Nhật ký thiết bị trung tâm truyền
Bạn có thể xem nhật ký thiết bị cho Google Nest Hub bằng phương pháp này. Phương pháp 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 một trung tâm truyền để truy xuất nhật ký cục bộ:
- Thiết lập Cầu gỡ lỗi Android.
Lấy địa chỉ IP của trung tâm:
- Trên trung tâm (nếu trung tâm có màn hình):
- Vuốt xuống từ đầu màn hình
- Nhấn vào biểu tượng Cài đặt
- 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
- Từ GHA trên điện thoại:
- Nhấn vào thiết bị để mở trang thông tin chi tiết về thiết bị
- Nhấn vào biểu tượng Cài đặt để mở trang cài đặt
- 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
- Trên trung tâm (nếu trung tâm có màn hình):
Trên máy tính kết nối với cùng mạng Wi-Fi như thiết bị:
adb connect ip-addressadb logcatĐể 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 đầu ra vào một 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 cạnh. Đây là logic xác minh rằng một điều kiện khởi động chỉ kích hoạt khi có thay đổi trạng thái thực tế, thay vì 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 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ừ trạng thái bật sang bật (không có thay đổi).
Tính năng 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:
Kiểm tra từng thiết bị để đảm bảo thiết bị hoạt động đúng cách mà không phụ thuộc vào hệ thống tự động hoá.
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 về phía bạn.
Theo dõi 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á.
Kiểm tra để đảm bảo rằng tất cả các thiết bị mà quy trình tự động hoá tham chiếu đều có trong cấu trúc mà bạn muốn. Việc xoá một thiết bị mà một quy trình tự động hoá phụ thuộc vào có thể gây ra những hậu quả không mong muốn. Xem phần Ảnh hưởng của việc xoá thiết bị đối với các quy trình tự động hoá.
Quy trình tự động hoá chạy khi không nên
Nếu quy trình tự động hoá chạy khi không nên, hãy xem xét các điều kiện khởi động. Bạn có thể cần thêm logic bổ sung để đảm bảo rằng một thay đổi về trạng thái chỉ được ghi lại một lần và chỉ kích hoạt quy tắc tự động 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 thành phần 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.
Quy trình tự động hoá không vượt qua được bước xác thực
Nếu quá trình tạo quy trình 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 lỗi sẽ cung cấp thông tin về vấn đề. Để biết thêm thông tin, hãy tham khảo ValidationIssueType tài liệu tham khảo.
Hàm List sẽ gửi các ngoại lệ
Khi gọi hàm Automation API List, các trình xử lý đọc có thể gửi ngoại lệ do thiếu các tính năng 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:
- Kiểm tra để đảm bảo bạn đã cài đặt
adb. Xem phần Cài đặt adb. 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 GhpNativeVí dụ về nhật ký:
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ã nhận dạng tự động hoá, bạn có thể sử dụng trình phân trang của thiết bị đầu cuối để kiểm soát đầu ra:
adb logcat -s GhpNative level:debug | lessXoá quy tắc tự động hoá bằng mã nhận dạng của quy tắc 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 nhật ký cảnh báo cho Trait not found, điều này có nghĩa là API đang cố gắng sử dụng đặc điểm cho các đề xuất trên Khám phá, nhưng sẽ không thành công vì đặc điểm này chưa được đăng ký trong quá trình khởi tạo. 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ộ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 tạo ứng dụng. Hãy tham khảo phần Đăng ký đặc điểm để thêm đặc điểm vào sổ đăng ký.
OAuth
Nếu bạn đã có ứng dụng OAuth
Nếu đã có một ứng dụng OAuth được xác minh cho một ứng dụng đã xuất bản, bạn có thể dùng ứng dụng OAuth hiện có để kiểm thử Home API.
Bạn không cần đăng ký Google Home Developer Console để kiểm thử và sử dụng Home API. Tuy nhiên, bạn vẫn cần đăng ký Developer Console đã được phê duyệt để xuất bản ứng dụng, ngay cả khi bạn có một ứng dụng OAuth đã xác minh từ một quy trình tích hợp khác.
Bạn cần cân nhắc 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 kiểm thử, hãy tham khảo phầnThiết lập màn hình đồ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. Hạn chế này sẽ được gỡ bỏ sau khi bạn hoàn tất quy trình đăng ký Developer Console.
Developer Consoleđăng ký phải được gửi để phê duyệt khi bạn sẵn sàng hạn chế các cấp phé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 những ứng dụng Google Cloud 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 cố gắng cấp quyền, hệ thống sẽ báo lỗi sau:
Access blocked: <Project Name> has not completed the Google verification process.