#include <Process.h> #include <stdlib.h> #include "DHT.h"
#define DHTPIN 8 // 센서의 데이터 핀번호 #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(DHTPIN, DHTTYPE);
String TEM; String HUM; char cTEM[5]; char cHUM[5];
double TEM_LIMIT=30.0; // 온도 문자 경보수치 30도 이 값을 수정하면 알람 임계치가 바뀐다 double HUM_LIMIT=80.0; // 온도 문자 경보 습도 80퍼센트
unsigned long curMillis=0; unsigned long eventMillis=0; unsigned long diffMillis=0; byte eventFlag=LOW; unsigned long eventDelay=600000; // 문자 경보를 알려주는 딜레이 시간 -- 이전에 경보를 보냈으면 10분 동안에는 보내지 않는다. void setup() { // put your setup code here, to run once: Bridge.begin(); dht.begin(); Serial.begin(9600); Serial.println("init"); }
void loop() { // put your main code here, to run repeatedly: double h = dht.readHumidity(); double t = dht.readTemperature(); Serial.print(" TEM:"); Serial.print(t); Serial.print(" HUM : "); Serial.println(h); dtostrf(h, 3,1, cHUM); dtostrf(t, 3,1, cTEM); HUM= String(cHUM); TEM= String(cTEM);
curMillis=millis(); // 현재 밀리를 구한다. if (curMillis < eventMillis ) { Serial.println("eventmili reset.."); eventMillis = curMillis ; }
diffMillis = curMillis - eventMillis; if (eventFlag == HIGH) { if ( diffMillis > eventDelay ) { eventFlag=LOW; Serial.print(" evenymilli :"); Serial.print(eventMillis); Serial.print(" curMillis : "); Serial.println(curMillis); Serial.print(" diff :"); Serial.print( diffMillis ); Serial.print(" eventDelay : "); Serial.println(eventDelay ); Serial.println("Event Flag reset.."); } }
if ((( t > TEM_LIMIT ) && eventFlag == LOW ) || (( h > HUM_LIMIT ) && eventFlag == LOW )) { eventMillis = curMillis; eventFlag=HIGH; Serial.println(" SMS alarm !! "); Process p1; p1.begin("python"); p1.addParameter("/root/python/sendSMS.py"); p1.addParameter(TEM); p1.addParameter(HUM); p1.run(); }
Process p; p.begin("python"); p.addParameter("/root/python/insertDB.py"); p.addParameter("1"); p.addParameter(TEM); p.addParameter(HUM); p.run(); Serial.println("Mysql DB insert"); delay(30000); //1000 = 1초 , 30초마다 한번 동작하게 한다. 온도게 스팩상 최소 2초로 할것.
}
|