#include <SoftwareSerial.h>
#include <DHT.h>
#define DHTPIN 6 //DHT OneWire pin and its type
#define DHTTYPE DHT11
// Configure software serial port
SoftwareSerial sim800(3, 2);
// Variable to store text message
String textMessage;
String textMessage1;
// Create a variable to store Lamp state
String lampState1 = "off";
String lampState2 = "off";
// Relay connected to pin 4,5
const int relay1 = 4;
const int relay2 = 5;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// Set relay as OUTPUT
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
// By default the relay is off
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
// Initializing serial commmunication
Serial.begin(19200);
sim800.begin(19200);
delay(100); // Give time to your GSM shield log on to network
Serial.println("sim800 is ready to send receive sms");
sim800.print("AT+CMGF=1\r"); // Set module to send SMS data to serial out upon receipt
delay(100);
sim800.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
dht.begin();
delay(100);
}
void loop() {
delay (200);
float h = dht.readHumidity(); // Read temperature as Celsius (the default)
float t = dht.readTemperature();
delay (200);
if (sim800.available() > 0) {
textMessage = sim800.readString();
Serial.print(textMessage);
delay(100);
}
if (textMessage.indexOf("On 1") >= 0) { // Turn on relay and save current state
digitalWrite(relay1, LOW);
lampState1 = "on";
Serial.println("Relay1 set to ON");
textMessage = "";
}
if (textMessage.indexOf("Off 1") >= 0) { // Turn off relay and save current state
digitalWrite(relay1, HIGH);
lampState1 = "off";
Serial.println("Relay1 set to OFF");
textMessage = "";
}
if (textMessage.indexOf("On 2") >= 0) { // Turn on relay and save current state
digitalWrite(relay1, LOW);
lampState2 = "on";
Serial.println("Relay2 set to ON");
textMessage = "";
}
if (textMessage.indexOf("Off 2") >= 0) { // Turn off relay and save current state
digitalWrite(relay1, HIGH);
lampState2 = "off";
Serial.println("Relay2 set to OFF");
textMessage = "";
}
if (textMessage.indexOf("State") >= 0) {
String message = "Relay 1 is " + lampState1 + ", Relay 2 is " + lampState2;
sendSMS(message);
Serial.write("Relay's resquest");
textMessage = "";
}
if (textMessage1.indexOf("Temp") >= 0) {
String message1 = "DHT11\nTemp = " + String(t, 1) + " C" + " \nHumidity = " + String(h, 1) + " %";
sendSMS(message1);
Serial.write("Temp request");
textMessage1 = "";
}
}
void sendSMS(String message) {
sim800.write("AT+CMGF=1\r\n"); // AT command to set sim800 to SMS mode
delay(100);
sim800.write("AT+CMGS="+27825732889"\r\n"); // change to your sim800's your phone number
delay(100);
sim800.println(message); // Send the SMS
delay(100);
sim800.println((char)26);
delay(5000);
// sim800.println("AT+CMGD=1,2");
sim800.print("AT+CMGDA="");
sim800.println("DEL ALL"");
delay(500);
Serial.println( "All Messages Deleted" );
}