MA11 IFTTT ハンズオン体験まとめ GR-SAKURA から 30 分で動く! 簡単メール送信できる IFTTT( イフト ) を使って見よう 2015/8/19 がじぇっとるねさす鈴木 Rev. 1.00
IFTTT( イフト ) って何? IF THIS THEN THAT IFTTT( イフト ) とは レシピ と呼ばれる個人作成もしくは公に共有しているプロフィールを使って数あ る Web サービス (Facebook Evernote Weather Dropbox など ) 同士で連携することができる Web サービスである 開発したのはリンデン チベッツで 2010 年にスタートした ( ウィキペディア ) 独自の レシピ を利用することで 既存のアプリ ( ウェブサービスも含む ) 同士を連携させて 一連の作業を自動化するサ ービスのことです 連携可能なアプリは 170 種類以上 Twitter や Facebook といった SNS から iphone の連絡先や Android の端末設定に至るまで さまざまなアクションが連携できます また スマホや PC だけでなく Android Wear 搭載のス マートウォッチや 活動量計付きのリストバンドとも連携できるのも魅力です IFTTT については このページがわかりやすいです http://weekly.ascii.jp/elem/000/000/324/324201/ もし晴れたら メールを送る
アプリだけでなく マイコンボードからも使えるようになった 基本は このかたちです if トリガ then アクション 2015.7 より トリガ に Maker が追加されました http://makezine.jp/blog/2015/07/ifttt-adds-new-channel-makers.html GR-SAKURA のハードもトリガとして使えるということです
早速 IFTTT にアクセスしアカウントを作成 https://ifttt.com にアクセス Sign up を押下 Eメールアドレス パスワードを入力 Create account を押下するとアドレスにIFTTTからURLが送信されるので アクセス 4
アカウントで IFTTT にアクセス レシピを作成 ユーザーアカウントからメニューを開き Create を選択 レシピが作成される this をクリック ( これがトリガの設定 ) 5
トリガを Maker にする トリガチャネルの一覧が表示される 数多くあり とれを選ぶか迷ってしまう 新しくサポートされた maker を入力 Maker アイコンをクリック ( これがトリガの設定 ) 6
トリガの Event Name に test を設定する ポップアップでダイアログが表示されるので Done を押下 画面が遷移したら Countinue to the next step を押下 Receive a web request を押下 画面が遷移したら Event name に test を入力 ( この文字列は GR- test SAKURA で使う ) Create Trigger を押下 7
アクションを Email に設定する that を押下して 実行するアクショ ンを設定 email アクションチャネルも数多く表示されるので email を入力する Email アイコンをクリック (Gmailだと設定が多くなるのでシンプルなEmailを選択 ) 8
アクションを設定し レシピを作成する 送られてくるメールのタイトル メール内容 さまざまなデータが記述可能 Send me an email を押下で画面遷移すると 送るメール内容が設定できる ここではデフォルトのまま使うので Create Action を押下する アクションを設定したので Create email Recipe 押下でレシピを作成 これで OK! 9
Maker の secret key を確認する ( キーはプログラムで使います ) メニューから Channels を押下 チャネルも多く表示されるので maker maker を入力 Maker アイコンを 表示させクリック キー押下で大きく表示されれば OK 10
IFTTT がメール送信するかテストする Event name を test に設定したの test に変更 で {event} を test に変更 Test it をクリックすると 設定した アドレスにメールが送信される 送信例 11
12 GR-SAKURA にプログラムする
Gadget Renesas のページへ訪問 gadget.renesas.com 13
スケッチリファレンスを見る ここをクリック 14
はじめての SAKURA を見る ここをクリック ( はじめての SAKURA) 15
Web コンパイラへ ログイン する ここをクリック 16
GR-SAKURA IFTTT のプロジェクトを作る GR-SAKURA_IFTTT_V2.02 を選択 アルファベットでプロジェクト名 ( 英語 ) を入れる 17 プロジェクト作成を押す
スケッチを表示させてプログラムを編集する 34 行目 secretkey[] = xxxxxx ; xxxxx を Maker の secret key を確認する ( キーはプログラムで使います ) の文字列をコピーして ファイルを保存する 18
スケッチを表示させてプログラムを編集する 19
ダウンロード ~ 書き込みはスケッチリファレンスを参照 20
GR-SAKURA にイーサネットケーブルを差し込み実行します しばらくすると青 LED が 2 つ点灯 (DHCP 取得成功 ) 青 LED が 1 つ点灯 青 SW を押下して GR-SAKURA から IFTTT へ送信 青 LED が 4 つ点灯 ( 送信成功!) メールが送付されます 21
22 GR-SAKURA のプログラム内容
初期化処理 電源オンで setup() が呼ばれる #include <Arduino.h> #include <Ethernet.h> #define USE_SERIAL // デバッグ用にシリアル出力 // Enter a MAC address and IP address for your controller below. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC アドレス設定 // Initialize the Ethernet client library with the IP address and port of the server // that you want to connect to (port 80 is default for HTTP): EthernetClient client; // 接続するクライアントを生成 char server[] = maker.ifttt.com ; // IFTTTのサービス // IFTTT strings char eventname[] = test ; char secretkey[] = xxxxxxxxxxx ; char s[128]; int val1, val2, val3; // IFTTTで設定したイベント // IFTTTからもらうsecretKey // start the Ethernet connection: while (!Ethernet.begin(mac) ) { #ifdef USE_SERIAL Serial.println("Failed to configure Ethernet using DHCP"); #endif } digitalwrite(pin_led1, HIGH); // success to begin #ifdef USE_SERIAL // for debug // print your local IP address: Serial.print( My IP address: ); Serial.println(Ethernet.localIP()); Serial.println( "Push blue SW on GR-SAKURA to start."); #endif } // Arduino のスタートアップ処理 void setup() { pinmode(pin_led0, OUTPUT); // check to start pinmode(pin_led1, OUTPUT); // check to begin Ether pinmode(pin_led2, OUTPUT); // check to connect IFTTT pinmode(pin_led3, OUTPUT); // check to finish sending HTTP pinmode(pin_sw, INPUT); // Open serial communications and wait for port to open #ifdef USE_SERIAL Serial.begin(9600); // for debug while (!Serial.available()) ; // key wait Serial.println("start to begin Ether."); #endif digitalwrite(pin_led0, HIGH); 23
メイン処理 loop() がずーっと呼ばれる void loop() { if (digitalread(pin_sw) == LOW) { // if you get a connection, report back via serial: if ( client.connect(server, 80) ) { digitalwrite(pin_led2, HIGH); #ifdef USE_SERIAL Serial.println("connected to IFTTT server"); // for debug #endif // Make a HTTP request: sprintf(s, "GET http://maker.ifttt.com/trigger/%s/with/key/%s HTTP/1.1", eventname, secretkey); #ifdef USE_SERIAL Serial.println(s); // for debug #endif client.println(s); client.println("host: maker.ifttt.com"); client.println("connection: close"); client.println(); digitalwrite(pin_led3, HIGH); delay(500); } else { // if you didn't get a connection to the server: #ifdef USE_SERIAL Serial.println("connection failed"); // for debug #endif } digitalwrite(pin_led2, LOW); digitalwrite(pin_led3, LOW); } if ( client.available() ) { char c = client.read(); #ifdef USE_SERIAL Serial.print(c); #endif } } if (!client.connected() ) { client.stop(); } 24
最後に 今回はSW 押下でメールを送りましたが GR-SAKURAにセンサを接続してトリガを変更してみましょう 一定以上の温度になったら 明るくなったら 暗くなったら 振動を感じたら 距離センサに近づいたら アクションも工夫すれば家電制御可能です スマホ連携できるIFTTTは可能性を秘めていると思われます 25