Domoti SAS
Dependencies: ControlAcceso MFRC522 mbed
main.cpp@9:6cf1d9384054, 2016-07-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |