Domoti SAS

Dependencies:   ControlAcceso MFRC522 mbed

Committer:
capantojar
Date:
Thu Jul 14 15:17:53 2016 +0000
Revision:
9:6cf1d9384054
Parent:
8:b6fc53b95377
14/07/2016

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:028fac66239d 1 #include "mbed.h"
capantojar 2:ffb9b2112baa 2 #include "MFRC522.h"
capantojar 4:ef96fe085434 3 #include "ESP8266.h"
capantojar 5:e0893c873954 4
capantojar 9:6cf1d9384054 5 #define IP "104.196.113.161" // Domoti Server IP Address
capantojar 9:6cf1d9384054 6 #define PORT "6666" // Domoti Server IP Address
capantojar 5:e0893c873954 7 char snd[255],rcv[100];
capantojar 6:8ed278d1f2eb 8 char *spr;
capantojar 5:e0893c873954 9 char UIDstr[10];
capantojar 8:b6fc53b95377 10 uint8_t dir;
capantojar 3:2b8258feb9b7 11
bcostm 0:028fac66239d 12 Serial pc(SERIAL_TX, SERIAL_RX);
capantojar 8:b6fc53b95377 13
capantojar 8:b6fc53b95377 14 MFRC522 *rf_in;
capantojar 8:b6fc53b95377 15 MFRC522 *rf_out;
capantojar 8:b6fc53b95377 16
capantojar 4:ef96fe085434 17 ESP8266 wifi(PA_11, PA_12, 9600); // baud rate for wifi
capantojar 8:b6fc53b95377 18
capantojar 4:ef96fe085434 19 DigitalOut ESP_Enable(PB_12);
capantojar 4:ef96fe085434 20 DigitalOut ESP_Reset(PA_7);
capantojar 2:ffb9b2112baa 21 DigitalOut green(PA_5);
capantojar 3:2b8258feb9b7 22
capantojar 8:b6fc53b95377 23 void connect() {
capantojar 9:6cf1d9384054 24 green = 1;
capantojar 8:b6fc53b95377 25 while (1) {
capantojar 9:6cf1d9384054 26 wifi.Join("DOMOTI_EXT", "domotizamos"); // Your wifi username & Password
capantojar 9:6cf1d9384054 27 //wifi.Join("AulasAMIGAS", "900292680"); // Your wifi username & Password
capantojar 9:6cf1d9384054 28 wifi.RcvReply(rcv, 3000); // receive a response from ESP
capantojar 8:b6fc53b95377 29 if (!strstr(rcv,"A\"")) continue;
capantojar 9:6cf1d9384054 30 wait(10); // waits for response from ESP
capantojar 8:b6fc53b95377 31 while (1) {
capantojar 9:6cf1d9384054 32 wifi.GetIP(rcv); // receive an IP address from the AP
capantojar 8:b6fc53b95377 33 if (!strstr(rcv,"busy")) break;
capantojar 8:b6fc53b95377 34 }
capantojar 8:b6fc53b95377 35 if (!strstr(rcv,"AR")) break;
capantojar 8:b6fc53b95377 36 }
capantojar 9:6cf1d9384054 37 pc.printf("Conectado\r\n");
capantojar 7:cdd791629935 38 }
capantojar 7:cdd791629935 39
capantojar 8:b6fc53b95377 40 void buildSocket() {
capantojar 9:6cf1d9384054 41 green = 1;
capantojar 8:b6fc53b95377 42 wifi.SetSingle();
capantojar 8:b6fc53b95377 43 wifi.RcvReply(rcv, 3000);
capantojar 8:b6fc53b95377 44 while (1) {
capantojar 9:6cf1d9384054 45 //strcpy(snd, "AT+CIPSTART=\"TCP\",\"104.196.113.161\",6666");
capantojar 9:6cf1d9384054 46 strcpy(snd, "AT+CIPSTART=\"TCP\",\"10.69.17.20\",6666");
capantojar 8:b6fc53b95377 47 wifi.SendCMD(snd);
capantojar 8:b6fc53b95377 48 wifi.RcvReply(rcv, 3000);
capantojar 9:6cf1d9384054 49 pc.printf("Conectando al servidor.... \r\n");
capantojar 8:b6fc53b95377 50 if (strstr(rcv,"Linked")||strstr(rcv,"ALREAY CONNECT")) break;
capantojar 8:b6fc53b95377 51 }
capantojar 9:6cf1d9384054 52 pc.printf("Link creado\r\n");
capantojar 8:b6fc53b95377 53 }
capantojar 8:b6fc53b95377 54
capantojar 8:b6fc53b95377 55 void readCard(MFRC522 *rf, bool in) {
capantojar 9:6cf1d9384054 56 green = 1;
capantojar 8:b6fc53b95377 57 if (!rf->PICC_ReadCardSerial()) return;
capantojar 9:6cf1d9384054 58 sprintf(UIDstr, "%02X%02X%02X%02X",
capantojar 8:b6fc53b95377 59 rf->uid.uidByte[0],
capantojar 8:b6fc53b95377 60 rf->uid.uidByte[1],
capantojar 8:b6fc53b95377 61 rf->uid.uidByte[2],
capantojar 8:b6fc53b95377 62 rf->uid.uidByte[3]);
capantojar 8:b6fc53b95377 63 if (in) dir = 1;
capantojar 8:b6fc53b95377 64 else dir = 2;
capantojar 8:b6fc53b95377 65 }
capantojar 5:e0893c873954 66
capantojar 3:2b8258feb9b7 67 int main()
capantojar 3:2b8258feb9b7 68 {
capantojar 8:b6fc53b95377 69 green = 1;
capantojar 8:b6fc53b95377 70 // Init ESP
capantojar 4:ef96fe085434 71 ESP_Enable = 0;
capantojar 4:ef96fe085434 72 ESP_Reset = 0;
capantojar 4:ef96fe085434 73 ESP_Reset = 1;
capantojar 4:ef96fe085434 74 ESP_Enable = 1;
capantojar 4:ef96fe085434 75 wifi.Reset();
capantojar 5:e0893c873954 76 wait(5);
capantojar 9:6cf1d9384054 77 wifi.SetMode(1); // set ESP mode to 1
capantojar 9:6cf1d9384054 78 wifi.RcvReply(rcv, 1000); // receive a response from ESP
capantojar 9:6cf1d9384054 79 connect(); // Connect to wifi
capantojar 9:6cf1d9384054 80 buildSocket(); // Build socket
capantojar 9:6cf1d9384054 81
capantojar 8:b6fc53b95377 82 // Init RF sensors
capantojar 8:b6fc53b95377 83 rf_in = new MFRC522(PB_15, PB_14, PB_13, PC_4, PA_13);
capantojar 8:b6fc53b95377 84 rf_in->PCD_Init();
capantojar 8:b6fc53b95377 85 rf_out = new MFRC522(PC_12, PC_11, PC_10, PD_2, PA_14);
capantojar 8:b6fc53b95377 86 rf_out->PCD_Init();
capantojar 8:b6fc53b95377 87 while(1) {
capantojar 8:b6fc53b95377 88 green = 0;
capantojar 8:b6fc53b95377 89 dir = 0;
capantojar 9:6cf1d9384054 90 if (rf_in->PICC_IsNewCardPresent()) {readCard(rf_in,1);}
capantojar 8:b6fc53b95377 91 else if (rf_out->PICC_IsNewCardPresent()) readCard(rf_out,0);
capantojar 8:b6fc53b95377 92 if (!dir) {wait_ms(500);continue;}
capantojar 8:b6fc53b95377 93
capantojar 8:b6fc53b95377 94 strcpy(snd, "AT+CIPSEND=12");
capantojar 7:cdd791629935 95 wifi.SendCMD(snd);
capantojar 9:6cf1d9384054 96 wifi.RcvReply(rcv, 500);
capantojar 8:b6fc53b95377 97 // Socket verification
capantojar 8:b6fc53b95377 98 if (strstr(rcv,"ERROR")||strstr(rcv,"link is not")) {
capantojar 8:b6fc53b95377 99 buildSocket();
capantojar 3:2b8258feb9b7 100 continue;
capantojar 3:2b8258feb9b7 101 }
capantojar 8:b6fc53b95377 102 if (dir==1) sprintf(snd,"%s,I",UIDstr);
capantojar 8:b6fc53b95377 103 else sprintf(snd,"%s,O",UIDstr);
capantojar 9:6cf1d9384054 104 pc.printf("REQ: %s\r\n", snd);
capantojar 5:e0893c873954 105 wifi.SendCMD(snd);
capantojar 9:6cf1d9384054 106 wifi.RcvReply(rcv, 10000);
capantojar 9:6cf1d9384054 107 pc.printf("%s\r\n", rcv);
capantojar 5:e0893c873954 108
capantojar 6:8ed278d1f2eb 109 spr = strchr(rcv,'+');
capantojar 6:8ed278d1f2eb 110 if (spr!=NULL) {
capantojar 6:8ed278d1f2eb 111 if (spr[1]=='I'&&spr[3]=='D') {
capantojar 6:8ed278d1f2eb 112 spr = strchr(rcv,':');
capantojar 9:6cf1d9384054 113 if (spr[1]=='1') {
capantojar 6:8ed278d1f2eb 114 green = 1;
capantojar 8:b6fc53b95377 115 pc.printf("Acceso Concedido\r\n");
capantojar 6:8ed278d1f2eb 116 } else {
capantojar 6:8ed278d1f2eb 117 pc.printf("Acceso Denegado\r\n");
capantojar 6:8ed278d1f2eb 118 }
capantojar 6:8ed278d1f2eb 119 }
capantojar 8:b6fc53b95377 120 } else pc.printf("No respuesta\r\n");
capantojar 8:b6fc53b95377 121 wait_ms(1000);
capantojar 2:ffb9b2112baa 122 }
bcostm 0:028fac66239d 123 }