「アレクサ、LEDつけて」でRaspberry PiからLEDを点灯する
AlexaからRaspberry Pi(以下ラズパイ)を音声で操作できるようにしてみます。
「アレクサ、LEDつけて」で、LEDを点灯をさせてみましょう!
実装方法はいろいろあるかと思いますが、今回はお手軽なNode-REDを活用します。
ラズパイにNode-REDを導入する話はこちら
そして、Alexaとの連携には”Node-RED Alexa Home Skill Bridge”というモジュールを使います。
Node-RED Alexa Home Skill Bridge
https://alexa-node-red.bm.hardill.me.uk/
構成
構成はざっくりこんな感じかと思います。
“Alexa Home Skill Bridge”では、Node-REDのノードの他に、Alexaのスマートホームスキルやアカウント認証、MQTTで送信する機能まで提供されており、これらを導入するだけで簡単にAlexaとNode-REDを連携できます。
以下、手順です。
1. Alexa Home Skill Bridgeのアカウント作成
まず、何はともあれAlexa Home Skill Bridgeのアカウントを作成します。
このアカウントでAlexaスキルとNode-REDノードを紐付けます。
こちらからアカウント名やメールアドレスを入力し、”register”を押せば登録完了です。
2. 制御対象となるデバイスを登録
つづいて、Alexa Home Skill Bridgeにデバイスを登録します。
画面上の”Devices”タブを選択し、”Add Device”を押します。
デバイスの情報を入力する画面が出るので、最低限以下を入力しましょう。
- Name : Alexaから呼ぶとき際のデフォルトの名前になります。あとでAlexaアプリのほうで変えられるので、適当に決めましょう。ちないみに日本語でも大丈夫でした。
- Description : デバイスの説明文です。何のデバイスかわかるようにメモを残しておきましょう。
- Actions : 使う機能にチェックを入れます。オンオフ、%指定、色などAlexaのスマートホームスキルで設定できるパラメータがならんでいます。今回はLEDのオンオフができればいいので、”On:”と”Off:”にチェックをしました。
- Application Type : デバイスの種類を選ぶようですが、特に指定しなくても大丈夫でした。
OKを押せば登録完了です。
Alexa Home Skill BridgeのWebページ上での設定は以上になります。
3. Node-REDのAlexaスキルの有効化
スマートフォンのAlexaアプリから、”Node-RED”スキルを有効化します。
アカウント登録を求められるので、先程のAlexa Home Skill BridgeのIDとパスワードを入力しましょう。
続けてデバイスの検出が始まり、登録済みのデバイス(例だと”ラズパイ”)が見つかります。
この時点で、スマートホームスキルから操作ができるようになります。
(表示はありますが、まだ実態は何も無いので操作しようとしてもエラーになります)
もし呼び名を変えたい場合は、Alexaアプリから自由に変更することができます。
また、スマートホームスキルなので、”定形アクション”と組み合わせて、様々な呼び方に対応することも可能です。
定形アクションについてはこちらが参考になるかと思います。
Amazon EchoとeRemoteで好きな言葉で家電を操作する方法
4. Node-REDにAlexa Home Skill Bridgeノードを追加
最後に、ラズパイのNode-REDにノードを追加します。
ラズパイで以下を実行して、Alexa Home Skill Bridgeノードをインストールします。
cd ~/.node-red
npm install node-red-contrib-alexa-home-skill
Alexaノードの出力は、以下のようになっています。
入力 | msg.message | msg.payload |
---|---|---|
ON | TurnOnRequest | true |
OFF | TurnOffRequest | false |
https://alexa-node-red.bm.hardill.me.uk/docs
あとは、フローにこのAlexaノードと、出力先のラズパイのGPIOを接続すればOKです。
Alexaノードを配置し、Alexa Home Skill Bridgeのアカウントを入力します。
これをラズパイのGPIO出力に接続します。
今回は”change”ノードで、Alexaの出力を”0″,”1″に変換しています。
(ture/falseのままでは動かない?)
Node-REDでLEDを動かす基本的なところについてはこちら
LEDと接続して動作させてみる
ラズパイとLEDとの接続はこんな感じで7番ピン(GPIO4)に繋いでます。
これでAlexaスキルからラズパイのLEDまでを繋ぐことができました。
Alexaに向かって「アレクサ、ラズパイをつけて」でLEDが点灯します。
また、「アレクサ、ラズパイをけして」で消灯します。
呼び名が”ラズパイ”だと気分が乗らないので、Alexaアプリのスマートホーム画面で、ラズパイを”LED”に変更しておくといいでしょう。
さらに、スマートホームスキルなので、定形アクションで好きな言葉で実行することもできます!
ちなみに、Lチカするには、、、「アレクサ、LEDつけて」「アレクサ、LEDけして」を繰り返して下さい(笑)
(シェルスクリプトを叩けるノードもあるので、また時間をつくって試してみたいと思います。)
おわりに
Node-REDと、Alexa Home Skill Bridgeを使うことで、コードを全く書かずに音声でLEDを制御できました。
あとはアイデア次第でいろんなことができそうです。
こちらを参考にやって上手くいきました!ありがとうございました。
特にbool to intはこちらを見なければわからなかったです。
あと、ブログへのリンクをTwitterに貼ってもよろしいでしょうか?
コメントありがとうございます。
お役に立てて何よりです。
>あと、ブログへのリンクをTwitterに貼ってもよろしいでしょうか?
もちろんOKです!
こんにちは。
最近、手持ちのKindle FireのAlexa がバージョンアップしたので、試しに、こちらのサイトを参考に、Lチカしてみましたら、「アレクサ!ラズパイをつけて」「・・・けして」まで、動作しました。
後は、エアコン関係やテレビや照明なども、このKindle Fire+ラズパイからコントロールしようと思っています。
懇切丁寧な記事に、感謝します。
ピンバック: 発話でラジコン! ー Alexa + Node-RED + micro:bit ー - IoT - HomeMadeGarbage