パソコン鳥のブログ

アクセスカウンタ

zoom RSS AmazonEchoからRaspberryPiのコマンドを実行する

<<   作成日時 : 2018/04/16 21:08   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

AmazonEcho から Raspberry Pi のコマンドを実行する方法です。
アレクサ、に続けて「○○オン」や「○○オフ」で、Raspberry Pi 上のコマンドを実行できます。

ここでは設定例として、「テスト オン」や「テスト オフ」で、Raspberry Pi 上の /home/pi/test.sh を実行する方法を説明します。



はじめに制限事項について


コマンドを実行させる際の呼び出しの、「○○オン」「○○オフ」の○○部分は、何でも良いわけでは無いようです。

まず、既存のスキルと競合する名前はできません。スキルの方が起動します。
また、固有名詞もだめなようです。
今回の設定例では「テスト」ですが、当然、この呼び出し名は別のものにしてもOKですが、色々試して、うまく認識する呼び出し名を探す必要があります。



準備


Raspberry Piでの設定


Raspberry Piのユーザ pi (sudo su pi実行)で次のコマンドを実行します。

プリインストールされているNode-REDを更新します。

update-nodejs-and-nodered


Node-RED を開始します。

node-red-start


次のように Started flows が表示されたら、CTRL-Cを押します。


7 Apr 17:59:15 - [info] Server now running at http://127.0.0.1:1880/
7 Apr 17:59:15 - [info] Starting flows
7 Apr 17:59:16 - [info] Started flows


Raspberry Pi起動時に Node-RED が自動実行されるようにします。

sudo systemctl enable nodered.service




Node-REDでの設定


PCから http://xx.xx.xx.xx:1880 (xx.xx.xx.xxはRaspberry PiのIPアドレス)にアクセスします。

次の画面が出ます。

Node-RED登録0



右側の三本線のアイコンをクリックして、パレットの管理を選択します。

Node-RED登録9



「ノードを追加」タブを選択し、[ノードを検索] の個所(赤色の個所)で「node-red-contrib-alexa-home-skill」を入力します。
node-red-contrib-alexa-home-skill がヒットするので「ノードを追加」ボタンを押します。

Node-RED登録10



次の画面 が出た場合は「追加」を押します。

Node-RED登録11



しばらくすると、追加が完了します。「閉じる」を押します。

Node-RED登録12


左側のノードを下にスクロールしていくと、「alexa」が追加されています。

Node-RED登録13



Node-RED Alexa Home Skill Bridge の設定



https://alexa-node-red.bm.hardill.me.uk/ にアクセスします。


「register」を選択します。

Node-RED登録



ユーザ登録画面になるので、必要事項を入力し、「Register」ボタンを押します。

Node-RED登録2


画面の上の方の Logout を押して一旦ログアウトします。



スキル Node-RED のインストール


AmazonAlexaアプリか、ブラウザでhttps://alexa.amazon.co.jpにアクセスし、スキルメニューで「Node-RED」を検索します。

Node-REDが見つかったら有効にします。

Node-RED登録6



有効にすると、Username と Password を聞かれるので、Node-RED登録時の Username,Passwordを入力します。
「Node-RED が正常にリンクされました。」と出て、続けて端末の検出を実施するか聞かれますが、ここではキャンセルを押します。

これで準備は完了です。



設定例


ここでは、Amazon Echo に「テスト オン」「テスト オフ」というと、RaspBerry Pi 上でコマンドを実行する設定を説明します。

デバイスの追加


Amazon Echo への呼出名と、実行する機能を設定します。

https://alexa-node-red.bm.hardill.me.uk/ にログインします。


画面上部の Devicesを選択します。

Node-RED登録3



「Add Device 」をクリックします。

Node-RED登録4



次の画面が出ます。

Node-RED登録5

Nameは、Amazon Echo を呼ぶときの名前です。日本語もOKです。
Descriptionは、メモで、入力内容は機能には関係ありません。
Action の On/Off、%/+%/-% でチェックを入れた機能が動作します。[その他]の ℃/F 等は動作しないようです。
設定画面を下にスクロールすると出てくる Application Type は、設定しても機能に影響ないようです。

参考:【IoT】7.Node-REDの動作をいろいろと調べてみる(ON/OFF、%) - そこらへんのパパの独り言


Name,Description,Action が必須項目です。
ここではサンプルとしてNameに「テスト」、Description に何か適当な内容、Action の On と Offにチェックして OKを押します。


すると、デバイス「テスト」が追加されます。

Node-RED登録7



AmazonAlexaアプリか、PCのブラウザでhttps://alexa.amazon.co.jpにアクセスし、 スマートホーム − デバイス とたどり、[検出] を選択します。

先ほど追加したデバイス「テスト」が表示されます。

Node-RED登録8




Node-RED でフロー作成(音声で反応するかの確認まで)


PCからブラウザで http://xx.xx.xx.xx:1880 (xx.xx.xx.xxはRaspberry PiのIPアドレス)にアクセスします。


左側のノードから「Alexa Home」をフロー(画面中央の領域)にドラッグ&ドロップします。

Node-RED登録14



ドラッグ&ドロップした「Alexa Home」をダブルクリックすると、編集画面が出ます。

Node-RED登録15


Account の個所の編集ボタンをクリックして、Node-RED登録時の Username,Passwordを入力し、「追加」を押します。
既に Account の個所に Username が表示されている場合は、それを選択します。

Device の個所で、先の「デバイスの追加」の手順で追加したデバイスが選択されるので、選択します。
デバイスが表示されていない場合は、一旦「完了」を押して編集終了した後、時間をおいて再度「Alexa Home」をダブルクリックし、今度は表示されているか確認します。表示されていない場合は、何度か繰り返して下さい。

最後に「完了」を押します。

Node-RED登録16



デバイス名「テスト」で表示されています。

Node-RED登録17



左側のノードから「Debug」をフローにドラッグ&ドロップします。
msg.payload が表示されるので、msg.payloadのポート(四角いマーク)から、「テスト」のポートまでマウスでドラッグしてワイヤーでつなげます。

Node-RED登録18


画面の上の方の「デプロイ」を押してデプロイ実行します。

これで作成したフローが機能します。


次に 画面右側にあるデバッグタブを選択します。

これで、Amazon Echoに「テストオン」や「テストつけて」と言うと、「はい」と反応します。
その際、デバッグタブにメッセージが表示されます。

trueが表示されている個所は、「〜オン」「〜つけて」の場合はtrue、「〜オフ」「〜けして」の場合はfalseが表示されます。


Node-RED登録19



Node-RED でフロー作成(Raspberry Pi でのコマンド実行)


先ほどまでの手順で、指定した名称で Amazon Echo を呼ぶと反応する所まで確認できました。
ここでは、その際に Raspberry Pi でコマンドを実行する設定を説明します。

ノードの「その他」から「exec」をフローにドラッグ&ドロップします。

追加されたノードのポート(四角いマーク)から、「テスト」のポートまでマウスでドラッグしてワイヤーでつなげます。

Node-RED登録20



「exec」で追加されたノードをダブルクリックし、編集画面の [コマンド] で sh /home/pi/test.sh と入力します。
ここで指定するコマンドが、Amazon Echo を呼んだ時に実行されます。
(/home/pi/test.sh は後で作成します)
最後に完了を押します。

Node-RED登録24



次のようになるので、画面の上の方の「デプロイ」を押してデプロイ実行します。

Node-RED登録25


これでフローは作成できました。

次に、Raspberry Pi で /home/pi/test.sh を作成します。
内容は次のようにします。
「〜オン(〜つけて)」「〜オフ(〜けして)」と言われた場合の区別は、引数が true か false かで区別できます。

/home/pi/test.sh

if [ $1 = "true" ]
then
    echo "ON" >> /tmp/test.txt
elif [ $1 = "false" ]
then
    echo "OFF" >> /tmp/test.txt
fi



ここまで出来たら、Amazon Echoに「テストオン」や「テストつけて」と言うと、「はい」と反応します。
また、Raspberry Pi 上で /home/pi/test.sh が実行されます。
/tmp/test.txt に「テスト オン」で ON が出力され、「テスト オフ」で OFF が出力されていますので、確認してみましょう。



参考


【IoT】7.Node-REDの動作をいろいろと調べてみる(ON/OFF、%) - そこらへんのパパの独り言
Node-RED Alexa Home Skill Bridge
Node-REDを用いてRaspberry PiとAmazon Alexaを連携させる方法 - ガジェット考察
とうとうAlexaが家電をコントロール。Raspberry PiでBroadlink RM mini 3がちゃんと使えた。 | 徒労日記
「アレクサ、LEDつけて」でRaspberry PiからLEDを点灯する – oh-maker
Amazon Echoとラズパイで、音声で照明をon/offする - Qiita

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
AmazonEchoからRaspberryPiのコマンドを実行する パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる