Buenas!!! Me encuentro en un proyecto el cual consiste en el aviso por mensaje de texto cuando se produce la activación de una protección eléctrica en un tablero de control. Uso un Atmega328P-PU, programo con el ID de Arduino y el módulo GSM es el SIM800L.
El sistema, básicamente, envía un sms a un determinado número de teléfono celular avisando el corte de luz de una casa.
La función principal ya está realizada, pero me encontré con un inconveniente muy importante: una de las funciones que quiero agregarle al sistema es que se pueda consultar el saldo de la línea que éste utiliza mediante un sms, mediante los siguientes pasos:
1- envío al dispositivo un sms con la palabra "Saldo" desde mi celular.
2- el dispositivo detecta que le llegó un sms con la palabra "Saldo" y envía un sms a la compañía consultando el saldo.
3- cuando el dispositivo recibe el sms de respuesta de la compañía, este reenvía el mismo mensaje a mi teléfono, desde el cual se ha consultado el saldo.
La función que realiza esto es la siguiente:
Mi inconveniente se encuentra en la variable "comando", ya que cuando el dispositivo tiene que reenviar el mensaje con el saldo, envía caracteres sin sentido (hasta envía fragmentos de otros comandos AT) como lo siguiente:
Qué estoy haciendo mal??? Espero haber sido claro.
Muchas gracias como siempre!!!
El sistema, básicamente, envía un sms a un determinado número de teléfono celular avisando el corte de luz de una casa.
La función principal ya está realizada, pero me encontré con un inconveniente muy importante: una de las funciones que quiero agregarle al sistema es que se pueda consultar el saldo de la línea que éste utiliza mediante un sms, mediante los siguientes pasos:
1- envío al dispositivo un sms con la palabra "Saldo" desde mi celular.
2- el dispositivo detecta que le llegó un sms con la palabra "Saldo" y envía un sms a la compañía consultando el saldo.
3- cuando el dispositivo recibe el sms de respuesta de la compañía, este reenvía el mismo mensaje a mi teléfono, desde el cual se ha consultado el saldo.
La función que realiza esto es la siguiente:
Código:
void saldo()//
{
int i;
Comando = ""; // variable string
delay(500);
mySerial.println("AT+CMGF=1"); // Activamos la funcion de envio de SMS
delay(1000); // Pequeña pausa
mySerial.println("AT+CMGS=\"444\""); // Marco número de consulta de Saldo Movistar
delay(1000); // Pequeña pausa
mySerial.println("saldo");
delay(500); // Pequeña pausa
mySerial.println(char(26)); // Enviamos el equivalente a Control+Z
delay(1000); // Pequeña pausa
mySerial.println(""); // Enviamos una linea vacia
for (int i=0;i<10;i++)// espero unos segundo
{
delay(1000);
}
int x=0;
do
{
if (mySerial.available())// cuando tengo algo en el serial es que la compañia me contestó
{ //Si hay datos disponibles
delay(100);
Comando = mySerial.readString(); //Los almacenamos en la variable Comando
delay(1000);
x=1;
}
}while (x==0);
delay(1000);
mySerial.println("AT+CMGF=1"); // Activamos la funcion de envio de SMS
delay(100); // Pequeña pausa
mySerial.println("AT+CMGS=\"1130xxxxxx\""); // Marco número...
delay(1000); // Pequeña pausa
mySerial.print(comando);//reenvío la contestación de la compañía
delay(1000); // Pequeña pausa
mySerial.println(char(26)); // Enviamos el equivalente a Control+Z
delay(1000); // Pequeña pausa
mySerial.println(""); // Enviamos una linea vacia
delay(1000);
Comando = ""; //Vaciamos la variable
}
Mi inconveniente se encuentra en la variable "comando", ya que cuando el dispositivo tiene que reenviar el mensaje con el saldo, envía caracteres sin sentido (hasta envía fragmentos de otros comandos AT) como lo siguiente:
+CMT: "01130xxxxxx","","16/08/08,20:45:06-12"
Saldo
AT+CMGF=1
OK
AT+CMGS="444"
> saldo
>
>
+CMGS: 7
OK
+CMT: "444","","16/08/08,20:45:20-12"
Tu saldo actual es de 1.25 pesos. Sin credito? Podes llamar por cobrar marcando 19 +Cod Area+Nro Movistar sin 0 ni 15. Ej 191153210000 Infowebmovistar.
AT+CMGF=1
OK
AT+CMGS="1130xxxxxx"
> AT+¨S”TŠj
> OKCáAT+CMÔªO$“¤CC!þsaldo>
> >
> +
>
+CMGS: 9
Qué estoy haciendo mal??? Espero haber sido claro.
Muchas gracias como siempre!!!