俺のパソコン起動して! Wake On LAN を Alexa で実現する

この記事は約5分で読めます。

この記事を掲載する頃は、クリスマスイブ。年末年始も間近という時期です。

帰省する地方勢に役立つスキルを作りたいと思って、 Alexa から Wake On LAN を実行するスキルを編み出すことにしました。

なお、こちらは スマートスピーカー 2 Advent Calendar 2018 の24日目 の記事です。

クリスマスイブ感は一切なし!

申し訳ないっ!

スポンサーリンク

スキルを作った経緯

もう Amazon 社の 年末 Alexa Skill 開発キャンペーンは終わってしまいましたが、何か関連して役立つものが欲しいなと思っていました。

ふと実家に帰省しようとして、自宅に VPNとWake On LAN を実装していたところ、このスキルが欲しいと気づきました。

最初のうちは下記の記事を参考にして、ノンプログラミングで実装しようとしました。

Google HomeからノンプログラミングでWindows起動&シャットダウン - Qiita
( 23日目の記事です。 先日のセールで買ったGoogle Homeを...
Alexaに話しかけてSAPサーバを起動する - Qiita
Alexaに「アレクサ、トリガー、つけて」と話しかけると、 サーバ機が起動して、SAPのDBが立ち上げる仕組みを作ってみました。 ※経緯についてはこちら (

しかし、どうも呼びかけが不自然なのと、呼びかけの認識が悪いのが気になってしまいました。

「アレクサ、パソコンの起動を『トリガー』」なんて呼びかけてると、家族に不審な目で見られました。「なに、そのドヤァ感」みたいな…

たしかにちょっとマンガのヒーロー感あって、大人は恥ずかしい…

というわけで、より自然な呼びかけを目指した Alexa スキル開発を始めたわけです。

スポンサーリンク

スキル概要

スキル名

スキル名は、こちらで進めることにしました。

俺のパソコン

スキルの呼び出しは、当分こちらになります。

今後、女性が呼びかけたり、他の言い回しができるようにしたいとは思いますが、まずはオレオレ感出しておきました。

使い方

2018/12/24時点の初期バージョンでは、下記のように呼びかける一発ものです。

  • 「俺のパソコン」を開いて
  • 「俺のパソコン」を開始して
  • 「俺のパソコン」を起動して
  • 「俺のパソコン」をスタートして
  • 「俺のパソコン」スタートして

不自然な言い回しで良ければ、もう少しバリエーションはあるはずです。

スポンサーリンク

対象ユーザー

下記の条件を満たせる方だけが利用可能です。

  • 必要なアカウント
    • Amazon.com (Alexa用)
    • Pushbullet
  • Wake On LAN 環境
    • 対象PC(WakeOnLAN起動可能状態)
    • 中継PC(EventGhost導入済)

ライトユーザーが使えるようなものではないのですが、いずれはもうちょっと敷居を下げたいですね。

上記を満たすユーザーが対象ということで、Wake On LAN や Pushbullet に関する説明は省かせていただきます。ご了承ください。

スポンサーリンク

仕様

こちらの記事のように Amazon Echo デバイスから直接Magicパケットを飛ばせるようになれば、かーなりシンプルに済みます。

Alexaが「Wake-on-LAN」に対応、「テレビの電源オン」が機器追加不要に - Engadget Japanese
Amazon EchoやGoogle Homeは、照明などのスマートホーム機器を操作でき、とても便利な製品です。一方、こうしたスマートスピーカーには、「できてほしいけどまだできない」ことも多く存在します。その筆頭が、対象機器の電源を入れること。相手がスリープなど低消費電力モードになってしまうと、Alexaのコマンドを....

しかし、現状では無理です。

加えて注意したいのが、Alexaの機能は、Wake-on-LANに対応している機器ならなんでも使えるわけではなく、Alexaスキルへの対応が必須条件になっているようです。これはAlexaから機器を識別するために必要なのかもしれません。

くっ、余計なことを…

それを踏まえて、下記のように作りました。

システム構成

俺のパソコンのシステム構成図

必要なアカウントは Amazon と Pushbullet だけで済むのがポイントです。

こちらの記事の作り方では IFFFTが必要ですが、それさえも減らしてみました。

ただし、こちらのような中継PCが必要となります。

普通のPCでも良いですが、我が家で省エネに常時起動してるのはコイツだけだったので、活用することにしました。

Linux機やRasberry Piでも良いと思いますが、EventGhostは利用できませんので、別の仕組みとPushbulletを組み合わせる必要があります。

工夫したところ

工夫.「自然」に呼び出せること!

先に紹介したように「俺のパソコン」という呼び出し名にすることで、スキルの呼び出しを自然にしました。

「俺のパソコン」を開いて
「俺のパソコン」を開始して
「俺のパソコン」を起動して
「俺のパソコン」をスタートして
「俺のパソコン」スタートして

これは IFTTT を介すと上手くできないポイントです。

こういう自然な言い回しで使えるようにすることは重要だと考えます。我々のようなテッキーな連中だけで無く、一般人への普及を目指すなら必要です。

それまで色々似たデバイスはあったのに、iPhone がスマホの第一人者のように普及できたのはこういうところにあると考えています。

注意.

環境変数でAPIキーやデバイスIDを指定しています。本来はアカウントリンクでやりたいところでしたが、後日アップデートして対応させたいとおもいます。

スポンサーリンク

ソースコード

下記に公開しています。不具合や要望はプルリクなどいただけると嬉しいです。日本語でOK。

itsumonotakumi/wake-on-lan-to-my-pc-by-alexa
Wake On LAN to My PC by Alexa . Contribute to itsumonotakumi/wake-on-lan-to-my-pc-by-alexa development by creating an account on GitHub.

ちなみに、元にしたのは ask のサンプルですから、少しだけフォルダ構成なども踏襲しています。

スポンサーリンク

スキルレベルアップ

取り急ぎ、匠の目的にはギリギリ達成できる状態にはなりました。

しかし、同じようなニーズを持つテッキーな人もいらっしゃると思いますから、下記を実装してスキル公開にチャレンジしてみたいと思います。

  • デバイスの特定
  • アカウントリンク対応
  • スキル公開要件を満たす

加えて、下記もできたらなと考えています。

  • 呼びかけ方の洗練
  • 返答バリエーションの拡充
  • エラー処理の拡充
  • 起動状態の確認
  • シャットダウンの実行

無指名対話」が日本でも実現できるようになれば、「俺のパソコン」じゃなく、「私のパソコン」や「My PC」とかでも指定できるようになります。(ホスト名とかで柔軟さを出すのは無理そうだけど)

しかし、こちらの通り、まだ日本語向けには実装されてないようです。一部のスキルでは使えるらしいんですが、実装方法が不明…

ニーズはともかく、まだまだ発展させられる余地があって楽しそうです。