bangnaga

SMS ICOMSAT Read SMS (Control Relay With Delay)

Feb 8th, 2015 (edited)
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.54 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2. #define rxPin 2
  3. #define txPin 3
  4. SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
  5. String SmsStorePos = String("");
  6. String msg = String("");
  7. String snTmp = String("");
  8. String snFull = String("");
  9. int SmsContentFlag = 0;
  10.  
  11. int ledPin = 5;
  12. int powerPin = 6;
  13. void setup()
  14. {
  15.   mySerial.begin(19200);              
  16.   mySerial.print("\r");
  17.   delay(1000);
  18.   Serial.begin(19200);                
  19.   Serial.println("Started!");
  20.  
  21.   pinMode( ledPin, OUTPUT );
  22.  digitalWrite( ledPin, HIGH );
  23.  
  24.   pinMode( powerPin, OUTPUT);
  25. //  digitalWrite(powerPin, LOW);    
  26. //  delay(3000);
  27. //  digitalWrite(powerPin, HIGH);  
  28. //  delay(5000);
  29.  
  30.  
  31. //  digitalWrite ( ledPin, HIGH);
  32. //  delay(1000);
  33. // digitalWrite( ledPin, LOW);
  34.  
  35.      mySerial.print("AT+CMGF=1\r");  
  36.     delay(1000);
  37. }
  38.  
  39. void loop()
  40. {
  41.     char SerialInByte;
  42.     if(Serial.available())
  43.     {
  44.        mySerial.print((unsigned char)Serial.read());
  45.      }  
  46.     else  if(mySerial.available())
  47.     {
  48.         char SerialInByte;
  49.         SerialInByte = (unsigned char)mySerial.read();
  50.         Serial.print( SerialInByte );
  51.         if( SerialInByte == 13 ){
  52.           ProcessGprsMsg();
  53.          }
  54.          if( SerialInByte == 10 ){
  55.          }
  56.          else {
  57.            msg += String(SerialInByte);
  58.          }
  59.      }  
  60. }
  61.  
  62. void ProcessSms( String sms ){
  63.   sms.toLowerCase();
  64.   Serial.print( "ProcessSms for [" );
  65.   Serial.print( sms );
  66.   Serial.println( "]" );
  67.   if( sms.indexOf("on") >= 0 ){
  68.     digitalWrite( ledPin, LOW );
  69.     Serial.println( "LED IS ON" );
  70.     delay (5000);
  71.     digitalWrite( ledPin, HIGH );
  72.     Serial.println( "LED IS OFF" );
  73.     return;
  74.   }
  75.   if( sms.indexOf("off") >= 0 ){
  76.     digitalWrite( ledPin, HIGH );
  77.     Serial.println( "LED IS OFF" );
  78.     return;
  79.   } else {
  80.     mySerial.print("AT+CMGF=1\r");    
  81.     delay(1000);
  82.     mySerial.print("AT+CMGS=\"");
  83.     mySerial.print(snFull);
  84.     mySerial.print("\"\r");
  85.     delay(1000);
  86.     mySerial.print("Intruksi SMS tidak valid : ");
  87.     mySerial.print(sms);
  88.     mySerial.print("\r");
  89.     delay(1000);
  90.     mySerial.write(0x1A);
  91.     return;
  92.   }
  93. }
  94.  
  95. void GprsTextModeSMS(){
  96.   mySerial.println( "AT+CMGF=1" );
  97. }
  98.  
  99. void GprsReadSmsStore( String SmsStorePos ){
  100.   mySerial.print( "AT+CMGR=" );
  101.   mySerial.println( SmsStorePos );
  102. }
  103.  
  104. void ClearGprsMsg(){
  105.   msg = "";
  106. }
  107.  
  108. void ProcessGprsMsg() {
  109.   Serial.println("");
  110.   Serial.print( "Pesan GPRS: [" );
  111.   Serial.print( msg );
  112.   Serial.println( "]" );
  113.  
  114.   if( msg.indexOf( "Call Ready" ) >= 0 ){
  115.      Serial.println( "*** Sistem siap menerima instruksi ***" );
  116.      GprsTextModeSMS();
  117.   }
  118.  
  119.   if( msg.indexOf( "+CMTI" ) >= 0 ){
  120.      Serial.println( "*** Ada SMS Masuk ***" );
  121.      int iPos = msg.indexOf( "," );
  122.      SmsStorePos = msg.substring( iPos+1 );
  123.      Serial.print( "SMS terekam di possisi: " );
  124.      Serial.println( SmsStorePos );
  125.      GprsReadSmsStore( SmsStorePos );
  126.   }
  127.   if( msg.indexOf( "+CMGR:" ) >= 0 ){
  128.     int snPos = msg.indexOf("+1");
  129.     Serial.print("SMS Dari: ");
  130.     snTmp = msg.substring(snPos+1);
  131.     snFull = "";
  132.     for (int i = 0; i < 11; i++){
  133.       snFull += snTmp[i];    
  134.     }
  135.     Serial.println(snFull);
  136.     SmsContentFlag = 1;
  137.     ClearGprsMsg();
  138.     return;
  139.   }
  140.   if( SmsContentFlag == 1 ){
  141.     Serial.println( msg );
  142.     Serial.println( "ISI SMS :" );
  143.     ProcessSms( msg );
  144.     delSMS();
  145.   }
  146.   ClearGprsMsg();
  147.   SmsContentFlag = 0;
  148. }
  149. void delSMS() {
  150.   mySerial.print("AT+CMGD=");
  151.   mySerial.println(SmsStorePos);
  152.   Serial.println( "Menghapus SMS" );
  153. }
Advertisement
Add Comment
Please, Sign In to add comment