Friday, September 22, 2017

ruwet with sim800l v2



#include <gprs.h>
#include <SoftwareSerial.h>

#define TIMEOUT    5000
#define LED_PIN    13
#define ON HIGH
#define OFF LOW

//tx 2
//rx 4
const int Relay1 = 7;
const int Relay2 = 6;
const int Relay3 = 5;
const int Relay4 = 3;


const int DI1 = A0;                                      
const int DI2 = A1;                          

int buttonState1=0;
int lastButtonState1=0;

int buttonState2=0;
int lastButtonState2=0;                   


int StatRelay1;
int StatRelay2;
int StatRelay3;
int StatRelay4;

GPRS gprs;

void setup() {
  pinMode (Relay1 , OUTPUT); digitalWrite (Relay1, LOW);
  pinMode (Relay2 , OUTPUT); digitalWrite (Relay2, LOW);
  pinMode (Relay3 , OUTPUT); digitalWrite (Relay3, LOW);
  pinMode (Relay4 , OUTPUT); digitalWrite (Relay4, LOW);
 
  pinMode (DI1 , INPUT);
  pinMode (DI2 , INPUT);
 
 
 
  Serial.begin(9600);
  while(!Serial);

  Serial.println("Starting SIM800 Auto Read SMS");
  gprs.preInit();
  delay(1000);

  while(0 != gprs.init()) {
      delay(1000);
      Serial.print("init error\r\n");
  }

  //Set SMS mode to ASCII
  if(0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", TIMEOUT)) {
    ERROR("ERROR:CNMI");
    return;
  }
  
  //Start listening to New SMS Message Indications
  if(0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", TIMEOUT)) {
    ERROR("ERROR:CNMI");
    return;
  }

  Serial.println("Init success");
}

//Variable to hold last line of serial output from SIM800
char currentLine[500] = "";
int currentLineIndex = 0;

//Boolean to be set to true if message notificaion was found and next
//line of serial output is the actual SMS message content
bool nextLineIsMessage = false;

void loop() {
   int buttonState1=digitalRead(DI1);
 
  int buttonState2=digitalRead(DI2); 
  int teg =analogRead (A2);
  {
    if (buttonState1!= lastButtonState1)
    {
  if (buttonState1 == HIGH)
  {
    gprs.sendSMS("085853830668", "1 2 1");
    Serial.println("\nDI 1ON");
    }
  else {
   gprs.sendSMS("085853830668", "1 2 0");
    Serial.println("\nDI 1OFF");
  }
    }
    lastButtonState1=buttonState1;
  delay(300);
  }
 
  //Write current status to LED pin
  digitalWrite(Relay1, StatRelay1);
  digitalWrite(Relay2, StatRelay2);
  digitalWrite(Relay3, StatRelay3);
  digitalWrite(Relay4, StatRelay4);
  
  //If there is serial output from SIM800
  if(gprs.serialSIM800.available()){
    char lastCharRead = gprs.serialSIM800.read();
    //Read each character from serial output until \r or \n is reached (which denotes end of line)
    if(lastCharRead == '\r' || lastCharRead == '\n'){
        String lastLine = String(currentLine);
        
        //If last line read +CMT, New SMS Message Indications was received.
        //Hence, next line is the message content.
        if(lastLine.startsWith("+CMT:")){
          
          Serial.println(lastLine);
          nextLineIsMessage = true;
          
        } else if (lastLine.length() > 0) {
          
          if(nextLineIsMessage) {
            Serial.println(lastLine);
            

// ########## MEMBACA KONTEN SMS DAN MENCARI+MENGARTIKAN KONTEN SMS KE PROGRAM #########
            //Kendali Relay
              if(lastLine.indexOf("1 1 1") >= 0){
              StatRelay1 = ON;
              Serial.println("DO1 ON");
              gprs.sendSMS ("085853830668","1 1 1");}
              else if(lastLine.indexOf("1 1 0") >= 0) {
              StatRelay1 = OFF;
              Serial.println("DO1 OFF");
              gprs.sendSMS ("085853830668","1 1 0");}
           
             
              if(lastLine.indexOf("1 5 1") >= 0){
              StatRelay2 = ON;
              Serial.println("Relay2 DINYALAKAN");
              gprs.sendSMS ("085853830668","1 5 1");}
              else if(lastLine.indexOf("1 5 0") >= 0) {
              StatRelay2 = OFF;
              Serial.println("Relay2 DIMATIKAN");
              gprs.sendSMS ("085853830668","1 5 0");}

              if(lastLine.indexOf("Relay3 ON") >= 0){
              StatRelay3 = ON;
              Serial.println("Relay3 DINYALAKAN");
              gprs.sendSMS ("081555305255","Relay3 DINYALAKAN");}
              else if(lastLine.indexOf("Relay3 OFF") >= 0) {
              StatRelay3 = OFF;
              Serial.println("Relay3 DIMATIKAN");
              gprs.sendSMS ("081555305255","Relay3 DIMATIKAN");}

              if(lastLine.indexOf("Relay4 ON") >= 0){
              StatRelay4 = ON;
              Serial.println("Relay4 DINYALAKAN");
              gprs.sendSMS ("081555305255","Relay4 DINYALAKAN");}
              else if(lastLine.indexOf("Relay4 OFF") >= 0) {
              StatRelay4 = OFF;
              Serial.println("Relay4 DIMATIKAN");
              gprs.sendSMS ("081555305255","Relay4 DIMATIKAN");}
           
              if(lastLine.indexOf("update") >= 0){
              Serial.println("update analog");
              gprs.sendSMS ("085853830668", teg);}
             
           
            
            nextLineIsMessage = false;
          }
          
        }
        
        //Clear char array for next line of read
        for( int i = 0; i < sizeof(currentLine);  ++i ) {
         currentLine[i] = (char)0;
        }
        currentLineIndex = 0;
    } else {
      currentLine[currentLineIndex++] = lastCharRead;
    }
  }
}

No comments:

Post a Comment

membuat modbus serial/RTU RS485 yang sangat mudah dan simple

berikut langsung saja saya share koding modbus serial/RTU RS485, semoga bermanfaat.  koding ini mohon tidak diperjual belikan. /* Au...