스마트 홈 보안 시스템 가이드
action.devices.types.SECURITYSYSTEM
- 보안 시스템을 설정하거나 해제할 수 있습니다. 여러 보안 수준 (예: 재택 및 외출)으로 무장할 수 있으며 움직임을 감지하는 센서나 열린 창문과 같은 특정 센서에 관한 정보를 보고할 수 있습니다.
이 유형은 기기에 보안 시스템 아이콘 및 관련 일부 아이콘이 표시된다는 것을 나타냅니다. 동의어 및 별명
기기 기능
관련 트레잇 문서를 참고하세요. 서비스가 지원해야 하는 속성과 상태, EXECUTE 및 QUERY 응답을 빌드합니다.
필수 trait
이러한 특성과 명령은
있습니다. 기기가 이러한 특성을 지원하지 않는 경우
QUERY 또는 EXECUTE 응답의 functionNotSupported
자세한 내용은
오류 및 예외에서 자세한 내용을 확인하세요.
권장 특성
기기에 해당되는 경우 이러한 특성을 사용하는 것이 좋습니다. 하지만 사용 가능한 모든 특성을 자유롭게 조합해서 기존 특성에 가장 잘 어울리도록 만들 수 있습니다. 제품 기능을 개선하는 데 도움이 됩니다
품질 요구사항
- 지연 시간: 2000ms 이하여야 합니다.
- 안정성: 97% 이상이어야 합니다.
기기 예: 간단한 보안 시스템
이 섹션에는 일반적인 '보안 시스템'을 나타내는 인텐트 페이로드 예시가 포함되어 있습니다. 위 기기 유형과 특성에 따라 다를 수 있습니다. 구현에서 트레잇을 추가하거나 삭제하면 이러한 변경사항을 반영하도록 응답을 수정하세요.
샘플 SYNC 응답
<ph type="x-smartling-placeholder">{ "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 응답
<ph type="x-smartling-placeholder">{ "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" } } ] } }
기기 ERRORS
전체 목록 보기 오류 및 예외를 방지합니다.경보 시스템 예외 보고
경보 시스템을 설정하거나 해제하려고 할 때 예외 코드를 통한 컨텍스트 StatusReport 트레잇을 통해 보고해야 합니다. 예외는 차단 또는 비차단으로 보고될 수 있습니다.
- 'SUCCESS'로 보고된 비차단 예외 상태는 예외도 무장 해제 또는 무장 해제를 막지 않았습니다.
- 'EXCEPTIONS'로 신고된 차단 예외 경보 시스템이 작동하는 것을 경보 시스템 해제가 중지되었습니다.
보안 시스템과 일반적으로 관련된 예외 코드는 다음과 같습니다.
doorOpen
: 문이 열려 있습니다.windowOpen
: 창이 열려 있습니다.isOpen
: 센서가 무언가가 열려 있음을 감지하지만 예: 문 또는 창문).
예: 비차단 예외
이 예는 보안 시스템이 경보를 수신하기 전에 차단되지 않는 예외를 보여줍니다. 경보 시스템이 작동됩니다.
사용자 | 보안 시스템을 높은 보안으로 설정합니다. |
Google 어시스턴트 | 알겠습니다. 현관 창문을 엽니다 이(가) 열려 있습니다. 보안 시스템의 보안을 강화합니다. |
{
"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 어시스턴트 | 오류가 발생했습니다. 보안 시스템 제어 앞 창문이 열려 있습니다. |
{
"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단계 인증으로 경보 시스템 설정
보안 흐름에서 사용자가 2단계 인증 대화상자 활성 시스템이 있을 때 경보 시스템을 계속 설정할지 예외 (예: 창문이나 문이 열려 있는 경우)와 같은 예외 조건을 충족해야 합니다.
이 시나리오에서는 PIN 또는 암호 입력 모두에 이어 확인이 필요할 수 있습니다.
예: 확인 챌린지
이 예에서는 사용자가 보안 시스템을 설정하려고 시도하지만 현관문이 열려 있는 것으로 감지되었습니다. 사용자는 보안이 현관문이 열려 있더라도 시스템이 설정되어 있어야 합니다.
사용자 | 보안 시스템을 설정합니다. |
Google 어시스턴트 | 현관문이 열려 있습니다. 보안 경보 시스템을 설정하시겠습니까? |
사용자 | 예. |
Google 어시스턴트 | 알겠습니다. 경보 시스템을 설정합니다 보안 시스템입니다. |
첫 번째 차례에서는 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 어시스턴트 | PIN을 입력하세요. |
사용자 | 1234입니다. |
Google 어시스턴트 | 예를 들어 전면 창문과 후면 창이 열려 있습니다. 계속하시겠어요? 경보 시스템 작동을 설정하는 것은 어떨까요? |
사용자 | 예. |
Google 어시스턴트 | 좋습니다. 경보 시스템을 설정합니다 외출 중 보안 시스템을 |
첫 번째 차례에서는 표준 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을 포함한 요청을 다시 보냅니다. 지원하기 위해
두 번째 턴에서는 다음과 같이 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
결과만 포함됩니다.
하세요.
{ "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 } } ] } }