概要

このチュートリアルではFlashAir IoT HubのIFTTT連携機能について説明します。
最初にIFTTTについて説明します。既にIFTTTを使いこなしている方は読み飛ばして頂いても構いません。


IFTTT(イフト) とは IF This Then That(これをしたら、それをする)の略称で、 色々なWebサービス同士を組み合わる事が出来るWebサービスです。

IFTTTではきっかけとなるWebサービス (this) と、Webサービスで何をするか (that) の組み合わせを作り、その組み合わせを公開することが出来ます。 例えば、IFTTTを使うと次の組み合わせを作ることが出来ます。

  • Twitterにツイートしたら、同じ内容をFacebookにも投稿する。
  • Instagramにアップロードした画像をDropboxにも転送する。
  • Raspberry PIに繋いだ温度センサーの値をメールで送る。

IFTTTはWebサービス以外にもHTTPリクエストを送受信できれば、自作のデバイスとも組み合わせる事が出来ます。 HTTPリクエストを扱えるFlashAirと相性バッチリですね。

IFTTTを使うにはアカウントを登録する必要があります。 本チュートリアルを試す場合は、ご自分のメールアドレスでIFTTTのアカウントを作るか、GoogleアカウントやFacebookアカウントを使ってログインしてください。

IFTTTでは次の用語が使われています。具体的にどの様に使うかは本チュートリアルで説明します。

  • trigger
    • きっかけとなるWebサービス。例えばWebhooksを使った場合は、指定のURLにアクセスする度にactionを呼び出します。
  • action
    • triggerが呼び出す処理。例えばEmailを使った場合は、triggerから通知がある度にその内容をメールで送ります。
  • Applet
    • triggerとactionの組み合わせをまとめたもの。自分で作ったAppletはIFTTTのサイト上で公開することも出来ます。
  • Webhooks
    • Webhook(あるイベントをHTTPリクエストで通知する仕組み・考え方)を使い、Webサービス以外のデバイスでもtriggerやactionを送受信するIFTTTのサービスの1つ。
  • Event Name
    • WebhooksでAppletを識別するための名前。
  • key
    • WebhooksのAppletでユーザを識別する為のID。

FlashAir IoT HubとIFTTTの連携

FlashAir IoT HubではIFTTTと簡単に連携する事が出来ます。本チュートリアルでは次のIFTTT連携機能を紹介します。

FlashAirから測定値を送信することをきっかけにIFTTT経由で他のWebサービスに通知する事が出来ます。

また、通知する値の条件(指定の数値以上・未満になったら)と通知するタイミング(何時間経過したら再通知するか)を指定する事が出来ます。 条件とタイミングを設定する事で、例えば、FlashAirで送った温度センサーの値が30℃以上になったら、一日一回メールで通知する、といった事も出来ます。

では、例としてIFTTTと連携して計測値が30以上の場合、その値を1分に1回メールで送る設定をしてみましょう。 FlashAir IoT HubとIFTTTで次の設定を行います。

IFTTTではWebhooksを使うことで通知を送受信出来ます。
FlashAir IoT HubではIFTTTに対応したWebhookを設定することが出来ます。

Webhookを設定するにはIFTTT上でご自分のアカウントを識別するkeyの値が必要です。 次の手順で確認してください。


IFTTTにログインし、Webhooks のページを開き、「Documentation」をクリックする。

Webhooks

ページに表示されたkeyの値をメモしてください。Webhookを作る際に使います。

IFTTTのkey

FlashAir IoT Hub上でWebhookの設定を行います。

FlashAir IoT Hubのトリガー > 計測値の所にある「WebHookを設定」をクリックしましょう。

Webhook設定(測定値)

表示されたダイアログに次の値を入力します。

  • event

    Webhookを一意に示す任意の名前を入力してください。

  • key

    keyを確認するで確認したkeyの値をコピー&ペーストして入力してください。

  • 通知
    • 次の時間を経過するまで再通知しない

      1度通知をしてから、次の通知を行うまでの時間(デフォルト値:1分)。連続で通知するイベント(測定値や画像アップロード等)が発生しても 1度通知してからこの時間までは通知を行いません。

  • 条件
    • 計測値

      IFTTTに連携する計測値の名前。5つある計測値のうち、1つを選択してください。

    • 比較条件

      計測値を通知する条件。しきい値より大きいか、小さいかを選択してください。

    • しきい値

      計測値と比較する数値。比較条件と組み合わせて条件の値を入力してください。

Webhook設定ダイアログ

例として、次の時間を経過するまで再通知しないに「1分」、計測値に「value1(1つ目の計測値)」、比較条件に「>(しきい値より大きい)」、しきい値に「30」と入力してください。

測定値のWebhook設定を入力

登録ボタンをクリックすると、FlashAir IoT Hubの設定は完了です。

測定値のWebhook設定を登録

次にIFTTTのMy Applets のページでFlashAir IoT Hubから通知されたらメールを送信するAppletを作りましょう。

My Appletsページ

「New Applet」をクリックし、「this」の部分をクリック。

thisを選択

「Webhooks」を検索して、アイコンをクリック。

Webhooksを選択

「Recieve a web request」をクリック。

triggerを選択

Webhookを識別するEvent Nameを入力して「Create trigger」をクリック。
このEvent NameはFlashAir IoT Hubで作ったWebhookの「event」と合わせる必要があります。

triggerを作成

次に「that」の部分をクリック。

thatを選択

「Email」を検索して、アイコンをクリック。

Emailを選択

「Send me an email」をクリック。

Emailのaction選択

送信するメールの件名と本文を入力して「Create action」をクリック。

Emailの設定

デフォルトでEvent Nameやtriggerが呼ばれた日時などが入力されています。 メールはIFTTT登録時に指定したメールアドレスか、GoogleアカウントやFacebookアカウントと連携した場合はそのアカウントに紐づくメールアドレスに送信されます。

「Finish」をクリックすると、IFTTTの設定は完了です。

Appletの確認画面 Applet設定完了

計測値をIFTTT連携する

次にFlashAir上のサンプルスクリプトを以下の様に編集して、計測値の値が10から40の間を上下する様にします。

/bootscript.lua

local iothub = require("iothub")

-- iothub.startPioUpload(0x03)
-- iothub.stopPioUpload()

local cnt = 0
while(1) do
  iothub.runJob()
  iothub.addMeasurement({cnt})
  cnt = cnt + 10
  if (cnt > 40) then
    cnt = 10
  end
  sleep(10000)
  collectgarbage("collect")
end

サンプルスクリプトをFlashAirに保存したら、アクセスポイントに接続出来る場所でFlashAirをカードリーダーなどに入れて、しばらく待ちましょう。
次の様なメールが届いたら成功です。

What: flashair
When: June 1, 2017 at 10:00AM
Extra Data: , , ,

If maker Event "flashair", then send me an email at <メールアドレス>

IFTTT

IFTTTで設定したEvent Nameがメールに書かれていますね。

では次にイメージのIFTTT連携の例としてFlashAirにある画像をIFTTT経由でGoogle Driveに保存する設定をしましょう。
※WebhookでIFTTT連携出来るのは画像ファイルのみです。画像以外のファイルをアップロードしても通知されませんので、ご注意ください。
FlashAir IoT HubとIFTTTで次の設定を行います。

  • FlashAir IoT Hub

    画像がアップロードされたら通知するWebhookを作る。

  • IFTTT

    Webhookで画像のアップロードが通知されたら、その画像をGoogle Driveに保存するAppletを作る。

測定値と同様にIFTTTのWebhooksのkeyの値が必要です。keyを確認するを参考にkeyの値を予め調べておいてください。

FlashAir IoT Hubのファイルの所にある「WebHookを設定」をクリックしましょう。

Webhook設定(イメージ)

表示されたダイアログに次の値を入力します。

  • event

    Webhookを一意に示す任意の名前を入力してください。

  • key

    keyを確認するで確認したkeyの値をコピー&ペーストして入力してください。

イメージのWebhook設定を入力

登録ボタンをクリックすると、FlashAir IoT Hubの設定は完了です。

イメージのWebhook設定を登録

次にIFTTTのMy Applets のページで FlashAir IoT Hubに画像がアップロードされたら画像をGoogle Driveに転送するAppletを作りましょう。
IFTTTのWebhooksではValue1、Value2、Value3という名前で任意の値を通知する事が出来ます。 イメージのWebhookでは次の値を割り当てています。

  • value1

    画像のURL

  • value2

    画像のファイル名

  • value3

    未使用

これらの値をactionのWebサービスの各パラメーターに指定する事で画像をFlashAir IoT Hub以外のWebサービスにアップロードする事が出来ます。(パラメーターは各Webサービスで異なります。)

では、IFTTTでAppletを作りましょう。

「New Applet」をクリックし、「this」の部分をクリック。

thisを選択

「Webhooks」を検索して、アイコンをクリック。

Webhooksを選択

「Recieve a web request」をクリック。

triggerを選択

Webhookを識別するEvent Nameを入力して「Create trigger」をクリック。
このEvent NameはFlashAir IoT Hubで作ったWebhookの「evnet」と合わせる必要があります。

triggerを作成

次に「that」の部分をクリック。

thatを選択

「Google Drive」を検索して、アイコンをクリック。

注意:初めてGoogle DriveのAppletを作る場合、紐付けるGoogleアカウントでログイン後、アクセスを許可する必要があります。

Google Driveを選択

「Upload file from URL」をクリック。

Google Driveのactionを選択

それぞれ値を入力して「Create action」をクリック。

  • File URL

    Add ingredientからValue1(画像のURL)を選択してください。

  • File name

    Add ingredientからValue2(画像のファイル名)を選択してください。 デフォルトではOccurredAt(イベントの発生時間)が選択されています。

  • Google Drive folder path

    画像の保存先フォルダのパスを入力してください。

Google Driveの設定

「Finish」をクリックすると、IFTTTの設定は完了です。

Appletの確認画面 Applet作成完了

以上で設定は完了です。

イメージをIFTTT連携する

CONFIGを編集し、FlashAirに写真が保存されたらFlashAir IoT Hubに写真がアップロードされる様にしましょう。 設定方法は画像のアップロードを参考にしてください。
なお、カメラ以外で画像のアップロードを試す際は、アップロードされるのはFlashAir上のDCIMフォルダ配下にあるフォルダ内の最新ファイルであることに注意してください。

では、FlashAirを挿入したカメラで写真を撮ってみましょう。
※撮影する際はFlashAirからアクセスポイントに接続可能な場所で行って下さい。

FlashAir IoT Hubのファイルにて写真がアップロードされた事を確認したら、Google Driveを見てみましょう。

Google Driveにアップロード

Google Driveにも同じ写真がアップロードされました。

FlashAir IoT HubとIFTTTを使って、FlashAir上のデータをWebサービスと連携する事が出来ました。
IFTTTTにはこのチュートリアルで紹介した以外にも色々なWebサービスに対応していますので、FlashAirとWebサービスの新しい組み合わせを試してみてはいかがでしょうか?