Hola a todos, tengo una duda, no se como hacer para responder un sms con la sim800l, este es el codigo que uso:
//Programa: Control de Arduino por SMS con SIM800L
//Autor: Rch-Bytec.com.ar
#include <Sim800l.h>
#include <SoftwareSerial.h>
Sim800l Sim800l;
String textSms, numberSms;
uint8_t LED1 = 7; //Conexao Led vermelho
uint8_t LED2 = 8; //Conexao Led verde
bool error;
char* text;
char* number;
char admin[] ={"+xxxxxxxxxx"}; // numero del Administrador
void setup()
{
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
Sim800l.begin();
Serial.print("Limpando SMS antiguos...");
text="Iniciando sistema";
number="+xxxxxxxxxx";
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
Serial.println(" Listo!");
Serial.println("\nAguardando comandos por SMS...");
delay (500);
text="\nAguardando comandos por SMS...";
number="+xxxxxxxxxx";
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
}
void loop()
{
//Le o SMS da posicao 1
textSms = Sim800l.readSms(1);
//Verifica se o SMS foi recebido e eh valido
if (textSms.indexOf("OK") != -1)
{
//Verifica se o SMS esta vazio
if (textSms.length() > 14)
{
//Retorna o numero do celular que enviou o SMS
numberSms = Sim800l.getNumberSms(1);
//Mostra o numero do telefone no Serial Monitor
Serial.println(numberSms);
//Converte o texto para maiusculas
textSms.toUpperCase();
//Caso receba L1, acende o led 1 (vermelho)
if (numberSms == admin and textSms.indexOf("ENCENDER 1") != -1)
{
Serial.println("Led 1 Encendido");
digitalWrite(LED1, 0);
text="\nRelay 1 encendido.";
number="+xxxxxxxxxx";
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
}
//Caso receba D1, apaga o led 1 (vermelho)
else if (numberSms == admin and textSms.indexOf("APAGAR 1") != -1)
{
Serial.println("Led 1 Apagado");
digitalWrite(LED1, 1);
text="\nRelay 1 apagado.";
number="+xxxxxxxxxx";
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
}
//Caso receba L2, enciende led 2 (verde)
else if (numberSms == admin and textSms.indexOf("ENCENDER 2") != -1)
{
Serial.println("Led 2 Encendido");
digitalWrite(LED2, 0);
text="\nRelay 2 encendido.";
number="+xxxxxxxxxx";
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
}
//Caso receba D2, apaga led 2 (verde)
else if (numberSms == admin and textSms.indexOf("APAGAR 2") != -1)
{
Serial.println("Led 2 Apagado");
digitalWrite(LED2, 1);
text="\nRelay 1 encendido.";
number="+xxxxxxxxxx";
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
}
//Caso receba L1D1, enciende led 1 y 2 (verde)
else if (numberSms == admin and textSms.indexOf("ENCENDER TODO") != -1)
{
Serial.println("Led 1 y 2 Encendidos");
digitalWrite(LED1, 0);
digitalWrite(LED2, 0);
text="\nRelay 1 y encendidos.";
number="+xxxxxxxxxx";
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
}
//Caso receba L2D2, apaga led 1 y 2 (verde)
else if (numberSms == admin and textSms.indexOf("APAGAR TODO") != -1)
{
Serial.println("Led 1 y 2 Apagados");
digitalWrite(LED1, 1);
digitalWrite(LED2, 1);
text="\nRelay 1 y 2 apagados.";
number="+xxxxxxxxxx";
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
}
else{
Serial.println("Su número no está autorizado ...sorry.. :D");
text="\nSu número no está autorizado ...sorry.. :D";
number = Sim800l.getNumberSms(1);
error=Sim800l.sendSms(number,text);
error = Sim800l.delAllSms(); //Apaga SMS
}
//Apaga todos as mensagens da memoria, garantindo que o proximo
//SMS esteja sempre na posicao 1
Sim800l.delAllSms();
}
}
}
en esta linea me da error : error=Sim800l.sendSms(number,text);
me dice: "cannot convert 'String' to 'char*' in assignment"
como puedo hacer para devolverle un mensaje al numero que envio sms y no esta autorizado?
Ya esta resuelto muchas gracias, y disculpen por abrir un post y cerrarlo tan rápido..saludos
Hola Surbyte, lo resolvi con esta linea:
error=Sim800l.sendSms(numberSms.c_str(),text); no se si es la mejor forma pero x el momento responde al numero q haya enviado el sms..
ojala le sirva a otros..saludos..