คำแนะนำเกี่ยวกับระบบรักษาความปลอดภัยสมาร์ทโฮม
action.devices.types.SECURITYSYSTEM
- เปิดและปิดระบบรักษาความปลอดภัยได้ เซ็นเซอร์เหล่านี้อาจมีระดับการรักษาความปลอดภัยหลายระดับ (เช่น โหมดอยู่บ้านและไม่อยู่บ้าน) และสามารถรายงานข้อมูลเกี่ยวกับเซ็นเซอร์บางตัวได้ เช่น เซ็นเซอร์ที่ตรวจจับการเคลื่อนไหวหรือหน้าต่างที่เปิดอยู่
ประเภทนี้บ่งชี้ว่าอุปกรณ์มีไอคอนระบบรักษาความปลอดภัย และอุปกรณ์บางอย่าง คำพ้องความหมายและชื่อแทน
ความสามารถของอุปกรณ์
โปรดดูเอกสารลักษณะเฉพาะที่เกี่ยวข้องสำหรับ รายละเอียดการใช้งาน เช่น แอตทริบิวต์และสถานะที่บริการของคุณควรรองรับ รวมถึงวิธีการ สร้างการตอบกลับ EXECUTE และ QUERY
ลักษณะที่จำเป็น
คุณต้องระบุลักษณะและคำสั่งเหล่านี้ หากเกี่ยวข้องกับ
อุปกรณ์ หากอุปกรณ์ของคุณไม่สนับสนุนลักษณะเหล่านี้ ให้ป้อนรหัสข้อผิดพลาดของ
functionNotSupported
ในการตอบกลับ QUERY หรือ EXECUTE โปรดดู
ข้อผิดพลาดและข้อยกเว้นสำหรับข้อมูลเพิ่มเติม
ลักษณะที่แนะนำ
ขอแนะนำให้ใช้ลักษณะเหล่านี้ หากเกี่ยวข้องกับอุปกรณ์ของคุณ อย่างไรก็ตาม คุณสามารถผสมผสานและจับคู่จากลักษณะทั้งหมดที่มีอยู่ เพื่อให้ตรงกับลักษณะที่มีอยู่ของคุณที่สุดได้ ฟังก์ชันของผลิตภัณฑ์
ข้อกำหนดด้านคุณภาพ
- เวลาในการตอบสนอง: ต้องน้อยกว่าหรือเท่ากับ 2,000 มิลลิวินาที
- ความเสถียร: ต้องมากกว่าหรือเท่ากับ 97%
อุปกรณ์ตัวอย่าง: ระบบรักษาความปลอดภัยเรียบง่าย
ส่วนนี้ประกอบด้วยตัวอย่างเพย์โหลด Intent ที่แสดง "ระบบรักษาความปลอดภัย" ทั่วไป โดยอิงตามประเภทอุปกรณ์และลักษณะด้านบน หากคุณเพิ่มหรือนำลักษณะในการติดตั้งใช้งานออก ให้แก้ไขคำตอบให้สอดคล้องกับการเปลี่ยนแปลงเหล่านั้น
ตัวอย่างการตอบสนองการซิงค์
{ "requestId": "6894439706274654512", "inputs": [ { "intent": "action.devices.SYNC" } ] }
{ "requestId": "6894439706274654512", "payload": { "agentUserId": "user123", "devices": [ { "id": "123", "type": "action.devices.types.SECURITYSYSTEM", "traits": [ "action.devices.traits.StatusReport", "action.devices.traits.ArmDisarm" ], "name": { "name": "Simple security system" }, "willReportState": true, "attributes": { "availableArmLevels": { "levels": [ { "level_name": "home_key", "level_values": [ { "level_synonym": [ "Home and Guarding", "level 1", "home", "SL1" ], "lang": "en" } ] }, { "level_name": "away_key", "level_values": [ { "level_synonym": [ "Away and Guarding", "level 2", "away", "SL2" ], "lang": "en" } ] } ], "ordered": true } }, "deviceInfo": { "manufacturer": "smart-home-inc", "model": "hs1234", "hwVersion": "3.2", "swVersion": "11.4" } } ] } }
ตัวอย่างคำตอบ QUERY
{ "requestId": "6894439706274654514", "inputs": [ { "intent": "action.devices.QUERY", "payload": { "devices": [ { "id": "123" } ] } } ] }
{ "requestId": "6894439706274654514", "payload": { "devices": { "123": { "status": "SUCCESS", "online": true, "isArmed": true, "currentArmLevel": "home_key", "currentStatusReport": [ { "blocking": false, "deviceTarget": "123", "priority": 0, "statusCode": "lowBattery" } ] } } } }
ตัวอย่างคำสั่ง EXECUTE
ArmDisarm
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์คำสั่ง
โปรดดู
action.devices.traits.ArmDisarm
ข้อมูลอ้างอิง
{ "requestId": "6894439706274654516", "inputs": [ { "intent": "action.devices.EXECUTE", "payload": { "commands": [ { "devices": [ { "id": "123" } ], "execution": [ { "command": "action.devices.commands.ArmDisarm", "params": { "arm": true, "armLevel": "away_key" } } ] } ] } } ] }
{ "requestId": "6894439706274654516", "payload": { "commands": [ { "ids": [ "123" ], "status": "SUCCESS", "states": { "online": true, "isArmed": true, "currentArmLevel": "away_key" } } ] } }
ข้อผิดพลาดของอุปกรณ์
ดูรายการทั้งหมดของ ข้อผิดพลาดและข้อยกเว้นรายงานข้อยกเว้นในการใช้งาน
เมื่อพยายามปิดระบบหรือปิดระบบ คุณสามารถให้ บริบทผ่านรหัสข้อยกเว้น ที่คุณรายงานผ่านลักษณะ StatusReport โดยอาจรายงานข้อยกเว้นว่าเป็นการบล็อกหรือไม่ได้บล็อก
- มีการรายงานข้อยกเว้นที่ไม่บล็อกโดยมีสถานะ "สำเร็จ" สถานะว่า ข้อยกเว้นดังกล่าวไม่ได้ป้องกันการเปิดและปิดระบบ
- ข้อยกเว้นในการบล็อกที่รายงานโดยมี "EXCEPTIONS" สถานะนี้บ่งชี้ว่าการเปิด หรือการปิดระบบหยุดลงเนื่องจากข้อยกเว้นเหล่านี้
รหัสข้อยกเว้นที่มักเชื่อมโยงกับระบบรักษาความปลอดภัย ได้แก่
doorOpen
: ประตูเปิดอยู่windowOpen
: หน้าต่างเปิดอยู่isOpen
: เซ็นเซอร์ตรวจพบว่ามีบางอย่างเปิดอยู่ (แต่ไม่ทราบ หากเป็นประตูหรือหน้าต่าง)
ตัวอย่าง: ข้อยกเว้นที่ไม่บล็อก
ตัวอย่างนี้แสดงข้อยกเว้นแบบไม่บล็อกกรณีที่ระบบรักษาความปลอดภัย เปิดระบบแม้ว่าจะมีการรายงานหน้าต่างว่าเปิดอยู่
ผู้ใช้ | ตั้งค่าระบบรักษาความปลอดภัยเป็นระดับสูงแล้ว |
Google Assistant | เอาล่ะ หน้าต่างด้านหน้า เปิดอยู่ กำลังเปิดใช้งานระบบรักษาความปลอดภัยให้เป็นการรักษาความปลอดภัยระดับสูง |
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"inputs": [{
"intent": "action.devices.EXECUTE",
"payload": {
"commands": [{
"devices": [{
"id": "123"
}],
"execution": [{
"command": "action.devices.commands.ArmDisarm",
"params": {
"arm": true,
"armLevel": "L2"
}
}]
}]
}
}]
}
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"commands": [
{
"ids": [
"123"
],
"status": "SUCCESS",
"states": {
"online": true,
"isArmed": true,
"currentArmLevel": "L2",
"currentStatusReport": [
{
"blocking": false,
"priority": 0,
"statusCode": "windowOpen",
"deviceTarget": "sensor_id1"
}
]
}
}
]
}
}
ตัวอย่าง: ข้อยกเว้นในการบล็อก
ผู้ใช้ | ตั้งค่าระบบรักษาความปลอดภัยเป็นระดับสูงแล้ว |
Google Assistant | เกิดข้อผิดพลาด กำลังควบคุมระบบรักษาความปลอดภัย หน้าต่างด้านหน้าเปิดอยู่ |
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"inputs": [{
"intent": "action.devices.EXECUTE",
"payload": {
"commands": [{
"devices": [{
"id": "123"
}],
"execution": [{
"command": "action.devices.commands.ArmDisarm",
"params": {
"arm": true,
"armLevel": "L2"
}
}]
}]
}
}]
}
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"commands": [
{
"ids": [
"123"
],
"status": "EXCEPTIONS",
"states": {
"online": true,
"isArmed": false,
"currentArmLevel": "L2",
"currentStatusReport": [
{
"blocking": true,
"priority": 0,
"statusCode": "windowOpen",
"deviceTarget": "sensor_id1"
}
]
}
}
]
}
}
การเปิดใช้งานการตรวจสอบสิทธิ์แบบ 2 ปัจจัย
หากกระบวนการเปิดใช้งานของคุณกำหนดให้ผู้ใช้ป้อน PIN ผ่าน กล่องโต้ตอบการตรวจสอบสิทธิ์แบบ 2 ปัจจัย คุณ ต้องรับทราบว่าพวกเขาต้องการเปิดใช้งานระบบต่อไปหรือไม่เมื่อมีการใช้งาน ข้อยกเว้น (เช่น เมื่อหน้าต่างหรือประตูเปิดอยู่)
สถานการณ์นี้อาจต้องมีทั้งการป้อน PIN หรือรหัสผ่าน ตามด้วยการตอบรับ
ตัวอย่าง: การยืนยันเพื่อรับทราบ
ตัวอย่างนี้แสดงให้เห็นผู้ใช้พยายามเปิดใช้งานระบบรักษาความปลอดภัย แต่ ตรวจพบว่าประตูหน้าเปิดอยู่ ผู้ใช้รับทราบว่าการรักษาความปลอดภัย ควรเปิดระบบ แม้ประตูหน้าจะเปิดอยู่
ผู้ใช้ | เปิดระบบรักษาความปลอดภัย |
Google Assistant | ประตูหน้าเปิดอยู่ค่ะ คุณแน่ใจไหมว่าต้องการเปิดระบบรักษาความปลอดภัย |
ผู้ใช้ | ได้ |
Google Assistant | ตกลง กำลังเปิดระบบ ระบบรักษาความปลอดภัย |
ในทางกลับกัน คุณควรตอบด้วยภารกิจackNeeded
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"inputs": [{
"intent": "action.devices.EXECUTE",
"payload": {
"commands": [{
"devices": [{
"id": "123"
}],
"execution": [{
"command": "action.devices.commands.ArmDisarm",
"params": {
"arm": true
}
}]
}]
}
}]
}
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"commands": [
{
"ids": [
"123"
],
"status": "ERROR",
"errorCode": "challengeNeeded",
"challengeNeeded": {
"type": "ackNeeded"
},
"states": {
"isArmed": true,
"currentArmLevel": "L2",
"currentStatusReport": [
{
"blocking": false,
"priority": 0,
"statusCode": "doorOpen",
"deviceTarget": "456"
}
]
}
}
]
}
}
คำขอที่ตามมาจาก Google ที่ส่งถึงคุณจะมีผลลัพธ์ ack
รายการ
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"inputs": [{
"intent": "action.devices.EXECUTE",
"payload": {
"commands": [{
"devices": [{
"id": "123"
}],
"execution": [{
"command": "action.devices.commands.ArmDisarm",
"params": {
"arm": true
},
"challenge": {
"ack": true
}
}]
}]
}
}]
}
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"commands": [
{
"ids": [
"123"
],
"status": "SUCCESS",
"states": {
"isArmed": true
}
}
]
}
}
ตัวอย่าง: การยืนยัน PIN และการตอบรับ
ตัวอย่างนี้แสดงให้เห็นว่าผู้ใช้พยายามเปิดใช้งานระบบรักษาความปลอดภัยซึ่งต้องป้อน PIN ระบบจะตรวจพบว่าหน้าต่างด้านหน้าและด้านหลังเปิดอยู่และขอให้ผู้ใช้ตอบรับ การเปิดระบบควรจะทำงานต่อ
ผู้ใช้ | เปิดระบบให้อยู่ห่างๆ |
Google Assistant | PIN ของคุณคืออะไร |
ผู้ใช้ | 1234 |
Google Assistant | ดูเหมือนว่า หน้าต่างด้านหน้าและหน้าต่างด้านหลังเปิดอยู่ คุณแน่ใจไหมว่าต้องการดำเนินการต่อ กำลังเปิดระบบรักษาความปลอดภัยออกไป |
ผู้ใช้ | ได้ |
Google Assistant | ตกลง กำลังเปิดระบบ ระบบรักษาความปลอดภัยเป็นไม่อยู่บ้าน |
ในตอนแรก คุณควรตอบด้วยชาเลนจ์ pinNeeded
มาตรฐาน
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.ArmDisarm", "params": { "arm": true } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["456"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "pinNeeded" } }] } }
จากนั้น Google จะติดตามผลด้วยคำขอที่มี PIN ที่ให้ไว้ เพื่อสนับสนุน
รอบที่ 2 คุณควรตอบด้วยภารกิจ ackNeeded
ด้วย
ข้อมูลเพิ่มเติม รวมทั้งระดับกลุ่มเป้าหมาย และรายงานสถานะปัจจุบันที่มี
ข้อยกเว้นในการบล็อก
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [...], "execution": [{ "command": "action.devices.commands.ArmDisarm", "params": { "arm": true, "armLevel": "away" }, "challenge": { "pin": "1234" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["456"], "status": "ERROR", "states": { "targetArmLevel": "away", "currentStatusReport": [{ "blocking": true, "priority": 1, "deviceTarget": "front_window_id", "statusCode": "deviceOpen" }, { "blocking": true, "priority": 1, "deviceTarget": "back_window_id", "statusCode": "deviceOpen" } ] }, "errorCode": "challengeNeeded", "challengeNeeded": { "type": "ackNeeded" } }] } }
คำขอจาก Google ที่ส่งถึงคุณหลังจากนั้นจะมีเฉพาะผลลัพธ์ ack
รายการ
ไม่ใช่ PIN ที่ให้ไว้ในการเลี้ยวแรก
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [...], "execution": [{ "command": "action.devices.commands.ArmDisarm", "params": { "arm": true, "armLevel": "away" }, "challenge": { "ack": true } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [ { "ids": [ "123" ], "status": "SUCCESS", "states": { "isArmed": true } } ] } }