obnizとAlexaの連携 -IFTTTを使ってLEDを点滅-
コンテンツ
今回やること
obnizを使うと簡単にスマートスピーカーからLEDを光らせたりものを動かせたりできます。Amazon Echoなどに搭載されているAlexaと連携させてみました。
Alexaの機能拡張にはSkillの開発という方法もありますが、今回はSkillを作るよりも手軽に機能拡張できるよう、IFTTTを使います。IFTTTとは、様々なWebサービスやデバイス同士の連携が簡単にできるWebサービスのことです。
Alexaに話しかけてLEDを点滅させる
Alexaに話しかけるとLEDが点滅する仕組みを実装します。 概要は以下の通りです。
- Alexaに「アレクサ、LEDを点滅させて(をトリガー)」と話しかける
- IFTTTがそれをトリガーとしてobnizのイベントのWebhook URLを叩く
- obnizのイベントに登録されているプログラムが実行されてLEDが点滅する
用意するもの
- obniz Board
- Alexa搭載のスマートスピーカー(Amazon Echo)
- 電源(モバイルバッテリーなど)
- LED
- (抵抗なしLEDの場合は、抵抗・ブレッドボード・ジャンパも準備)
組み立て方
下の表や図のようにobnizにLEDと抵抗を配線します。(抵抗入りLEDの場合は抵抗を挟まずobnizにそのまま挿してください。) 一般的なLEDの場合は大抵220〜330Ωの抵抗を挟めば大丈夫だと思いますが、不安な場合は各LEDのデータシートを参考にしてください。
また、このときLEDの向きに注意してください。足が長い方(アノード)がobnizの0番ピンに近くなります。
obniz | LED |
---|---|
0 | アノード(長い方) |
1 | カソード(短い方) |
プログラム
この後設定するobnizのイベントがWebhook URLを叩いたらLEDが点滅するようにプログラムを書きます。
完成したプログラムを参考にしてください。
プログラムの以下の部分で、obnizの0番をLEDのアノード側、1番をカソード側用に割り当てています。
let led = obniz.wired("LED", {anode:0, cathode:1});
また、if(typeof req === "object")
〜のif文の中で、WebhookによってPOSTされたjsonの内容に応じてLEDを光らせます。このプログラムでは、json内の”led“というキーの値が”true“だったら、LEDを300ミリ秒間隔で3秒間点滅させています。
LEDはobnizのJSパーツライブラリに登録されているので、簡単に制御できるようになっています。
→ LED (JSパーツライブラリ) | obniz
イベントを設定する
obnizのイベントを設定して、この後作るレシピからWebhook URLが叩かれたら先ほど書いたプログラムが実行されるようにします。 obnizのイベントについて詳しくはこちらをご覧ください。
まずobnizの公式サイトにアクセスし、”開発者コンソール” に入ります。
その次に、”イベント” の欄から新規作成をクリックし、イベントを作成します。
設定内容は以下を参照してください。
名前 | (任意) |
---|---|
実行するWebapp | リポジトリに保存したプログラム名を選択 |
きっかけ | Webhook |
“作成” をクリックして、設定完了です。
最後に、このような画面になるので、 “Endpoint” の欄に書かれているURLを控えておいてください。このURLは次の「IFTTTでレシピを作る」の章で使います。
IFTTTでレシピを作る
レクサ、LEDを点滅させて(をトリガー)」と話しかけたらプログラムを実行するようにするために、IFTTT というサービスを用います。IFTTTとは、任意のWebサービス(アプリ)をきっかけに、任意のWebサービス(アプリ)を実行させるサービスです。
トップ画面の右上にあるCreateをクリックして、早速作っていきましょう。以下の画面に遷移するので、This をクリックしてServiceの中から Amazon Alexa を選択します。
(トリガーにAlexaを初めて使う方は、ここでお手持ちのAlexaと紐付けされているAmazonアカウントのログインをする必要があります。)
Alexaに話しかけて反応するワードを入力する画面が出てくるので、 “ledを点滅させて” と入力します。(半角英字の大文字は使えませんでした。)
Create triggerをクリックして、設定を保存します。
次に、That の部分を編集します。That をクリックして、Serviceの中から Webhook を選択します。
Make a web request を選択します。
URLのところに、先ほど控えたWebhook URLを入力し、以下の設定で作成してください。
Create action をクリックすると、最終確認の画面に遷移するので、Finish をクリックして作成を終えてください。 これで準備完了です。
動かす
Alexaに「アレクサ、LEDを点滅させてをトリガー」と話しかけてみましょう。うまくいけば、下の動画のようにLEDが3秒間点滅します。
(IFTTTは最大15分の遅延の可能性があるため、すぐに反応しないことがあるかもしれません。)
完成したプログラム
応用編
前の章ではAlexaに話しかけることによってLEDを点滅させましたが、これを様々なものに応用させることができます。
スイッチをON / OFFさせる
例えば、LEDの部分をサーボモーターに変更すると、Alexaに話しかけるだけで照明やコンセントのスイッチをON / OFF させることができます。
スマート家電でなくても、アレクサに話しかけるだけで(物理的に)簡単にスイッチをON / OFFできるので、手が空いていないときや他の部屋にあるスイッチを操作するときに便利ですね。
試しにコンセントのON / OFFのスイッチでやってみました。(下の動画参照)
このようにアレクサに話しかけるだけで物理スイッチを簡単に操作できます。
Alexaのタイマー機能をアゲアゲ⤴︎⤴︎にする
IFTTTのAlexaのトリガーに “Your Timer goes off” というのがあったので、IFTTTのトリガーとプログラムを少し変更して、アレクサのタイマーが鳴ったときにリングLEDをカラフルに光らせて、タイマーをアゲアゲにしてみました。
おわりに
このように、IFTTTを使ってobnizとAlexaを簡単に連携できます。
ただし、IFTTTの場合はアクション側にAlexaがないため、obnizからのセンサ値によってアレクサを喋らせることはできません。
AlexaのSkillを作ることによって、より柔軟な機能拡張ができます。
「Skillを使ったobnizとAlexaの連携」を参考にしてください。