스마트 홈 보안 시스템 가이드

action.devices.types.SECURITYSYSTEM - 보안 시스템을 설정하거나 해제할 수 있습니다. 여러 보안 수준 (예: 재택 및 외출)으로 무장할 수 있으며 움직임을 감지하는 센서나 열린 창문과 같은 특정 센서에 관한 정보를 보고할 수 있습니다.

이 유형은 기기에 보안 시스템 아이콘 및 관련 일부 아이콘이 표시된다는 것을 나타냅니다. 동의어 및 별명

기기 기능

관련 트레잇 문서를 참고하세요. 서비스가 지원해야 하는 속성과 상태, EXECUTE 및 QUERY 응답을 빌드합니다.

필수 trait

이러한 특성과 명령은 있습니다. 기기가 이러한 특성을 지원하지 않는 경우 QUERY 또는 EXECUTE 응답의 functionNotSupported 자세한 내용은 오류 및 예외에서 자세한 내용을 확인하세요.

기기에 해당되는 경우 이러한 특성을 사용하는 것이 좋습니다. 하지만 사용 가능한 모든 특성을 자유롭게 조합해서 기존 특성에 가장 잘 어울리도록 만들 수 있습니다. 제품 기능을 개선하는 데 도움이 됩니다

품질 요구사항

  • 지연 시간: 2000ms 이하여야 합니다.
  • 안정성: 97% 이상이어야 합니다.

기기 예: 간단한 보안 시스템

이 섹션에는 일반적인 '보안 시스템'을 나타내는 인텐트 페이로드 예시가 포함되어 있습니다. 위 기기 유형과 특성에 따라 다를 수 있습니다. 구현에서 트레잇을 추가하거나 삭제하면 이러한 변경사항을 반영하도록 응답을 수정하세요.

샘플 SYNC 응답

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청
를 통해 개인정보처리방침을 정의할 수 있습니다.
{
  "requestId": "6894439706274654512",
  "inputs": [
    {
      "intent": "action.devices.SYNC"
    }
  ]
}
<ph type="x-smartling-placeholder">
</ph>
응답
{
  "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">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청
를 통해 개인정보처리방침을 정의할 수 있습니다.
{
  "requestId": "6894439706274654514",
  "inputs": [
    {
      "intent": "action.devices.QUERY",
      "payload": {
        "devices": [
          {
            "id": "123"
          }
        ]
      }
    }
  ]
}
<ph type="x-smartling-placeholder">
</ph>
응답
{
  "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 참조

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청
를 통해 개인정보처리방침을 정의할 수 있습니다.
{
  "requestId": "6894439706274654516",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ArmDisarm",
                "params": {
                  "arm": true,
                  "armLevel": "away_key"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
<ph type="x-smartling-placeholder">
</ph>
응답
{
  "requestId": "6894439706274654516",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "isArmed": true,
          "currentArmLevel": "away_key"
        }
      }
    ]
  }
}

기기 ERRORS

전체 목록 보기 오류 및 예외를 방지합니다.

경보 시스템 예외 보고

경보 시스템을 설정하거나 해제하려고 할 때 예외 코드를 통한 컨텍스트 StatusReport 트레잇을 통해 보고해야 합니다. 예외는 차단 또는 비차단으로 보고될 수 있습니다.

  • 'SUCCESS'로 보고된 비차단 예외 상태는 예외도 무장 해제 또는 무장 해제를 막지 않았습니다.
  • 'EXCEPTIONS'로 신고된 차단 예외 경보 시스템이 작동하는 것을 경보 시스템 해제가 중지되었습니다.

보안 시스템과 일반적으로 관련된 예외 코드는 다음과 같습니다.

  • doorOpen: 문이 열려 있습니다.
  • windowOpen: 창이 열려 있습니다.
  • isOpen: 센서가 무언가가 열려 있음을 감지하지만 예: 문 또는 창문).
를 통해 개인정보처리방침을 정의할 수 있습니다.

예: 비차단 예외

이 예는 보안 시스템이 경보를 수신하기 전에 차단되지 않는 예외를 보여줍니다. 경보 시스템이 작동됩니다.

사용자 보안 시스템을 높은 보안으로 설정합니다.
Google 어시스턴트 알겠습니다. 현관 창문을 엽니다 이(가) 열려 있습니다. 보안 시스템의 보안을 강화합니다.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청
를 통해 개인정보처리방침을 정의할 수 있습니다.
{
    "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"
            }
          }]
        }]
      }
    }]
  }
<ph type="x-smartling-placeholder">
</ph>
응답
{
    "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 어시스턴트 오류가 발생했습니다. 보안 시스템 제어 앞 창문이 열려 있습니다.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청
를 통해 개인정보처리방침을 정의할 수 있습니다.
{
    "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"
            }
          }]
        }]
      }
    }]
  }
<ph type="x-smartling-placeholder">
</ph>
응답 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단계 인증으로 경보 시스템 설정

보안 흐름에서 사용자가 2단계 인증 대화상자 활성 시스템이 있을 때 경보 시스템을 계속 설정할지 예외 (예: 창문이나 문이 열려 있는 경우)와 같은 예외 조건을 충족해야 합니다.

이 시나리오에서는 PIN 또는 암호 입력 모두에 이어 확인이 필요할 수 있습니다.

예: 확인 챌린지

이 예에서는 사용자가 보안 시스템을 설정하려고 시도하지만 현관문이 열려 있는 것으로 감지되었습니다. 사용자는 보안이 현관문이 열려 있더라도 시스템이 설정되어 있어야 합니다.

사용자 보안 시스템을 설정합니다.
Google 어시스턴트 현관문이 열려 있습니다. 보안 경보 시스템을 설정하시겠습니까?
사용자 예.
Google 어시스턴트 알겠습니다. 경보 시스템을 설정합니다 보안 시스템입니다.

첫 번째 차례에서는 ackNeeded 챌린지로 응답해야 합니다.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청 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
            }
          }]
        }]
      }
    }]
  }
<ph type="x-smartling-placeholder">
</ph>
응답 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 결과가 포함됩니다.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청 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
            }
          }]
        }]
      }
    }]
  }
<ph type="x-smartling-placeholder">
</ph>
응답
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
      "commands": [
        {
          "ids": [
            "123"
          ],
          "status": "SUCCESS",
          "states": {
            "isArmed": true
          }
        }
      ]
    }
  }

예: PIN 및 확인 챌린지

이 예에서는 사용자가 PIN 입력을 요구하는 보안 경보 시스템을 설정하려고 시도하는 것을 보여줍니다. 시스템에서 전면 및 후면 창이 열려 있음을 감지하고 사용자에게 확인을 요청합니다. 경보 시스템이 계속 실행되어야 합니다.

사용자 외출 경보 시스템 설정
Google 어시스턴트 PIN을 입력하세요.
사용자 1234입니다.
Google 어시스턴트 예를 들어 전면 창문과 후면 창이 열려 있습니다. 계속하시겠어요? 경보 시스템 작동을 설정하는 것은 어떨까요?
사용자 예.
Google 어시스턴트 좋습니다. 경보 시스템을 설정합니다 외출 중 보안 시스템을

첫 번째 차례에서는 표준 pinNeeded 챌린지로 응답해야 합니다.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청 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
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
응답
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["456"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

그러면 Google에서 제공된 PIN을 포함한 요청을 다시 보냅니다. 지원하기 위해 두 번째 턴에서는 다음과 같이 ackNeeded 챌린지로 응답해야 합니다. 대상 부문 수준, 허용될 수 있습니다

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청 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"
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
응답
{
  "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 결과만 포함됩니다. 하세요.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
요청 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
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
응답
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "isArmed": true
        }
      }
    ]
  }
}