Amazon Echo でラズパイのコマンドを実行
声で部屋の電気のON/OFFをしたい(後編:音声認識しちゃうよ)
AmazonEchoからRaspberryPiのコマンドを実行する(node-red-contrib-amazon-echo)
を参考に
ubuntu のブラウザ
今回は firefox で
http://raspberrypi.local:1880/admin/
へアクセス
すでにログインしているなら数日間は
自動ログインできる
ハンバーガーメニューから
パレットの管理をクリック
ノードを追加 をクリック
node-red-contrib-amazon-echo
で検索
node-red-contrib-amazon-echo
の
ノードを追加をクリック
追加をクリック
しばらくすると追加されるので
閉じるをクリック
これで入力欄に
amazon echo hub
amazon echo device
が追加される
amazon echo hub をドラッグ&ドロップ
ダブルクリックし
編集画面をだす
Port を 8111 にして
完了をクリック
次に
Amazon Echo Device をドラッグ&ドロップし
灰色の○をクリックして
Amazon Echo Hub とワイヤーをつなげる
Amazon Echo Device をダブルクリックし
設定画面で
Name に任意の名前を入力
今回は テスト として完了をクリック
これでデブロイをクリック
次に
https://alexa.amazon.co.jp/
へアクセスし
スマートホーム > デバイス > 検出
としたが
なぜか追加されない
とりあえず後にして
Node-RED のフローを作成
http://raspberrypi.local:1880/admin/
へアクセス
debug をドラッグ&ドロップすると
msg.payload となるので
これを
テスト
とワイヤーでつなぐ
なお
つなげるところを間違えたら
ワイヤーをクリックし
delete キーで消すことができる
今回はテストと
Amazon Echo Hub をつなげるときに
ワイヤーを間違えて設定したので
これを修正した
つなげることができたら
デブロイをクリック
次に
msg.payload をクリックし
デバッグアイコンをクリック
しかし反応がないため
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8111
で設定
iptables コマンドについては
iptables – システム管理コマンドの説明 – Linux コマンド集 一覧表
を参考に
ーI オプションでルール追加
–dport は送信先ポート設定
今回は80ポートを送信先にしている
-j で行動の設定
ACCEPTなのでパケットを通している
-A はルールの追加
PREROUTING は
送信先IPをマシン自身のIPへ変換
sudo apt-get install iptables-persistent
でインストール
現在のIpv4ルールを保存しますか?
現在のIpv6ルールを保存しますか?
となるので
はい
を選択
これで
sudo reboot
で再起動後
再度
デバイスを検出すると
Royal Philips Electronics スマートデバイス
として認識された
これで
Amazon Echo に
アレクサ テスト オン
アレクサ テスト つけて
と言っても動作しない
Android の Alexa アプリで見ると
照明として認識されているので
アレクサ 照明 オン
アレクサ 照明 オフ
とすると反応した
これで反応するようにはなったので
次に
Node-RED でのラズパイコマンドを実行
機能のところにある
exec をドラッグ&ドロップ
テストから
exec までをワイヤーでつなぐ
execをダブルクリックし
コマンドに
sh /home/pi/test.sh
として
完了をクリック
デブロイをクリック
次にラズパイで
vim test.sh
でファイルを作成し
if [ $1 = "on" ] then echo "ON" >> /tmp/test.txt elif [ $1 = "off" ] then echo "OFF" >> /tmp/test.txt fi
として保存
これで
アレクサ 照明 つけて
とすると
/tmp/test.txt
に
ON
と書き込まれる
確認したいのなら
cat /tmp/test.txt
とすればファイルの中身を見ることができる
なお
Alexa アプリで
文字化けしていたデバイス名を
テスト
と変更すれば
アレクサ テスト つけて
でも反応するようになった