照明用のスマートホームスキルを作成する



照明用のスマートホームスキルを作成する

照明を操作するスマートホームスキルを使うと、電球や照明、スイッチを音声で操作できます。たとえば、ユーザーが「アレクサ、居間の照明を50%にして」というと、部屋の明るさが変わります。Alexaのスマートホームスキルでは、音声で次のことができるようになります。

  • 照明のオン/オフ
  • 照明レベルと電力レベルの設定
  • 調色可能な電灯の色の変更
  • 調整可能な白色照明の色温度の変更

さらに、このようなスキルを使って、Alexaアプリから現在の照明の状況を確認することもできます。

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

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

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

照明エンドポイントを識別する

スキルが有効にされるとAlexaは検出リクエストを送信します。その応答として、デバイスに関連付けられている機能および各機能でサポートされているプロパティをリスト化して、エンドポイントを照明デバイスとして表します。また、デバイスのdisplayCategoryも指定する必要があります。これによりAlexaアプリで適切に表示されます。照明エンドポイントでは、これは次のいずれかになります。

  • LIGHT - 光源または照明器具のことです。
  • SWITCH - 壁埋込型の電源スイッチのことです。

スイッチが照明の制御にしか使用されないことが分かっている場合は、表示カテゴリーとしてLIGHTを使用できます。スイッチがどのように取り付けられ何のデバイスを制御するか判らない場合は、表示カテゴリーをSWITCHにする必要があります。これにより、たとえばユーザーが「アレクサ、照明をオフにして」といった場合、影響を受けるエンドポイントは照明のみになります。

以下は、検出応答イベントでの照明デバイスのコード例です。

照明デバイスの検出応答の例

{
   "event":{
      "header":{
         "namespace":"Alexa.Discovery",
         "name":"Discover.Response",
         "payloadVersion":"3",
         "messageId":"5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4"
      },
      "payload":{
         "endpoints":[
            {
               "endpointId":"appliance-001",
               "friendlyName":"リビングルームの電気",
               "description":"サンプルメーカーのスマート照明",
               "manufacturerName":"サンプルメーカー",
               "displayCategories":[
                  "LIGHT"
               ],
               "cookie":{
                  "extraDetail1":"optionalDetailForSkillAdapterToReferenceThisDevice",
                  "extraDetail2":"複数のエントリーがある場合があります",
                  "extraDetail3":"ただし、参照のためだけに使用してください"​,​​​
                  "extraDetail4":"現在のエンドポイントの状態を維持するのに適切な場所ではありません"
               },
               "capabilities":[
                  {
                     "type":"AlexaInterface",
                     "interface":"Alexa.ColorTemperatureController",
                     "version":"3",
                     "properties":{
                        "supported":[
                           {
                              "name":"colorTemperatureInKelvin"
                           }
                        ],
                        "proactivelyReported":true,
                        "retrievable":true
                     }
                  },
                  {
                      "type": "AlexaInterface",
                      "interface": "Alexa.PowerController",
                      "version": "3",
                      "properties": {
                        "supported": [ {
                          "name": "powerState"
                        } ],
                        "proactivelyReported": true,
                        "retrievable": true
                     }
                  },
                  {
                     "type":"AlexaInterface",
                     "interface":"Alexa",
                     "version":"3"
                  },
                  {
                     "type":"AlexaInterface",
                     "interface":"Alexa.ColorController",
                     "version":"3",
                     "properties":{
                        "supported":[
                           {
                              "name":"color"
                           }
                        ],
                        "proactivelyReported":true,
                        "retrievable":true
                     }
                  }
               ]
            }
         ]
      }
   }
}

機能を選択する

照明をオンにしたり変更したりといったユーザーのリクエストを処理するには、正しい機能を選択する必要があります。照明デバイスの操作を記述する機能インターフェースを次の表に示します。これらのインターフェースはすべての言語でサポートされています。

操作 機能インターフェース
照明のオン/オフを切り替えます Alexa.PowerController
エンドポイントの電力レベルを設定します Alexa.PowerLevelController
照明の明るさをパーセンテージで、または値を指定して変更します Alexa.BrightnessController
照明の色を変更します Alexa.ColorController
調整可能な照明の白の色調を変更します Alexa.ColorTemperatureController

エラーを報告する

照明を制御するディレクティブの応答として送信するエラーメッセージは、エンドポイントが利用不可、セキュリティトークンが期限切れなど、ほとんどは単純なもので、送れる内容はErrorResponseトピックで参照できます。

次のエラーシナリオは照明のエンドポイントに固有のものです。

シナリオ エラーメッセージタイプ 備考
調整可能な白色照明を設定するディレクティブが、現在ある色に設定されているエンドポイントに対して送信されます。 NOT_SUPPORTED_IN_CURRENT_MODE currentDeviceModeフィールドをCOLORに設定する必要があります。詳細については、ColorTemperatureControllerにある例を参照してください。