/*
Relay 1
TURN OFF REF
TURN ON REF
Relay 2
TURN OFF RICE COOKER
TURN ON RICE COOKER
Relay 3
TURN OFF AIRCON
TURN ON AIRCON
Relay 4
TURN OFF MAIN BREAKER
TURN ON MAIN BREAKER
ALL
ON ALL
OFF ALL
*/
#include <SoftwareSerial.h>
SoftwareSerial gsmSerial(2, 3); // RX, TX
#define RELAY1_PIN 4
#define RELAY2_PIN 5
#define RELAY3_PIN 6
#define RELAY4_PIN 7
void setup() {
Serial.begin(115200);
// Initialize hardware serial communication for GSM module
gsmSerial.begin(9600);
// Set GSM module to text mode
gsmSerial.println("AT+CMGF=1");
delay(1000); // Wait for response
// Enable receiving SMS notifications
gsmSerial.println("AT+CNMI=2,2,0,0,0");
delay(1000); // Wait for response
// Initialize relay pins as outputs
pinMode(RELAY1_PIN, OUTPUT);
pinMode(RELAY2_PIN, OUTPUT);
pinMode(RELAY3_PIN, OUTPUT);
pinMode(RELAY4_PIN, OUTPUT);
// Turn off all relays initially
digitalWrite(RELAY1_PIN, HIGH);
digitalWrite(RELAY2_PIN, HIGH);
digitalWrite(RELAY3_PIN, HIGH);
digitalWrite(RELAY4_PIN, HIGH);
Serial.println("Gsm start");
}
void loop() {
static String message = ""; // Static variable to store incomplete messages
// Check if there's data available from the GSM module
while (gsmSerial.available()) {
char c = gsmSerial.read(); // Read one character
message += c; // Add character to buffer
// Check if the end of message character is received
if (c == '\n') {
// Print the complete message
Serial.println(message);
if (message.indexOf("TURN ON REF") != -1) {
digitalWrite(RELAY1_PIN, LOW);
Serial.println("Ref ON");
} else if (message.indexOf("TURN OFF REF") != -1) {
digitalWrite(RELAY1_PIN, HIGH);
Serial.println("Ref off");
} else if (message.indexOf("TURN ON RICE COOKER") != -1) {
digitalWrite(RELAY2_PIN, LOW);
Serial.println("Cooker on");
} else if (message.indexOf("TURN OFF RICE COOKER") != -1) {
digitalWrite(RELAY2_PIN, HIGH);
Serial.println("Cooker off");
} else if (message.indexOf("TURN ON AIRCON") != -1) {
digitalWrite(RELAY3_PIN, LOW);
Serial.println("AC on");
} else if (message.indexOf("TURN OFF AIRCON") != -1) {
digitalWrite(RELAY3_PIN, HIGH);
Serial.println("AC off");
} else if (message.indexOf("TURN ON MAIN BREAKER") != -1) {
digitalWrite(RELAY4_PIN, LOW);
Serial.println("Breaker on");
} else if (message.indexOf("TURN OFF MAIN BREAKER") != -1) {
digitalWrite(RELAY4_PIN, HIGH);
Serial.println("Breakeroff");
} else if (message.indexOf("ON ALL") != -1) {
digitalWrite(RELAY1_PIN, LOW);
digitalWrite(RELAY2_PIN, LOW);
digitalWrite(RELAY3_PIN, LOW);
digitalWrite(RELAY4_PIN, LOW);
} else if (message.indexOf("OFF ALL") != -1) {
digitalWrite(RELAY1_PIN, HIGH);
digitalWrite(RELAY2_PIN, HIGH);
digitalWrite(RELAY3_PIN, HIGH);
digitalWrite(RELAY4_PIN, HIGH);
}
message = ""; // Clear the buffer for the next message
}
}
}