/*GSM Remote mains Switch July 2016 * based on excellent article - * http://www.circuitstoday.com/interface-gsm-module-with-arduino * jojo * */ #include SoftwareSerial mySerial(9, 10); //9 GSM TX 10 GSM RX //SoftwareSerial mySerial(7,8); String realstring =""; String inString = ""; // string to hold in String txt="Arduino - Status Changed "; int swnum; int swstat; void setup() { pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); mySerial.begin(9600); // Setting the baud rate of GSM Module delay(1000); Serial.begin(9600); // Setting the baud rate of Serial Monitor (Arduino) delay(5000); Serial.println("SMS"); mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode delay(1000); RecieveMessage(); } void loop() { if (Serial.available()>0) switch(Serial.read()) { Serial.println("SMS"); case 's': SendMessage(); break; case 'r': RecieveMessage(); break; case 'b': SendMessageb(); break; } if (mySerial.available()>0) { int inChar = mySerial.read(); // (mySerial.read()); realstring += (char)inChar; Serial.write(inChar); if (realstring.endsWith("4on#")) { //o/p 4 on Serial.println(); Serial.println("4On"); SW(4,1); realstring = ""; } if (realstring.endsWith("4off#")) { // o/p 4 off Serial.println(); Serial.println("4off"); SW(4,0); realstring = ""; } //=========================== Text back Status ================== if (realstring.endsWith("4on$#")) { // o/p 4 on & reply text with confirmation Serial.println(); Serial.println("4On"); SW(4,1); conf(); /* SendMessage(); delay(1000); RecieveMessage(); */ realstring = ""; } if (realstring.endsWith("4off$#")) { // o/p 4 off & reply text with confirmation Serial.println(); Serial.println("Off"); SW(4,0); conf(); /* SendMessage(); delay(1000); RecieveMessage(); */ realstring = ""; } } } void SendMessage() { mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode delay(1000); // Delay of 1000 milli seconds or 1 second mySerial.println("AT+CMGS=\"+4471234567\"\r"); // Replace x with mobile number delay(1000); //String txt="Arduino - Switch Status Changed"; mySerial.println(txt+"Switch : "+String(swnum)+" Status : "+String(swstat)); //mySerial.println("I am SMS from GSM Module");// The SMS text you want to send delay(100); mySerial.println((char)26);// ASCII code of CTRL+Z delay(1000); } void RecieveMessage() { mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS delay(1000); } int SW(int num,int stat) { digitalWrite(num,stat); swnum=num; swstat=stat; } void conf() { SendMessage(); delay(1000); RecieveMessage(); } void SendMessageb() { mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode delay(1000); // Delay of 1000 milli seconds or 1 second mySerial.println("AT+CMGS=\"+2112\"\r"); // Replace x with mobile number delay(1000); mySerial.println("BALANCE"); delay(100); mySerial.println((char)26);// ASCII code of CTRL+Z delay(1000); }