//GSM SMS Remote control V 3.0 //Created by Antonis G. Kanaris, January 27, 2012. //I use cellphone Sony Ericsson K700i (work serial communication). //Attention !!!!!!! I created this sketch with arduino 0022 software,better load with this. #include //You can disable it , is library for Toyotomi A/C IR signal PulsesIR_Toyotomi pulsesIR_Toyotomi(5);//Pin 5 Ir led pin.You can disable it , is library for Toyotomi A/C IR signal int IRledPin=5; //IR Pulses LED pin int indicatorPin=13; //Indicator LED pin 13 for test with led. String readString; String admin="xxxxxxxxxx"; //admin number pdu code example 30123456 -> 03214365 //read http://www.dreamfabric.com/sms/ for pdu sms and //http://rednaxela.net/pdu.php on line pdu converter or find pdu info from Google. char c; void delsms(){ Serial.println("AT+CMGD=1");//Delete sms possition 1 } void readsmsAT(){ Serial.println("AT+CMGR=1");//Read sms possition 1 AT command delay(3000); } void sendsms_temp(){//Return with sms temperature room degree celcius. int temp=int(analogRead(3)*0.488);//Read temperature sensor LM35 //if (0>1; Serial.println("AT+CMGF=0");//Start send sms with temperature to pdu format delay(3000); Serial.println("AT+CMGS=16");//Maybe for you is 15 or 17 read http://www.dreamfabric.com/sms/ delay(3000); Serial.print("0011000C91xxxxxxxxxxxx10000AA02");//pdu sms temp to admin, //read http://www.dreamfabric.com/sms/ Serial.print(newhightemp2,HEX); Serial.print(newlowtemp2,HEX); delay(3000); Serial.write(26);//Ctrl-z delay(20000); } void setup() { pinMode(IRledPin,OUTPUT); //Setup IR LED mode output pinMode(indicatorPin,OUTPUT); delay(12000);//first time connect cable arduino with phone... Serial.begin(9600); delay(3000); Serial.println("AT+CPMS=\"ME\",\"SM\"");//Set memory phone for store sms to SIM delay(3000); Serial.println("ATE=0");//Echo off delay(3000); } void loop() { readString=0;//format readString... readsmsAT();//read sms repeatedly // read phone reply if available while(Serial.available() > 0) { c=Serial.read(),BYTE; readString+=c; } delay(1000); Serial.println(readString);//serial monitor display sms pdu format delay(3000); if (readString.indexOf(admin)>0 && readString.indexOf("36F770C")>0)// if admin number=true and sms pdu on1=true or pdu on is 26F37 { digitalWrite(indicatorPin, HIGH);//only for test led on pulsesIR_Toyotomi.SendACCodeOn();//AC Toyotomi on delay(5000); //sendsms_temp();//send sms to admin temperature room digitalWrite(indicatorPin, LOW);//only for test } if (readString.indexOf(admin)>0 && readString.indexOf("44FA33106")>0)// admin number and pdu OFF1 or pdu off is 36FB319 { pulsesIR_Toyotomi.SendACCodeOff();//AC Toyotomi off delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("364791E")>0)// admin number and //pdu dry { pulsesIR_Toyotomi.SendACCode_modeDry();//AC Toyotomi Dry delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("4E3F79B0D")>0)// admin number and //pdu cool { pulsesIR_Toyotomi.SendACCode_modeCool();//AC Toyotomi cool delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("4C13AFD0D")>0)// admin number and //pdu Auto { pulsesIR_Toyotomi.SendACCode_modeAuto();//AC Toyotomi mode Auto delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("3C6B01B")>0)// admin number and //pdu Fan { pulsesIR_Toyotomi.SendACCode_modeFan();//AC Toyotomi mode Fan delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("4E872980E")>0)// admin number and //pdu heat { pulsesIR_Toyotomi.SendACCode_modeHeat();//AC Toyotomi Heat delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("7C6B01BC47EDF01")>0)// admin //number and pdu Fan low { pulsesIR_Toyotomi.SendACCode_modeFanspeedLow();//AC Toyotomi Fan speed low delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("AC6B01BD42E93D3F536")>0)// //admin number and pdu Fan medium { pulsesIR_Toyotomi.SendACCode_modeFanspeedMedium();//AC Toyotomi Fan speed //medium delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("8C6B01B844E9FD1")>0)// admin //number and pdu Fan high { pulsesIR_Toyotomi.SendACCode_modeFanspeedHigh();//AC Toyotomi Fan speed high delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("8C6B01B14AED3DF")>0)// admin //number and pdu Fan auto { pulsesIR_Toyotomi.SendACCode_modeFanspeedAuto();//AC Toyotomi Fan speed Auto delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("7D4721B0E9AC100")>0)// admin //number and pdu Temp 30 { pulsesIR_Toyotomi.SendACCode_Temp_30();//AC Toyotomi Temp 30 delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("7D4721B0E92D500")>0)// admin //number and pdu Temp 25 { pulsesIR_Toyotomi.SendACCode_Temp_25();//AC Toyotomi Temp 25 delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("7D4721B0E92C100")>0)// admin //number and pdu Temp 20 { pulsesIR_Toyotomi.SendACCode_Temp_20();//AC Toyotomi Temp 20 delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("7D4721B0E8AD900")>0)// admin //number and pdu Temp 16 { pulsesIR_Toyotomi.SendACCode_Temp_16();//AC Toyotomi Temp 16 delay(3000); } if (readString.indexOf(admin)>0 && readString.indexOf("F4721B0E")>0)// admin number and //pdu temp { sendsms_temp(); delay(3000); } if (readString.length()>40)//delete sms if sms received { delsms();//delete sms } delay(10000);//delay start loop again for check new sms... }