- 2019-2-21
- ESP-WROOM-02, 電気工作
- コメントを書く

せっかくジェットヒーターをセットしたのに、朝起きたらヒーターが消えててがっかり(;_;)
北国の農家あるあるのこの出来事、出来るだけ失敗を少なくしたい。
夜中に目覚ましを鳴らして起きてハウスに確認に行くとか、ネットワークカメラで確認とか、いろいろ方法はありますね。
出来ることなら何もなければ夜は寝ていたい。
そんな願いをかなえるため、Wi-Fi失火センサーを作成しました。
WiFi スマートプラグ TP-Link
Wi-Fiから電源が操作できるこちらの製品を使い、失火センサーと枕元のお知らせブザーを連携します。
レシピの作成 IFTTT設定
IFTTT(イフト) に連携するための設定をします。
必要なパーツ等
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));
}
}
コメント
この記事へのトラックバックはありません。









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