デバイスの状態を表示してスマートホームスキルのテストとデバッグを行う方法



デバイスの状態を表示してスマートホームスキルのテストとデバッグを行う方法

Alexa開発者コンソールのスマートホームデバイスページでデバイスの状態を表示して、スマートホームスキルのテストとデバッグを行うことができます。スキルと開発者アカウントに関連付けられたスマートホームデバイスのすべてのプロパティについて、現在の値を確認できます。その他のテストツールの詳細については、スマートホームスキルのテストとデバッグを参照してください。

デバイスのプロパティの値をAlexaにレポートするには、次のような複数の方法があります。

  • Alexaがデバイスの状態についての情報をリクエストするために、ReportStateディレクティブをスキルに送信します。それを受けて、スキルからプロパティ値を含むStateReportイベントを返します。
  • スキルからプロパティ値を含むChangeReportイベントを送信することで、Alexaにデバイスの状態をプロアクティブにレポートします。
  • Alexaがスキルにディレクティブを送信します。それを受けて、スキルからプロパティ値を含む応答イベントまたはエラー応答イベントを返します。

Alexaがリクエストできるプロパティと、Alexaにプロアクティブにレポートするプロパティは、検出応答で指定します。状態レポートの詳細については、状態および変更レポートについてを参照してください。

デバイスの状態を表示する

スマートホームデバイスページには、コンソールにログインするときに指定したアカウントに関連付けられている各デバイスのリストが表示されます。アカウントに関連付けられているデバイスがない場合は、Alexaアプリでデバイスを追加できます。

以下は、Alexa開発者コンソールのスマートホームデバイスページの画像です。

Alexa開発者コンソールのスマートホームデバイスページ

デバイスの状態を表示するには

  1. Alexa開発者コンソールを開いて、ログインします。
  2. スマートホームデバイスを参照するか、Alexa開発者コンソールのホームページにあるリソースメニューのツールセクションで、Smart Home State Reporterをクリックします。スマートホームデバイスページが表示されます。デバイスごとに、以下のデータが表示されます。

    • タイプ - デバイスのタイプです。
    • スキル名 - デバイスがリンクされているスキルです。
    • 名前空間 - スキルが実装するAlexaインターフェースです。
    • 名前 - インターフェースのプロパティの名前です。
    • - Alexaで認識されている、プロパティの現在の値です。
    • サンプリング時刻 - プロパティ値のタイムスタンプです。
    • 不確かさ(ミリ秒)- プロパティ値が不確実である期間(ミリ秒単位)です。
    • ディープクエリ - AlexaがStateReportイベントからプロパティ値を取得した場合はTrueです。AlexaがChangeReportイベントやディレクティブ応答イベントなどのイベントからプロパティ値を取得した場合はFalseです。
  3. アクションを選択メニューを使用して、すべての行を展開する、すべての行を折りたたむ、データを含むファイルをダウンロードするなどのアクションを実行できます。

デバイスの状態を照会する

Alexa開発者コンソールでデバイスの状態を照会するには、以下の手順を実行します。

デバイスの状態を照会するには

  • 現在のキャッシュされたプロパティ値を使用する代わりに、Alexaからスキルに新しいReportStateリクエストを今すぐ送信させたい場合は、ディープクエリを強制チェックボックスをオンにします。
  • すべてのデバイスの現在の状態を照会するには、ページ上部のすべて照会をクリックします。ページ全体のデータが更新されます。
  • 1つのデバイスの現在の状態を照会するには、行の右側にある照会をクリックします。そのデバイスのデータが更新されます。

変更レポートの問題をトラブルシューティングする

スキルに変更レポートを実装したものの、想定されるプロパティ値が表示されない場合や、ディープクエリ列でfalseが想定される際にtrueが表示される場合は、以下のトラブルシューティング情報を参照してください。

  • 新たに検出されたデバイスでは、Alexaの状態のキャッシュが空になっている場合があります。ChangeReportを送信してキャッシュに書き込んでください。

  • 検出応答で、関連プロパティのproactivelyReportedtrueに設定し、ChangeReportイベントコードで関連プロパティをレポートしていることを確認してください。

  • EndpointHealthインターフェースを実装している場合、connectivityプロパティをStateReportChangeReportの各イベントに含めてください。

  • 実装するインターフェースによって定義されたプロパティのみをレポートします。ディレクティブのペイロードフィールドは、インターフェースのプロパティでない限り、レポートしないでください。たとえば、Cooking.FoodTemperatureControllerインターフェースのCookByFoodTemperatureディレクティブでは、targetFoodTemperaturecookingModefoodItemの各フィールドが送信されますが、そのインターフェースのプロパティtargetFoodTemperatureのみです。詳細については、スキルで実装する各インターフェースのドキュメントを参照してください。

  • ThermostatControllerインターフェースを実装しているスキルの場合、デバイスがサポートするサーモスタットモードをサイクルで切り替え、Alexaがデータをキャッシュできるようにしてください。

追加のシナリオをテストする

以下に、テストが可能な追加のシナリオをいくつか挙げます。

  • Alexaを使用せずに、デバイスの状態を変更します。たとえば、別のアプリや物理デバイスコントロールを使用して、デバイスの設定を変更します。スキルからは、Alexaに1つ以上のChangeReportイベントが送信される必要があります。コンソールに正しいプロパティ値が表示されることを確認します。

  • EndpointHealthインターフェースを実装している場合、ChangeReportイベントでconnectivityプロパティが正しくレポートされていることを確認します。デバイスの電源を切り、デバイス接続のポーリング間隔またはハートビート間隔が経過するまで待機します。コンソールに正しい値が表示されることを確認します。デバイスの電源を再度オンにしてから、プロパティ値をもう一度確認します。

  • 最初のアカウントや最近のアカウントだけでなく、スキルの有効化とアカウントリンクを行ったすべてのAmazonアカウントで、ChangeReportイベントが送信されることを確認します。通常、家族のメンバーはスマートホームデバイスを共有しますが、それぞれがデバイスのスキルに関連付けられた個別のAmazonアカウントを所有しています。このシナリオをテストするには、同一のデバイスの資格情報を使用して、さまざまなAmazonアカウントからスキルの有効化とアカウントリンクを行います。その後、Alexaを使用せずにデバイスの状態を変更します。