今回活用したサービス/デバイスは以下のラインナップです.
・Amazon Echo Dot(声帯認識)
・Raspberry Pi(Wake On LANコマンド及びSSH越しでのShut Downコマンドの実行)
・Node-RED Alexa Home Skill Bridge(Amazon Echo DotとRaspberry Piの橋渡し)
それでは構築手順を紹介します.
最初に,Node-RED Alexa Home Skill Bridge でアカウントを作成する.Node-RED Alexa Home Skill Bridgeのページにアクセスしたら左上あたりの「Login or Register」の「Register」から登録し,次に「Login」からログインする.Node-RED Alexa Home Skill Bridgeのページはこちら→https://alexa-node-red.bm.hardill.me.uk/
「Add Device」からデバイスを追加する.
今回は,Name と Description を「My PC」とし,有効にする機能として「On」と「Off」にだけチェックを入れる.
(私は上の動画の通り,Amazon Echoの言語設定を英語にしているので,「My PC」としましたが,日本語で使用している人は,Name を「パソコン」などの日本語で設定したほうが認識率が上がると思います.)
追加が完了すると,デバイス一覧に「My PC」が追加される.
次にスマホから Alexaアプリを起動して,「メニュー」->「スキル・ゲーム」->「全てのスキル」から「node-red」で検索する.
「Node-RED」を有効にする.
ユーザ名とパスワードが聞かれるので,先ほど作成したユーザの情報を入力する.
問題なければ,スキルが有効になるので,左上のバツボタンを押下する.
「端末の検出」ボタンを押下する.
デバイスが検出されるまで待つ.
「My PC」が検出される.
「すべてのデバイス」を確認すると,「My PC」が追加されている.
これで,Amazon Echo Dot と Node-RED Alexa Home Skill Bridge が接続され,声でデバイスのオン・オフを操作できるようになったので,最後にそのオン・オフ操作をトリガーとして,Raspberry Pi上でコマンドを実行できるようにする.
まずは,Raspberry PiにNode-REDをインストールする.
$ sudo apt install nodered
しかし,(Node-REDのバグなのか単にパッケージが古いのか理由はよく知りませんが)2018年11月3日現在のデフォルトバージョンでは,Alexaと連携できる状態にないので,さらにNode-REDをアップデートする.(10分弱かかる)
$ update-nodejs-and-nodered
アップデートが完了したら,Node-REDの自動起動を有効にして,Node-REDを起動する.
$ sudo systemctl enable nodered $ sudo systemctl start nodered
Node-REDを起動したら,別のPCでブラウザを立ち上げ,http://xxx.xxx.xxx.xxx:1880/にアクセスする.(xxx.xxx.xxx.xxxはRaspberry PiのIPアドレス)
問題なく起動できていれば,下のようなページにアクセスできるので,右上の三本線ボタンを押下してメニューを表示する.
「パレットの管理」を選択する.
「ノードを追加」タブを選択して,「alexa-home-skill」と入力.
「no-red-contrib-alexa-home-skill」が表示されたら「ノードを追加」ボタンを押下する.
「追加」ボタンを押下する.
追加が完了すると,左側のメニューに「alexa」ノードが追加される.
ここから,Node-REDにお絵描きをする.最終的な完成図は下図のような感じ.
まずは,「Alexa Home」,「switch」,「exec」ブロックをドラッグ&ドロップする.
次に「switch」ブロックをダブルクリックして設定を呼び出す.
「==」をクリックして,「is true」を選ぶ.条件を追加して,同様に「is false」を選び,「完了」を押下する.
入出力の数が揃うので,それぞれを線で結ぶ.
「Alexa Home」ブロックをダブルクリックして,設定を呼び出す.
鉛筆(?)ボタンを押下して,先ほど作成したユーザーの情報を入力して,追加を押下する.
なぜかそのままでは,Device 情報が追加できないので,一度設定画面を閉じて,再び「Alexa Home」の設定を呼び出すと「My PC」が選択できるようになる.
「Alexa Home」ブロックが「My PC」ブロックに変化する.
「exec」ブロックをダブルクリックして,設定を呼び出して,Raspberry Pi に実行させたい「コマンド」を設定する.
【Wake On LAN】ブロック
【Shutdown】ブロック
【補足】
・systemctl コマンドで Node-RED を自動起動させた場合, Node-RED は pi ユーザで起動されるので,pi ユーザ以外にコマンドを実行させたい場合は,sudo コマンドに u オプションを追加してユーザ名を指定すると,そのユーザとしてコマンドを実行できる.通常,sudo コマンドはパスワードを入力する必要があるが,Raspberry Pi の pi ユーザはデフォルト設定では,sudo コマンドをパスワード無しで実行できる.
・wol.sh 及び sol.sh の中身はそれぞれ以下の通り.
wol.sh
#!/bin/bash wakeonlan -i 192.168.XXX.255 MM:MM:MM:MM:MM:MM exit 0※ i オプションでブロードキャストを指定し,続いて起動したいPCのマックアドレスを指定する.
sol.sh
#!/bin/bash ssh 192.168.100.10 'sudo shutdown -h now' exit 0※ ssh 越しでコマンドを実行させるときは,実行したいコマンドをシングルクオーテーションで囲んで引数に与えると良い.
※ sudo shutdown コマンドをパスワード無しで実行するためには,visudo コマンドで sudo の設定を開き,「ユーザ名 ALL=NOPASSWD:/sbin/shutdown」の一行を追加すると良い.
ここまで設定できたら,右上のデプロイボタンを押下する.これを忘れるとこれまでの設定が全て消えて無くなので注意.
これで全ての設定が完了.動画のように声でデバイスを操作できるようになる.またスマホの Alexa アプリから操作すれば,外出中の遠隔操作も可能になる.
Wake On LANについては以下の記事も参考.
Wake On LAN を使って Optiplex 3020 を起動する.
0 件のコメント:
コメントを投稿