Alexa Wake on LAN

「アレクサ、パソコンつけて」でPCを起動します

必要条件

  • Wake on LAN 対応のAlexaデバイス
  • Wake on LAN (S5) 対応のPC
  • Amazon開発者アカウント
  • AWSアカウント
  • AWS Lambda 及び Python に関する知識
  • OAuth2.0に関する理解

公式ドキュメントスマートホームスキル作成手順の一読を推奨します

スキルの作成

Alexaから呼び出すスマートホームスキルを作成します

  1. Amazon開発者ポータルからAlexa Skills Kitを開きます

  2. [スキルの作成]を開き「スマート ホーム」を選択して作成します

  3. スキルIDを控えておきます

  4. アクセス権限を開き、Akexaイベントを送るをONにします

  5. AlexaクライアントID、Alexaクライアントシークレットを控えておきます

Lambda関数の作成

スキルで実行するプログラムを作成します

  1. AWSコンソールにログインします

  2. リージョンを「米国西部 (オレゴン)us-west-2」に変更します(AlexaSkillの極東地域での推奨。想像ですが、AlexaAPIの動作環境と地理的に近いんだと思います)

  3. サービスからLambdaを検索して[関数の作成]を開き、ランタイムにPythonを指定して作成します

  4. 作成した関数のARNを控えておきます

  5. デザイナーの[トリガーを追加]から「Alexa Smart Home」を選択し、スキルIDを指定して追加します

  6. デザイナーの関数名を選択し、関数コードにlambda_function.pyの内容を記述して[Deploy]します

  7. Wake on LAN 対象PCのMACアドレスを取得します

  8. Lambdaの環境変数を編集して以下の内容を設定します

    • ALEXA_CLIENT_ID: {スキル作成で取得したAlexaクライアントID}
    • ALEXA_CLIENT_SECRET: {スキル作成で取得したAlexaクライアントシークレット}
    • DEVICE_MAC_ADDRESS: {Wake on LAN 対象PCのMACアドレス}
    • DEVICE_NAME: {アレクサに呼び掛けるデバイス名}(この例では「パソコン」)

DynamoDBの作成

Alexaにイベントを送信するためのOAuthトークンを管理するためにDynamoDBを使用します

  1. サービスからDynamoDBを検索してテーブルを作成します ※テーブル名はLambda関数内で指定しているので合わせてください

  2. 作成したテーブルのARNを控えます

DynamoDBへのアクセス権を設定

  1. Lambda関数のアクセス権限>実行ロールのロール名からIAMロールを開きます

  2. [インラインポリシーの追加]から作成したDynamoDBテーブルへのアクセス権を設定します

エンドポイントの設定

スキルとLambda関数を接続します

  1. スキルの画面に戻り、デフォルトのエンドポイントにLambda関数のARNを設定します

アカウントリンクの設定

スマートホームスキルを使用するためには、何らかのOAuth2.0対応アカウント(操作対象デバイスを管理するサービスが想定されているはず)とリンクする必要があります

今回はログインだけ出来ればよいのでLogin with Amazonを利用します

Login with Amazonについての詳細は公式ドキュメントを参照してください

  1. Amazon開発者ポータルからLogin with Amazonを開きます

  2. [セキュリティプロファイルを新規作成]を開いて作成します

  3. 作成されたクライアントID、クライアントシークレットを控えます

  4. スキルの画面に戻り、アカウントリンクに以下の内容を設定します

    • Web認証画面のURI: https://www.amazon.com/ap/oa
    • アクセストークンのURI: https://api.amazon.com/auth/o2/token
    • ユーザーのクライアントID: {Login with Amazonで取得したクライアントID}
    • ユーザーのシークレット: {Login with Amazonで取得したクライアントシークレット}
    • ユーザーの認可スキーム: HTTP Basic認証
    • スコープ: profile:user_id
  5. Alexaのリダイレクト先URLを控えます

  6. Login with Amazonのウェブ設定を開き、許可された返信URLにリダイレクト先URLを設定します

スキルの有効化

  1. スマホのAmazon Alexaアプリでデバイス>スマートホームスキルから作成したスキルを選択して有効化します

  2. Amazonアカウントのログインを求められるので、ログインし、続けてデバイスを検出します

  3. 「パソコン」が検出されるのでグループに登録するなどして設定すれば準備完了です