แอปตัวอย่าง
หากพบปัญหาเมื่อใช้ 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
- จัดเก็บค่านี้ไว้ในตัวแปรชื่อ
phoneid:phoneid=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...
เปิดใช้แฟล็กการแก้ไขข้อบกพร่องแบบละเอียด
ก่อนรวบรวมบันทึกของอุปกรณ์ Android หรือเรียกใช้รายงานข้อบกพร่อง ให้กำหนดค่าขนาดบัฟเฟอร์ของ Logger และเปิดใช้แท็กการแก้ไขข้อบกพร่องแบบละเอียดสำหรับคอมโพเนนต์ 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 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รวบรวมบันทึกของ Android ด้วยสคริปต์
วิธีบันทึกของอุปกรณ์ Android แบบเรียลไทม์ระหว่างเซสชันการแก้ไขข้อบกพร่อง
- ทำตามวิธีการในเปิดใช้แฟล็กการแก้ไขข้อบกพร่องแบบละเอียดเพื่อล้างบันทึกที่มีอยู่ ขยายขนาดบัฟเฟอร์ และตั้งค่าแท็กการบันทึกแบบละเอียด
- ปิดแอปพลิเคชันทั้งหมดที่ทำงานอยู่บนอุปกรณ์เคลื่อนที่
- ล้างสัญญาณรบกวนในบัฟเฟอร์บันทึกที่มีอยู่ก่อนเริ่มการทดสอบ โดยทำดังนี้
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 bugreport
บันทึกรายงานข้อบกพร่องของ Android แบบเต็มเมื่อคุณต้องการแชร์ข้อมูลการวินิจฉัยโดยละเอียดซึ่งครอบคลุมปัญหาในระดับระบบ, Crash Dump หรือการแก้ไขข้อบกพร่องของเครือข่ายและบลูทูธระดับต่ำ
- การคอมมิชชัน BLE ของ Matter: เมื่อรายงานปัญหาการคอมมิชชัน Matter เกี่ยวกับ BLE ให้เปิดใช้บันทึก HCI Snoop ของบลูทูธในตัวเลือกสำหรับนักพัฒนาแอป (การตั้งค่า > ตัวเลือกสำหรับนักพัฒนาแอป > เปิดใช้บันทึก HCI Snoop ของบลูทูธ) ก่อนที่จะจำลองปัญหา
- การตั้งค่าก่อนการทดสอบ: ก่อนทำการทดสอบ ให้ทำตามขั้นตอนในเปิดใช้แฟล็กการแก้ไขข้อบกพร่องแบบละเอียดเพื่อเปิดใช้พร็อพเพอร์ตี้การแก้ไขข้อบกพร่องแบบละเอียดในอุปกรณ์
- บันทึกรายงานข้อบกพร่อง: หลังจากทำการทดสอบและจำลองปัญหาแล้ว ให้เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างที่เก็บถาวรของรายงานข้อบกพร่องแบบเต็ม
adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip - ข้อมูลการแก้ไขข้อบกพร่องขั้นสูง: ไฟล์
android-bugreport_YYYYMMDDmmss.zipที่สร้างขึ้นมีข้อมูลการวินิจฉัยระดับระบบที่ครอบคลุม ซึ่งรวมถึงการดัมพ์ระบบทั้งหมด สถิติหน่วยความจำ การวินิจฉัยแบตเตอรี่ และการติดตามระบบย่อยระดับต่ำ ซึ่งให้ข้อมูลขั้นสูงเพิ่มเติมสำหรับการแก้ไขข้อบกพร่อง
บันทึกของอุปกรณ์ฮับ Cast
คุณสามารถดูบันทึกของอุปกรณ์สำหรับ Google Nest Hub ได้โดยใช้วิธีนี้ ซึ่งรองรับรุ่นต่อไปนี้
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
วิธีเปิดใช้ฮับ Cast สำหรับการดึงข้อมูลบันทึกในเครื่อง
- ตั้งค่า Android Debug Bridge
ดูที่อยู่ IP ของฮับโดยทำดังนี้
- จากฮับ หากมีหน้าจอ ให้ทำดังนี้
- เลื่อนนิ้วลงจากด้านบนของหน้าจอ
- แตะไอคอนการตั้งค่า
- ค้นหาที่อยู่ IP ของอุปกรณ์โดยไปที่ข้อมูลอุปกรณ์ > ข้อมูลทางเทคนิค > ที่อยู่ IP ใน Nest Hub (2nd gen)
- จาก GHA ในโทรศัพท์ ให้ทำดังนี้
- แตะอุปกรณ์เพื่อเปิดหน้ารายละเอียดอุปกรณ์
- แตะไอคอนการตั้งค่า เพื่อเปิดหน้าการตั้งค่า
- ค้นหาที่อยู่ IP ของอุปกรณ์โดยไปที่ข้อมูลอุปกรณ์ > ข้อมูลทางเทคนิค > ที่อยู่ IP
- จากฮับ หากมีหน้าจอ ให้ทำดังนี้
ในคอมพิวเตอร์ที่ใช้เครือข่าย Wi-Fi เดียวกันกับอุปกรณ์ ให้ทำดังนี้
adb connect ip-addressadb logcatหากต้องการส่งบันทึกให้ผู้อื่น ให้ดำเนินการที่ล้มเหลวและส่งเอาต์พุตไปยังไฟล์ข้อความโดยใช้ไปป์ ดังนี้
adb logcat -d > platform-logs.txt
การทำงานอัตโนมัติ
การตรวจจับขอบ
การทำงานอัตโนมัติในระบบนิเวศของ Google Home มีการตรวจจับขอบ ซึ่งเป็นตรรกะที่ยืนยันว่าเงื่อนไขเริ่มต้นจะเปิดใช้งานเมื่อมีการเปลี่ยนแปลงสถานะจริงเท่านั้น ไม่ใช่การอัปเดตสถานะซึ่งเป็นเพียงการทำซ้ำสถานะก่อนหน้าของอุปกรณ์
ตัวอย่างเช่น หากการเปิดไฟเป็นเงื่อนไขเริ่มต้น การตรวจจับขอบจะยืนยันว่าเงื่อนไขเริ่มต้นจะเปิดใช้งานก็ต่อเมื่ออุปกรณ์ไฟเปลี่ยนจากปิดเป็นเปิดเท่านั้น ไม่ใช่จากเปิดเป็นเปิด (ไม่มีการเปลี่ยนแปลง)
การทำงานอัตโนมัติไม่ทำงานตามที่คาดไว้
หลังจากพิจารณาการตรวจจับ Edge แล้ว หากการทำงานอัตโนมัติไม่ทำงานตามที่คาดไว้ ให้ทำดังนี้
ตรวจสอบอุปกรณ์แต่ละเครื่องเพื่อให้แน่ใจว่าทำงานได้อย่างถูกต้องโดยไม่ขึ้นอยู่กับการทำงานอัตโนมัติ
ดูกราฟการทำงานอัตโนมัติสำหรับการทำงานอัตโนมัติของคุณ โดยเปรียบเทียบกับ DSL ของการทำงานอัตโนมัติ เพื่อแสดงสมมติฐานที่อาจไม่ถูกต้องในส่วนของคุณ
สังเกตสถานะอุปกรณ์ในแอป Google Home ระหว่างการทำงานอัตโนมัติ
ตรวจสอบว่าอุปกรณ์ทั้งหมดที่การทำงานอัตโนมัติอ้างอิงอยู่ในบ้านที่คุณคาดหวังให้มีอุปกรณ์เหล่านั้นอยู่ การลบอุปกรณ์ที่การทำงานอัตโนมัติใช้ทำงานอาจส่งผลให้เกิดผลลัพธ์ที่ไม่พึงประสงค์ ดูผลกระทบของการลบอุปกรณ์ที่มีต่อการทำงานอัตโนมัติ
การทำงานอัตโนมัติทำงานทั้งที่ไม่ควรทำงาน
หากการทำงานอัตโนมัติทำงานเมื่อไม่ควรทำงาน ให้ตรวจสอบเกณฑ์ของเงื่อนไขเริ่มต้น คุณอาจต้องเพิ่มตรรกะเพิ่มเติมเพื่อให้แน่ใจว่าระบบจะบันทึกการเปลี่ยนแปลงสถานะเพียงครั้งเดียวและทริกเกอร์การทำงานอัตโนมัติเพียงครั้งเดียว
การทำงานอัตโนมัติไม่คอมไพล์
ตรวจสอบว่าแอปมีการนําเข้าที่จําเป็นทั้งหมด รวมถึงแต่ละคลาสที่สอดคล้องกับประเภทโหนดต่างๆ ตลอดจนลักษณะที่คุณอ้างอิง
การสร้างการทำงานอัตโนมัติไม่ผ่านการตรวจสอบความถูกต้อง
หากการสร้างการทำงานอัตโนมัติไม่ผ่านการตรวจสอบ คำเตือนหรือข้อความแสดงข้อผิดพลาดจะให้ข้อมูลเกี่ยวกับปัญหา ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิง ValidationIssueType
ฟังก์ชัน List แสดงข้อยกเว้น
เมื่อเรียกใช้ฟังก์ชัน List ของ 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 กำลังพยายามใช้ลักษณะสำหรับผู้สมัคร Discovery แต่จะไม่สำเร็จเนื่องจากไม่ได้ลงทะเบียนลักษณะระหว่างการเริ่มต้น เช่น
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 ที่ได้รับการยืนยันจากการผสานรวมอื่นแล้วก็ตาม
โดยมีข้อควรพิจารณาดังต่อไปนี้
โดยจะมีขีดจำกัดผู้ใช้ 100 คนเมื่อใช้ไคลเอ็นต์ OAuth ที่มีอยู่ ดูข้อมูลเกี่ยวกับการเพิ่มผู้ใช้ทดสอบได้ที่หัวข้อตั้งค่าหน้าจอขอความยินยอม OAuth นอกเหนือจากการยืนยัน OAuth แล้ว Home API ยังจำกัดจำนวนผู้ใช้ที่สามารถให้สิทธิ์แก่แอปพลิเคชันของคุณไว้ที่ 100 คน ข้อจำกัดนี้จะถูกยกเลิกเมื่อการลงทะเบียน Developer Console เสร็จสมบูรณ์
Developer Console registration ควรส่งเพื่อขออนุมัติเมื่อคุณพร้อมที่จะจำกัดการให้สิทธิ์ตามประเภทอุปกรณ์ผ่าน OAuth เพื่อเตรียมพร้อมสำหรับการอัปเดตแอปด้วย Home API
สำหรับแอป Google Cloud รายการที่ยังรอการยืนยัน OAuth อยู่ ผู้ใช้จะดำเนินการตามขั้นตอน OAuth ไม่ได้จนกว่าการยืนยันจะเสร็จสมบูรณ์ การพยายามให้สิทธิ์จะดำเนินการไม่สำเร็จและแสดงข้อผิดพลาดต่อไปนี้
Access blocked: <Project Name> has not completed the Google verification process.