arduinoソースコード クリックで展開
// ライブラリの読み込み
#include <ESP8266WiFi.h>
#include <time.h>
//日本時間
#define JST 3600*9
// 転送レート
#define SERIAL_SPEED 115200
// Wi-Fi SSID
#define WLAN_SSID "親機のSSID"
// Wi-Fi パスワード
#define WLAN_PASS "親機の認証キー"
// IFTTTのイベント名
#define IFTTT_EVENT_NAME "alarm"
// IFTTTのホスト名
#define IFTTT_HOST_NAME "maker.ifttt.com"
// IFTTTのシークレットキー
#define IFTTT_KEY "IFTTTから取得したキー"
// ポート番号
#define PORT_NUMBER 80
// 焦電センサーを接続するピン
const int sensorPin = 12;
// ledを接続するピン
const int ledPin = 14;
time_t t;
struct tm *tm;
static const char *wd[7] = {"Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat"};
void setup(void) {
// デジタル2番ピンを入力用として設定
pinMode(sensorPin, INPUT);
pinMode(ledPin, OUTPUT);
// パソコンとのシリアル通信のポートを開ける
Serial.begin(SERIAL_SPEED);
// Wi-Fi設定
setupWiFi();
configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
t = time(NULL);
tm = localtime(&t);
Serial.printf(" %04d/%02d/%02d(%s) %02d:%02d:%02d\n",
tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
wd[tm->tm_wday],
tm->tm_hour, tm->tm_min, tm->tm_sec);
}
/*
Wi-Fiを設定します
*/
void setupWiFi() {
Serial.print("Connecting to ");
Serial.println(WLAN_SSID);
// シリアルポートの指定
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(3000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
delay(3000);
}
void loop(void) {
delay(2000);
t = time(NULL);
tm = localtime(&t);
Serial.printf(" %04d/%02d/%02d(%s) %02d:%02d:%02d\n",
tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
wd[tm->tm_wday],
tm->tm_hour, tm->tm_min, tm->tm_sec);
digitalWrite(ledPin, LOW);
WiFiClient client;
const int httpPort = 80;
// const char * host = "192.168.1.1"; // ip or dns
Serial.print("connecting to ");
Serial.println(IFTTT_HOST_NAME);
// Use WiFiClient class to create TCP connections
if (!client.connect(IFTTT_HOST_NAME, httpPort)) {
Serial.println("connection failed");
Serial.println("wait 5 sec...");
delay(5000);
return;
}
// 焦電センサーの状態を取得
int sensorState = digitalRead(sensorPin);
// 動きを検知したら
if (sensorState == HIGH) {
Serial.println("Send Data");
// IFTTTへ送信するデータ
char sendData[256] = "";
sprintf(sendData, "GET http://maker.ifttt.com/trigger/%s/with/key/%s HTTP/1.1\r\nHost:maker.ifttt.com\r\nConnection: close\r\n\r\n", IFTTT_EVENT_NAME, IFTTT_KEY);
Serial.println(sendData);
// IFTTTへデータを送信
//夜中だったら待つ
if (7 <= tm->tm_hour and tm->tm_hour < 23 ) {
client.print(sendData);
Serial.printf(" %02d時\n", tm->tm_hour);
}
for ( int i = 0 ; i < 5 ; i++) {
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
}
delay(180000);
//delay(1000);
}
}