#include <SoftwareSerial.h>
SoftwareSerial SIM800L(10,11);
int trama=0;
char incoming_char;
String p="";
String valor="";
char inicio_clave;
char clave1;
String clave = "";
int c;
char num;
String mensaje = "";
int LED = 13 ;
bool estado = false ; //Variable para guardar el estado del LED
String agenda[] = {"6692307250"}; //Array con los numeros autorizados
int numtotal = 1; //Cantidad de numeros de telefono autorizados
void setup()
{
pinMode(2, OUTPUT); //Declarar el pin 13 como salida.
digitalWrite(2, HIGH);
Serial.begin(19200); // Inicio del puerto serial para el monitor serial.
SIM800L.begin(19200); // Inicio del puerto serial 1 para el módulo SIM900.
SIM800L.println("AT");
SIM800L.println("AT+CMGF=1\r"); // Configuración del módulo GSM en modo texto.
delay(100);
SIM800L.println("AT+CNMI=2,2,0,0,0\r"); /* El modulo enviará los mensaje
directamente al puerto serial del dispositivo. */
delay(100);
Serial.println("listo.");
}
void loop(){
if (SIM800L.available()>0){
incoming_char=SIM800L.read(); //Lectura de datos del puerto serial.
if((trama == 0) && (incoming_char == 'C')){
trama = 1;
p="";
clave="";
}
if((trama == 1) && (incoming_char == 'M')){
trama = 2;
}
if((trama == 2) && (incoming_char == 'T')){
trama = 3;
}
if((trama == 3) && (incoming_char == ':')){
trama = 4;
}
if((trama == 4) && (incoming_char == ' ')){
trama = 5;
}
if((trama == 5) && (incoming_char == '"')){
trama=6;
for(int i=0;i<13;i++){
num = SIM800L.read(); //Captura del número remitente. ej: +593982832027
if (num == '"') break;
else
p += num;
}
}
// El mensaje es capturado a partir del caracter salto de línea \n.
if ((trama==6)&&(incoming_char=='\n')){
while(SIM800L.available()>0){
clave1 = SIM800L.read();
clave += clave1;
trama = 0;
c=1;
}
Serial.println(clave); // Imprimo el mensaje enviado desde un remitente.
}
delay(100);
if(p=="6692307250" && c==1){
if(SIM800L.available())
{
valor = SIM800L.readString(); //Guardar en la var valor el sms que recibe el Arduino
Serial.println("Nuevo SMS: "+ valor); //Imprime ese SMS en el monitor Serial
valor.reserve(100);
valor=valor;
}
if(valor.indexOf("Off1")>=0 || valor.indexOf("off1")>=0 || valor.indexOf("OFF1")>=0 )
{ //Si la var valor tiene la palabra ON hace esto:
digitalWrite(2, LOW); //Se enciende el pin 13.
Serial.println("equipo 1 apagado"); //Immprime el mensaje
delay(1500);
}
else if(valor.indexOf("Onn1")>=0 || valor.indexOf("onn1")>=0 || valor.indexOf("ONN1")>=0 )
{ //Si la var valor tiene la palabra ON hace esto:
digitalWrite(2, HIGH); //Se enciende el pin 13.a
Serial.println("equipo 1 encendido"); //Imprime el mensaje
delay(1500);
}
}
}
}
