#include<SoftwareSerial.h>
SoftwareSerial mySerial(10,11); // (Rx,Tx > Tx,Rx)
char incomingByte;
String inputString;
int relay1 = 2; // Output for Relay Control
int relay2 = 3; // Output for Relay Control
void setup()
{
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
digitalWrite(relay1, LOW); // Initial state of the relay
digitalWrite(relay2, LOW); // Initial state of the relay
Serial.begin(9600);
mySerial.begin(9600);
while(!mySerial.available()){
mySerial.println("AT");
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
mySerial.println("AT+CMGF=1"); //Set SMS to Text Mode
delay(1000);
mySerial.println("AT+CNMI=1,2,0,0,0"); //Procedure to handle newly arrived messages(command name in text: new message indications to TE)
delay(1000);
mySerial.println("AT+CMGL=\"REC UNREAD\""); // Read Unread Messages
}
void loop()
{
if(mySerial.available()){
delay(100);
// Serial Buffer
while(mySerial.available()){
incomingByte = mySerial.read();
inputString += incomingByte;
}
delay(10);
Serial.println(inputString);
inputString.toUpperCase(); // Uppercase the Received Message
//turn RELAY ON or OFF
if (inputString.indexOf("LIGHT ON") > -1){
digitalWrite(relay1, HIGH);
}
if (inputString.indexOf("LIGHT OFF") > -1){
digitalWrite(relay1, LOW);
}
if (inputString.indexOf("FAN ON") > -1){
digitalWrite(relay2, HIGH);
}
if (inputString.indexOf("FAN OFF") > -1){
digitalWrite(relay2, LOW);
}
if (inputString.indexOf("ALL ON") > -1){
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
}
if (inputString.indexOf("ALL OFF") > -1){
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
}
delay(50);
//Delete Messages & Save Memory
if (inputString.indexOf("OK") == -1){
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);}
inputString = "";
}
}
Comments
Please log in or sign up to comment.