ชุดแดชบอร์ดและการแจ้งเตือนนี้ช่วยให้คุณดูแลการผสานรวมคุณภาพสูงกับระบบนิเวศของ Google Home ได้อย่างมีประสิทธิภาพ Google มุ่งมั่นที่จะ สนับสนุนพาร์ทเนอร์ในการพัฒนาระบบนิเวศคุณภาพสูงสำหรับลูกค้าทุกราย
แดชบอร์ดมี 3 ส่วน โดยแต่ละส่วนจะครอบคลุมส่วนสำคัญที่มีส่วนช่วยใน คุณภาพของการผสานรวมโดยรวม
เมตริกจาก Google ถึงพาร์ทเนอร์ - วัดความสมบูรณ์ของการเรียกจาก Google ไปยังแบ็กเอนด์ระบบคลาวด์ของคุณ
สถานะของระบบ - เมตริกพาร์ทเนอร์กับ Google - วัดสถานะของการเรียกจากระบบของคุณไปยัง Google
สถานะความสมบูรณ์ของอุปกรณ์ - ความแม่นยำของสถานะ - วัดความแม่นยำของสถานะที่จัดเก็บ ในระบบของ Google ซึ่งใช้เพื่อตอบคำค้นหาของผู้ใช้
เมื่อเมตริกไม่เป็นไปตามค่าเป้าหมาย ระบบจะไฮไลต์เป็นสีแดงเพื่อ ระบุปัญหาที่อาจส่งผลต่อประสบการณ์ของผู้ใช้ ข้อมูลต่อไปนี้ จะให้รายละเอียดเกี่ยวกับเป้าหมายแต่ละรายการและเหตุผลที่เป้าหมายเหล่านั้นมีความสําคัญต่อผู้ใช้
หากปุ่มต่อไปนี้ไม่นำคุณไปยังแดชบอร์ดโดยตรง คุณจะไปที่แดชบอร์ดได้โดยเลือกหน้าภาพรวม เลือกแดชบอร์ด แล้วเลือกแดชบอร์ด Google Home Vitals (ระบบคลาวด์) จากรายการแดชบอร์ดของฉันเพื่อดูแดชบอร์ด
เมตริกจาก Google ถึงพาร์ทเนอร์
เมตริกอัตราความสำเร็จในการค้นหา/ดำเนินการ >= 99.5% จะวัดความถี่ที่ระบบดำเนินการตามคำสั่งของผู้ใช้ได้อย่างถูกต้อง ซึ่งจะช่วยหลีกเลี่ยงการตอบกลับของ Assistant เช่น "ฉันเข้าถึงอุปกรณ์ไม่ได้" หรือการยืนยันคำสั่งที่ไม่ถูกต้องซึ่งไม่ได้ดำเนินการให้
"ความสำเร็จ" คืออะไร
ระบบจะทำเครื่องหมายธุรกรรมว่าสำเร็จหากแพลตฟอร์ม Google Home ได้รับการตอบกลับที่ถูกต้องซึ่งระบุว่าดำเนินการตามที่ตั้งใจไว้แล้วหรือดึงข้อมูลสถานะที่ขอแล้ว
การตอบกลับที่มีข้อยกเว้นที่ไม่บล็อก (เช่น สถานะ SUCCESS
พร้อมด้วยข้อยกเว้น lowBattery) จะถือเป็นธุรกรรมที่สำเร็จ
คำสั่งไปถึงอุปกรณ์แล้วและระบบได้ดำเนินการตามความตั้งใจแล้วแม้จะมีคำเตือนก็ตาม
"ความล้มเหลว" มีคำจำกัดความว่าอย่างไร
ข้อผิดพลาดที่พบใน รหัสข้อผิดพลาดของแพลตฟอร์มที่พบบ่อย ซึ่งทําเครื่องหมายเป็นพาร์ทเนอร์ดําเนินการได้จะถือเป็น "ความล้มเหลว" เมื่อ คํานวณอัตราความสําเร็จของ QUERY และ EXECUTE นอกจากนี้ ข้อผิดพลาดที่พบ ในข้อผิดพลาดและข้อยกเว้น ยังถือเป็น "ความล้มเหลว" ด้วย โดยมีข้อยกเว้นต่อไปนี้
| ข้อยกเว้นที่เกิดจากความล้มเหลว | ||
|---|---|---|
| aboveMaximumLightEffectsDuration | armLevelNeeded | inOffMode |
| alreadyArmed | bagFull | lockedToRange |
| alreadyAtMax | belowMinimumLightEffectsDuration | lowBattery |
| alreadyAtMin | binFull | maxSpeedReached |
| alreadyClosed | cancelArmingRestricted | minSpeedReached |
| alreadyDisarmed | deadBattery | notSupported |
| alreadyDocked | degreesOutOfRange | ออฟไลน์ |
| alreadyInState | deviceJammingDetected | percentOutOfRange |
| alreadyLocked | deviceNotMounted | rangeTooClose |
| alreadyOff | deviceNotReady | relinkRequired |
| alreadyOn | deviceOffline | remoteSetDisabled |
| alreadyOpen | deviceTurnedOff | safetyShutOff |
| alreadyPaused | discreteOnlyOpenClose | targetAlreadyReached |
| alreadyStarted | functionNotSupported | tooManyFailedAttempts |
| alreadyStopped | inAutoMode | valueOutOfRange |
| alreadyUnlocked | inEcoMode |
เมตริกเวลาในการตอบสนองของคำค้นหา/การดำเนินการ (เปอร์เซ็นไทล์ที่ 90) <= 1,000 มิลลิวินาทีจะวัดเวลาในการรอการดำเนินการที่ขอ และช่วยให้มั่นใจว่าผู้ใช้ไม่ต้องรอนานเกินไป เช่น รอไม่กี่วินาทีเพื่อให้ไฟดับ
เมตริกเวลาในการตอบสนอง
เวลาในการตอบสนองเป็นตัวบ่งชี้ที่สำคัญว่าการผสานรวมของคุณตอบสนองต่อ ผู้ใช้ปลายทางได้ดีเพียงใด แดชบอร์ดจะติดตามเวลาในการตอบสนองเปอร์เซ็นไทล์ที่ 90 (P90) ซึ่ง แสดงถึงประสบการณ์ของผู้ใช้ที่ "ช้าที่สุด" (เช่น P90 ที่ 800 มิลลิวินาที หมายความว่าระบบรับทราบคำขอ 90% ในเวลาไม่เกิน 800 มิลลิวินาที)
Google วัดเวลาในการตอบสนองแตกต่างกันสำหรับการตรวจสอบสถานะเทียบกับคำสั่งอุปกรณ์ เพื่อให้มั่นใจในความถูกต้องทางเทคนิค
1. เวลาในการตอบสนองต่อคำค้นหา (คำถาม)
ซึ่งจะวัดเวลาไปกลับของ Cloud-to-cloud เมื่อ Google ถามถึงสถานะปัจจุบันของอุปกรณ์
- เริ่มต้น: Google ส่ง
action.devices.QUERYคำขอไปยัง URL การจัดการคำสั่งซื้อ - กรอบเวลาการวัดผล: เวลาที่ระบบคลาวด์ใช้ในการรับ ประมวลผล และ ส่งการตอบกลับ HTTP แบบเต็มกลับไปยัง Google
- สิ้นสุด: Google ได้รับและรับทราบเพย์โหลดการตอบกลับสุดท้ายจาก บริการของคุณ
2. เวลาในการตอบสนองของ EXECUTE (การดำเนินการ)
ซึ่งจะวัดเวลาการรับทราบคำสั่งเมื่อ Google ส่งคำขอควบคุมไปยังอุปกรณ์
- เริ่มต้น: Google ส่ง
action.devices.EXECUTEคำขอไปยัง URL การจัดการคำสั่งซื้อ - กรอบเวลาการวัดผล: เวลาที่ใช้สำหรับระบบคลาวด์ในการรับคำสั่งและ ส่งการตอบกลับเพื่อรับทราบ
- สิ้นสุด: Google ได้รับการตอบกลับสถานะ
SUCCESS,PENDINGหรือOFFLINE - ขอบเขตทางเทคนิค: เมตริกนี้จะวัดเวลา "การรับทราบการตอบกลับ" ระหว่างระบบคลาวด์ของ Google กับระบบคลาวด์ของคุณ โดยจะไม่วัดเวลาที่ฮาร์ดแวร์จริง (เช่น หลอดไฟ) ใช้ในการเปลี่ยนสถานะจริง เนื่องจากมักเกี่ยวข้องกับเวลาในการตอบสนองของเครือข่ายที่ทำงานร่วมกันในพื้นที่ที่อยู่นอกเส้นทางจากระบบคลาวด์ไปยังระบบคลาวด์
ตัวเลือกการลดเวลาในการตอบสนอง
คำแนะนำด้านสถาปัตยกรรมสำหรับการกำหนดเส้นทางตามภูมิศาสตร์
หากใช้ IP แบบ Anycast ไม่ได้ เราขอแนะนำทางเลือกอื่นที่คุ้มค่าต่อไปนี้เพื่อให้มั่นใจว่าผู้ใช้จะได้รับการบริการจากศูนย์ข้อมูลระดับภูมิภาคที่อยู่ใกล้ที่สุด
การจัดสรรภาระงานทั่วโลก (GLB)
ใช้ Global Application Load Balancer แทนการกำหนดเส้นทางแบบคงที่ (พร้อมให้บริการจากผู้ให้บริการระบบคลาวด์รายใหญ่ส่วนใหญ่)
วิธีการทำงาน: คุณกำหนดค่าจุดแรกเข้าส่วนกลาง (URL) เพียงจุดเดียวที่อยู่บริเวณขอบของเครือข่าย ตัวจัดสรรภาระงานจะตรวจหาต้นทางทางภูมิศาสตร์ของคำขอจากคลัสเตอร์การดำเนินการตามคำสั่งของ Google โดยอัตโนมัติ และกำหนดเส้นทางการรับส่งข้อมูลไปยังแบ็กเอนด์ระดับภูมิภาคที่ใกล้ที่สุดซึ่งทำงานได้ดี
ประโยชน์: วิธีนี้จะช่วยให้ทราบประสิทธิภาพของ Anycast โดยมีความซับซ้อนในการกำหนดค่าและต้นทุนที่ต่ำกว่าอย่างมาก
DNS ที่รับรู้ตำแหน่งทางภูมิศาสตร์ (GeoDNS)
วิธีการทำงาน: กำหนดค่าผู้ให้บริการ DNS เพื่อแก้ไข URL Fulfillment ไปยังที่อยู่ IP ต่างๆ ตามสถานที่ตั้งทางภูมิศาสตร์ของคำขอ DNS
การติดตั้งใช้งาน: ตรวจสอบว่าผู้ให้บริการ DNS ได้รับการเพิ่มประสิทธิภาพสำหรับจุดขาออกของ Google เมื่อบริการจัดการตามภูมิภาคของ Google (เช่น ในสหรัฐอเมริกา สหภาพยุโรป หรือเอเชีย) แก้ไขโดเมนของคุณ บริการจะได้รับที่อยู่ IP สำหรับศูนย์ข้อมูลในภูมิภาคนั้นๆ
กลยุทธ์การเพิ่มประสิทธิภาพที่เลเยอร์แอปพลิเคชัน
นอกเหนือจากการกำหนดเส้นทางระดับโครงสร้างพื้นฐานแล้ว คุณยังใช้กลยุทธ์ต่อไปนี้ ที่เลเยอร์แอปพลิเคชันเพื่อลดเวลาในการตอบสนองในการประมวลผลคำขอได้ด้วย
วิธีพร็อกซี "แทรมโพลีน"
หากคุณต้องดูแลศูนย์ข้อมูลหลัก ให้ใช้พร็อกซีเซิร์ฟเวอร์แบบเบาในระดับภูมิภาค (Trampolines) เพื่อจัดการการแฮนด์เชคครั้งแรก
Google จะเข้าถึง URL ทั่วโลกของคุณ
พร็อกซีระดับภูมิภาค (เช่น ฟังก์ชัน Nginx หรือ Lambda แบบเบา) จะรับคำขอ
พร็อกซีจะส่งต่อเพย์โหลดผ่านแบ็กโบนภายในความเร็วสูงไปยังฐานข้อมูลหลัก
ประโยชน์: วิธีนี้จะช่วยลดเวลา "TCP Handshake" ซึ่งมักเป็นสาเหตุหลักที่ทำให้เกิดเวลาในการตอบสนองสำหรับคำขอระยะไกล
คำแนะนำเกี่ยวกับภูมิภาคของโทเค็นเพื่อการเข้าถึง
ในระหว่างกระบวนการลิงก์บัญชี (OAuth) ระบบของคุณจะระบุภูมิภาคบ้านของผู้ใช้ได้
การติดตั้งใช้งาน: เข้ารหัสตัวระบุภูมิภาคใน
access_tokenที่ออกให้ Google เมื่อ Google ส่งคำขอการดำเนินการตามคำสั่ง เกตเวย์จะตรวจสอบโทเค็นและกำหนดเส้นทางคำขอไปยังคลัสเตอร์ระดับภูมิภาคที่ถูกต้องได้ทันทีโดยไม่ต้องค้นหาในฐานข้อมูล
สถานะของระบบ - เมตริกพาร์ทเนอร์กับ Google
การรักษาอัตราความสำเร็จ >= 99.5% จะช่วยให้มั่นใจได้ว่าสถานะอุปกรณ์ใน Google Home ถูกต้อง มีการเพิ่มและนำอุปกรณ์ออก มีการทริกเกอร์การทำงานอัตโนมัติ และเหตุการณ์ในประวัติจะปรากฏในแท็บกิจกรรมของGoogle Home app (GHA)
อัตราความสำเร็จจะคำนวณตามรหัสการตอบกลับ HTTP ที่ Google ส่งคืนเมื่อคลาวด์ของคุณพุชการอัปเดตสถานะ เมตริกนี้จะยกเว้นข้อผิดพลาดภายในของ Google จากจำนวนความล้มเหลวเพื่อให้มั่นใจว่าพาร์ทเนอร์จะไม่ถูก ลงโทษเนื่องจากปัญหาโครงสร้างพื้นฐานฝั่ง Google การเรียก API ที่รวมอยู่ในการ คำนวณจะอยู่ใน เอกสารอ้างอิง HomeGraph API
"ความสำเร็จ" คืออะไร
2xx (สำเร็จ): Home Graph ได้รับและประมวลผลการอัปเดตสถานะเรียบร้อยแล้ว
"ความล้มเหลว" มีคำจำกัดความว่าอย่างไร
4xx (ข้อผิดพลาดของพาร์ทเนอร์) แสดงถึงความล้มเหลวและบ่งชี้ถึงปัญหาเกี่ยวกับคำขอ ที่ส่งจากระบบคลาวด์ของคุณ รหัสที่พบบ่อยมีดังนี้
400 คำขอไม่ถูกต้อง
สาเหตุ: เซิร์ฟเวอร์ประมวลผลคำขอไม่ได้เนื่องจากไวยากรณ์ไม่ถูกต้อง สาเหตุที่พบบ่อย ได้แก่ JSON ที่มีรูปแบบไม่ถูกต้องหรือใช้ค่า Null แทน "" สำหรับค่าสตริง
วิธีแก้ปัญหา: ตรวจสอบว่าเนื้อหาของคำขอเป็น JSON ที่ถูกต้อง (ไม่มีโครงสร้างที่ผิดรูปแบบหรือค่า Null สำหรับฟิลด์สตริง) และตรวจสอบว่า agentUserId ตรงกับค่าจากการตอบกลับ SYNC
404 ไม่พบ
สาเหตุ: ไม่พบ deviceId หรือ agentUserId ใน HomeGraph (ยังไม่ได้ซิงค์
เลิกเชื่อมโยงแล้ว หรือรหัสไม่ตรงกัน)
วิธีแก้ไข
- ตรวจสอบว่า
agentUserIdตรงกับค่าที่ระบุใน การตอบกลับ SYNC - ใช้ Home Graph SYNC API เพื่อพิจารณาว่าข้อผิดพลาด 404 ไม่พบเกิดจากไม่มีอุปกรณ์ หรือผู้ใช้ใน Home Graph หรือไม่
- โปรดตรวจสอบว่าได้ทริกเกอร์
requestSyncหลังจากเพิ่ม นำออก เปลี่ยนชื่อ หรืออัปเดตอุปกรณ์หรือบัญชี เพื่อให้สถานะ เป็นข้อมูลล่าสุดอยู่เสมอ - จัดการ Intent
DISCONNECTอย่างถูกต้อง เพื่อหยุดการรายงานอุปกรณ์ที่ไม่ได้ใช้งาน หลังจากได้รับDISCONNECTIntent แล้ว บริการระบบคลาวด์ของคุณควรหยุดเผยแพร่การเปลี่ยนแปลงไปยัง Google ด้วย ขอซิงค์และ รายงานสถานะ
429 ทรัพยากรหมดแล้ว
สาเหตุ: การผสานรวมของคุณใช้โควต้าที่จัดสรรไว้เกินแล้ว
วิธีแก้ปัญหา: ดูวิธีการในส่วน "ขั้นตอนที่ 2ก: แก้ข้อบกพร่องเกี่ยวกับปัญหาโควต้า" ในแดชบอร์ดสำหรับการจัดการโควต้า นอกจากนี้ คุณยังดูข้อมูลเพิ่มเติมได้ที่ โควต้าและขีดจำกัดของสมาร์ทโฮม
ประสิทธิภาพการทำงานของอุปกรณ์ - ความถูกต้องของสถานะ
การมีความแม่นยำของสถานะ >= 99.5% จะช่วยให้มั่นใจได้ว่าผู้ใช้จะเห็นผลลัพธ์ที่ถูกต้องเมื่อดูสถานะอุปกรณ์หรือใช้ฟีเจอร์ AI เช่น ถาม Google Home หากความแม่นยำของสถานะต่ำ การทำงานอัตโนมัติอาจไม่เริ่มทำงาน และรายการประวัติอาจไม่ ปรากฏในแท็บกิจกรรมของGHAในเวลาที่เหมาะสม ดูข้อมูลเพิ่มเติมได้ที่สถานะรายงาน
แดชบอร์ดคุณภาพจะติดตามข้อมูลนี้ทุกชั่วโมงโดยใช้เมตริกที่แตกต่างกัน 2 รายการ ได้แก่ ความถูกต้องโดยรวม และชุดค่าผสมประเภท/ลักษณะที่ต่ำที่สุด
1. องค์ประกอบความแม่นยำ
เมตริกนี้ได้มาจาก "ตัวอย่าง" ที่ Google สามารถยืนยันสถานะที่รายงาน เทียบกับผลลัพธ์ของความตั้งใจที่ทราบ
2. เมตริกแดชบอร์ด (การคำนวณรายชั่วโมง)
แดชบอร์ดจะคำนวณความแม่นยำตามช่วงเวลา 1 ชั่วโมง หากชั่วโมงใดมีตัวอย่างรวมน้อยกว่า 100 รายการ (S_Total < 100) ความแม่นยำของชั่วโมงนั้นจะตั้งค่าเป็น N/A
มุมมองที่ 1: ความแม่นยำโดยรวม (ค่าเฉลี่ยทั่วโลก)
ซึ่งแสดงถึงความแม่นยำโดยรวมของการผสานรวมในอุปกรณ์ทุกประเภท และลักษณะที่รวมกัน โดยจะแสดงค่าเฉลี่ยแบบถ่วงน้ำหนักของสถานะ ทั้งระบบนิเวศ
- การคำนวณ: ความแม่นยำของสถานะทั้งหมดในอุปกรณ์ทุกเครื่อง / สถานะทั้งหมดทั้งหมด ในอุปกรณ์ทุกเครื่อง
มุมมอง 2: ค่าผสมประเภท/ลักษณะที่ต่ำที่สุด
ซึ่งจะระบุหมวดหมู่ที่เฉพาะเจาะจงซึ่งไม่น่าเชื่อถือที่สุดในการผสานรวม ซึ่งจะป้องกันไม่ให้อุปกรณ์ที่มีปริมาณสูงซึ่งมีคุณภาพสูงซ่อนอุปกรณ์ที่มีปริมาณต่ำซึ่งมีคุณภาพต่ำ ตัวอย่างเช่น หากคุณมีปริมาณหลอดไฟจำนวนมากที่มีความแม่นยำของสถานะสูงกว่า 99.5% แต่มีปริมาณสวิตช์น้อยที่มีความแม่นยำของสถานะต่ำ แสดงว่าต้องปรับปรุงสวิตช์ที่อาจสูญหายไปในค่าเฉลี่ย
- การคำนวณ: ความแม่นยำของรัฐ / รัฐทั้งหมดขั้นต่ำสำหรับชุดค่าผสมลักษณะ/อุปกรณ์ทั้งหมด
3. ปรับปรุงความแม่นยำของสถานะและประสิทธิภาพการทำงานของอุปกรณ์
ความคลาดเคลื่อนจะเกิดขึ้นเมื่อสถานะที่จัดเก็บไว้ในกราฟบ้านไม่ตรงกับ ผลลัพธ์ของ QUERY แบบเรียลไทม์
ข้อผิดพลาด "ไม่มีช่อง"
ตัวอย่าง DETAILED_ACCURACY_RESULT_QUERY_STATE_MISSING_FIELD
reportStateLog: { accuracy: "INACCURATE" agentId: "abc" detailedAccuracyResult: "DETAILED_ACCURACY_RESULT_QUERY_STATE_MISSING_FIELD" deviceId: "curtain" deviceType: "action.devices.types.CURTAIN" isMissingField: true isOffline: false queriedTime: "2026-04-13T12:20:26Z" queryReportStateDifferences: { queryState: "open_close { open_percent: 0.0 missing open_direction }" reportState: "open_close { open_state { open_percent: 100.0 open_direction: "LEFT" } }" } reportedTime: "2022-05-13T07:14:35Z" requestId: "123" result: "INACCURATE" snapshotTime: "2026-04-13T12:20:26Z" stateName: "open_state" traitName: "TRAIT_OPEN_CLOSE" }
ตัวอย่าง DETAILED_ACCURACY_RESULT_REPORT_STATE_MISSING_FIELD
reportStateLog: { accuracy: "INACCURATE" agentId: "abc" detailedAccuracyResult: "DETAILED_ACCURACY_RESULT_REPORT_STATE_MISSING_FIELD" deviceId: "sensor" deviceType: "action.devices.types.SENSOR" isMissingField: true isOffline: false queriedTime: "2026-04-28T10:40:33Z" queryReportStateDifferences: { queryState: "temperature_setting { thermostat_mode: "off" thermostat_temperature_ambient: 20.0 active_thermostat_mode: "none" }" reportState: "temperature_setting { thermostat_mode: "off" active_thermostat_mode: "none" }" } reportedTime: "2024-09-20T15:00:00Z" requestId: "123" result: "INACCURATE" snapshotTime: "2026-04-28T10:40:33Z" stateName: "thermostat_temperature_ambient" traitName: "TRAIT_TEMPERATURE_SETTING" }
สาเหตุ: เมื่อเกิดข้อผิดพลาด DETAILED_ACCURACY_RESULT_QUERY_STATE_MISSING_FIELD หรือ
DETAILED_ACCURACY_RESULT_REPORT_STATE_MISSING_FIELD ชุดฟิลด์เพย์โหลด
จะแตกต่างกันระหว่างการตอบกลับ QUERY กับคำขอรายงานสถานะสำหรับ
อุปกรณ์เดียวกัน
วิธีแก้ไข: ตรวจสอบว่าโครงสร้างข้อมูลเหมือนกันในทั้ง 2 เส้นทาง หากรวมลักษณะไว้ใน SYNC ฟิลด์ที่เกี่ยวข้องจะต้องมีและสอดคล้องกันทั้งในรายงานเชิงรุกและคำค้นหาเชิงรับ
ข้อผิดพลาด "ไม่ถูกต้อง"
ตัวอย่าง DETAILED_ACCURACY_RESULT_INACCURATE
reportStateLog: { accuracy: "INACCURATE" agentId: "abc" detailedAccuracyResult: "DETAILED_ACCURACY_RESULT_INACCURATE" deviceId: "outlet" deviceType: "action.devices.types.OUTLET" isMissingField: false isOffline: false queriedTime: "2026-04-12T16:02:58Z" queryReportStateDifferences: { queryState: "on_off { on: false }" reportState: "on_off { on: true }" } reportedTime: "2025-03-10T01:56:44Z" requestId: "abc" result: "INACCURATE" snapshotTime: "2026-04-12T16:02:58Z" stateName: "on" traitName: "TRAIT_ON_OFF" }
สาเหตุ: สำหรับข้อผิดพลาด DETAILED_ACCURACY_RESULT_INACCURATE ค่าที่แสดงในการตอบกลับของ QUERY ไม่ตรงกับค่าสถานะรายงานล่าสุด
วิธีแก้ปัญหา: ตรวจสอบว่ามีการทริกเกอร์ Report State ทุกครั้งที่สถานะอุปกรณ์เปลี่ยนแปลง และทั้ง Report State และ QUERY จะให้ค่าที่เหมือนกันทุกประการและเป็นค่าล่าสุด รวมถึงฟิลด์ที่จำเป็นทั้งหมดเสมอเพื่อรักษาความสอดคล้องของข้อมูล
ตัวอย่าง DETAILED_ACCURACY_RESULT_MISSING_REPORT_STATE
"reportStateLog": { "isMissingField": false, "snapshotTime": "2026-04-13T07:56:21Z", "traitName": "TRAIT_ON_OFF", "detailedAccuracyResult": "DETAILED_ACCURACY_RESULT_MISSING_REPORT_STATE", "executionReportStateDifferences": { "expectedPostExecutionDeviceState": { "onOff": { "on": false } }, "preExecutionDeviceState": { "onOff": { "on": true } }, "executionCommand": { "requestId": "test001", "beginTimestamp": "2026-04-13T07:56:20Z", "action": { "trait": "TRAIT_ON_OFF", "actionType": "ONOFF_OFF" }, "status": { "statusType": "SUCCESS_STATUS" }, "endTimestamp": "2026-04-13T07:56:21Z", "executionType": "PARTNER_CLOUD" }, "reportState": {} }, "accuracy": "MISSING_REPORT_STATE", "deviceType": "action.devices.types.LIGHT", "agentId": "abc", "stateName": "on", "result": "MISSING_REPORT_STATE" }
สาเหตุ: เมื่อเกิดข้อผิดพลาด DETAILED_ACCURACY_RESULT_MISSING_REPORT_STATE พาร์ทเนอร์จะดำเนินการคำสั่งสำเร็จ แต่ไม่ได้รายงานสถานะอุปกรณ์ที่อัปเดตกลับไปยัง Google
วิธีแก้ปัญหา: ส่งการอัปเดตรายงานสถานะทุกครั้งหลังจากการดำเนินการคำสั่งเพื่อให้ Home Graph ได้รับสถานะอุปกรณ์ใหม่
ตัวอย่าง DETAILED_ACCURACY_RESULT_NO_STATE_REPORTED
eportStateLog: { accuracy: "INACCURATE" agentId: "abc" detailedAccuracyResult: "DETAILED_ACCURACY_RESULT_NO_STATE_REPORTED" deviceId: "switch" deviceType: "action.devices.types.SWITCH" isMissingField: false isOffline: true queriedTime: "2026-04-13T13:53:26Z" queryReportStateDifferences: { queryState: "online { online: false } " reportState: "" } reportedTime: "1970-01-01T00:00:00Z" requestId: "test001" result: "INACCURATE" snapshotTime: "2026-04-13T13:53:26Z" stateName: "online" traitName: "TRAIT_ONLINE" }
สาเหตุ: สำหรับข้อผิดพลาด DETAILED_ACCURACY_RESULT_NO_STATE_REPORTED ระบบไม่ได้รับ Report
State สำหรับอุปกรณ์นี้ (สถานะว่างเปล่าและแสตมป์เวลาที่รายงาน
อยู่ที่ Epoch) แม้ว่าผลลัพธ์ของ QUERY จะแสดงสถานะปัจจุบันก็ตาม
ซึ่งบ่งบอกว่าการอัปเดตสถานะไม่ได้รับการทริกเกอร์ ไม่สามารถเข้าถึง HomeGraph หรืออุปกรณ์รายงานการเปลี่ยนสถานะการเชื่อมต่อหรือสถานะการทำงานไม่สำเร็จ
วิธีแก้ปัญหา: ตรวจสอบว่าระบบทริกเกอร์สถานะรายงานและส่งการเปลี่ยนแปลงสถานะทั้งหมดเรียบร้อยแล้ว ตรวจสอบว่าตรรกะแบ็กเอนด์จัดการการอัปเดตสถานะอย่างถูกต้อง ยืนยันการนำส่งที่สำเร็จไปยัง Google HomeGraph และตรวจสอบว่าอุปกรณ์ ซิงค์สถานะอย่างสม่ำเสมอเพื่อให้มั่นใจว่าอินเทอร์เฟซผู้ใช้และเครื่องมือ การทำงานอัตโนมัติมีความถูกต้อง