Domoti SAS

Dependencies:   ControlAcceso MFRC522 mbed

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