แอปตัวอย่าง
หากพบปัญหาขณะใช้ Home API คุณสามารถรวบรวมบันทึก
เพื่อแก้ไขข้อบกพร่องเพิ่มเติมได้ การรวบรวมบันทึกจากอุปกรณ์เคลื่อนที่ต้องใช้ Android
Debug Bridge (adb) หากต้องการความช่วยเหลือจาก Google ให้รวบรวมบันทึกจาก
ทั้งอุปกรณ์ Android และฮับ แล้วเปิดตั๋วในเครื่องมือติดตามปัญหาพร้อม
ข้อมูลที่เกี่ยวข้องและบันทึกที่เชื่อมโยงกับปัญหา
รวบรวมบันทึกของ Android
อุปกรณ์เคลื่อนที่ต้องเชื่อมต่อกับเครื่องในพื้นที่สำหรับทุกขั้นตอนที่เกี่ยวข้องกับ adb
ติดตั้ง adb
หากยังไม่ได้ดำเนินการ ให้ตั้งค่า Android Debug Bridge ในเครื่องของคุณโดยทำดังนี้
- ติดตั้ง "adb" ใน คอมพิวเตอร์
- เปิดตัวเลือกสำหรับนักพัฒนาแอปและการแก้ไขข้อบกพร่อง USB ในโทรศัพท์ Android
รับรหัสมือถือ
- วิธีดูรหัสของอุปกรณ์เคลื่อนที่
adb devicesList of devices attached device-id device
- จัดเก็บค่านี้ในตัวแปรที่ชื่อ
phoneidphoneid=device-id
ข้อมูลเวอร์ชัน
เราขอแนะนำให้รวบรวมข้อมูลเวอร์ชันทั้งหมดที่เกี่ยวข้องกับการตั้งค่าเมื่อใดก็ตามที่คุณตัดสินใจที่จะรวบรวมบันทึก คุณต้องทำเช่นนี้หากต้องการแชร์ปัญหาให้ Google ทราบ
- บันทึกข้อมูลอุปกรณ์ต่างๆ ลงในตัวแปร
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) - บันทึกตัวแปรทั้งหมดลงในไฟล์ชื่อ
_versions.txtขยายเพื่อแสดงคำสั่งในการบันทึกตัวแปรลงในไฟล์
คุณสามารถคัดลอกและวางทั้งบล็อกลงในเทอร์มินัลได้ในครั้งเดียว
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
- ตรวจสอบเนื้อหาของ
_versions.txtดังนี้cat _versions.txtตอนนี้คุณสามารถส่งไฟล์นี้ให้ Google ได้ตามต้องการเพื่อแก้ปัญหาขยายเพื่อแสดงเอาต์พุตไฟล์ตัวอย่าง
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...
เปิดใช้ Flag การแก้ไขข้อบกพร่องแบบละเอียด
ก่อนที่จะรวบรวมบันทึกของอุปกรณ์ Android หรือเรียกใช้รายงานข้อบกพร่อง ให้กำหนดค่าขนาดบัฟเฟอร์ของเครื่องบันทึก และเปิดใช้แท็กการแก้ไขข้อบกพร่องแบบละเอียดสำหรับคอมโพเนนต์ Google Home และ 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 VERBOSEรวบรวมบันทึก Android ด้วยสคริปต์
วิธีบันทึกบันทึกของอุปกรณ์ Android ที่ใช้งานจริงระหว่างเซสชันการแก้ไขข้อบกพร่อง
- ทำตามวิธีการในเปิดใช้ Flag การแก้ไขข้อบกพร่องแบบละเอียดเพื่อล้างบันทึกที่มีอยู่ ขยายขนาดบัฟเฟอร์ และตั้งค่าแท็กการบันทึกแบบละเอียด
- ปิดแอปพลิเคชันทั้งหมดที่ทำงานบนอุปกรณ์เคลื่อนที่
- ล้างสัญญาณรบกวนในบัฟเฟอร์บันทึกที่มีอยู่ก่อนเริ่มการทดสอบ
adb -s $phoneid logcat -c - เริ่มกระบวนการรวบรวมบันทึกในหน้าต่างเทอร์มินัลโดยทำดังนี้
เปิดหน้าต่างเทอร์มินัลนี้ไว้ การดำเนินการนี้จะบันทึกจากอุปกรณ์ของคุณตราบใดที่กระบวนการทำงานอยู่adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt - เรียกใช้แอปและดำเนินการทั้งหมดในอินเทอร์เฟซผู้ใช้ที่จำเป็นต่อการจำลองปัญหา
- เมื่อเสร็จแล้ว ให้หยุดกระบวนการ
logcatในเทอร์มินัลโดยกด Ctrl+C (หรือ Cmd+C ใน Mac) - ระบบจะบันทึกบันทึกจากเซสชันนี้ไว้ใน
android-logs_YYYYMMDDmmss.txtแนบทั้งandroid-logs_YYYYMMDDmmss.txtและ_versions.txtไปกับรายงานข้อบกพร่อง
รวบรวมบันทึก Android โดยใช้รายงานข้อบกพร่องของ adb
บันทึกรายงานข้อบกพร่องของ Android แบบเต็มเมื่อคุณต้องการแชร์ข้อมูลการวินิจฉัยโดยละเอียดที่ครอบคลุมปัญหาในระดับระบบ, การทิ้งข้อมูลเมื่อเกิดข้อขัดข้อง หรือการแก้ไขข้อบกพร่องของเครือข่ายและบลูทูธในระดับต่ำ
- การจัดสรร BLE ของ Matter: เมื่อรายงานปัญหาการจัดสรร Matter ที่เกี่ยวข้องกับ BLE ให้เปิดใช้บันทึก HCI Snoop ของบลูทูธในตัวเลือกสำหรับนักพัฒนาแอป (การตั้งค่า > ตัวเลือกสำหรับนักพัฒนาแอป > เปิดใช้บันทึก HCI Snoop ของบลูทูธ) ก่อนที่จะทำซ้ำปัญหา
- การตั้งค่าก่อนการทดสอบ: ก่อนทำการทดสอบ ให้ทำตามขั้นตอนในเปิดใช้ Flag การแก้ไขข้อบกพร่องแบบละเอียดเพื่อเปิดใช้พร็อพเพอร์ตี้การแก้ไขข้อบกพร่องแบบละเอียดในอุปกรณ์
- บันทึกรายงานข้อบกพร่อง: หลังจากเรียกใช้การทดสอบและจำลองปัญหาแล้ว ให้เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างที่เก็บถาวรของรายงานข้อบกพร่องฉบับเต็ม
adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip - ข้อมูลการแก้ไขข้อบกพร่องขั้นสูง: ไฟล์
android-bugreport_YYYYMMDDmmss.zipที่สร้างขึ้นมีข้อมูลการวินิจฉัยระดับระบบที่ครอบคลุม ซึ่งรวมถึงการดัมพ์ระบบทั้งหมด สถิติหน่วยความจำ การวินิจฉัยแบตเตอรี่ และการติดตามย่อยระดับต่ำ ซึ่งให้ข้อมูลขั้นสูงเพิ่มเติมสำหรับการแก้ไขข้อบกพร่อง
บันทึกของอุปกรณ์ฮับที่ใช้แคสต์
คุณดูบันทึกของอุปกรณ์สำหรับ Google Nest Hub ได้โดยใช้วิธีนี้ ซึ่งใช้ได้กับรุ่นต่อไปนี้
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
วิธีเปิดใช้ฮับ Cast เพื่อดึงข้อมูลบันทึกในพื้นที่
- ตั้งค่า Android Debug Bridge
รับที่อยู่ IP ของฮับ
- จากฮับ หากมีหน้าจอ ให้ทำดังนี้
- เลื่อนนิ้วลงจากด้านบนของหน้าจอ
- แตะไอคอนการตั้งค่า
- ค้นหาที่อยู่ IP ของอุปกรณ์: ใน Nest Hub (2nd gen) ให้ไปที่ ข้อมูลอุปกรณ์ > ข้อมูลทางเทคนิค > ที่อยู่ IP
- จาก GHA ในโทรศัพท์ ให้ทำดังนี้
- แตะอุปกรณ์เพื่อเปิดหน้ารายละเอียดอุปกรณ์
- แตะไอคอนการตั้งค่า เพื่อเปิดหน้าการตั้งค่า
- ค้นหาที่อยู่ IP ของอุปกรณ์โดยไปที่ข้อมูล อุปกรณ์ > ข้อมูลทางเทคนิค > ที่อยู่ IP
- จากฮับ หากมีหน้าจอ ให้ทำดังนี้
ในคอมพิวเตอร์ที่อยู่ในเครือข่าย Wi-Fi เดียวกันกับอุปกรณ์ ให้ทำดังนี้
adb connect ip-addressadb logcatหากต้องการส่งบันทึกให้ผู้อื่น ให้ดำเนินการที่ล้มเหลวและ ส่งเอาต์พุตไปยังไฟล์ข้อความโดยใช้ไปป์ ดังนี้
adb logcat -d > platform-logs.txt
การทำงานอัตโนมัติ
การตรวจจับขอบ
การทำงานอัตโนมัติในระบบนิเวศของ Google Home มีการตรวจหาขอบ ซึ่งเป็นตรรกะที่ยืนยันว่าเงื่อนไขเริ่มต้นจะเปิดใช้งานก็ต่อเมื่อมีการเปลี่ยนแปลงสถานะจริงเท่านั้น ไม่ใช่การอัปเดตสถานะที่เพียงแค่ทำซ้ำสถานะก่อนหน้าของอุปกรณ์
เช่น หากการเปิดไฟเป็นตัวเริ่มต้น การตรวจหาขอบจะยืนยันว่า ตัวเริ่มต้นจะเปิดใช้งานก็ต่อเมื่ออุปกรณ์ไฟเปลี่ยนจากปิดเป็นเปิดเท่านั้น ไม่ใช่ จากเปิดเป็นเปิด (ไม่มีการเปลี่ยนแปลง)
การทำงานอัตโนมัติไม่ทำงานตามที่คาดไว้
หลังจากพิจารณาการตรวจหาขอบแล้ว หากการทำงานอัตโนมัติไม่เป็นไปตามที่คาดไว้ ให้ทำดังนี้
ตรวจสอบอุปกรณ์แต่ละเครื่องเพื่อให้แน่ใจว่าอุปกรณ์ทำงานได้อย่างถูกต้องโดยไม่ขึ้นอยู่กับการทำงานอัตโนมัติ
ดูที่กราฟการทำงานอัตโนมัติสำหรับการทำงานอัตโนมัติของคุณ โดยเปรียบเทียบกับ DSL การทำงานอัตโนมัติ เพื่อดูสมมติฐานที่อาจไม่ถูกต้อง ในส่วนของคุณ
สังเกตสถานะอุปกรณ์ในแอป Google Home ขณะดำเนินการ การทำงานอัตโนมัติ
ตรวจสอบว่าอุปกรณ์ทั้งหมดที่การทำงานอัตโนมัติอ้างอิงถึง อยู่ในโครงสร้างที่คุณคาดหวัง การลบอุปกรณ์ที่การทำงานอัตโนมัติใช้ อาจส่งผลที่ไม่คาดคิด ดูผลกระทบของการลบอุปกรณ์ต่อการทำงานอัตโนมัติ
การทำงานอัตโนมัติทำงานในเวลาที่ไม่ควร
หากการทำงานอัตโนมัติทำงานในเวลาที่ไม่ควร ให้ตรวจสอบเกณฑ์เงื่อนไขเริ่มต้น คุณอาจต้องเพิ่มตรรกะเพิ่มเติมเพื่อให้แน่ใจว่าการเปลี่ยนแปลงสถานะ จะได้รับการบันทึกเพียงครั้งเดียวและทริกเกอร์การทำงานอัตโนมัติเพียงครั้งเดียว
การทำงานอัตโนมัติไม่คอมไพล์
ตรวจสอบว่าแอปของคุณมีการนำเข้าที่จำเป็นทั้งหมด รวมถึงแต่ละคลาส ที่สอดคล้องกับประเภทโหนดต่างๆ ตลอดจนลักษณะที่คุณ อ้างอิง
การสร้างการทำงานอัตโนมัติไม่ผ่านการตรวจสอบ
หากการสร้างการทำงานอัตโนมัติไม่ผ่านการตรวจสอบความถูกต้อง ข้อความเตือนหรือข้อความแสดงข้อผิดพลาด
จะให้ข้อมูลเกี่ยวกับปัญหา ดูข้อมูลเพิ่มเติมได้ที่ValidationIssueTypeอ้างอิง
ฟังก์ชันรายการจะส่งข้อยกเว้น
เมื่อเรียกใช้ฟังก์ชันรายการ Automation API ตัวแฮนเดิลการอ่านอาจส่งข้อยกเว้นเนื่องจากไม่มีฟีเจอร์ API หากต้องการลดปัญหานี้ ให้ลบการทำงานอัตโนมัติที่ได้รับผลกระทบ
หากต้องการทำสิ่งต่อไปนี้
- ตรวจสอบว่าได้ติดตั้ง
adbแล้ว ดูติดตั้ง adb ดึงข้อมูลรหัสของการทำงานอัตโนมัติจากบันทึกของ Android โดยการเรียกใช้คำสั่งต่อไปนี้
adb logcat -s GhpNativeตัวอย่างบันทึก
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" ...หากต้องการลบรหัสการทำงานอัตโนมัติหลายรายการ คุณสามารถใช้โปรแกรมแบ่งหน้าของเทอร์มินัล เพื่อควบคุมเอาต์พุตได้
adb logcat -s GhpNative level:debug | lessลบการทำงานอัตโนมัติโดยใช้รหัสของการทำงานอัตโนมัติ
structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
Discovery API จะบันทึกคำเตือนเมื่อเลิกการลงทะเบียนลักษณะ
หาก Discovery API บันทึกคำเตือนสำหรับ Trait not found แสดงว่า
API พยายามใช้ลักษณะสำหรับผู้สมัครรับการค้นพบ แต่จะไม่
สำเร็จเนื่องจากไม่ได้ลงทะเบียนลักษณะในระหว่างการเริ่มต้น เช่น
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
ตัวระบุลักษณะภาษาคือ home.matter.6006.clusters.fc43 ซึ่งสอดคล้องกับ RelativeHumidityControl หากต้องการระบุชื่อลักษณะจากรหัส โปรดดูดัชนีลักษณะ
จากตัวอย่างนี้ คุณต้องลงทะเบียน RelativeHumidityControl ในระหว่างการเริ่มต้นแอป ดูการลงทะเบียนลักษณะเพื่อเพิ่มลักษณะลงในรีจิสทรี
OAuth
หากคุณมีไคลเอ็นต์ OAuth อยู่แล้ว
หากคุณมีไคลเอ็นต์ OAuth ที่ยืนยันแล้วสำหรับแอปที่เผยแพร่ คุณสามารถใช้ไคลเอ็นต์ OAuth ที่มีอยู่เพื่อทดสอบ Home API ได้
Google Home Developer Console ไม่จำเป็นต้องลงทะเบียนเพื่อทดสอบและใช้ Home API อย่างไรก็ตาม คุณยังคงต้องมี Developer Consoleการลงทะเบียนที่ได้รับอนุมัติเพื่อเผยแพร่แอป แม้ว่าคุณจะมี ไคลเอ็นต์ OAuth ที่ยืนยันแล้วจากการผสานรวมอื่นก็ตาม
โดยมีข้อควรพิจารณาดังนี้
เมื่อใช้ไคลเอ็นต์ OAuth ที่มีอยู่ ระบบจะจำกัดผู้ใช้ไว้ที่ 100 คน ดูข้อมูลเกี่ยวกับการเพิ่มผู้ใช้ทดสอบได้ที่ ตั้งค่าหน้าจอขอความยินยอม OAuth นอกเหนือจากการยืนยัน OAuth แล้ว Home API ยังกำหนด ขีดจำกัดผู้ใช้ 100 รายที่ให้สิทธิ์แก่แอปพลิเคชันของคุณได้ การจำกัดนี้จะถูกยกเลิกเมื่อคุณลงทะเบียน Developer Console เสร็จสมบูรณ์
Developer Console registration should be sent for approval when you are ready to restrict device-type grants through OAuth in preparation for updating your app with the Home APIs.
สำหรับGoogle Cloudแอปที่ยังรอการยืนยัน OAuth ผู้ใช้จะทำโฟลว์ OAuth ให้เสร็จสมบูรณ์ไม่ได้จนกว่าการยืนยันตัวตนจะเสร็จสมบูรณ์ การพยายามให้สิทธิ์จะล้มเหลวและแสดงข้อผิดพลาดต่อไปนี้
Access blocked: <Project Name> has not completed the Google verification process.