oh-maker

育児、ときどきテクノロジー

Raspberry Piスマートスピーカー

「アレクサ、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を制御できました。
あとはアイデア次第でいろんなことができそうです。

「アレクサ、LEDつけて」でRaspberry PiからLEDを点灯する」への4件のフィードバック

  • こちらを参考にやって上手くいきました!ありがとうございました。
    特にbool to intはこちらを見なければわからなかったです。
    あと、ブログへのリンクをTwitterに貼ってもよろしいでしょうか?

    返信
    • コメントありがとうございます。
      お役に立てて何よりです。

      >あと、ブログへのリンクをTwitterに貼ってもよろしいでしょうか?
      もちろんOKです!

      返信
  • こんにちは。
    最近、手持ちのKindle FireのAlexa がバージョンアップしたので、試しに、こちらのサイトを参考に、Lチカしてみましたら、「アレクサ!ラズパイをつけて」「・・・けして」まで、動作しました。

    後は、エアコン関係やテレビや照明なども、このKindle Fire+ラズパイからコントロールしようと思っています。

    懇切丁寧な記事に、感謝します。

    返信
  • ピンバック: 発話でラジコン! ー Alexa + Node-RED + micro:bit ー - IoT - HomeMadeGarbage

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です