คำแนะนำเกี่ยวกับระบบรักษาความปลอดภัยสมาร์ทโฮม

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"
            }
          }]
        }]
      }
    }]
  }
คำตอบที่ 2
{
    "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

คำขอ 1
วันที่
{
    "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
            }
          }]
        }]
      }
    }]
  }
คำตอบที่ 2
{
    "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 รายการ

คำขอ 2
วันที่
{
    "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 มาตรฐาน

คำขอ 1
วันที่
{
  "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 ด้วย ข้อมูลเพิ่มเติม รวมทั้งระดับกลุ่มเป้าหมาย และรายงานสถานะปัจจุบันที่มี ข้อยกเว้นในการบล็อก

คำขอ 2
วันที่
{
  "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 ที่ให้ไว้ในการเลี้ยวแรก

คำขอ 3
วันที่
{
  "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
        }
      }
    ]
  }
}