LoginSignup
10
6

More than 5 years have passed since last update.

Alexaでスマートホーム化した話

Last updated at Posted at 2018-12-06

この記事はFJCTアドベントカレンダー2018 6日目の記事です。
冬になり寒さが厳しくなってきたこの頃、いかがお過ごしでしょうか。
私はエアコンの頻繁に使うようになったのですが、いつもリモコンがどこにあるかわからなくなって探し回っています。
そういう時間がもったいないのでリモコン無しで、家にある家電を音声操作できるようにしてみました。

導入したものと構成

本当は照明やテレビなども操作したいのですが、
あいにく我が家には、赤外線で操作する家電はエアコンしかありませんでした。
せめてテレビ代わりに使っているPS4を操作できるようにしてみました。
エアコンの設定はかなり簡単だったのですが、PS4に関しては少し工夫が必要だったのでした。

1.png

Node-RED Alexa Home Skill Bridge の設定

Node-RED Alexa Home Skill Bridge はAmazon Echoで動作する独自の「デバイス」を作成して、
Node-REDと連携して様々なものを音声で制御できるようにするサービスです。 
ここ でアカウントを登録し、 PS4 という名前でデバイスを作成します。 
今回はOn/Off操作のみなのでActionsのon/offのみをチェックします。

add-devices.PNG

これで、Alexaアプリに PS4 デバイスが登録できるようになります。

Amazon Echo の設定

Alexaアプリで Node-RED スキルを有効にします。
有効にすると先程 Node-RED Alexa Home Skill Bridgeで登録した PS4 デバイスが検出できると思うので追加します。
この時点では登録のみで操作はできません。

PS4-Waker 導入

ps4-waker を導入していきます。
これを利用するには Playstation App を利用した登録が必要です。
Playstation App による登録方法は 公式の モバイルアプリ接続設定 で確認できます。
上記の方法を進めるとPS4の画面に PIN Code が表示されるので ps4-waker を実行した際に入力してあげると登録完了です。
これで、ps4-waker コマンドで PS4を操作できるようになります。

$ sudo npm install -g ps4-waker
$ sudo ps4-waker
No credentials; Use the PS4 Second Screen App and try to connect to PS4-Waker
Got credentials!  { 'client-type': 'i',
  'auth-type': 'C',
  'user-credential': 'credentials' }
Go to 'Settings -> Mobile App Connection Settings -> Add Device' on your PS4 to obtain the PIN code.
Pin code> xxxxxxx
Logged into device! Future uses should succeed

ゲームを起動したい場合は start 、 スタンバイにしたい場合は standby で操作します。

$ sudo ps4-waker start titleid
$ sudo ps4-waker standby

また titleid はPS4でアプリやゲームを起動した状態で search すると確認できます。

$ sudo ps4-waker search
{
  "type": "device",
  "statusLine": "200 Ok",
  "statusCode": "200",
  "status": "Ok",
  "host-id": "BC60A7E5FA2A",
  "host-type": "PS4",
  "host-name": "PS4-203",
  "host-request-port": "997",
  "device-discovery-protocol-version": "00020020",
  "system-version": "06020001",
  "running-app-name": "Overwatch",
  "running-app-titleid": "CUSA04065",
  "address": "192.168.1.5"
}

Node-RED の設定

Node-REDをNode-RED Document を参考にセットアップします

セットアップできたら http://127.0.0.1:1880/ でアクセスしてNode-REDの画面へ行きます。
Node-RED Alexa Home Skill Bridgeと連携するためのパレットを登録する必要があるため、
右上メニュー -> パレット から以下のように検索してパレットを追加します。

palette.png

PS4操作フローの作成

Alexa -> Node-RED -> PS4 と操作するフローを作成します。
出来上がったものがこちらです。
flow.png

各ノードの設定についてみていきます。
homeノードではNode-RED Alexa Home Skill Bridgeで登録したアカウントとデバイスを選択します。
home.png

switchノードではAlexaで呼び出したアクションによって条件を分岐します。
ここではOn/Offのみ扱うので以下のような設定になっています。
使えるアクションの詳細はこちら
switch.png

changeノードでは分岐した条件で代入する値を指定できます。
change.png

execノードで以下のようなシェルスクリプトを起動するように設定すれば

#!/bin/bash

case $1 in
  start)
      eval "ps4-waker start CUSA04065" ;;
  standby)
      eval "ps4-waker standby" ;;
  *)
    echo "unknown command $1" ;;
  esac

exec.png

これでPS4も操作できるようになります。
「Alexa、PS4をつけて」「Alexa、PS4を消して」と言うことで、PS4の起動/停止を操作できるようになりました。

最後に

自宅にあるものをできる限り音声操作できるようにしてみました。
思っていた以上に簡単で、できることも多いなと言う印象でした。
わかってはいましたが単純な入力を音声のみでできるため、かなり便利です。
私は一人暮らしの狭い家ですが、家が広かったりいろんな家電があるご家庭だとさらなる効率化が図れそうです。
スマートホーム化今年のうちに済ませておくのも良いのではないでしょうか。

7日目は、@tunakyonnのクラウドストレージからオブジェクトストレージに移行した話です。

10
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6