声で部屋の電気のON/OFFをしたい(後編:音声認識しちゃうよ)
↑のつづきでーす!
やまびこ(Echo)が来た!
さて今回は用意するモノに一つ追加です。
・スマートスピーカーAmazon Echo
ようやく来ましたねw
ちなみに、これまた中古で安物を買ってきたので、第一世代のEcho Plusというやつをお迎えいたしました。
こんなん。Echo史上一番のっぽなヤツです。音は良いらしいけれど地震には弱そうw
机の上におくとけっこう邪魔かも?w
なお、Echo PlusはZigBeeという無線規格に対応しているので、そちらを使った電子工作なんかもできるかも? とちょっと期待しているのですが、ZigBee関係は情報が少なくてまだ手を出してません~。なので、今回書く内容はPlusでないほかのEchoシリーズでも使えるはずです。たぶん。
では、このEchoさんをセットアップして、つづけていきましょう。
Node-REDを知ってるかい?
Node-REDというのは、このアイコンにあるようなツリー構造をマウスでぐりぐりすることでプログラムを作れちゃう素敵な奴です(詳しくはぐぐりましょう)いちおう公式(?)のユーザ会のサイトのRaspberryPiで実行するというページを張っておきます。
で、何がすごいってこのNode-REDさん、最初からRasbianOSにプリインストールされているんですよ!
なので、普通はインストールは不要です。
単に
$ update-nodejs-and-nodered
としてやるだけで最新版に更新できます。
更新後
$ node-red-start
とすれば実行開始です。
今回は電源を入れたら自動的にスタートしておいてほしいので、
$ sudo systemctl enable nodered.service
とやってRaspberryPi起動時に自動的にサービスとして起動するようにしておきましょう。
参考サイト
↑詳しくはこちらに書かれています。この通り進めればきっとOKです。
※より良い方法が現在はあるようです。下のほうに改訂版のリンクをいれてありますので今から行う方はそちらを参考にしてください。
Node-REDプログラミング:接触編
パソコンのブラウザから http://xx.xx.xx.xx:1880 (xx.xx.xx.xxはRaspberry PiのIPアドレス)にアクセスします。
※RaspberryPiのIPアドレスを固定する方法などはやっぱりググってね☆
すると、ブラウザに
こんなふうに表示されるはずです。
この左側にある長細いブロック(ノード)を中央の「フロー」というところにもってきて、線でつなげばあら不思議、自由にプログラムできちゃうという、いわゆるビジュアルプログラミングってやつですね。
面白いのは
こんな、メールとかツイッターに入出力できるノードコマンドが最初から入っていることです。(これでTwitterBot作れたかも?w)
さらに、さすがプリインストールだけあって
こんなコマンドも用意されています。gpioというのはRaspberryPiについているとげとげのピン。そこにセンサーを付けたりIoT的にいろいろできるのです。(今回はもう赤外線リモコンボードが刺さっていてふさがっているので使いません)
さて、Node-REDが無事立ち上がっていることを確認したら、ブラウザの右上の[三]のような記号をクリックしてパレットの管理を選びます
「ノードを追加」タブを選択し、[ノードを検索] の個所(赤色の個所)で「node-red-contrib-alexa-home-skill」と入力します。
ヒットしたnode-red-contrib-alexa-home-skill が選ばれている状態で「ノードを追加」ボタンを押して追加します。
ノードが追加されると、
左側のコマンドリストにalexa homeが登場しています。(∩´∀`)∩☆
※今回はアレクサスキルを利用する方法を使っていますが、微妙に不安定で命令を無視しやがることもあります(アレクサさん…><)
参考サイトのリンクをよく見ると、アレクサスキルを使わない方法も解説してくれているので、そちらを見た方がいいかもしれません。
参考サイト改訂版【重要】
↑改訂版。こちらは
本記事での方法は、
・Alexaスキルの導入は不要
・外部のサーバーへのアクセスは不要
となり、自宅内の RaspberryPi への設定だけで完結します。
とのことなので、今からやる方はこっちを使った方が良いと思います。
Node-RED Alexa Home Skill Bridge の設定
Node-REDのアレクサホームスキルへの橋渡しの機能の設定、なのですが、↑の改訂版の方法を使うとこのブリッジ機能は使わないで良いようです。なので解説は省略!(詳しくは最初の参考リンクを参照してください。ほぼそのままです(手抜きw))
スキル Node-RED のインストール
AmazonAlexaアプリか、ブラウザでhttps://alexa.amazon.co.jpにアクセスし、スキルメニューで「Node-RED」を検索して有効にします。
※こちらも改訂版の方法では不要とのことです。省略ッ!
Node-REDプログラミング:発動編
これはもうとても簡単です。
コマンドリストから [alexa home]を取り出し、
フローエリアに持っていきます。
※改訂版の方法だとここは「amazon echo hub」「amazon echo device」になります。
引っ張り出した[Alexa Home](なんでこっちは大文字なんでしょうね)をクリックして、設定されたブリッジの情報などを入れ、認識させます。
今回は部屋の電気のON/OFF制御なので、「へやでん」という名前のコマンドにしました。
↑の灰色のコマンドが元の[Alexa Home]です。
緑色のmsg payloadはデバッグ用のもの。音声命令が認識できたかどうかをここで調べることができます。
ためしにEchoさんに音声で命令してみます。
Node-REDスキルブリッジで「へやでん」を「でんき」として登録しておきます。(スイッチ制御なのでON/OFFの boolean形式にしておきます)
これで、Amazon Echoに「でんき オン」や「でんき つけて」と命令すると、「はい」と反応するはずです。
Node-REDの〔デプロイ〕ボタンを押して作ったプログラムを動作状態にしてからEchoさんに話しかけてみてください。
その際、デバッグタブにメッセージが表示されるので見てみましょう。
こんなかんじになります。(∩´∀`)∩☆
trueが表示されている個所は、「~オン」「~つけて」の場合はtrue、「~オフ」「~けして」の場合はfalseが表示されます。
この true や false 結果を判定して、それぞれ違うコマンドを発行するのが通常のパターンなのですが、ウチのシーリングライトの場合どちらも同じコマンドなので、簡単にコマンド一つにしてしまいました。
それが、前回作成した
〈lighton.sh〉
ですね。
これをフルパスで指定して実行させます。
こちら、execコマンドをフローエリアに持って行って、
コマンドの部分に
sh /home/pi/work/ADRSZIRS_IR_Sender/lighton.sh
と入力します。
これで、 /home/pi/work/ADRSZIRS_IR_Sender/ にある 〈lighton.sh〉スクリプトが実行されるはずです。
いざ実行!
「アレクサ でんき、オン!」
「はい」
ピカ―!☆
とは行かず、電気さん消えて部屋が暗くなりました(笑)
いえいえ、失敗ではないです。さっきまで電気ついていましたんで、同じコマンドで消えてしまったのです。
もう一度、
「アレクサ でんき、オン!」
で、今度こそ
ピカ―!☆
来た来たキタ━━━━(゚∀゚)━━━━!!☆
もっかいオン! というとちゃんと消灯しますw
「でんき」の後ろはオンだろうがオフだろうが、消してでも点けてでもなんでもよくて、とにかく電気が付いていたら消えて、消えていたら点くようになりましたw
電子工作的には光センサーとかをつけて、実際に照明が付いているかどうかの判定をしても良いのですが、とりあえず目的が達成できたので今回はこれで良しとします。
やったね!╭( ・ㅂ・)و ̑̑
―――
今回はとっても「パソコン鳥のブログ」さんにお世話になりました。貴重で分かりやすい情報ありがとうございます☆
よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,