Arduino勉強会/0P-WiFiからIFTTTを使ってみる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Arduino勉強会]]
#contents
2015/11/01からのアクセス回数 &counter;
** IFTTTについて [#jcadb429]
Makerが提供するIFTTT(イフトと発音するらしい)サービスを...
ESP-WROOM-02モジュールからのデータを簡単にサーバに送り、
様々な処理を施すことができます。
詳しくは、スイッチサイエンスさんの
[[IFTTTにMaker Channelができました>http://mag.switch-scie...
を参照してください。
MakerのIFTTTに登録するとユーザIDにシークレットKEYが割り当...
このKEYとイベントでIFTTTに情報を送ります。
*** iPhoneアプリIF by IFTTT [#pcf63581]
iPhoneでMakerのIFTTTで作ったイベントを受け取るには、iPhon...
詳しくは以下を参照してください。
- [[IF by IFTTT>https://itunes.apple.com/jp/app/if-by-ift...
*** Maker Channel画面 [#j2407c42]
登録が終わり、http://ifttt.com/makerに行くと以下の様な画...
Reconnect Channelを押すとKeyが再割り当てされますので、注...
&ref(th_Maker_Channel.png);
*** トリガーイベントの作成 [#c29cfe1e]
新しくイベントを作るには、Receive a web requestをクリック...
Receive a web requestの「Create a new Recipe」ボタンを押...
&ref(CreateRecipe1.png);
「this」をクリックし、Search ChannelsでMakerと入力し、
Makerのアイコンを選択します。
&ref(CreateRecipe2.png);
Choose a Trigger画面が表示され、Receive a web requestをク...
以下の様なComplete Trigger Fields画面になりますので、ここ...
を入力します。ここではLM35と入力しました。
&ref(CreateRecipe4.png);
以下の画面でthatを選択します。
&ref(CreateRecipe5.png);
Choose Action Channelが表示されるので、iPhoneと入力し、iP...
&ref(CreateRecipe6.png);
Choose an Action画面がでるので、Send a notificationをクリ...
Complete Action Fields画面がでるので、Notificationに出す...
以下の様にキーワードを{{ }}で括って入力し、Create Action...
#pre{{
温度センサLM35からイベント{{EventName}}と値{{Value1}}を受...
}}
&ref(CreateRecipe8.png);
以下の最終確認でますので、Create Recipeボタンをクリックし...
&ref(CreateRecipe9.png);
*** レシピの確認 [#kdc505e7]
MakerのIFTTTで作ったイベントは、普通のHTTPプロトコルで送...
ブラウザーからイベントのテストができます。
先ほど作ったLM35レシピを確認してみましょう。
ここではシークレットキーをSECRET_KEYで説明しますので、適...
- イベント名: LM35
- KEY: SECRET_KEY
ブラウザーから以下の様に入力します。
#pre{{
http://maker.ifttt.com/trigger/LM35/with/key/SECRET_KEY?v...
}}
iPhoneに以下の様なNotificationが表示されます。
&ref(LM35_Notification.png);
*** IFTTTの受け付けるHTTP GET要求 [#m91aace5]
MakerのIFTTTサーバは、[[Arduino勉強会/0N-WiFiモジュール...
調べたところ、以下の様にHTTPヘッダにHostとAcceptを追加す...
((以下はtestイベントで確認))
#pre{{
$ telnet 54.235.148.87 80
GET /trigger/test/with/key/SECRET_KEY HTTP/1.1
Host: maker.ifttt.com
Accept: */*
}}
** ArduinoからLM35イベントを送る [#jba6cd99]
スイッチサイエンスからESP-WROOM-02ピッチ変換済みモジュー...
これを使って温度センサLM35から取得した温度をIFTTTイベント...
&ref(ESP_LM35_brd.png);
*** ピッチ変換モジュールのハンダ付け [#y892289c]
ESP-WROOM-02をピッチ変換モジュールにハンダ付けします。
裏面のジャンパーは、SJ1とSJ2をハンダでショートします。
&ref(esp_1line5a.png);
*** ブレッドボードの組み立て [#sf2527ab]
ブレッドボードにESP-WROOM-02とArduino Pro Mini(3.3V)とLM3...
抵抗は10KΩを使いました。
&ref(brd.png);
*** スケッチ [#bea3aef8]
[[Arduino勉強会/0O-WiFiモジュールその2]]で作ったEspCli...
以下の様に修正し、シリアルもSoftwareシリアルでESP-WROOM-0...
しました。この結果シリアルモニタの出力は文字化けしますが...
#pre{{
int EspClient::atCipSend(char *uri, char *host) {
sprintf(buf, "GET %s HTTP/1.1\r\nHost: %s\r\nAccept: */...
int len = strlen(buf);
char tmp[32];
sprintf(tmp, "AT+CIPSEND=%d%s", len, CRLF);
// uriを送る
atCommand(tmp, 1000);
esp.print(buf);
// 応答を待つ
waitForResponse();
}
}}
LM35の温度を送るテスト用スケッチは、以下の通りです。
#pre{{
#include "EspClient.h"
#include <SoftwareSerial.h>
#define ST_SSID "take-iPhone5s"
#define ST_PASSWD "jpb67k42hgq5z"
#define SERVER_ADDR "54.235.148.87" // maker.ifttt.com...
#define SERVER_PORT 80
#define EVENT "LM35"
#define SECRET_KEY "ここにSECRET_KEYを入れてください"
int sw_pin = 10;
int sTx_pin = 12;
int sRx_pin = 11;
int lm35_pin = A0;
int lm35_value;
char buf[128];
EspClient esp(sRx_pin, sTx_pin);
void setup() {
pinMode(sw_pin, INPUT);
esp.begin(9600);
esp.println("ESP8266IF3tTest");
esp.atCwMode(STATION_MODE);
esp.atCwJap(ST_SSID, ST_PASSWD);
}
void loop() {
if (digitalRead(sw_pin) == LOW) {
esp.println("SW pressed");
// チャタリング防止
delay(500);
lm35_value = analogRead(lm35_pin); // LM35から値を読...
int temp10 = (int)((lm35_value*3.3)/1023.0*1000); //...
sprintf(buf, "temp=%d.%df", temp10/10, temp10%10);
esp.println(buf);
esp.atCipStart(SERVER_ADDR, SERVER_PORT);
sprintf(buf, "/trigger/%s/with/key/%s?value1=%d.%d", ...
esp.atCipSend(buf, "maker.ifttt.com");
}
}
}}
*** 動作確認 [#f4bd0420]
起動後に、ボタンを押してイベントをIFTTTサーバに送ります。
シリアルモニタは以下の様に文字化けしますが、イベントはき...
#pre{{
ESP8266IF3tTest
AT+CWMODE=1
OK
AT+CWJAP="take-iPhone5s","jpb67k42hgq5z"
WIFI DISCONNECT
WIFDo wait onece
WIFI GOT IP
OK
SW pressed
temp=25.4f
AT+CIPSTART="TCP","54.235.148.87",80CONNECT
OK
AT+CIPSEND=112
busy p...
OK
> GE@½ÑÉ¥½cªz½[½¹©Q]©Íå¥aY©-Ùµ±ý±
±ÕÅëªr¢BBEõ(rjõkÑéj
ɹKÑÑѹ½µ5
ÁÑéRzRjÔÔ¨HHTÖ,¤¦L&H¬_]Y®Cá
SEND OK
}}
&ref(IFTTT_Result.png);
*** スケッチのダウンロード [#d941e00a]
スケッチを以下からダウンロードできます。
- ESPClientスケッチ &ref(EspIFTClient.zip);
** 温度を記録する [#x820b7d5]
つぎにGoogleのスプレッドシートに温度とイベントが発生時刻...
*** IFTTTの定義 [#n304e620]
以下の様にActionでspreadsheetに行を追加するRecordLM35イベ...
&ref(th_RecordLM35_Action.png);
*** ブラウザーでテスト [#pcce8215]
以下のURLをブラウザー入力します。
#pre{{
http://maker.ifttt.com/trigger/RecordLM35/with/key/<<ここ...
}}
*** Googleドライブにアクセスすると、IFTTT/Maker/RecordLM3...
IFTTT_MakerRecordLM35スプレッドシートに以下のような記録が...
&ref(IFTTT_MakerRecordLM35.png);
** コメント [#mfa875ee]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。勉強会で分から...
スパム防止に画像の文字列も入力してください。
#comment_kcaptcha
終了行:
[[Arduino勉強会]]
#contents
2015/11/01からのアクセス回数 &counter;
** IFTTTについて [#jcadb429]
Makerが提供するIFTTT(イフトと発音するらしい)サービスを...
ESP-WROOM-02モジュールからのデータを簡単にサーバに送り、
様々な処理を施すことができます。
詳しくは、スイッチサイエンスさんの
[[IFTTTにMaker Channelができました>http://mag.switch-scie...
を参照してください。
MakerのIFTTTに登録するとユーザIDにシークレットKEYが割り当...
このKEYとイベントでIFTTTに情報を送ります。
*** iPhoneアプリIF by IFTTT [#pcf63581]
iPhoneでMakerのIFTTTで作ったイベントを受け取るには、iPhon...
詳しくは以下を参照してください。
- [[IF by IFTTT>https://itunes.apple.com/jp/app/if-by-ift...
*** Maker Channel画面 [#j2407c42]
登録が終わり、http://ifttt.com/makerに行くと以下の様な画...
Reconnect Channelを押すとKeyが再割り当てされますので、注...
&ref(th_Maker_Channel.png);
*** トリガーイベントの作成 [#c29cfe1e]
新しくイベントを作るには、Receive a web requestをクリック...
Receive a web requestの「Create a new Recipe」ボタンを押...
&ref(CreateRecipe1.png);
「this」をクリックし、Search ChannelsでMakerと入力し、
Makerのアイコンを選択します。
&ref(CreateRecipe2.png);
Choose a Trigger画面が表示され、Receive a web requestをク...
以下の様なComplete Trigger Fields画面になりますので、ここ...
を入力します。ここではLM35と入力しました。
&ref(CreateRecipe4.png);
以下の画面でthatを選択します。
&ref(CreateRecipe5.png);
Choose Action Channelが表示されるので、iPhoneと入力し、iP...
&ref(CreateRecipe6.png);
Choose an Action画面がでるので、Send a notificationをクリ...
Complete Action Fields画面がでるので、Notificationに出す...
以下の様にキーワードを{{ }}で括って入力し、Create Action...
#pre{{
温度センサLM35からイベント{{EventName}}と値{{Value1}}を受...
}}
&ref(CreateRecipe8.png);
以下の最終確認でますので、Create Recipeボタンをクリックし...
&ref(CreateRecipe9.png);
*** レシピの確認 [#kdc505e7]
MakerのIFTTTで作ったイベントは、普通のHTTPプロトコルで送...
ブラウザーからイベントのテストができます。
先ほど作ったLM35レシピを確認してみましょう。
ここではシークレットキーをSECRET_KEYで説明しますので、適...
- イベント名: LM35
- KEY: SECRET_KEY
ブラウザーから以下の様に入力します。
#pre{{
http://maker.ifttt.com/trigger/LM35/with/key/SECRET_KEY?v...
}}
iPhoneに以下の様なNotificationが表示されます。
&ref(LM35_Notification.png);
*** IFTTTの受け付けるHTTP GET要求 [#m91aace5]
MakerのIFTTTサーバは、[[Arduino勉強会/0N-WiFiモジュール...
調べたところ、以下の様にHTTPヘッダにHostとAcceptを追加す...
((以下はtestイベントで確認))
#pre{{
$ telnet 54.235.148.87 80
GET /trigger/test/with/key/SECRET_KEY HTTP/1.1
Host: maker.ifttt.com
Accept: */*
}}
** ArduinoからLM35イベントを送る [#jba6cd99]
スイッチサイエンスからESP-WROOM-02ピッチ変換済みモジュー...
これを使って温度センサLM35から取得した温度をIFTTTイベント...
&ref(ESP_LM35_brd.png);
*** ピッチ変換モジュールのハンダ付け [#y892289c]
ESP-WROOM-02をピッチ変換モジュールにハンダ付けします。
裏面のジャンパーは、SJ1とSJ2をハンダでショートします。
&ref(esp_1line5a.png);
*** ブレッドボードの組み立て [#sf2527ab]
ブレッドボードにESP-WROOM-02とArduino Pro Mini(3.3V)とLM3...
抵抗は10KΩを使いました。
&ref(brd.png);
*** スケッチ [#bea3aef8]
[[Arduino勉強会/0O-WiFiモジュールその2]]で作ったEspCli...
以下の様に修正し、シリアルもSoftwareシリアルでESP-WROOM-0...
しました。この結果シリアルモニタの出力は文字化けしますが...
#pre{{
int EspClient::atCipSend(char *uri, char *host) {
sprintf(buf, "GET %s HTTP/1.1\r\nHost: %s\r\nAccept: */...
int len = strlen(buf);
char tmp[32];
sprintf(tmp, "AT+CIPSEND=%d%s", len, CRLF);
// uriを送る
atCommand(tmp, 1000);
esp.print(buf);
// 応答を待つ
waitForResponse();
}
}}
LM35の温度を送るテスト用スケッチは、以下の通りです。
#pre{{
#include "EspClient.h"
#include <SoftwareSerial.h>
#define ST_SSID "take-iPhone5s"
#define ST_PASSWD "jpb67k42hgq5z"
#define SERVER_ADDR "54.235.148.87" // maker.ifttt.com...
#define SERVER_PORT 80
#define EVENT "LM35"
#define SECRET_KEY "ここにSECRET_KEYを入れてください"
int sw_pin = 10;
int sTx_pin = 12;
int sRx_pin = 11;
int lm35_pin = A0;
int lm35_value;
char buf[128];
EspClient esp(sRx_pin, sTx_pin);
void setup() {
pinMode(sw_pin, INPUT);
esp.begin(9600);
esp.println("ESP8266IF3tTest");
esp.atCwMode(STATION_MODE);
esp.atCwJap(ST_SSID, ST_PASSWD);
}
void loop() {
if (digitalRead(sw_pin) == LOW) {
esp.println("SW pressed");
// チャタリング防止
delay(500);
lm35_value = analogRead(lm35_pin); // LM35から値を読...
int temp10 = (int)((lm35_value*3.3)/1023.0*1000); //...
sprintf(buf, "temp=%d.%df", temp10/10, temp10%10);
esp.println(buf);
esp.atCipStart(SERVER_ADDR, SERVER_PORT);
sprintf(buf, "/trigger/%s/with/key/%s?value1=%d.%d", ...
esp.atCipSend(buf, "maker.ifttt.com");
}
}
}}
*** 動作確認 [#f4bd0420]
起動後に、ボタンを押してイベントをIFTTTサーバに送ります。
シリアルモニタは以下の様に文字化けしますが、イベントはき...
#pre{{
ESP8266IF3tTest
AT+CWMODE=1
OK
AT+CWJAP="take-iPhone5s","jpb67k42hgq5z"
WIFI DISCONNECT
WIFDo wait onece
WIFI GOT IP
OK
SW pressed
temp=25.4f
AT+CIPSTART="TCP","54.235.148.87",80CONNECT
OK
AT+CIPSEND=112
busy p...
OK
> GE@½ÑÉ¥½cªz½[½¹©Q]©Íå¥aY©-Ùµ±ý±
±ÕÅëªr¢BBEõ(rjõkÑéj
ɹKÑÑѹ½µ5
ÁÑéRzRjÔÔ¨HHTÖ,¤¦L&H¬_]Y®Cá
SEND OK
}}
&ref(IFTTT_Result.png);
*** スケッチのダウンロード [#d941e00a]
スケッチを以下からダウンロードできます。
- ESPClientスケッチ &ref(EspIFTClient.zip);
** 温度を記録する [#x820b7d5]
つぎにGoogleのスプレッドシートに温度とイベントが発生時刻...
*** IFTTTの定義 [#n304e620]
以下の様にActionでspreadsheetに行を追加するRecordLM35イベ...
&ref(th_RecordLM35_Action.png);
*** ブラウザーでテスト [#pcce8215]
以下のURLをブラウザー入力します。
#pre{{
http://maker.ifttt.com/trigger/RecordLM35/with/key/<<ここ...
}}
*** Googleドライブにアクセスすると、IFTTT/Maker/RecordLM3...
IFTTT_MakerRecordLM35スプレッドシートに以下のような記録が...
&ref(IFTTT_MakerRecordLM35.png);
** コメント [#mfa875ee]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。勉強会で分から...
スパム防止に画像の文字列も入力してください。
#comment_kcaptcha
ページ名:
SmartDoc