ESP-WROOM-02+IFTTTでスマートスイッチを操作する

せっかくジェットヒーターをセットしたのに、朝起きたらヒーターが消えててがっかり(;_;)

北国の農家あるあるのこの出来事、出来るだけ失敗を少なくしたい。

夜中に目覚ましを鳴らして起きてハウスに確認に行くとか、ネットワークカメラで確認とか、いろいろ方法はありますね。

出来ることなら何もなければ夜は寝ていたい。

そんな願いをかなえるため、Wi-Fi失火センサーを作成しました。

WiFi スマートプラグ  TP-Link

Wi-Fiから電源が操作できるこちらの製品を使い、失火センサーと枕元のお知らせブザーを連携します。

レシピの作成 IFTTT設定

IFTTT(イフト) に連携するための設定をします。

 

 

必要なパーツ等

ESP-WROOM-02D Wi-Fiモジュール

フリスク基板 for ESP-WROOM-02

EasyWordMall DS18B20ステンレススチール防水温度プローブセンサArduino用

ELPA LED 3mm グリーン HK-LED3H(G)
SODIAL(R)黒いジャンパー キャップX50  2.54mm

HiLetgo® 3個セット 5A DC-DCステップダウン調整可能電源モジュール降圧コンバータ 4~38V 電源アウトプット1.25-36V [並行輸入品]

KKHMF 600PCS 電子部品抵抗バッグ 1/4W金属膜 1%五色環 30種類各20pcs
HiLetgo® 20個セット 40Pin 2.54mm 単一列端子ピン ヘッダー ストリップ PBC 1*40 P ピッチ Ardunioに対応 DIYセット [並行輸入品]

 

 

 

 

#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Ticker.h>

#define ONE_WIRE_BUS 14  //温度センサーをESP-WROOM-02の14番ピンに接続

Ticker ticker1;  //タイマ割り込み (LED点滅用)

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const char* ssid = "your-ssid";
const char* password = "your-pass";

const int LED = 13; //LEDのIOピン

int ledStatus = 0; //0:消灯 1:点灯 2:点滅

const char* host = "maker.ifttt.com";
const char* secretkey = "your-iftttkey";
int val1 = 0;

void setup() {
  Serial.begin(115200);

  //タイマ割り込み間隔と 割り込み関数名 LEDの点滅に使用
  ticker1.attach_ms(500, ticker1_interrupt);

  pinMode(LED, OUTPUT);
  
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);

  connectToWiFi();

}

void connectToWiFi(){
    ledStatus = 2;//0:消灯 1:点灯 2:点滅
  
  WiFi.begin(ssid, password);
  delay(500);

  int retrycnt = 0;
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(100);
    retrycnt++;
    if(retrycnt > 100){
      ESP.restart();
    }
  }
    Serial.println("Connect Success");
}
int value = 0;


void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    ledStatus = 1;//0:消灯 1:点灯 2:点滅 
     
  }else{
    //WiFi接続が切れた
    Serial.println("WiFi ERR. Restart.");
    ESP.restart();
  }
  sensors.requestTemperatures(); // Polls the sensors
 
float val1 = sensors.getTempCByIndex(0); // 温度センサーから摂氏気温を取得
  
  Serial.println("");
  Serial.println("TEMP:" + String(val1));
  ++value; 

  char* event = "";
  if (val1 < 15) {
    event = "your-event";  //IFTTTのイベント名
  }

  Serial.print("connecting to ");
  Serial.println(host);

  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  // We now create a URI for the request
  String url = "/trigger/";
  url += event;
  url += "/with/key/";
  url += secretkey;

  Serial.print("Requesting URL: ");
  Serial.println(url);

  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  delay(1000);

  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

  Serial.println();
  Serial.println("closing connection");
}

 //タイマ割り込み時の処理
 void ticker1_interrupt(){
   if(ledStatus == 0){
     digitalWrite(LED, LOW);
   }else if(ledStatus == 1){
     digitalWrite(LED, HIGH);
   }else if(ledStatus == 2){
     digitalWrite(LED, !digitalRead(LED));
   }  
 }

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

この記事の著者

toru

1966年訓子府町生まれの訓子府育ち。玉葱や米、メロンを栽培する農家です。一眼レフを本格的に始めたのは2005年。仕事の時でもいつでもカメラを持ち歩く自称農場カメラマン。普段の生活を撮るのが主で、その他ストロボを使っての商品撮影、スタジオ撮影も。愛好家グループで年1回写真展を行っている。農機具の改造や作製、電子工作など、モノづくりが大好きです。

この著者の最新の記事

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2019年3月
« 2月    
 123
45678910
11121314151617
18192021222324
25262728293031

カテゴリー

ページ上部へ戻る