Buenas tardes, tengo por el momento un codigo que me permite realizar 3 acciones sobre un modulo rele, y cualquier numero que sepa cual es el mensaje a enviar podra manipularlo, quiero evitar esa sitaucion por medio de un string agenda[] que encontre en internet, pero no se como condicionar mi codigo para que si el numero que envio el mensaje esta en el string, realice la accion, creando asi una especie de filtro de seguridad para manipular los reles.
Este es el codigo
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7,8); // Configura el puerto serie para el SIM900
char incoming_char = 0; //Variable que guarda los caracteres que envia el SIM900
String agenda[] = {"XXXXXXXXX" , "XXXXXXXXX"}; //Array con los numeros autorizados
String mensaje = "";
int relay_pin = 2;
void setup()
{
pinMode(relay_pin, OUTPUT); // Setting erlay pin as output pin
digitalWrite(relay_pin, HIGH); // Making relay pin initailly low
inicializaSIM900();
}
void loop()
{
if (SIM900.available() > 0)
{
incoming_char = SIM900.read(); //Guardamos el carácter del GPRS
Serial.print(incoming_char); //Mostramos el carácter en el monitor serie
mensaje = mensaje + incoming_char ; // Añadimos el carácter leído al mensaje
}
identifica_SMS();
}
void inicializaSIM900()
{
digitalWrite(9, HIGH); // Descomentar para activar la alimentación de la tarjeta por Software
delay(1000);
digitalWrite(9, LOW);
delay (5000);
SIM900.begin(19200); //Configura velocidad del puerto serie para el SIM900
Serial.begin(19200); //Configura velocidad del puerto serie del Arduino
Serial.println("OK");
delay (1000);
SIM900.println("AT + CPIN = \"1234\""); //Comando AT para introducir el PIN de la tarjeta
delay(25000); //Tiempo para que encuentre una RED
SIM900.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir mensajes
delay(1000);
SIM900.print("AT+CNMI=2,2,0,0,0\r"); // Saca el contenido del SMS por el puerto serie del GPRS
delay(1000);
}
void identifica_SMS()
{
int led_on = mensaje.indexOf("Encender");
int led_off = mensaje.indexOf("Apagar");
int led_ok = mensaje.indexOf("Reset");
if (led_on >= 0)
{
digitalWrite(relay_pin, LOW);
delay(1000);
Serial.println("\nLED ENCENDIDO");
mensaje = "" ; //Bórralo para la próxima vez
SIM900.print("AT+CMGD=1,4");
}
else if (led_off >= 0)
{
digitalWrite(relay_pin, HIGH);
delay(1000);
Serial.println("\nLED APAGADO");
mensaje = "" ; //Bórralo para la próxima vez
SIM900.print("AT+CMGD=1,4");
}
else if (led_ok >=0)
{
digitalWrite(relay_pin, HIGH);
delay(5000);
digitalWrite(relay_pin, LOW);
Serial.print("\nLED OK");
mensaje = "" ; //Bórralo para la próxima vez
SIM900.print("AT+CMGD=1,4");
}
}
void borrarMensaje()
{
SIM900.print("AT+CMGD=1,4");
delay(60000);
}