alarma finca rionegro

Dependencies:   DebouncedIn mbed

Committer:
tony63
Date:
Fri Oct 21 20:28:49 2016 +0000
Revision:
0:f7aa7972da4d
alarma finca rionegro

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:f7aa7972da4d 1 /*************************Alarma para una finca*********************************************************
tony63 0:f7aa7972da4d 2 Como modem usa un celular SIEMENS a56i
tony63 0:f7aa7972da4d 3 Envia el mensaje intruso en rionegro
tony63 0:f7aa7972da4d 4 Como modem GSM usa un celular SIEMENS A56i
tony63 0:f7aa7972da4d 5 El conector se distingue asi:
tony63 0:f7aa7972da4d 6 Cable verde es RX conectelo a PTE0 cable blanco es TX conectelo a PTE1
tony63 0:f7aa7972da4d 7 La alarma se dispara segun la señal de un sensor PIR que se le filtra el ruido
tony63 0:f7aa7972da4d 8 La alarma puede hacer accionamientos como:
tony63 0:f7aa7972da4d 9 Accionamiento Permanente de una sirena
tony63 0:f7aa7972da4d 10 Accionaminto temporizado de una sirena
tony63 0:f7aa7972da4d 11 Accionamiento de un Mensaje de voz reperido y temporizado
tony63 0:f7aa7972da4d 12 */
tony63 0:f7aa7972da4d 13
tony63 0:f7aa7972da4d 14 #include "mbed.h"
tony63 0:f7aa7972da4d 15 #include "DebouncedIn.h"
tony63 0:f7aa7972da4d 16 #include "stdio.h"
tony63 0:f7aa7972da4d 17 #include "string.h"
tony63 0:f7aa7972da4d 18
tony63 0:f7aa7972da4d 19 int i,ret;
tony63 0:f7aa7972da4d 20 Timer t;
tony63 0:f7aa7972da4d 21 DigitalOut LedVerde(LED2);
tony63 0:f7aa7972da4d 22 DigitalOut LedRojo(LED1);
tony63 0:f7aa7972da4d 23 DigitalOut LedAzul(LED3);
tony63 0:f7aa7972da4d 24 DigitalOut Camara(PTD4);
tony63 0:f7aa7972da4d 25 DigitalOut Sirena(PTA2);
tony63 0:f7aa7972da4d 26 DigitalOut Luces(LED3);
tony63 0:f7aa7972da4d 27 DebouncedIn PIR(PTA13); //señal que inicia el envio del mensaje
tony63 0:f7aa7972da4d 28 Serial GSM(PTE0,PTE1); //Configura puerto UART de la FRDMKL25Z
tony63 0:f7aa7972da4d 29 Serial pc(USBTX,USBRX);//Configura puerto USB a la consola serial del PC conectado.
tony63 0:f7aa7972da4d 30 char buffer[50];
tony63 0:f7aa7972da4d 31 char resp[10];
tony63 0:f7aa7972da4d 32 char tel[10];
tony63 0:f7aa7972da4d 33 char tam [2];
tony63 0:f7aa7972da4d 34 char msg [10];
tony63 0:f7aa7972da4d 35 //***************************************FUNCIONES EN C*********************
tony63 0:f7aa7972da4d 36 //****************************************************************************************************************
tony63 0:f7aa7972da4d 37 //esta funcion de abajo lee todo un bufer hasta encontrar CR o LF y el resto lo rellena de
tony63 0:f7aa7972da4d 38 //$, count es lo que va a leer.Lo leido lo mete en buffer que es una cadena previamente definida
tony63 0:f7aa7972da4d 39 //incorpora medida de tiempo si se demora mas de tres segundos retorna fracaso con -1
tony63 0:f7aa7972da4d 40 //****************************************************************************************************************
tony63 0:f7aa7972da4d 41 int readBuffer(char *buffer,int count)
tony63 0:f7aa7972da4d 42 {
tony63 0:f7aa7972da4d 43 int i=0;
tony63 0:f7aa7972da4d 44 t.start(); // start timer
tony63 0:f7aa7972da4d 45 while(1) {
tony63 0:f7aa7972da4d 46 while (GSM.readable()) {
tony63 0:f7aa7972da4d 47 char c = GSM.getc();
tony63 0:f7aa7972da4d 48 if (c == '\r' || c == '\n') c = '$';
tony63 0:f7aa7972da4d 49 buffer[i++] = c;
tony63 0:f7aa7972da4d 50 if(i > count)break;
tony63 0:f7aa7972da4d 51 }
tony63 0:f7aa7972da4d 52 if(i > count)break;
tony63 0:f7aa7972da4d 53 if(t.read() > 3) {
tony63 0:f7aa7972da4d 54 t.stop();
tony63 0:f7aa7972da4d 55 t.reset();
tony63 0:f7aa7972da4d 56 break;
tony63 0:f7aa7972da4d 57 }
tony63 0:f7aa7972da4d 58 }
tony63 0:f7aa7972da4d 59 wait(0.5);
tony63 0:f7aa7972da4d 60 while(GSM.readable()) { // display the other thing..
tony63 0:f7aa7972da4d 61 char c = GSM.getc();
tony63 0:f7aa7972da4d 62 }
tony63 0:f7aa7972da4d 63 return 0;
tony63 0:f7aa7972da4d 64 }
tony63 0:f7aa7972da4d 65 //********************************************************************************
tony63 0:f7aa7972da4d 66 /* esta funcion de abajo limpia o borra todo un "buffer" de tamaño "count"
tony63 0:f7aa7972da4d 67 lo revisa elemento por elemento y le mete el caracter null que indica fin de cadena
tony63 0:f7aa7972da4d 68 no retorna nada
tony63 0:f7aa7972da4d 69 */
tony63 0:f7aa7972da4d 70 //***************************************************************************************
tony63 0:f7aa7972da4d 71 void cleanBuffer(char *buffer, int count)
tony63 0:f7aa7972da4d 72 {
tony63 0:f7aa7972da4d 73 for(int i=0; i < count; i++) {
tony63 0:f7aa7972da4d 74 buffer[i] = '\0';
tony63 0:f7aa7972da4d 75 }
tony63 0:f7aa7972da4d 76 }
tony63 0:f7aa7972da4d 77 /* esta funcion de abajo envia un comando parametrizado como cadena
tony63 0:f7aa7972da4d 78 puede ser un comando tipo AT
tony63 0:f7aa7972da4d 79 */
tony63 0:f7aa7972da4d 80 //***************************************************************************************
tony63 0:f7aa7972da4d 81 void sendCmd(char *cmd)
tony63 0:f7aa7972da4d 82 {
tony63 0:f7aa7972da4d 83 GSM.puts(cmd);
tony63 0:f7aa7972da4d 84 }
tony63 0:f7aa7972da4d 85 //****************************************************************************************
tony63 0:f7aa7972da4d 86 /* esta funcion de abajo espera la respuesta de un comando que debe ser identica a la cadena "resp" y un tiempo timeout"
tony63 0:f7aa7972da4d 87 si todo sale bien retorna un cero que en la programacion hay que validar
tony63 0:f7aa7972da4d 88 si algo sale mal ( no se parece o se demora mucho )retorna -1 que debera validarse con alguna expresion logica
tony63 0:f7aa7972da4d 89 */
tony63 0:f7aa7972da4d 90 //***************************************************************************************
tony63 0:f7aa7972da4d 91 int waitForResp(char *resp, int timeout)
tony63 0:f7aa7972da4d 92 {
tony63 0:f7aa7972da4d 93 int len = strlen(resp);
tony63 0:f7aa7972da4d 94 int sum=0;
tony63 0:f7aa7972da4d 95 t.start();
tony63 0:f7aa7972da4d 96
tony63 0:f7aa7972da4d 97 while(1) {
tony63 0:f7aa7972da4d 98 if(GSM.readable()) {
tony63 0:f7aa7972da4d 99 char c = GSM.getc();
tony63 0:f7aa7972da4d 100 sum = (c==resp[sum]) ? sum+1 : 0;// esta linea de C# sum se incrementa o se hace cero segun c
tony63 0:f7aa7972da4d 101 if(sum == len)break; //ya acabo se sale
tony63 0:f7aa7972da4d 102 }
tony63 0:f7aa7972da4d 103 if(t.read() > timeout) { // time out chequea el tiempo minimo antes de salir perdiendo
tony63 0:f7aa7972da4d 104 t.stop();
tony63 0:f7aa7972da4d 105 t.reset();
tony63 0:f7aa7972da4d 106 return -1;
tony63 0:f7aa7972da4d 107 }
tony63 0:f7aa7972da4d 108 }
tony63 0:f7aa7972da4d 109 t.stop(); // stop timer antes de retornar
tony63 0:f7aa7972da4d 110 t.reset(); // clear timer
tony63 0:f7aa7972da4d 111 while(GSM.readable()) { // display the other thing..
tony63 0:f7aa7972da4d 112 char c = GSM.getc();
tony63 0:f7aa7972da4d 113 }
tony63 0:f7aa7972da4d 114
tony63 0:f7aa7972da4d 115 return 0;
tony63 0:f7aa7972da4d 116 }
tony63 0:f7aa7972da4d 117 /* esta funcion de abajo es muy completa e util se encarga de enviar el comando y esperar la respuesta
tony63 0:f7aa7972da4d 118 si todo sale bien retorna un cero(herencia de las funciones contenedoras) que en la programacion hay que validar
tony63 0:f7aa7972da4d 119 con alguna expresion logica
tony63 0:f7aa7972da4d 120 */
tony63 0:f7aa7972da4d 121 //***************************************************************************************
tony63 0:f7aa7972da4d 122 int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout)
tony63 0:f7aa7972da4d 123 {
tony63 0:f7aa7972da4d 124 sendCmd(cmd);
tony63 0:f7aa7972da4d 125 return waitForResp(resp,timeout);
tony63 0:f7aa7972da4d 126 }
tony63 0:f7aa7972da4d 127 /* esta funcion de abajo chequea que el modem este vivo envia AT y le contesta con OK y espera 2 segundos
tony63 0:f7aa7972da4d 128 */
tony63 0:f7aa7972da4d 129 //***************************************************************************************
tony63 0:f7aa7972da4d 130 int powerCheck(void)// este comando se manda para verificar si el modem esta vivo o conectado
tony63 0:f7aa7972da4d 131 {
tony63 0:f7aa7972da4d 132 return sendCmdAndWaitForResp("AT\r\n", "OK", 2);
tony63 0:f7aa7972da4d 133 }
tony63 0:f7aa7972da4d 134
tony63 0:f7aa7972da4d 135 /* esta funcion de abajo chequea el estado de la sim card
tony63 0:f7aa7972da4d 136 y si todo sale bien retorna un cero que en la programacion hay que validar
tony63 0:f7aa7972da4d 137 con alguna expresion logica
tony63 0:f7aa7972da4d 138 */
tony63 0:f7aa7972da4d 139 //***************************************************************************************
tony63 0:f7aa7972da4d 140 int checkSIMStatus(void)
tony63 0:f7aa7972da4d 141 {
tony63 0:f7aa7972da4d 142 char gprsBuffer[30];
tony63 0:f7aa7972da4d 143 int count = 0;
tony63 0:f7aa7972da4d 144 cleanBuffer(gprsBuffer,30);
tony63 0:f7aa7972da4d 145 while(count < 3) {
tony63 0:f7aa7972da4d 146 sendCmd("AT+CPIN?\r\n");
tony63 0:f7aa7972da4d 147 readBuffer(gprsBuffer,30);
tony63 0:f7aa7972da4d 148 if((NULL != strstr(gprsBuffer,"+CPIN: READY"))) {
tony63 0:f7aa7972da4d 149 break;
tony63 0:f7aa7972da4d 150 }
tony63 0:f7aa7972da4d 151 count++;
tony63 0:f7aa7972da4d 152 wait(1);
tony63 0:f7aa7972da4d 153 }
tony63 0:f7aa7972da4d 154
tony63 0:f7aa7972da4d 155 if(count == 3) {
tony63 0:f7aa7972da4d 156 return -1;
tony63 0:f7aa7972da4d 157 }
tony63 0:f7aa7972da4d 158 return 0;
tony63 0:f7aa7972da4d 159 }
tony63 0:f7aa7972da4d 160 /* esta funcion de abajo chequea la calidad de la señal
tony63 0:f7aa7972da4d 161 y si todo sale bien retorna con el valor de señal util o un -1 si no es aceptable, en la programacion hay que validar
tony63 0:f7aa7972da4d 162 con alguna expresion logica
tony63 0:f7aa7972da4d 163 */
tony63 0:f7aa7972da4d 164 //***************************************************************************************
tony63 0:f7aa7972da4d 165 int checkSignalStrength(void)
tony63 0:f7aa7972da4d 166 {
tony63 0:f7aa7972da4d 167 char gprsBuffer[100];
tony63 0:f7aa7972da4d 168 int index,count = 0;
tony63 0:f7aa7972da4d 169 cleanBuffer(gprsBuffer,100);
tony63 0:f7aa7972da4d 170 while(count < 3) {
tony63 0:f7aa7972da4d 171 sendCmd("AT+CSQ\r\n");
tony63 0:f7aa7972da4d 172 readBuffer(gprsBuffer,25);
tony63 0:f7aa7972da4d 173 if(sscanf(gprsBuffer, "AT+CSQ$$$$+CSQ: %d", &index)>0) {
tony63 0:f7aa7972da4d 174 break;
tony63 0:f7aa7972da4d 175 }
tony63 0:f7aa7972da4d 176 count++;
tony63 0:f7aa7972da4d 177 wait(1);
tony63 0:f7aa7972da4d 178 }
tony63 0:f7aa7972da4d 179 if(count == 3) {
tony63 0:f7aa7972da4d 180 return -1;
tony63 0:f7aa7972da4d 181 }
tony63 0:f7aa7972da4d 182 return index;
tony63 0:f7aa7972da4d 183 }
tony63 0:f7aa7972da4d 184
tony63 0:f7aa7972da4d 185 //*********************esta funcion inicializa el modem***************
tony63 0:f7aa7972da4d 186 int init()
tony63 0:f7aa7972da4d 187 {
tony63 0:f7aa7972da4d 188 if (0 != sendCmdAndWaitForResp("AT\r\n", "OK", 5)){
tony63 0:f7aa7972da4d 189 return -1;
tony63 0:f7aa7972da4d 190 }
tony63 0:f7aa7972da4d 191 if (0 != sendCmdAndWaitForResp("AT+CNMI=1,1\r\n", "OK", 5)){
tony63 0:f7aa7972da4d 192 return -1;
tony63 0:f7aa7972da4d 193 }
tony63 0:f7aa7972da4d 194 if (0 != sendCmdAndWaitForResp("AT+CMGF=0\r\n", "OK", 5)){
tony63 0:f7aa7972da4d 195 return -1;
tony63 0:f7aa7972da4d 196 }
tony63 0:f7aa7972da4d 197 if (0 != sendCmdAndWaitForResp("AT+CBST=0,0,1\r\n", "OK", 5)){
tony63 0:f7aa7972da4d 198 return -1;
tony63 0:f7aa7972da4d 199 }
tony63 0:f7aa7972da4d 200 return 0;
tony63 0:f7aa7972da4d 201 }
tony63 0:f7aa7972da4d 202
tony63 0:f7aa7972da4d 203 //*****************SE INICIA EL PROGRAMA PRINCIPAL*******************************************************
tony63 0:f7aa7972da4d 204 int main() {
tony63 0:f7aa7972da4d 205 LedVerde=1; //APAGO LOS LEDS
tony63 0:f7aa7972da4d 206 LedRojo=1;
tony63 0:f7aa7972da4d 207 LedAzul=1;
tony63 0:f7aa7972da4d 208 LedRojo=0; // PRENDO EL LED ROJO
tony63 0:f7aa7972da4d 209
tony63 0:f7aa7972da4d 210 //****************CONFIGURAMOS EL MODEM GSM (TELEFONO CELULAR SIEMENS A56i)
tony63 0:f7aa7972da4d 211 inicio1:
tony63 0:f7aa7972da4d 212 ret = init();
tony63 0:f7aa7972da4d 213 if(ret==0){
tony63 0:f7aa7972da4d 214 LedRojo=1;
tony63 0:f7aa7972da4d 215 LedVerde=0;
tony63 0:f7aa7972da4d 216 }
tony63 0:f7aa7972da4d 217 else{
tony63 0:f7aa7972da4d 218 wait(5);
tony63 0:f7aa7972da4d 219 goto inicio1;
tony63 0:f7aa7972da4d 220 }
tony63 0:f7aa7972da4d 221 //*******************************************************************************************
tony63 0:f7aa7972da4d 222 //inicia la recepcion de un mensaje de texto
tony63 0:f7aa7972da4d 223 while(1){
tony63 0:f7aa7972da4d 224 if (GSM.readable()) {
tony63 0:f7aa7972da4d 225 readBuffer(buffer,100);
tony63 0:f7aa7972da4d 226 pc.printf("%s\r\n",buffer);
tony63 0:f7aa7972da4d 227 for(i=0;i<5;i++)
tony63 0:f7aa7972da4d 228 {
tony63 0:f7aa7972da4d 229 resp[i]=buffer[i];
tony63 0:f7aa7972da4d 230 }
tony63 0:f7aa7972da4d 231 pc.printf("%s\r\n",resp);
tony63 0:f7aa7972da4d 232 if(strcmp("$$+CM",resp) == 0){ //COMPARA resp con "+CMTI"
tony63 0:f7aa7972da4d 233 pc.printf("llego MSG\r\n");
tony63 0:f7aa7972da4d 234 cleanBuffer(buffer,10);
tony63 0:f7aa7972da4d 235 wait(0.5);
tony63 0:f7aa7972da4d 236 GSM.printf("AT+CMGL=0\r\n");//envio comando para leer mensaje
tony63 0:f7aa7972da4d 237 pc.printf("AT+CMGL=0\r\n");
tony63 0:f7aa7972da4d 238 //if (GSM.readable()) {
tony63 0:f7aa7972da4d 239 GSM.printf("AT+CMGD=0\r\n");
tony63 0:f7aa7972da4d 240 readBuffer(buffer,100);
tony63 0:f7aa7972da4d 241 pc.printf("%s\r\n",buffer);
tony63 0:f7aa7972da4d 242 wait(5);
tony63 0:f7aa7972da4d 243 //leer telefono
tony63 0:f7aa7972da4d 244 for(i=0;i<10;i++){
tony63 0:f7aa7972da4d 245 tel[i]=buffer[i+40];
tony63 0:f7aa7972da4d 246 }
tony63 0:f7aa7972da4d 247 pc.printf("%s-\r\n",tel);
tony63 0:f7aa7972da4d 248 //leer tamaño
tony63 0:f7aa7972da4d 249 for(i=0;i<2;i++){
tony63 0:f7aa7972da4d 250 tam[i]=buffer[i+68];
tony63 0:f7aa7972da4d 251 }
tony63 0:f7aa7972da4d 252 pc.printf("%s-\r\n",tam);
tony63 0:f7aa7972da4d 253 //leer mensaje
tony63 0:f7aa7972da4d 254 for(i=0;i<14;i++){
tony63 0:f7aa7972da4d 255 msg[i]=buffer[i+70];
tony63 0:f7aa7972da4d 256 }
tony63 0:f7aa7972da4d 257 pc.printf("%s-\r\n",msg);
tony63 0:f7aa7972da4d 258 //decodificar mensaje
tony63 0:f7aa7972da4d 259 //comparar mensaje
tony63 0:f7aa7972da4d 260 if(strcmp("417658DE0EC700",msg) == 0){ //COMPARA resp con "417658DE0EC700" que es Alarma1
tony63 0:f7aa7972da4d 261 LedVerde=1;
tony63 0:f7aa7972da4d 262 LedAzul=0;
tony63 0:f7aa7972da4d 263 wait(15);
tony63 0:f7aa7972da4d 264 LedAzul=1;
tony63 0:f7aa7972da4d 265 LedVerde=0;
tony63 0:f7aa7972da4d 266 }
tony63 0:f7aa7972da4d 267 if(strcmp("417658DE0ECB00",msg) == 0){ //COMPARA resp con "417658DE0ECB00" que es Alarma2
tony63 0:f7aa7972da4d 268 LedVerde=1;
tony63 0:f7aa7972da4d 269 LedRojo=0;
tony63 0:f7aa7972da4d 270 wait(15);
tony63 0:f7aa7972da4d 271 LedRojo=1;
tony63 0:f7aa7972da4d 272 LedVerde=0;
tony63 0:f7aa7972da4d 273 }
tony63 0:f7aa7972da4d 274
tony63 0:f7aa7972da4d 275
tony63 0:f7aa7972da4d 276 //ejecurar orden //ya se ejecuto
tony63 0:f7aa7972da4d 277 //08-D6379B1E569763 esto es Voltaje1
tony63 0:f7aa7972da4d 278
tony63 0:f7aa7972da4d 279
tony63 0:f7aa7972da4d 280 cleanBuffer(buffer,100);
tony63 0:f7aa7972da4d 281
tony63 0:f7aa7972da4d 282 }
tony63 0:f7aa7972da4d 283 }
tony63 0:f7aa7972da4d 284
tony63 0:f7aa7972da4d 285
tony63 0:f7aa7972da4d 286
tony63 0:f7aa7972da4d 287
tony63 0:f7aa7972da4d 288 //***************ALARMA POR ACTIVACION PIR***************************************************
tony63 0:f7aa7972da4d 289 if (PIR.falling())
tony63 0:f7aa7972da4d 290 {
tony63 0:f7aa7972da4d 291 wait(1);
tony63 0:f7aa7972da4d 292 if (!PIR)
tony63 0:f7aa7972da4d 293 {
tony63 0:f7aa7972da4d 294
tony63 0:f7aa7972da4d 295 //**********se envia la palabra Intrusos en rionegro a cuatro telefonos diferentes....
tony63 0:f7aa7972da4d 296 //******Gustavo
tony63 0:f7aa7972da4d 297 GSM.printf("AT+CMGS=50\n\r");
tony63 0:f7aa7972da4d 298 wait_ms(200);
tony63 0:f7aa7972da4d 299 GSM.printf("0011000A9113223717370000AA2A21970B19CE83926EBABC3E7FCF41453788190699D3EE7118442E83A4E9B7BB7C96BF5DAE10");
tony63 0:f7aa7972da4d 300 wait_ms(200);
tony63 0:f7aa7972da4d 301 GSM.putc((char)0x1A);
tony63 0:f7aa7972da4d 302 }
tony63 0:f7aa7972da4d 303 }
tony63 0:f7aa7972da4d 304
tony63 0:f7aa7972da4d 305
tony63 0:f7aa7972da4d 306 }// while
tony63 0:f7aa7972da4d 307 }// main
tony63 0:f7aa7972da4d 308 /*
tony63 0:f7aa7972da4d 309 // P
tony63 0:f7aa7972da4d 310 /* GSM.printf("AT+CMGS=50\n\r");
tony63 0:f7aa7972da4d 311 wait_ms(200);
tony63 0:f7aa7972da4d 312 GSM.printf("0011000A91-00000000-0000AA2A21970B19CE83926EBABC3E7FCF41453788190699D3EE7118442E83A4E9B7BB7C96BF5DAE10");
tony63 0:f7aa7972da4d 313 wait_ms(200);
tony63 0:f7aa7972da4d 314 GSM.putc((char)0x1A);
tony63 0:f7aa7972da4d 315 // Y
tony63 0:f7aa7972da4d 316 GSM.printf("AT+CMGS=50\n\r");
tony63 0:f7aa7972da4d 317 wait_ms(200);
tony63 0:f7aa7972da4d 318 GSM.printf("0011000A91-00000000-0000AA2A21970B19CE83926EBABC3E7FCF41453788190699D3EE7118442E83A4E9B7BB7C96BF5DAE10");
tony63 0:f7aa7972da4d 319 wait_ms(200);
tony63 0:f7aa7972da4d 320 GSM.putc((char)0x1A);
tony63 0:f7aa7972da4d 321 // S
tony63 0:f7aa7972da4d 322 GSM.printf("AT+CMGS=50\n\r");
tony63 0:f7aa7972da4d 323 wait_ms(200);
tony63 0:f7aa7972da4d 324 GSM.printf("0011000A91-00000000-0000AA2A21970B19CE83926EBABC3E7FCF41453788190699D3EE7118442E83A4E9B7BB7C96BF5DAE10");
tony63 0:f7aa7972da4d 325 wait_ms(200);
tony63 0:f7aa7972da4d 326 GSM.putc((char)0x1A);
tony63 0:f7aa7972da4d 327
tony63 0:f7aa7972da4d 328 wait(30);
tony63 0:f7aa7972da4d 329 }
tony63 0:f7aa7972da4d 330 }
tony63 0:f7aa7972da4d 331 } //while
tony63 0:f7aa7972da4d 332 } //main
tony63 0:f7aa7972da4d 333
tony63 0:f7aa7972da4d 334 /*
tony63 0:f7aa7972da4d 335 Camara on
tony63 0:f7aa7972da4d 336
tony63 0:f7aa7972da4d 337 da esto
tony63 0:f7aa7972da4d 338 +CMGL: 1,0,,26
tony63 0:f7aa7972da4d 339 0791751330512411040AA1132237173700006150709060250A09C3703B2C0F83DE6E
tony63 0:f7aa7972da4d 340
tony63 0:f7aa7972da4d 341 Camara of da esto
tony63 0:f7aa7972da4d 342 +CMGL: 2,0,,26
tony63 0:f7aa7972da4d 343 0791751330080089040AA1132237173700006150709001520A09C3703B2C0F83DE66
tony63 0:f7aa7972da4d 344
tony63 0:f7aa7972da4d 345 OK
tony63 0:f7aa7972da4d 346
tony63 0:f7aa7972da4d 347 Sirena on
tony63 0:f7aa7972da4d 348 da esto
tony63 0:f7aa7972da4d 349
tony63 0:f7aa7972da4d 350 +CMGL: 3,0,,26
tony63 0:f7aa7972da4d 351 0791751330512411040AA1132237173700006150709031540A09D3B4BCEC0E83DE6E
tony63 0:f7aa7972da4d 352
tony63 0:f7aa7972da4d 353 OK
tony63 0:f7aa7972da4d 354
tony63 0:f7aa7972da4d 355 Sirena of
tony63 0:f7aa7972da4d 356
tony63 0:f7aa7972da4d 357 da esto
tony63 0:f7aa7972da4d 358 +CMGL: 4,0,,26
tony63 0:f7aa7972da4d 359 0791751330512411040AA1132237173700006150709051750A09D3B4BCEC0E83DE66
tony63 0:f7aa7972da4d 360
tony63 0:f7aa7972da4d 361 OK
tony63 0:f7aa7972da4d 362
tony63 0:f7aa7972da4d 363 Alarma 1
tony63 0:f7aa7972da4d 364
tony63 0:f7aa7972da4d 365 +CMGL: 1,0,,25
tony63 0:f7aa7972da4d 366 0791751330512411040AA1132237173700006150702153640A08417658DE0E8362
tony63 0:f7aa7972da4d 367 5
tony63 0:f7aa7972da4d 368
tony63 0:f7aa7972da4d 369
tony63 0:f7aa7972da4d 370
tony63 0:f7aa7972da4d 371 */