#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <DHT.h>
#include <BlynkSimpleEsp8266.h>
#define DHTPIN 5 // D4 = GPIO 2
#define DHTTYPE DHT22
#define RelayPin 2
int LightPIN = A0; /* Input pin for the potentiometer */
int LightPINValue = 0;
int SOUND_VOLUME_PIN = A0; /* Input pin for the potentiometer */
int SOUND_THRESHOLD = 500; /* Sound level threshold */
int SOUND_MAX = 600; /* Sound maximum level */
int soundValue;
const int RainAnalogInPin = A0;
const int LightDigitalInPin = 3;
const int LEDRDigitalInPin = 13;
const int LEDGDigitalInPin = 12;
const int LEDBDigitalInPin = 14;
int RainsensorValue = 0;
int RainMapValue = 0;
// your thingspeak channel API key and your WiFi SSID and password
String apiKey = "S2VXGETIAPO283AF";
const char* server = "api.thingspeak.com";
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "3d35094d84ec40f895e0de139c139b61";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "apple2";
char pass[] = "HS0988557822";
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
void setup()
{
Serial.begin(115200);
pinMode(LightDigitalInPin,INPUT);
pinMode(LEDRDigitalInPin,OUTPUT);
pinMode(LEDGDigitalInPin,OUTPUT);
pinMode(LEDBDigitalInPin,OUTPUT);
pinMode(RelayPin,OUTPUT);
dht.begin();
Blynk.begin(auth, ssid, pass);
}
void loop()
{
if (WiFi.status() == WL_CONNECTED) {
Serial.println("WiFi connected");
Serial.print("WiFi LocalIP : ");
Serial.println(WiFi.localIP());
}
Blynk.run();
LightPINValue = analogRead(LightPIN);
if (LightPINValue > 1000){
digitalWrite(RelayPin,LOW);
Serial.println(LightPINValue);
//delay(1000);
}else {
digitalWrite(RelayPin,HIGH);
Serial.println(LightPINValue);
//delay(1000);
}
soundValue = analogRead(SOUND_VOLUME_PIN);
if (soundValue > SOUND_THRESHOLD)
{
Serial.print("Sound Sensor Volume = ");
Serial.println(soundValue);
} else {
Serial.print("Sound Sensor Volume = ");
Serial.println(soundValue);
}
SendData_To_ThinkSpeak_Blynk();
}
void SendData_To_ThinkSpeak_Blynk() {
// read the rain analog in value:
RainsensorValue = analogRead(RainAnalogInPin);
// map the 1024 to from 0 ~ 1024
RainMapValue = map(RainsensorValue, 0, 1023, 1024, 1);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//int chk = DHT.read11(dht_dpin);
Blynk.virtualWrite(V1, t);
Blynk.virtualWrite(V2, h);
if (client.connect(server,80)) {
String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
postStr +="&field3=";
postStr += String(RainMapValue);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
Serial.print("Temperature: ");
Serial.print(t );
Serial.print("Humidity:");
Serial.print(h );
Serial.print(" Rain : (1-1024) ");
//Serial.print(RainsensorValue );
Serial.print(LightPINValue );
Serial.print(" light : ");
//int sensorValue = analogRead(A1);
//int LDI = 0;
//LDI = digitalRead(LightDigitalInPin);
//Serial.print(LDI);
Serial.println(", Sending data to Thingspeak");
client.stop();
Serial.println("Waiting 1000");
delay(1000);
LEDTest();
}
}
void LEDTest(){
digitalWrite(LEDRDigitalInPin,HIGH);
delay(1000);
digitalWrite(LEDRDigitalInPin,LOW);
delay(1000);
digitalWrite(LEDGDigitalInPin,HIGH);
delay(1000);
digitalWrite(LEDGDigitalInPin,LOW);
delay(1000);
digitalWrite(LEDBDigitalInPin,HIGH);
delay(1000);
digitalWrite(LEDBDigitalInPin,LOW);
delay(1000);
}