ロック用のスマートホームスキルを作成する



ロック用のスマートホームスキルを作成する

セキュリティデバイス用に作成されたスマートホームスキルを使うと、ドアロックを音声で操作できます。たとえば、ユーザーが「アレクサ、正面玄関をロックして」というと、ドアがロックされます。また、このようなスキルを使って、Alexaアプリから現在の鍵の状況を確認することもできます。

このドキュメントでは、ロックデバイスを対象としたスマートホームスキルの概念、およびディレクティブとエラーメッセージについて紹介します。

スマートホームスキルを作成するには、Amazon開発者ポータルでコンフィギュレーション情報を指定し、コードを追加します。このコードはAWS Lambda関数(アマゾンウェブサービスの提供サービスのひとつ)としてホストされます。スキルはAlexaからのディレクティブに応答し、ドアロックなどと接続されているデバイスと通信し、応答イベントをAlexaに返します。

スマートホームスキルを作成するステップについて理解しておいてください。詳細については、次のページを参照してください。

ロックエンドポイントを識別する

スキルが有効にされるとAlexaは検出リクエストを送信します。その応答として、デバイスに関連付けられている機能を提供して、ロックエンドポイントを表します。また、デバイスのカテゴリーも識別する必要があります。ロックデバイスの場合はSMARTLOCKです。

ロックデバイスの検出応答の例

以下は、ロックデバイスの記述方法のコード例です。

{
   "event":{
      "header":{
         "namespace":"Alexa.Discovery",
         "name":"Discover.Response",
         "payloadVersion":"3",
         "messageId":"5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4"
      },
      "payload":{
         "endpoints":[
            {
               "endpointId":"appliance-003",
               "friendlyName":"正面玄関",
               "description":"サンプルメーカーのスマートロック",
               "manufacturerName":"サンプルメーカー",
               "displayCategories":[
                  "SMARTLOCK"
               ],
               "cookie":{

               },
               "capabilities":[
                  {
                     "type":"AlexaInterface",
                     "interface":"Alexa.LockController",
                     "version":"3",
                     "properties":{
                        "supported":[
                           {
                              "name":"lockState"
                           }
                        ],
                        "proactivelyReported":true,
                        "retrievable":true
                     }
                  },
                  {
                     "type":"AlexaInterface",
                     "interface":"Alexa",
                     "version":"3"
                  }
               ]
            }
         ]
      }
   }
}


低速および高速ロックハードウェア

ロックデバイスを正しく動作させ、その状態を報告するスマートホームスキルを作成するには、リクエストに対してデバイスがどの程度の速度で応答するかを決定する必要があります。これによってスキルの実装の詳細が決まります。

  • 高速ロックでは5秒以内にロックおよびロック解除することができます
  • 低速ロックではロックおよびロック解除するのに5秒以上かかります

高速ロック

ロックするハードウェアが5秒以内にロックリクエストに応答する場合は、ロックディレクティブに同期または非同期応答を実装できます。つまり、ロックまたはロック解除ディレクティブを受信したとき、Alexaインターフェースのレスポンスまたはエラーメッセージで応答し、リクエストが完了したかまたはエラーが発生したことを示します。

低速ロック

ロックするハードウェアのロックリクエストに対する応答が遅い場合は、ロックディレクティブに対して非同期応答を実装する必要があります。つまり、ディレクティブを受信したら次のようにします。

  • スキルのLambda関数から同期応答でDeferredResponseイベントを送信します。ここでは応答を送るタイミングを通知します。
  • ロックディレクティブのステータスを含むResponseまたはErrorResponseイベントを非同期でAlexaイベントゲートウェイに送信します。

どちらのイベントにも、リクエストを行ったディレクティブに対応する相関トークンを含めます。

機能を選択する

エンドポイントのロックやロック解除といったユーザーのリクエストを処理するには、正しい機能を選択する必要があります。ロックデバイスの操作を記述する機能インターフェースを次の表に示します。

操作 機能インターフェース
エンドポイントのロックの状態を取得または設定します Alexa.LockController
エラーが発生したことを示します Alexa.ErrorResponse(Alexaインターフェース)

音声によるロック解除をサポートするエンドポイントでは、セキュリティに関する追加の予防措置と、Alexaアプリ内でのユーザーによるコンフィギュレーションが必要です。詳細については、セキュリティテストのロック解除や制限解除セクションを参照してください。