こんにちは。DevRelライターのわみです。愛知県でネットワークの勉強をしている学生です。2年ほど前から電子工作を始め、FRISKサイズのIoT向けデバイス「Nefry」というものも自作しています。
今回は、Webサービス同士を簡単に連携できる「IFTTT(イフト)」を使い、自作IoTデバイス「Nefry」と繋ぎます。本記事では、「もしNefryがイベントを作ったら、スマートフォンに通知する」と、「もしNefryがイベントを作ったら、Twitterに投稿する」方法を紹介します。
IFTTTの使い方も紹介しているので、使ったことない方もぜひ触ってみてください。
目次
今回使うもの
Nefry(ネフリー)
Milkcocoaやmythings、IFTTTなどのインターネットのサービスとハードウェアを簡単に接続できるモジュールです。インターネットに接続しやすいので、接続に時間をとられることなくアイデアづくりに集中できます。スマートフォンで使うようなモバイルバッテリーで動きます。
IFTTT(イフト)
IFTTTは(イフト)TwitterやFacebook、SlackなどのWebサービス同士を組み合わせて簡単に連携できるサービスです。IFTTTに登録してあるサービスは、2016年5月11日現在なんと305個! SNSやブログサービスだけではなく、ニュースや写真、フィットネス、音楽といったさまざまなジャンルのWebサービスに対応しています。
IFTTT「If This Then That(もしこれなら、あれをする)」の略です。「これをしたら」は「トリガー」、「あれをする」という結果は「アクション」と呼ばれ、この流れを「レシピ」と呼びます。
「If This Then That(もしこれなら、あれをする)」を設定するだけで作れます。
- もしツイートをしたらGoogle Driveにツイートを保存する
- もしGmailでメールにスターをつけたらEvernoteに保存する
- もし会社に着いたら携帯をミュートする
こういったものも簡単につくれちゃうのがIFTTTです。よく使われるレシピは公式サイトで公開されており、使うこともできます。
ということで、NefryとIFTTTで実際に動かせるものを作ってみようと思います。IFTTTの入門になるように写真を使いつつなるべく順を追って解説していきます。
準備編
IFTTTの登録をしよう
まずはIFTTTに登録をしましょう。IFTTTの公式サイトを開いてみると、右上にSign upという水色のボタンがあります。そこをクリックすると登録ページに移動します。
このページでメールアドレスと6文字以上のパスワードを入力します。入力が終わったらCreate accountという水色のボタンをクリック!
これからIFTTTがどんなものなのか体験するチュートリアルが始まります。まずは水色のthisをクリック!
「明日の天気が雨だったら」というトリガーが表示されました。アクションを選ぶためにthatをクリック!
「メールを送る」というアクションが表示されました。「もし明日の天気が雨なら、メールを自分に送る」というレシピが作られました。IFTTTではこのようにしてレシピができるんですね。
IFTTTが簡単に分かったところでContinueをクリックして次に進み、3つよく使うチャンネルを選びます。特に気にすることなく選んでもらって大丈夫です。3つ選んだらContinueをクリックし、完了です!
また、IFTTTにはスマートフォンアプリもあります。プッシュ通知、位置情報を使えるようになるので、インストールしておくと良いです。
- スマートフォンアプリDLリンク
-
Androidはこちら(Google Play Store)
https://play.google.com/store/apps/details?id=com.ifttt.iftttiPhoneはこちら(iTunes App Store)
https://itunes.apple.com/us/app/ifttt/id660944635
IFTTTへの登録が終わったらMakerチャンネルに登録しておこう
今回、 IFTTTとNefryを組み合わせるために、Makerチャンネルというものに登録します。ArduinoやRaspberry Piなどの自作デバイスをIFTTTに繋げられるチャンネルです。Nefryもこのチャンネルを使いIFTTTとつなげます!
右上にあるChannelsをクリックします。
ここですべてのチャンネルを見られます。なにがトリガーになるか、どのようなアクションができるかもここで調べられます。Search ChannelsにMakerと検索します。
Maker チャンネルを開いたら、Connectという青色のボタンをクリック!
ConnectをするとSecret Keyというものが発行されます。このSecret KeyはIFTTTへトリガーを送るときのあなたのIDの識別番号となっており、のちにNefryで入力をするため覚えておいてください。
Maker チャンネルはトリガーがひとつしかないのでReceive a web requestをクリック!
するとEvent Nameの入力欄が出るので、Nefryで入力したNefry Triggerをここに入力します。入力が終わったらCreate Triggerをクリック! これでOKです!
Nefryの設定をしよう
Nefryの設定はスマートフォンやPCからできます。まずはNefryをモバイルバッテリーなどの電源につなぎ、水色のLEDが点灯するまで待ちましょう。
水色のLEDが点灯するとNefry-○○○○というWi-Fiが増えていると思います。そのWi-Fiに接続してください。
Wi-Fiに接続したのちIEやChromeなどのブラウザを起動し、http://192.168.4.1と入力するとメニューが開きます。まずはWi-Fiの設定をするのでSetup WiFiをクリックします。
スマートフォンから設定している方で上手くいかないときは、一度機内モードにしつつWi-Fiのみを有効にしてもう一度チャレンジすると上手くいくと思います。
NefryにWi-Fiの設定をします。SSIDは入力欄をクリックすると、検出されたWi-Fiを選べます。Passがある場合はそちらも入力して、Saveをクリックします。Saveを押すと再起動するのでしばらく待ちましょう。
Wi-Fiの設定が終わり、再起動したあともう一度http://192.168.4.1に接続します。IP Addressが0.0.0.0の場合はWi-Fiに接続失敗しているので、Wi-Fiの設定をもう一度確認してください。そのほかの場合はそのまま設定を進めてください。
最後にモジュールの設定します。メニューにあるSetup Moduleを開き、IFTTTで取得したSecret Keyを入力します。
Nefry Triggerには「Nefry」と入力します。入力が終わったらSaveをクリックします。これでNefryの設定は完了です! ということで、実際にIFTTTとNefryを繋いでみましょう。
実践編1:もしNefryがイベントを作ったら、スマートフォンに通知する
さて、IFTTTの登録とNefryの設定が終わったら、早速これらをつなげてみます。必要なものはこちら。
- Nefry
- IFTTT
- IFTTTのスマートフォンアプリ
今回作るのは、「もしNefryがイベントを作ったら、スマートフォンに通知する」というレシピです。
1. トリガーを選ぶ
まずはIFTTTのサイトの上部にあるMy Recipesをクリックします。My Recipesページ中央にある水色のCreate a Recipeボタンから実際のレシピを作っていきます。
なにをトリガーにするのか選びます。thisをクリック!
チャンネルを選択します。検索することができるのでmakerと検索すると簡単に見つけられます。MのマークがMakerチャンネルです。
2. アクションを選択する
次にアクションを選びます。thatをクリック!
今回はスマートフォンに通知ができるIF Notificationというチャンネルを使います。IFと検索すると選択肢が減るのでそこからIF Notificationを選んでクリック!
IF Notification チャンネルにはSend a notificationというアクションがありますので、こちらをクリックします。
ここでどのような通知を送りたいか好きに入力することが可能です。入力が終わったらCreate Actionをクリックしてアクションの完成です!
最後にこのような組み合わせをつくりますがよいですかと画面が表示されここでCreate Recipeをクリックすることでレシピの完成です! お疲れ様でした!
今回作成したレシピは下記をクリックすれば簡単に追加できます。
レシピの変更方法
このページでは作ったレシピを後から変更できます。
Turn off | このレシピを無効にします。 |
---|---|
Publish | このレシピを公開します。 |
Check now | このレシピのトリガーを今すぐ実行します。 |
Log | このレシピの動作の履歴がみれます。 |
Delete | このレシピを削除します。 |
3. Nefryのプログラムを作る
ArduinoIDEに以下のプログラムを書いたファイルを作り、それをNefryに入れます。NefryについているSWを押すとIFTTTの方にトリガーがいくようになっています。SWの部分をほかのセンサーに変えることでIFTTTに連絡できるようになります!
#include <Nefry.h>
String Event, SecretKey;
bool IFTTT_send(String,String,String data="");
void setup() {
Nefry.setConfHtml("SecretKey",0);
Nefry.setConfHtml("Event",1);
SecretKey = Nefry.getConfStr(0);
Event = Nefry.getConfStr(1);
}
void loop() {
if (Nefry.push_SW()) {//SWを押した時
if (!IFTTT_send(Event, SecretKey)) {
Nefry.setLed(255, 0, 0);//Errの時、赤色点灯
Nefry.ndelay(5000);
}
}
}
bool IFTTT_send(String event, String Secretkey, String data) {
WiFiClient client;
if (client.connect("https://t.co/KoG12Cxy7R", 80)) {
Nefry.println("connection");
client.println("POST /trigger/" + event + "/with/key/" + Secretkey + " HTTP/1.1");
client.println("Host: https://t.co/KoG12Cxy7R");
client.println("User-Agent: ESP8266/1.0");
client.println("Connection: close");
client.println("Content-Type: application/json");
client.print("Content-Length: ");
client.println(data.length());
client.println();
client.println(data);
delay(10);
Nefry.println("OK");
return true;
} else {
Nefry.println("Err");
return false;
}
}
4. つないでみた
Androidの携帯に通知を送ることができました! これを応用すれば、次のようなことができます。
- ドアに磁気センサーとNefryをつけて、誰かが来たことをスマホに通知する
- 引き出しに磁気センサーとNefryをつければ、引き出しを開け閉めしたことがスマホに通知され、簡易な防犯システムに
- 温度センサーとNefryを組み合わせて部屋に置けば、「熱中症になりやすいので気をつけてください」という通知を飛ばせたり、熱や寒さに弱い動物を飼っていれば、基準となる気温を設定し、その温度になったときに通知したりすることが可能
Nefryとセンサーを組み合わせるだけで簡単にこういったアイテムが作れちゃいます!
実践編2. もしNefryがイベントを作ったら、Twitterに投稿する
用意するのはこちら!
- Nefry
- IFTTT
今回作るのは、「もしNefryがイベントを作ったら、Twitterに投稿する」というレシピです。
1. トリガーとチャンネルを選ぶ
今回はTwitterチャンネルを使います。ChannlesでTwitterと検索し、「Twitter」を選んでおきましょう。Twitter チャンネルに接続していない場合Connectをクリック!
Twitterのアプリケーション認証画面が出ますのでTwitterにログインしたのち、連携アプリを認証をクリックします。
Twitter チャンネルにはアクションが複数あるですが、今回はシンプルにTwitterに投稿するPost a tweetをクリックして次に進みます。
Twitterに投稿する内容を編集することが可能です。入力が終わったらCreate Actionをクリックしてアクションの完成です!
最後にこのような組み合わせをつくりますがよいですかと画面が表示されここでCreate Recipeをクリックすることでレシピの完成です!
こちらから簡単にIFTTTにレシピを追加することができます。
2. Nefryのプログラムを作る
ArduinoIDEに書くプログラムはこちらです。Nefryのプログラムはスマートフォンで通知するものと同じようになっています。NefryについているSWを押すとIFTTTの方にトリガーがいくようになっています。SWの部分をほかのセンサーに変えることでIFTTTに連絡できるようになります!
#include <Nefry.h>
String Event, SecretKey;
bool IFTTT_send(String,String,String data="");
void setup() {
SecretKey = Nefry.memory_read(1);
Event = Nefry.memory_read(2);
}
void loop() {
if (Nefry.push_SW()) {//SWを押した時
if (!IFTTT_send(Event, SecretKey)) {
Nefry.Nefry_LED(255, 0, 0);//Errの時、赤色点灯
delay(5000);
}
}
}
bool IFTTT_send(String event, String Secretkey, String data) {
WiFiClient client;
if (client.connect("maker.ifttt.com", 80)) {
Nefry.println("connection");
client.println("POST /trigger/" + event + "/with/key/" + Secretkey + " HTTP/1.1");
client.println("Host: maker.ifttt.com");
client.println("User-Agent: ESP8266/1.0");
client.println("Connection: close");
client.println("Content-Type: application/json");
client.print("Content-Length: ");
client.println(data.length());
client.println();
client.println(data);
delay(10);
Nefry.println("OK");
return true;
} else {
Nefry.println("Err");
return false;
}
}
3. つないでみた
NefryからIFTTTを経由して、Twitterに投稿しています。March 30, 2016 at 08:54PM— Nefry (@Nefry_wifi) 2016年3月30日
動画をご覧になるとわかるのですが、私の環境では5秒程度遅れがあります。個人的にいろいろと作って遊ぶ分には十分に遊ぶことはできると思います。
これを応用すれば、例えば植物に水分センサーとNefryを取り付けて、土に水分がなく枯れそうな状態かそうでないかを見ることができます。その状態をTwitterを経由して送信してログを保存することで、植物を枯らさないように調整することもできのではないでしょうか。
まとめ
IFTTTを使い、スマートフォンへの通知とTwitterへの投稿をしました。今回はスイッチを使いましたが、スイッチの代わりに開閉センサーを付ければ人の入退室を見れますし、ポストにつければ手紙が届いたらすぐにわかるようになるでしょう! IFTTTとNefryを使えば、今まで簡単にできなかったことができるようになるかもしれないですね。
今回の記事の組み合わせ以外にも、簡単に試行錯誤できるIFTTTにはいろんな組み合わせがあると思います。いろいろ遊んでみてください!