Alexa.WakeOnLANControllerインターフェース



Alexa.WakeOnLANControllerインターフェース

電源をオンにするためにWake-on-LAN (WoL)またはWake on Wireless LAN (WoWLAN)をサポートするエンドポイント(スマートホームデバイス)用のWakeOnLANControllerインターフェースを使用します。このインターフェースは、PowerControllerインターフェースを使用して電源をオンにできるエンドポイントに便利です。低電力モードにすることで、クラウドがインターネットを使用してエンドポイントに到達しないようにできるためです。これを使用することで、サポートしているAlexaデバイスは、ローカルネットワークでエンドポイントに直接Wake-on-LANメッセージを送信します。

概要

このインターフェースは、PowerControllerインターフェースといっしょに実装します。通常のプロセスは以下のとおりです。

  1. 検出中に、エンドポイントのWakeOnLANControllerインターフェースとPowerControllerインターフェースを定義する応答を行いまず。WakeOnLANControllerのconfigurationオブジェクトには、エンドポイントのMACアドレスを指定します。
  2. ユーザーがAlexaにWakeOnLANControllerを実装したエンドポイントをオンにするようリクエストします。例:

    ユーザー: アレクサ、テレビをつけて

  3. Alexaは、TurnOnディレクティブ(PowerControllerインターフェースで定義)をスキルに送信します。
  4. スキルは、メッセージがイベントゲートウェイに送信され、応答が遅れることを表すDeferredResponseイベントを送信します。
  5. スキルはWakeUpイベントをAlexaイベントゲートウェイに送信します。このイベントはTurnOnディレクティブの後、Responseイベントの送信までの間、いつでも送信されます。イベントのイベントゲートウェイへの送信の詳細については、以下を参照してください。

  6. AlexaはWakeUpイベントを処理し、サポートしているデバイスのいずれかにWake-on-LAN(WoL)メッセージをエンドポイントの検出応答で提供されたMACアドレスに配信するよう指示します。
  7. スキルがAlexaイベントゲートウェイから(WakeUpイベントの応答として)成功またはエラー応答を受け取ると、ResponseイベントをAlexaイベントゲートウェイに送信します。応答の詳細については、PowerControllerドキュメントの応答を参照してください。
  8. スキルはエンドポイントを監視し、電源状態が変化すると、Alexaイベントゲートウェイにchange reportイベントを送信します。

DeferredResponseイベント(ステップ4)とResponseイベント(ステップ7)には、どちらも元のTurnOnリクエスト(ステップ3)の相関トークンを含める必要があります。

サポートしているAlexaデバイス

Wake-on-LAN機能をサポートしているAlexaデバイスは以下のとおりです。Wake-on-LANでエンドポイントの電源を正常に入れられるようにするには、Wake-on-LANをサポートしているエンドポイントと同じローカルネットワークに接続しているデバイスのいずれかを、ユーザーが持っている必要があります。

  • Amazon Tap(日本未対応)
  • Echo(全世代)
  • Echo Dot(全世代)
  • Echo Input(日本未対応)
  • Echo Plus(全世代)
  • Echo Show(全世代)
  • Echo Spot

検出

WakeOnLANControllerを実装するエンドポイントを指定する検出応答を送信する場合、次の例のようにエンドポイントのMACアドレスを指定する必要があります。

次の例の検出応答では、WakeOnLANControllerインターフェースを実装するエンドポイントのMACアドレスの指定方法を示しています。

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

ディレクティブ

TurnOnディレクティブは、PowerControllerインターフェースでも説明しましたが、念のためにここでも説明します。

TurnOn

エンドポイントをオンにするようリクエストします。

ユーザー: Alexa, turn on device
ユーザー: Alexa, schalte Smart Home-Gerät ein
ユーザー:デバイスをつけて
ユーザー: allume device s'il te plaît

リクエストの例:

{
  "directive": {
    "header": {
      "namespace": "Alexa.PowerController",
      "name": "TurnOn",
      "payloadVersion": "3",
      "messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-skill"
      },
      "endpointId": "appliance-001",
      "cookie": {}
    },
    "payload": {}
  }
}

ペイロードの詳細

フィールド 説明 必須
なし ペイロードに必須または任意のフィールドはありません。 なし なし

プロパティとイベント

プロパティ

現在、このインターフェースに定義されているレポート可能なプロパティはありません。

WakeUp

スキルは、低電力モードでWake-on-LAN機能をサポートするエンドポイントのTurnOnディレクティブを受信すると、WakeUpイベントをAlexaイベントゲートウェイに送信します。詳細については、イベントゲートウェイにイベントを送信するを参照してください。Alexaはこのイベントを処理し、サポートしているデバイスのいずれかにWake-on-LAN(WoL)メッセージをエンドポイントの検出応答で提供されたMACアドレスに配信するよう指示します。

WakeUpイベントの例

{
  "context": {
    "properties": [
      {
        "namespace": "Alexa.PowerController",
        "name": "powerState",
        "value": "OFF",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 500
      }
    ]
  },
  "event": {
    "header": {
      "namespace": "Alexa.WakeOnLANController",
      "name": "WakeUp",
      "payloadVersion": "3",
      "messageId": "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-Amazon"
      },
      "endpointId": "appliance-001"
    },
    "payload": {}
  }
}

ErrorResponse

何らかの理由によりユーザーのリクエストを完了できない場合、エラー応答を返す必要があります。詳細については、Alexa.ErrorResponseを参照してください。

エンドポイントの電源状態を変更するメッセージを定義するAlexa.PowerControllerインターフェースを参照してください。