スマートホーム セキュリティ システム ガイド

action.devices.types.SECURITYSYSTEM - セキュリティ システムの監視のオン / オフを解除できます。複数のセキュリティ レベル(在宅と外出など)で監視することも、特定のセンサー(動きや開いている窓を検知するセンサーなど)に関する情報を報告することもできます。

このタイプのアイコンは、デバイスにセキュリティ システムのアイコンと関連する情報が表示されることを示します。 類義語と別名を使用します。

デバイスの機能

詳しくは、対応するトレイトのドキュメントをご覧ください。 実装の詳細(サービスがサポートする必要がある属性と状態、 EXECUTE レスポンスと QUERY レスポンスを作成します。

必要なトレイト

以下のトレイトとコマンドは必須です( できます。デバイスがこれらのトレイトをサポートしていない場合は、次のエラーコードを入力してください。 QUERY または EXECUTE レスポンスの functionNotSupported。詳しくは、 エラーと例外をご覧ください。

お使いのデバイスに応じて、以下のトレイトを使用することをおすすめします。 ただし、利用可能なすべてのトレイトの中から、既存のテクノロジーに合わせて自由に組み合わせて使用することができます。 提供します。

品質要件

  • レイテンシ: 2,000 ミリ秒以下。
  • 信頼性: 97% 以上にする必要があります。

デバイスの例: シンプルなセキュリティ システム

このセクションでは、一般的な「セキュリティ システム」を表すインテント ペイロードの例を示します。 デバイスは上記のデバイスタイプとトレイトに基づきます。実装でトレイトを追加または削除すると、 変更に合わせて回答を修正してください。

SYNC レスポンスの例

リクエスト
で確認できます。
{
  "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 レスポンスの例

リクエスト
で確認できます。
{
  "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

コマンド パラメータの詳細については、 <ph type="x-smartling-placeholder"></ph>をご覧ください 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"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
<ph type="x-smartling-placeholder">
</ph>
対応
{
  "requestId": "6894439706274654516",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "isArmed": true,
          "currentArmLevel": "away_key"
        }
      }
    ]
  }
}

デバイスエラー

詳しくは、 エラーと例外をご覧ください。

監視の例外を報告する

システムの監視または監視解除を行う場合は、追加の 例外コードを使用したコンテキスト これは、StatusReport トレイトで報告する値です。 例外は、ブロックまたは非ブロックとして報告できます。

  • 非ブロックの例外が「SUCCESS」で報告されるステータスが 例外が監視または監視解除の妨げにならなかった。
  • 「EXCEPTIONS」で報告された例外のブロックステータスが「監視中」の場合 これらの例外により、監視解除が停止されました。

セキュリティ・システムに共通する例外コードには、次のようなものがあります。

  • doorOpen: ドアが開いています。
  • windowOpen: ウィンドウが開いています。
  • isOpen: センサーが何かが開いていることを検知しましたが、それを (ドアや窓である場合)。
で確認できます。

例: 非ブロック例外

この例は、セキュリティ システムが 50 ミリ秒待たされている場合の非ブロック例外を示しています。 監視されている場合があります。

ユーザー セキュリティ システムを高セキュリティに設定して。
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 チャレンジで応答する必要があります。

リクエスト 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 チャレンジで応答します。

リクエスト 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 を含むリクエストをフォローアップします。これをサポートするには 2 回目のターンでは、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 の結果のみが含まれます。 最初のターンで提供された PIN とは異なります。

<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
        }
      }
    ]
  }
}