【アプリ版】 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を叩く
- プログラムが実行されてLEDが点滅する
用意するもの
- obniz Board
- Alexa搭載のスマートスピーカー(Amazon Echo)
- 電源(モバイルバッテリーなど)
- LED
- (抵抗なしLEDの場合は、抵抗・ブレッドボード・ジャンパも準備)
組み立て方
下の表や図のようにobnizにLEDと抵抗を配線します。(抵抗入りLEDの場合は抵抗を挟まずobnizにそのまま挿してください。) 一般的なLEDの場合は大抵220〜330Ωの抵抗を挟めば大丈夫だと思いますが、不安な場合は各LEDのデータシートを参考にしてください。 また、このときLEDの向きに注意してください。足が長い方(アノード)がobnizの0番ピンに近くなります。
obniz | LED |
---|---|
0 | アノード(長い方) |
1 | カソード(短い方) |
プログラム
obniz Boardを登録しよう
obnizの開発者コンソールに移動し、「デバイス」 → 「デバイスを追加」をクリックします。 ダイアログが開いたら、「obniz公式デバイスを使う」をクリックします。 あとは画面の指示にしたがって登録してください。
▼
アプリを作ろう
プログラムを動かすアプリを作ります。作ったアプリは配布可能で、各デバイスにインストールして実行することができます。(詳しくはアプリ – obniz Docs をご覧ください)
アプリを自分で作らずにまず実行してみたい方は、すでに作成済の以下のアプリをインストールして動かしてみましょう。
→ Alexaとの連携 (Lチカ)
インストール方法は、アプリのインストール – obniz Docs や次節の アプリをデバイスにインストールする をご覧ください。
obnizのコンソールに移動し、「アプリ開発」→「新規作成」を押します。
「obniz Board/1Yを使うテンプレート」からEmptyを選び、出てきたウィンドウにアプリ名を入力します。そして、「アプリを作成」を押しましょう。
アプリ設定を編集します。今回作るシステムは、Alexaに特定のフレーズを話しかけたら、IFTTTを通してWebhookが叩かれてプログラムが実行されるため、「Webhookで実行」のところにチェックをつけましょう。
設定を更新したら、上の「プログラムを編集」からプログラム編集画面に入ります。プログラム編集画面に入ったら、下の 完成したプログラム の章にある Alexaとの連携 (Lチカ) のリンク先のプログラムを貼り付けて保存しましょう。保存できたらアプリは完成です。
アプリをデバイスにインストールする
作成したアプリをデバイスにインストールします。コンソールのアプリ開発の画面に移動し、「インストール」を押します。
すると、インストールするデバイスを選択する画面に移動します。プログラムを動かしたいobniz Boardを選択し、インストールを押してください。
その後表示されるデバイス一覧の画面で、「アプリを開く」の横の三角をクリックし、「Webhook URLの確認」を押します。
デバイスの設定画面が表示されます。「クラウド実行 起動きっかけ」の項目にある、「Webhook URL」と控えておきます。後ほどIFTTTとの連携の際に使います。
IFTTTでAlexaと連携する
Alexaに「アレクサ、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との連携 (Lチカ) のプログラムをご覧ください。
応用編
前の章では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の連携」を参考にしてください。