- 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)); } }
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。