ชุดแดชบอร์ดและการแจ้งเตือนนี้ช่วยให้คุณรักษาการผสานรวมกับระบบนิเวศของ Google Home ให้มีคุณภาพสูงได้อย่างเชิงรุก Google มุ่งมั่นที่จะสนับสนุนพาร์ทเนอร์ในการพัฒนาระบบนิเวศคุณภาพสูงสำหรับลูกค้าทุกคน
แดชบอร์ดมี 3 ส่วน ซึ่งแต่ละส่วนครอบคลุมส่วนสำคัญที่มีส่วนช่วยให้การผสานรวมโดยรวมมีคุณภาพ
เมตริกจาก Google ไปยังพาร์ทเนอร์ - วัดประสิทธิภาพการทำงานของการเรียกจาก Google ไปยัง แบ็กเอนด์ระบบคลาวด์ของคุณ
ประสิทธิภาพของระบบ - เมตริกจากพาร์ทเนอร์ไปยัง Google - วัดประสิทธิภาพการทำงานของการเรียก จากระบบของคุณไปยัง Google
ประสิทธิภาพของอุปกรณ์ - ความแม่นยำของสถานะ - วัดความแม่นยำของสถานะที่จัดเก็บไว้ ในระบบของ Google ซึ่งใช้เพื่อแสดงผลการค้นหาของผู้ใช้
เมื่อเมตริกไม่เป็นไปตามค่าเป้าหมาย ระบบจะไฮไลต์เป็นสีแดงเพื่อบ่งบอกถึงปัญหาที่อาจส่งผลต่อประสบการณ์ของผู้ใช้ ข้อมูลต่อไปนี้จะให้รายละเอียดเกี่ยวกับเป้าหมายแต่ละรายการและเหตุผลที่เป้าหมายเหล่านั้นมีความสำคัญต่อผู้ใช้
หากปุ่มต่อไปนี้ไม่นำคุณไปยังแดชบอร์ดโดยตรง คุณสามารถไปที่แดชบอร์ดได้โดยเลือกหน้าภาพรวม เลือกแดชบอร์ด แล้วเลือก แดชบอร์ด Google Home Vitals (Cloud) จากรายการแดชบอร์ดของฉัน เพื่อดูแดชบอร์ด
เมตริกจาก Google ไปยังพาร์ทเนอร์
เมตริกอัตราความสำเร็จของการค้นหา/การดำเนินการ >= 99.5% จะวัดความถี่ที่คำสั่งของผู้ใช้ได้รับการดำเนินการอย่างถูกต้อง ซึ่งช่วยหลีกเลี่ยงการตอบกลับของ Assistant เช่น "ฉันเข้าถึงอุปกรณ์ไม่ได้" หรือการยืนยันคำสั่งที่ยังไม่ได้รับการดำเนินการอย่างไม่ถูกต้อง
อะไรคือตัวกำหนด "ความสำเร็จ"
ระบบจะทำเครื่องหมายธุรกรรมว่าสำเร็จหากแพลตฟอร์ม Google Home ได้รับการตอบกลับที่ถูกต้องซึ่งบ่งบอกว่าการดำเนินการที่ต้องการได้รับการดำเนินการแล้วหรือมีการดึงข้อมูลสถานะที่ขอ
การตอบกลับที่มีข้อยกเว้นที่ไม่บล็อก (เช่น สถานะ SUCCESS พร้อมกับข้อยกเว้น lowBattery) จะถูกนับเป็นธุรกรรมที่สำเร็จ
คำสั่งไปถึงอุปกรณ์และมีการดำเนินการตามความตั้งใจแล้วแม้จะมีคำเตือน
อะไรคือตัวกำหนด "ความล้มเหลว"
ข้อผิดพลาดที่พบใน รหัสข้อผิดพลาดของแพลตฟอร์มทั่วไป ซึ่งทำเครื่องหมายเป็น พาร์ทเนอร์ดำเนินการได้ จะถือเป็น "ความล้มเหลว" เมื่อ คำนวณอัตราความสำเร็จของการค้นหาและการดำเนินการ นอกจากนี้ ข้อผิดพลาดที่พบ ใน ข้อผิดพลาดและข้อยกเว้น จะถือเป็น "ความล้มเหลว" ด้วย ยกเว้นกรณีต่อไปนี้
| ข้อยกเว้นของความล้มเหลว | ||
|---|---|---|
| aboveMaximumLightEffectsDuration | armLevelNeeded | inOffMode |
| alreadyArmed | bagFull | lockedToRange |
| alreadyAtMax | belowMinimumLightEffectsDuration | lowBattery |
| alreadyAtMin | binFull | maxSpeedReached |
| alreadyClosed | cancelArmingRestricted | minSpeedReached |
| alreadyDisarmed | deadBattery | notSupported |
| alreadyDocked | degreesOutOfRange | offline |
| 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 |
เมตริกเวลาในการตอบสนองของการค้นหา/การดำเนินการ (p90) <= 1000 มิลลิวินาที จะวัดเวลารอการดำเนินการที่ขอและช่วยให้มั่นใจว่าผู้ใช้ไม่ต้องรอนานเกินไป เช่น รอไม่กี่วินาทีเพื่อให้ไฟดับ
เมตริกเวลาในการตอบสนอง
เวลาในการตอบสนองเป็นตัวบ่งชี้ที่สำคัญว่าการผสานรวมของคุณตอบสนองต่อผู้ใช้ปลายทางได้ดีเพียงใด แดชบอร์ดจะติดตามเวลาในการตอบสนองเปอร์เซ็นไทล์ที่ 90 (P90) ซึ่งแสดงถึงประสบการณ์การใช้งานของผู้ใช้ที่ "ช้าที่สุด" (เช่น P90 ที่ 800 มิลลิวินาทีหมายความว่าคำขอ 90% ได้รับการตอบกลับภายใน 800 มิลลิวินาทีหรือน้อยกว่า)
Google จะวัดเวลาในการตอบสนองแตกต่างกันสำหรับการตรวจสอบสถานะเทียบกับคำสั่งอุปกรณ์เพื่อให้มั่นใจในความถูกต้องทางเทคนิค
1. เวลาในการตอบสนองของการค้นหา (คำถาม)
เมตริกนี้จะวัดเวลาไปกลับของ Cloud-to-cloud เมื่อ Google ขอ สถานะปัจจุบันของอุปกรณ์
- เริ่มต้น: Google ส่งคำขอ
action.devices.QUERYไปยัง URL การดำเนินการ - ช่วงเวลาการวัด: เวลาที่ระบบคลาวด์ใช้ในการรับ ประมวลผล และส่งการตอบกลับ HTTP แบบเต็มกลับไปยัง Google
- สิ้นสุด: Google ได้รับและตอบกลับเพย์โหลดการตอบกลับสุดท้ายจากบริการของคุณ
2. เวลาในการตอบสนองของการดำเนินการ (การดำเนินการ)
เมตริกนี้จะวัดเวลาตอบกลับคำสั่งเมื่อ Google ส่งคำขอควบคุมไปยังอุปกรณ์
- เริ่มต้น: Google ส่งคำขอ
action.devices.EXECUTEไปยัง URL การดำเนินการ - ช่วงเวลาการวัด: เวลาที่ระบบคลาวด์ใช้ในการรับคำสั่งและส่งการตอบกลับคำรับทราบ
- สิ้นสุด: Google ได้รับการตอบกลับสถานะ
SUCCESS,PENDINGหรือOFFLINE - ขอบเขตทางเทคนิค: เมตริกนี้จะวัดเวลา "การตอบกลับคำรับทราบ" ระหว่างระบบคลาวด์ของ Google กับระบบคลาวด์ของคุณ เมตริกนี้ไม่ได้วัดเวลาที่ฮาร์ดแวร์จริง (เช่น หลอดไฟ) ใช้ในการเปลี่ยนสถานะทางกายภาพให้เสร็จสมบูรณ์ เนื่องจากมักเกี่ยวข้องกับเวลาในการตอบสนองของเครือข่ายที่ทำงานร่วมกันในพื้นที่นอกเส้นทางจากระบบคลาวด์ไปยังระบบคลาวด์
การแบ่งย่อยไทม์ไลน์เวลาในการตอบสนองของการดำเนินการ/การค้นหา
เมื่อวิเคราะห์การประทับเวลาสำหรับเวลาในการตอบสนองของEXECUTE หรือ QUERY คุณสามารถแบ่ง Round-trip time (RTT) ทั้งหมดออกเป็นโฟลว์ตามลำดับต่อไปนี้
เนื่องจากการแบ่งย่อยนี้เปรียบเทียบการประทับเวลาฝั่ง Google กับฝั่งพาร์ทเนอร์ เซิร์ฟเวอร์ของพาร์ทเนอร์จึงต้องซิงค์กับ NTP (โปรโตคอลเวลาเครือข่าย) แม้แต่การเลื่อนของนาฬิกาเพียงเล็กน้อย (50-100 มิลลิวินาที) ก็จะบิดเบือนเวลาขนส่งที่คำนวณได้ (t2 -
t1 และ t4 - t3) ซึ่งอาจนำไปสู่เมตริกที่เป็นไปไม่ได้ในเชิงตรรกะ เช่น เวลาในการตอบสนองของการขนส่งที่เป็นค่าลบ
[t1] ส่งคำขอ (ขาออกจาก Google): Google เริ่มต้นคำขอความตั้งใจ เนื่องจากระบบไม่ได้แสดง t1 โดยตรง ระบบจึงคำนวณโดยประมาณโดยลบเวลาในการตอบสนองทั้งหมดจากการประทับเวลาขาเข้าสุดท้าย
การขนส่งเครือข่าย (t1 ถึง t2): เวลาขนส่งและ
เวลาคิวของเครือข่ายโดยประมาณก่อนที่จะไปถึงปลายทางการดำเนินการ
[t2] ได้รับคำขอ (ขาเข้าของพาร์ทเนอร์): การประทับเวลาที่แน่นอนเมื่อคำขอไปถึงเกตเวย์ API หรือเซิร์ฟเวอร์ขาเข้าของสภาพแวดล้อม
การประมมวลผลของพาร์ทเนอร์ (t2 ถึง t3): เวลาในการตอบสนองของการดำเนินการภายใน การกำหนดเส้นทาง
และการจัดการอุปกรณ์ทั้งหมดภายในสภาพแวดล้อมระบบคลาวด์ของคุณ
[t3] ส่งการตอบกลับ (ขาออกจากพาร์ทเนอร์): การประทับเวลาเมื่อบริการของคุณส่งการตอบกลับการดำเนินการกลับไปยัง Google
การขนส่งกลับ (t3 ถึง t4): เวลาในการกำหนดเส้นทางเครือข่ายกลับและการเชื่อมต่อ
เสร็จสมบูรณ์กลับไปยัง Google
[t4] คำขอเสร็จสมบูรณ์ (ขาเข้าของ Google): Google ได้รับและประมวลผลการตอบกลับสุดท้าย ระบบจะบันทึกการประทับเวลานี้อย่างชัดเจนใน
Google Cloud logs เป็น receiveTimestamp
ตัวอย่างเช่น หากต้องการแสดงให้เห็นว่าเมตริกเหล่านี้เชื่อมโยงกันอย่างไร ให้พิจารณาคำขอ EXECUTE
ตัวอย่างที่มีเวลาในการตอบสนองที่บันทึกไว้ทั้งหมด (latencyMsec) เป็น 1700 มิลลิวินาที และ
Google Cloud receiveTimestamp (t4) เป็น
2026-05-25T15:25:00.550Z
| ระยะ / จุดตรวจ | การประทับเวลา / ระยะเวลา | แหล่งที่มาและวิธีการคำนวณ |
|---|---|---|
[t1] ขาออกจาก Google |
15:24:58.850Z |
คำนวณ: t4 (.550Z) - 1700ms |
| การขนส่งเครือข่าย | 150 มิลลิวินาที | ได้มา: t2 - t1 |
[t2] ขาเข้าของพาร์ทเนอร์ |
15:24:59.000Z |
สังเกต: บันทึกในบันทึกเกตเวย์ของพาร์ทเนอร์ |
| การประมวลผลของพาร์ทเนอร์ | 1300 มิลลิวินาที | ได้มา: t3 - t2 (เวลาดำเนินการภายในของคุณ) |
[t3] ขาออกจากพาร์ทเนอร์ |
15:25:00.300Z |
สังเกต: บันทึกในบันทึกขาออกจากพาร์ทเนอร์ |
| การขนส่งกลับ | 250 มิลลิวินาที | ได้มา: t4 - t3 |
[t4] ขาเข้าของ Google |
15:25:00.550Z |
สังเกต: receiveTimestamp ในบันทึกของ Google Cloud |
ตัวเลือกการลดเวลาในการตอบสนอง
คำแนะนำด้านสถาปัตยกรรมสำหรับการกำหนดเส้นทางตามภูมิศาสตร์
หากการติดตั้งใช้งาน IP แบบ Anycast ไม่สามารถทำได้ เราขอแนะนำทางเลือกที่มีประสิทธิภาพด้านต้นทุนต่อไปนี้เพื่อให้มั่นใจว่าผู้ใช้จะได้รับบริการจากศูนย์ข้อมูลระดับภูมิภาคที่ใกล้ที่สุด
Global Load Balancing (GLB)
ใช้ Global Application Load Balancer (มีให้บริการจากผู้ให้บริการระบบคลาวด์รายใหญ่ส่วนใหญ่) แทนการกำหนดเส้นทางแบบคงที่
วิธีการทำงาน: คุณกำหนดค่าจุดเริ่มต้นส่วนกลาง (URL) เพียงจุดเดียวที่อยู่บริเวณขอบของเครือข่าย ตัวจัดสรรภาระงานจะตรวจหาแหล่งที่มาทางภูมิศาสตร์ของคำขอจากคลัสเตอร์การดำเนินการของ Google โดยอัตโนมัติ และกำหนดเส้นทางการเข้าชมไปยังแบ็กเอนด์ระดับภูมิภาคที่ใกล้ที่สุดซึ่งทำงานได้ดี
ข้อดี: วิธีนี้ให้ประสิทธิภาพการทำงานแบบ Anycast โดยมีความซับซ้อนในการกำหนดค่าและต้นทุนที่ต่ำกว่าอย่างมาก
DNS ที่รับรู้ตำแหน่งทางภูมิศาสตร์ (GeoDNS)
วิธีการทำงาน: กำหนดค่าผู้ให้บริการ DNS ให้แปลง URL การดำเนินการเป็นที่อยู่ IP ที่แตกต่างกันตามสถานที่ตั้งทางภูมิศาสตร์ของคำขอ DNS
การติดตั้งใช้งาน: ตรวจสอบว่าผู้ให้บริการ DNS ได้รับการเพิ่มประสิทธิภาพสำหรับจุดขาออกของ Google เมื่อบริการการดำเนินการระดับภูมิภาคของ Google (เช่น ในสหรัฐอเมริกา สหภาพยุโรป หรือเอเชีย) แปลงโดเมนของคุณ ระบบจะได้รับที่อยู่ IP สำหรับศูนย์ข้อมูลในภูมิภาคนั้นๆ
กลยุทธ์การเพิ่มประสิทธิภาพที่เลเยอร์แอปพลิเคชัน
นอกจากการกำหนดเส้นทางระดับโครงสร้างพื้นฐานแล้ว คุณยังสามารถใช้กลยุทธ์ต่อไปนี้ที่เลเยอร์แอปพลิเคชันเพื่อลดเวลาในการตอบสนองในการประมวลผลคำขอ
วิธีการพร็อกซีแบบ "แทรมโพลีน"
หากคุณต้องดูแลศูนย์ข้อมูลหลัก ให้ใช้เซิร์ฟเวอร์พร็อกซีแบบเบา (แทรมโพลีน) ระดับภูมิภาคเพื่อจัดการการเริ่มต้นการเชื่อมต่อ
Google เข้าถึง URL ส่วนกลางของคุณ
พร็อกซีระดับภูมิภาค (เช่น ฟังก์ชัน Nginx หรือ Lambda แบบเบา) ได้รับคำขอ
พร็อกซีส่งต่อเพย์โหลดผ่านแบ็กโบนภายในความเร็วสูงไปยังฐานข้อมูลหลัก
ข้อดี: วิธีนี้ช่วยลดเวลา "การเริ่มต้นการเชื่อมต่อ TCP" ซึ่งมักเป็นปัจจัยที่ใหญ่ที่สุดที่ทำให้เกิดเวลาในการตอบสนองสำหรับคำขอระยะไกล
คำแนะนำภูมิภาคของโทเค็นเพื่อการเข้าถึง
ในระหว่างกระบวนการลิงก์บัญชี (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 ไม่พบเกิดจากอุปกรณ์ หรือผู้ใช้ที่หายไปใน HomeGraph หรือไม่
- อย่าลืมทริกเกอร์
requestSyncหลังจากเพิ่ม นำออก เปลี่ยนชื่อ หรืออัปเดตอุปกรณ์หรือบัญชีเพื่อให้สถานะ เป็นปัจจุบันอยู่เสมอ - จัดการความตั้งใจ
DISCONNECTอย่างเหมาะสม เพื่อหยุดการรายงานอุปกรณ์ที่ล้าสมัย หลังจากได้รับความตั้งใจDISCONNECTแล้ว บริการระบบคลาวด์ของคุณควรหยุดเผยแพร่การเปลี่ยนแปลงไปยัง Google ด้วย Request Sync และ Report State
429 ทรัพยากรหมดแล้ว
สาเหตุ: การผสานรวมของคุณใช้โควต้าที่จัดสรรไว้เกิน
วิธีแก้ปัญหา: ดูวิธีการในส่วน "ขั้นตอนที่ 2ก: แก้ไขข้อผิดพลาดเกี่ยวกับโควต้า" ในแดชบอร์ดสำหรับการจัดการโควต้า นอกจากนี้ คุณยังดูข้อมูลเพิ่มเติมได้ที่ โควต้าและขีดจำกัดของ Smart Home
ประสิทธิภาพของอุปกรณ์ - ความแม่นยำของสถานะ
การมีความแม่นยำของสถานะ >= 99.5% หรือสูงกว่าช่วยให้มั่นใจว่าผู้ใช้จะเห็นผลลัพธ์ที่ถูกต้องเมื่อดูสถานะอุปกรณ์หรือใช้ฟีเจอร์ AI เช่น ถาม Home หากความแม่นยำของสถานะต่ำ ระบบอัตโนมัติอาจไม่ทำงานและรายการประวัติอาจไม่ปรากฏในแท็บกิจกรรมของ GHA ในเวลาที่ถูกต้อง ดูข้อมูลเพิ่มเติมได้ที่รายงานสถานะ โปรดทราบว่า: ความแม่นยำของสถานะต้องเป็นไปตามเป้าหมายในลักษณะทั้งหมดที่รองรับ
1. คอมโพเนนต์ความแม่นยำ
เมตริกนี้ได้มาจาก "ตัวอย่าง" ที่ Google สามารถยืนยันสถานะที่รายงานกับผลลัพธ์ความตั้งใจที่ทราบ ความแม่นยำจะได้รับการประเมินตามเส้นทาง 2 เส้นทางที่แตกต่างกันเพื่อให้มีความแม่นยำทางเทคนิค
- ความแม่นยำตามการค้นหา: ยืนยันเมื่อผู้ใช้หรือระบบค้นหาสถานะปัจจุบันของอุปกรณ์อย่างแข็งขัน
- ความแม่นยำตามการดำเนินการ: ยืนยันโดยการประเมินสถานะอุปกรณ์หลังคำสั่งที่รายงานกลับมาหลังจากคำขอควบคุม
2. เมตริกแดชบอร์ด (การคำนวณรายชั่วโมง)
แดชบอร์ดจะคำนวณความแม่นยำตามช่วงเวลา 1 ชั่วโมง Google บังคับใช้เกณฑ์ระดับต่ำสุดของปริมาณการเข้าชม เพื่อให้มั่นใจในความน่าเชื่อถือทางสถิติและหลีกเลี่ยงการลงโทษการผสานรวมที่มีสัญญาณรบกวนต่ำ หากการผสานรวมลักษณะและอุปกรณ์ที่เฉพาะเจาะจงสะสมตัวอย่างทั้งหมดน้อยกว่า 100 ตัวอย่างในช่วงเวลา 5 วันที่ผ่านมา ความแม่นยำจะถือว่าไม่มีนัยสำคัญทางสถิติและตั้งค่าเป็น N/A
เมื่อชั่วโมงหนึ่งมีปริมาณตัวอย่างเพียงพอในทั้ง 2 เส้นทาง ระบบจะคำนวณความแม่นยำพื้นฐานรายชั่วโมงสำหรับสถานะที่เฉพาะเจาะจงเป็นค่าเฉลี่ยของเปอร์เซ็นต์อิสระ 2 รายการ ดังนี้
ความแม่นยำของสถานะรายชั่วโมง = (ความแม่นยำของการค้นหารายชั่วโมง % + ความแม่นยำของการดำเนินการรายชั่วโมง %) / 2
โดยแต่ละเส้นทางมีคำจำกัดความดังนี้
- ความแม่นยำของการค้นหารายชั่วโมง % = (ตัวอย่างที่ถูกต้องของการค้นหารายชั่วโมง) / (ตัวอย่างทั้งหมดของการค้นหารายชั่วโมง)
- ความแม่นยำของการดำเนินการรายชั่วโมง % = (ตัวอย่างที่ถูกต้องของการดำเนินการรายชั่วโมง) / (ตัวอย่างทั้งหมดของการดำเนินการรายชั่วโมง)
คะแนนความแม่นยำของลักษณะ (คำนวณตามลักษณะ) = ผลรวม(ตัวอย่างที่ถูกต้องของการค้นหา + ตัวอย่างที่ถูกต้องของการดำเนินการ) / ผลรวม(ตัวอย่างทั้งหมดของการค้นหา + ตัวอย่างทั้งหมดของการดำเนินการ)
เนื่องจากคะแนนคุณภาพจะประเมินประสิทธิภาพขั้นต่ำที่เข้มงวด ในระบบนิเวศของคุณ ลักษณะที่รองรับและมีสิทธิ์ทุกรายการต้องเป็นไปตามเป้าหมายความแม่นยำของสถานะ >= 99.5% เป็นรายบุคคล (ไม่ใช่ค่าเฉลี่ยของลักษณะ)
มุมมองนี้จะป้องกันไม่ให้อุปกรณ์ที่มีปริมาณมากและความแม่นยำสูงปกปิดปัญหาความแม่นยำในอุปกรณ์ที่มีปริมาณน้อยกว่า พาร์ทเนอร์ที่กังวลว่าลักษณะที่ไม่ได้ใช้จะทำให้คะแนนลดลงสามารถมั่นใจได้ว่าระบบจะปกป้องลักษณะที่ใช้ไม่บ่อยโดยอัตโนมัติด้วยการตรวจสอบระดับต่ำสุดของปริมาณการเข้าชม และจะไม่นำลักษณะดังกล่าวไปพิจารณาในคะแนนประเภทและลักษณะต่ำสุด เว้นแต่ลักษณะนั้นจะเป็นไปตามเกณฑ์ตัวอย่างที่กำหนด
3. การปรับปรุงประสิทธิภาพของอุปกรณ์และความแม่นยำของสถานะ
ความคลาดเคลื่อนเกิดขึ้นเมื่อสถานะที่จัดเก็บไว้ใน Home Graph ไม่ตรงกับผลลัพธ์ของการค้นหาแบบเรียลไทม์
ข้อผิดพลาด "ไม่มีช่อง"
ตัวอย่าง 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 กับคำขอ Report State สำหรับอุปกรณ์เดียวกัน
วิธีแก้ปัญหา: ตรวจสอบว่าโครงสร้างข้อมูลเหมือนกันในทั้ง 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 ทุกครั้งที่สถานะอุปกรณ์เปลี่ยนแปลง และทั้ง 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
วิธีแก้ปัญหา: ส่งการอัปเดต Report State ทุกครั้งหลังจากการดำเนินการคำสั่งเพื่อให้ 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 หรืออุปกรณ์รายงานการเปลี่ยนสถานะการเชื่อมต่อหรือสถานะการทำงานไม่สำเร็จ
วิธีแก้ปัญหา: ตรวจสอบว่าระบบจะทริกเกอร์และส่ง Report State สำหรับการเปลี่ยนแปลงสถานะทั้งหมดได้สำเร็จ ตรวจสอบว่าตรรกะแบ็กเอนด์จัดการการอัปเดตสถานะอย่างถูกต้อง ยืนยันความสำเร็จในการส่งไปยัง Google HomeGraph และตรวจสอบว่าอุปกรณ์ซิงค์สถานะอย่างสม่ำเสมอเพื่อให้ UI และกลไกอัตโนมัติมีความถูกต้อง