NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2016.05.11
第4回
電子工作部

Webサービス同士を連携できる「IFTTT」と自作IoTデバイスを繋いで生活を便利にしてみた

わみ

こんにちは。DevRelライターのわみです。愛知県でネットワークの勉強をしている学生です。2年ほど前から電子工作を始め、FRISKサイズのIoT向けデバイス「Nefry」というものも自作しています。

今回は、Webサービス同士を簡単に連携できる「IFTTT(イフト)」を使い、自作IoTデバイス「Nefry」と繋ぎます。本記事では、「もしNefryがイベントを作ったら、スマートフォンに通知する」と、「もしNefryがイベントを作ったら、Twitterに投稿する」方法を紹介します。

IFTTTの使い方も紹介しているので、使ったことない方もぜひ触ってみてください。

目次

  1. 今回使うもの
    • Nefry(ネフリー)
    • IFTTT(イフト)
  2. 準備編
    • IFTTTの登録をしよう
    • Nefryの設定をしよう
  3. 実践編1:もしNefryがイベントを作ったら、スマートフォンに通知する
    • 1. トリガーを選ぶ
    • 2. アクションを選択する
    • 3. Nefryのプログラムを作る
    • 4. つないでみた
  4. 実践編2. もしNefryがイベントを作ったら、Twitterに投稿する
    • 1. トリガーとチャンネルを選ぶ
    • 2. Nefryのプログラムを作る
    • 3. つないでみた
  5. まとめ

今回使うもの

Nefry(ネフリー)

Milkcocoaやmythings、IFTTTなどのインターネットのサービスとハードウェアを簡単に接続できるモジュールです。インターネットに接続しやすいので、接続に時間をとられることなくアイデアづくりに集中できます。スマートフォンで使うようなモバイルバッテリーで動きます。

IFTTT(イフト)

ifttt _web

https://ifttt.com/

IFTTTは(イフト)TwitterやFacebook、SlackなどのWebサービス同士を組み合わせて簡単に連携できるサービスです。IFTTTに登録してあるサービスは、2016年5月11日現在なんと305個! SNSやブログサービスだけではなく、ニュースや写真、フィットネス、音楽といったさまざまなジャンルのWebサービスに対応しています。

ifttt

IFTTT「If This Then That(もしこれなら、あれをする)」の略です。「これをしたら」は「トリガー」「あれをする」という結果は「アクション」と呼ばれ、この流れを「レシピ」と呼びます。

 
2016-03-28_22h02_28.png

If This Then That(もしこれなら、あれをする)」を設定するだけで作れます。

  • もしツイートをしたらGoogle Driveにツイートを保存する
  • もしGmailでメールにスターをつけたらEvernoteに保存する
  • もし会社に着いたら携帯をミュートする

こういったものも簡単につくれちゃうのがIFTTTです。よく使われるレシピは公式サイトで公開されており、使うこともできます。

ということで、NefryとIFTTTで実際に動かせるものを作ってみようと思います。IFTTTの入門になるように写真を使いつつなるべく順を追って解説していきます。

準備編

IFTTTの登録をしよう

2016-03-30_18h09_31-min.png

まずはIFTTTに登録をしましょう。IFTTTの公式サイトを開いてみると、右上にSign upという水色のボタンがあります。そこをクリックすると登録ページに移動します。

 
2016-03-30_18h09_54-min.png

このページでメールアドレスと6文字以上のパスワードを入力します。入力が終わったらCreate accountという水色のボタンをクリック!

 
2016-03-30_18h10_27-min.png

これからIFTTTがどんなものなのか体験するチュートリアルが始まります。まずは水色のthisをクリック!

 
2016-03-30_18h10_34-min.png

「明日の天気が雨だったら」というトリガーが表示されました。アクションを選ぶためにthatをクリック!

 
2016-03-30_18h10_46-min.png

「メールを送る」というアクションが表示されました。「もし明日の天気が雨なら、メールを自分に送る」というレシピが作られました。IFTTTではこのようにしてレシピができるんですね。

IFTTTが簡単に分かったところでContinueをクリックして次に進み、3つよく使うチャンネルを選びます。特に気にすることなく選んでもらって大丈夫です。3つ選んだらContinueをクリックし、完了です!

また、IFTTTにはスマートフォンアプリもあります。プッシュ通知、位置情報を使えるようになるので、インストールしておくと良いです。

スマートフォンアプリDLリンク
Androidはこちら(Google Play Store)
https://play.google.com/store/apps/details?id=com.ifttt.ifttt

iPhoneはこちら(iTunes App Store)
https://itunes.apple.com/us/app/ifttt/id660944635

IFTTTへの登録が終わったらMakerチャンネルに登録しておこう

2016-03-30_18h11_55-min.png

今回、 IFTTTとNefryを組み合わせるために、Makerチャンネルというものに登録します。ArduinoやRaspberry Piなどの自作デバイスをIFTTTに繋げられるチャンネルです。Nefryもこのチャンネルを使いIFTTTとつなげます!

右上にあるChannelsをクリックします。

 
2016-03-30_18h12_25-min.png

ここですべてのチャンネルを見られます。なにがトリガーになるか、どのようなアクションができるかもここで調べられます。Search ChannelsMakerと検索します。

 
2016-03-30_18h13_03-min.png

Maker チャンネルを開いたら、Connectという青色のボタンをクリック!

 
2016-03-30_18h13_14-min.png

ConnectをするとSecret Keyというものが発行されます。このSecret KeyはIFTTTへトリガーを送るときのあなたのIDの識別番号となっており、のちにNefryで入力をするため覚えておいてください。

 
2016-03-30_18h29_43-min.png

Maker チャンネルはトリガーがひとつしかないのでReceive a web requestをクリック!

 
2016-03-30_18h29_55-min.png

するとEvent Nameの入力欄が出るので、Nefryで入力したNefry Triggerをここに入力します。入力が終わったらCreate Triggerをクリック! これでOKです!

Nefryの設定をしよう

Nefryの設定はスマートフォンやPCからできます。まずはNefryをモバイルバッテリーなどの電源につなぎ、水色のLEDが点灯するまで待ちましょう。

 

f23966a1-3219-3ff8-4af0-a0aa06daa88a

水色のLEDが点灯するとNefry-○○○○というWi-Fiが増えていると思います。そのWi-Fiに接続してください。

 
2016-03-30_20h43_13-min.png

Wi-Fiに接続したのちIEやChromeなどのブラウザを起動し、http://192.168.4.1と入力するとメニューが開きます。まずはWi-Fiの設定をするのでSetup WiFiをクリックします。

スマートフォンから設定している方で上手くいかないときは、一度機内モードにしつつWi-Fiのみを有効にしてもう一度チャレンジすると上手くいくと思います。

 
2016-03-30_20h44_12-min.png

NefryにWi-Fiの設定をします。SSIDは入力欄をクリックすると、検出されたWi-Fiを選べます。Passがある場合はそちらも入力して、Saveをクリックします。Saveを押すと再起動するのでしばらく待ちましょう。

 
2016-03-30_20h44_39-min.png

Wi-Fiの設定が終わり、再起動したあともう一度http://192.168.4.1に接続します。IP Addressが0.0.0.0の場合はWi-Fiに接続失敗しているので、Wi-Fiの設定をもう一度確認してください。そのほかの場合はそのまま設定を進めてください。

 
2016-03-30_20h50_31-min.png

最後にモジュールの設定します。メニューにあるSetup Moduleを開き、IFTTTで取得したSecret Keyを入力します。

Nefry Triggerには「Nefry」と入力します。入力が終わったらSaveをクリックします。これでNefryの設定は完了です! ということで、実際にIFTTTとNefryを繋いでみましょう。


実践編1:もしNefryがイベントを作ったら、スマートフォンに通知する

さて、IFTTTの登録とNefryの設定が終わったら、早速これらをつなげてみます。必要なものはこちら。

  • Nefry
  • IFTTT
  • IFTTTのスマートフォンアプリ

今回作るのは、「もしNefryがイベントを作ったらスマートフォンに通知する」というレシピです。

1. トリガーを選ぶ

2016-03-30_18h29_11-min.png

まずはIFTTTのサイトの上部にあるMy Recipesをクリックします。My Recipesページ中央にある水色のCreate a Recipeボタンから実際のレシピを作っていきます。

 
2016-03-30_18h29_27-min.png

なにをトリガーにするのか選びます。thisをクリック!

 
2016-03-30_18h29_38-min.png

チャンネルを選択します。検索することができるのでmakerと検索すると簡単に見つけられます。MのマークがMakerチャンネルです。

2. アクションを選択する

2016-03-30_18h30_03-min.png

次にアクションを選びます。thatをクリック!

 
2016-03-30_18h30_24-min.png

今回はスマートフォンに通知ができるIF Notificationというチャンネルを使います。IFと検索すると選択肢が減るのでそこからIF Notificationを選んでクリック!

 
2016-03-30_18h30_39-min.png

IF Notification チャンネルにはSend a notificationというアクションがありますので、こちらをクリックします。

 
2016-03-30_18h33_08-min.png

ここでどのような通知を送りたいか好きに入力することが可能です。入力が終わったらCreate Actionをクリックしてアクションの完成です!

 
2016-03-30_18h33_22-min.png

最後にこのような組み合わせをつくりますがよいですかと画面が表示されここでCreate Recipeをクリックすることでレシピの完成です! お疲れ様でした!

今回作成したレシピは下記をクリックすれば簡単に追加できます。

IFTTT Recipe: Maker Channel(Nefry)→
Push通知 connects maker to if-notifications

レシピの変更方法

2016-03-30_18h33_33-min.png

このページでは作ったレシピを後から変更できます。

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. つないでみた

Screenshot_20160330-205512-min-min-min.png

Androidの携帯に通知を送ることができました! これを応用すれば、次のようなことができます。

  • ドアに磁気センサーとNefryをつけて、誰かが来たことをスマホに通知する
  • 引き出しに磁気センサーとNefryをつければ、引き出しを開け閉めしたことがスマホに通知され、簡易な防犯システムに
  • 温度センサーとNefryを組み合わせて部屋に置けば、「熱中症になりやすいので気をつけてください」という通知を飛ばせたり、熱や寒さに弱い動物を飼っていれば、基準となる気温を設定し、その温度になったときに通知したりすることが可能

Nefryとセンサーを組み合わせるだけで簡単にこういったアイテムが作れちゃいます!

実践編2. もしNefryがイベントを作ったら、Twitterに投稿する

用意するのはこちら!

  • Nefry
  • IFTTT
  • Twitter

今回作るのは、「もしNefryがイベントを作ったらTwitterに投稿する」というレシピです。

1. トリガーとチャンネルを選ぶ

2016-03-30_18h36_37-min.png

今回はTwitterチャンネルを使います。ChannlesでTwitterと検索し、「Twitter」を選んでおきましょう。Twitter チャンネルに接続していない場合Connectをクリック!

 
2016-03-30_18h55_04-min.png

Twitterのアプリケーション認証画面が出ますのでTwitterにログインしたのち、連携アプリを認証をクリックします。

 
2016-03-30_18h55_55-min.png

Twitter チャンネルにはアクションが複数あるですが、今回はシンプルにTwitterに投稿するPost a tweetをクリックして次に進みます。

 
2016-03-30_19h05_15-min.png

Twitterに投稿する内容を編集することが可能です。入力が終わったらCreate Actionをクリックしてアクションの完成です!

 
2016-03-30_19h05_24-min.png

最後にこのような組み合わせをつくりますがよいですかと画面が表示されここでCreate Recipeをクリックすることでレシピの完成です!

 
IFTTT Recipe: Maker Channel →Twitter connects maker to twitter

こちらから簡単に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. つないでみた

動画をご覧になるとわかるのですが、私の環境では5秒程度遅れがあります。個人的にいろいろと作って遊ぶ分には十分に遊ぶことはできると思います。

これを応用すれば、例えば植物に水分センサーとNefryを取り付けて、土に水分がなく枯れそうな状態かそうでないかを見ることができます。その状態をTwitterを経由して送信してログを保存することで、植物を枯らさないように調整することもできのではないでしょうか。

まとめ

IFTTTを使い、スマートフォンへの通知とTwitterへの投稿をしました。今回はスイッチを使いましたが、スイッチの代わりに開閉センサーを付ければ人の入退室を見れますし、ポストにつければ手紙が届いたらすぐにわかるようになるでしょう! IFTTTとNefryを使えば、今まで簡単にできなかったことができるようになるかもしれないですね。

今回の記事の組み合わせ以外にも、簡単に試行錯誤できるIFTTTにはいろんな組み合わせがあると思います。いろいろ遊んでみてください!