IFTTTのwebhookチャンネルでArduinoを使う（Action側）

#やりたいこと
IFTTTのwebhookチャンネルを通して、Arduinoをアクションとして実行させたい。
![構成図.png](https://qiita-image-store.s3.amazonaws.com/0/159447/2e8ed333-62d4-9feb-dc74-c65e4adabddd.png)

#きっかけ
IFTTTのwebhookチャンネルをTrigger側で利用した記事は沢山見かけたが、Action側で利用した例が中々見つからなかったのでやり方を調べて備忘録としてまとめました。

#用意するもの
・Twitterアカウント
・Blynkアカウント(http://www.blynk.cc/)
・IFTTTアカウント(https://ifttt.com/)
・Arduino Yun(https://store.arduino.cc/usa/arduino-yun)
・ブレッドボードや単色LED、抵抗など

各種サービスのアカウントの登録やArduino Yunの無線の設定などは事前に行ってください。

#出来るモノ
この記事内で制作するものは、Twitterで特定のハッシュタグ付きツイートを呟いたら、ArduinoのLEDをON/OFFを制御できるものを作ります。

##Blynk側で行う事
Blynkとは、スマホからArduinoやRaspberry Piを簡単かつ自由に操作できるようになるアプリです。
今回これをダミーサーバとして利用します。

「New Project」を選び、各項目を入れて「Create Project」を押して作成完了してください。
作成完了した際に、登録したメールアドレスに**AUTH TOKEN**が送られますので、以降の内容で書かれているAUTH TOKENは適切に置き変えてください。
<img width="375" alt="IMG_7391.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/159447/de541a9c-0b3a-e071-b837-e9adbe0f3774.png">
<img width="375" alt="IMG_7392.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/159447/7fe28238-e786-87d3-e1c9-cbe2ef12cc5e.png">
以上で、Blynkアプリ内での設定は完了です。
(プロジェクトの作成のみ行います)

##IFTTT側で行う事
IFTTTとは、モノ・サービスとモノ・サービスを簡単に繋げられるアプリ(プラットフォーム)です。
今回はONとOFFの2種類のアプレットを作ります。
どちらのアプレットも**TriggerにTwitter**、**ActionにWebhook**を選択してください。

###ON側のアプレット

URLは、下記になります。
http://**IP_FROM_PING**/**AUTH TOKEN**/pin/**PIN**

**IP_FROM_PING**の部分は、コマンドプロンプト等で下記を打ち込み返ってきたIPアドレスに置き換えてください。
ping blynk-cloud.com

**PIN**は、D1やD2などArduinoのLEDが繋がっているピン番号に置き換えてください。
![ON.png](https://qiita-image-store.s3.amazonaws.com/0/159447/b351aa64-8b93-3d74-4682-ddbeb24c717a.png)

###OFF側のアプレット
ONの設定とHashTagとBodyが異なるだけです。
![OFF.png](https://qiita-image-store.s3.amazonaws.com/0/159447/27e25916-430a-ca70-406a-b3ce236a3c49.png)

##Arduino Yun側行う事
###Arduinoに書き込むプログラム
サンプルプログラムを下記のリンクの画面右側の「Download ZIP」でファイルをダウンロードします。
その後、Arduino IDEのメニューで「スケッチ > ライブラリをインクルード > .ZIP形式のライブラリをインストール」を行って下さい。
https://github.com/blynkkk/blynk-library

「Blynk > Board WiFi > Arduino_YUN.ino」と同じスケッチサンプルです。
**AUTH TOKEN**は適切なものに置き変えてください。

```arduino:Arduino_YUN.ino
/*************************************************************
  Download latest Blynk library here:
    https://github.com/blynkkk/blynk-library/releases/latest
  Blynk is a platform with iOS and Android apps to control
  Arduino, Raspberry Pi and the likes over the Internet.
  You can easily build graphic interfaces for all your
  projects by simply dragging and dropping widgets.
    Downloads, docs, tutorials: http://www.blynk.cc
    Sketch generator:           http://examples.blynk.cc
    Blynk community:            http://community.blynk.cc
    Social networks:            http://www.fb.com/blynkapp
                                http://twitter.com/blynk_app
  Blynk library is licensed under MIT license
  This example code is in public domain.
 *************************************************************
  This example shows how to use Arduino Yun Bridge
  to connect your project to Blynk.
  Feel free to apply it to any other example. It's simple!
 *************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


#include <Bridge.h>
#include <BlynkSimpleYun.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "AUTH TOKEN";


void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth);
  // You can also specify server:
  //Blynk.begin(auth, "blynk-cloud.com", 8442);
  //Blynk.begin(auth, IPAddress(192,168,1,100), 8442);
}

void loop()
{
  Blynk.run();
}
```

##Arduinoの回路図
抵抗は適切なものを挟んでください。
![名称未設定-3.png](https://qiita-image-store.s3.amazonaws.com/0/159447/a10b114d-aef8-13d5-632d-2c6ffaa31a18.png)


##動作確認
ツイッターでハッシュタグ#ONを付けるとArduinoのLEDが光り、#OFFを付けるとLEDの光りが消えます。
ただ動作自体はリアルタイムに行われないので、ツイートしてから1分前後で光る位の気持ちで動作確認をしてください。

##最後に
今回は簡易的な動作実験だったので、LEDのON/OFFの切換をやりましたが、Arduino側の構成にモーター等に置き変えると色々と面白い事が手早く出来そうです。また他にも簡単なやり方がきっと沢山あるので、そのうち試して記事にでも纏めてみたいと思います。


##参考サイト
**[SOLVED] IFTTT - Maker Channel won’t update virtual pin anymore**
https://community.blynk.cc/t/solved-ifttt-maker-channel-wont-update-virtual-pin-anymore/6631

**Using IFTTT with BLynk**
https://create.arduino.cc/projecthub/KaustubhAgarwal/using-ifttt-with-blynk-a194a9