Monil

Dependencies:   mbed RA8875 mbed-rtos SDFileSystem Keypad

Committer:
mchheta
Date:
Mon Jan 11 17:48:18 2021 +0000
Revision:
15:a557a4c85e54
Parent:
14:d71b1aa3c8bf
This is for Monil's Thesis Project at IAC-IUPUI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 0:037b95a5cc85 1
mchheta 15:a557a4c85e54 2 #include "mbed.h"
mchheta 15:a557a4c85e54 3 #include <math.h>
mchheta 15:a557a4c85e54 4 #include <string.h>
mchheta 15:a557a4c85e54 5 #include "SDFileSystem.h"
mchheta 15:a557a4c85e54 6 #include <iostream>
mchheta 15:a557a4c85e54 7 #include <string>
mchheta 15:a557a4c85e54 8 #include "rtos.h"
mchheta 15:a557a4c85e54 9 # define FileName "/sd/Backup.txt"
mchheta 15:a557a4c85e54 10 using namespace std;
mchheta 15:a557a4c85e54 11
mchheta 15:a557a4c85e54 12
mchheta 15:a557a4c85e54 13 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); //SD card
mchheta 15:a557a4c85e54 14 Serial pc(USBTX, USBRX ); //Serial Communication
mchheta 15:a557a4c85e54 15 Serial esp(PTC17, PTC16); // tx, rx (Wifi)
mchheta 15:a557a4c85e54 16 AnalogIn Port[]={PTB2,PTB3,PTB10, PTB11, PTC11, PTC10, PTC2, PTC0,PTC9, PTC8}; //Define sensor pins
mchheta 15:a557a4c85e54 17 float PortVal[10], timeout, Port_Multiplier[11];
mchheta 15:a557a4c85e54 18 char buf[1024], snd[1024], text[1024], cpyStr[1024], Port_Description[11][100];
mchheta 15:a557a4c85e54 19 //char Board_specs[10][50];// Board_specs[1]= Board-id, Board_specs[2]=WIFI ssid, Board_specs[3]=Wifi-Password,Board_specs[4]=Database TableName.
mchheta 15:a557a4c85e54 20 char Board_specs[10][50]; //= {"IAC_Board3", "ENGR-IOT", "engr-iot", "sensor_readings"};
mchheta 15:a557a4c85e54 21 int rTime,bufcnt,lineCnt,prtCnt,ended,Multiplier,Port_SensorID[11], brdspCnt=0, count = 0;
mchheta 15:a557a4c85e54 22 char port[10][10] = {"Port_1","Port_2","Port_3","Port_4","Port_5","Port_6","Port_7","Port_8","Port_9","Port_10"};
mchheta 15:a557a4c85e54 23 Timer t;
mchheta 15:a557a4c85e54 24 int port_number;
mchheta 15:a557a4c85e54 25 float port_value;
mchheta 15:a557a4c85e54 26 //char ssid[32] = "iPhone"; // enter WiFi router ssid inside the quotes
mchheta 15:a557a4c85e54 27 //char pwd [32] = "sl197197";
mchheta 15:a557a4c85e54 28 //char ssid[32] = "ENGR-IOT"; // enter WiFi router ssid inside the quotes
mchheta 15:a557a4c85e54 29 //char pwd [32] = "engr-iot";
mchheta 15:a557a4c85e54 30 //char ssid[32] = "BatCave"; // enter WiFi router ssid inside the quotes
mchheta 15:a557a4c85e54 31 //char pwd [32] = "bringyourownbeer232";
mchheta 15:a557a4c85e54 32 char ssid[32] ; // enter WiFi router ssid inside the quotes
mchheta 15:a557a4c85e54 33 char pwd [32] ;
mchheta 15:a557a4c85e54 34 char wifiIP[32];
mchheta 15:a557a4c85e54 35
mchheta 15:a557a4c85e54 36 void SendCMD(),getreply(), TCP_Boardspecs(), TCP_IPSend(), TCP_DataSend(), SDcrdRead(), Backup(char*),SendBackupData();
mchheta 15:a557a4c85e54 37 char readConfigText();
mchheta 15:a557a4c85e54 38 float UnitConversion(int Sens_ID);
mchheta 15:a557a4c85e54 39 char *SensorName(int Sens_ID);
mchheta 15:a557a4c85e54 40 FILE * fp;
mchheta 15:a557a4c85e54 41 FILE * fp2;
mchheta 15:a557a4c85e54 42
mchheta 15:a557a4c85e54 43 DigitalOut Relay1(PTD2), Relay2(PTD0), Relay3(PTC4), Relay4(PTC12);
mchheta 15:a557a4c85e54 44 time_t seconds = time(NULL);
mchheta 15:a557a4c85e54 45
mchheta 15:a557a4c85e54 46
mchheta 15:a557a4c85e54 47 /*This function parses the SD Card Config File*/
mchheta 15:a557a4c85e54 48
mchheta 15:a557a4c85e54 49 void SDcrdRead(void){
mchheta 15:a557a4c85e54 50 //FILE * fp;
mchheta 15:a557a4c85e54 51
mchheta 15:a557a4c85e54 52 printf("\r\nReading from SD card...\r\n\n\n");
mchheta 15:a557a4c85e54 53 fp = fopen("/sd/IAC_Config_File.txt", "rb");
mchheta 15:a557a4c85e54 54 if (fp != NULL) {
mchheta 15:a557a4c85e54 55 readConfigText();
mchheta 15:a557a4c85e54 56 fclose(fp);
mchheta 15:a557a4c85e54 57 printf(" \r\n\r\n\r\nRead Successfully!\r\n\r\n\r\n");
mchheta 15:a557a4c85e54 58 printf(" \r\n\r\n\r\n ---- Config File ---- \r\n\r\n\r\n");
mchheta 15:a557a4c85e54 59 printf("%s\n", text);
mchheta 15:a557a4c85e54 60 printf(" \r\n\r\n\r\n ---- End of Config File ---- \r\n\r\n\r\n");
mchheta 15:a557a4c85e54 61 }
mchheta 15:a557a4c85e54 62 else {
mchheta 15:a557a4c85e54 63 printf("\nReading Failed!\r\n");
mchheta 15:a557a4c85e54 64 }
mchheta 15:a557a4c85e54 65
mchheta 15:a557a4c85e54 66 }
mchheta 15:a557a4c85e54 67
mchheta 15:a557a4c85e54 68 /*This function is used to rename a file in SD Card.*/
mchheta 15:a557a4c85e54 69
mchheta 15:a557a4c85e54 70 int file_rename(const char *oldfname, const char *newfname) {
mchheta 15:a557a4c85e54 71 int retval = 0;
mchheta 15:a557a4c85e54 72 int ch;
mchheta 15:a557a4c85e54 73
mchheta 15:a557a4c85e54 74 FILE *fpold = fopen(oldfname, "r"); // src file
mchheta 15:a557a4c85e54 75 FILE *fpnew = fopen(newfname, "w"); // dest file
mchheta 15:a557a4c85e54 76
mchheta 15:a557a4c85e54 77 while (1) { // Copy src to dest
mchheta 15:a557a4c85e54 78 ch = fgetc(fpold); // until src EOF read.
mchheta 15:a557a4c85e54 79 if (ch == EOF) break;
mchheta 15:a557a4c85e54 80 fputc(ch, fpnew);
mchheta 15:a557a4c85e54 81 }
mchheta 15:a557a4c85e54 82
mchheta 15:a557a4c85e54 83 fclose(fpnew);
mchheta 15:a557a4c85e54 84 fclose(fpold);
mchheta 15:a557a4c85e54 85
mchheta 15:a557a4c85e54 86 fpnew = fopen(newfname, "r"); // Reopen dest to insure
mchheta 15:a557a4c85e54 87 if(fpnew == NULL) { // that it was created.
mchheta 15:a557a4c85e54 88 retval = (-1); // Return Error.
mchheta 15:a557a4c85e54 89 }
mchheta 15:a557a4c85e54 90 else {
mchheta 15:a557a4c85e54 91 fclose(fpnew);
mchheta 15:a557a4c85e54 92 remove(oldfname); // Remove original file.
mchheta 15:a557a4c85e54 93 retval = (0); // Return Success.
mchheta 15:a557a4c85e54 94 }
mchheta 15:a557a4c85e54 95 return (retval);
mchheta 15:a557a4c85e54 96 }
mchheta 15:a557a4c85e54 97
mchheta 15:a557a4c85e54 98 /*This function is used to copy contents of one file in SD card to another file in SD card*/
mchheta 15:a557a4c85e54 99
mchheta 15:a557a4c85e54 100 int file_copy (const char *src, const char *dst) {
mchheta 15:a557a4c85e54 101 int retval,co = 0;
mchheta 15:a557a4c85e54 102 int ch;
mchheta 15:a557a4c85e54 103
mchheta 15:a557a4c85e54 104 FILE *fpsrc = fopen(src, "r"); // src file
mchheta 15:a557a4c85e54 105 FILE *fpdst = fopen(dst, "w"); // dest file
mchheta 15:a557a4c85e54 106
mchheta 15:a557a4c85e54 107 while (1) { // Copy src to dest
mchheta 15:a557a4c85e54 108 ch = fgetc(fpsrc); // until src EOF read.
mchheta 15:a557a4c85e54 109 if (ch == EOF) break;
mchheta 15:a557a4c85e54 110 if(co==1)co++;
mchheta 15:a557a4c85e54 111 else fputc(ch, fpdst);
mchheta 15:a557a4c85e54 112 }
mchheta 15:a557a4c85e54 113 fclose(fpsrc);
mchheta 15:a557a4c85e54 114 fclose(fpdst);
mchheta 15:a557a4c85e54 115
mchheta 15:a557a4c85e54 116 fpdst = fopen(dst, "r"); // Reopen dest to insure
mchheta 15:a557a4c85e54 117 if(fpdst == NULL) { // that it was created.
mchheta 15:a557a4c85e54 118 retval = (-1); // Return error.
mchheta 15:a557a4c85e54 119 }
mchheta 15:a557a4c85e54 120 else {
mchheta 15:a557a4c85e54 121 fclose(fpdst);
mchheta 15:a557a4c85e54 122 retval = (0); // Return success.
mchheta 15:a557a4c85e54 123 }
mchheta 15:a557a4c85e54 124 return (retval);
mchheta 15:a557a4c85e54 125 }
mchheta 15:a557a4c85e54 126
mchheta 15:a557a4c85e54 127 /* This function extracts essential information from SD Card Config file */
mchheta 15:a557a4c85e54 128 char readConfigText()
mchheta 15:a557a4c85e54 129 {
mchheta 15:a557a4c85e54 130 memset(buf, '\0', sizeof(buf));
mchheta 15:a557a4c85e54 131 t.start();
mchheta 15:a557a4c85e54 132 ended=0;
mchheta 15:a557a4c85e54 133 bufcnt=0;
mchheta 15:a557a4c85e54 134 lineCnt=0;
mchheta 15:a557a4c85e54 135 prtCnt =0;
mchheta 15:a557a4c85e54 136 while(true) {
mchheta 15:a557a4c85e54 137 char C = fgetc(fp);
mchheta 15:a557a4c85e54 138 //if(t.read() <= timeout) {
mchheta 15:a557a4c85e54 139 buf[bufcnt] = C;
mchheta 15:a557a4c85e54 140 bufcnt++;
mchheta 15:a557a4c85e54 141 //printf(buf);
mchheta 15:a557a4c85e54 142 if(feof(fp)){
mchheta 15:a557a4c85e54 143 break;
mchheta 15:a557a4c85e54 144 }
mchheta 15:a557a4c85e54 145 if(C == '\n'){
mchheta 15:a557a4c85e54 146 //buf[bufcnt] = '\0';
mchheta 15:a557a4c85e54 147 lineCnt++;
mchheta 15:a557a4c85e54 148 strcpy(snd,buf);
mchheta 15:a557a4c85e54 149 strcat(text,snd);
mchheta 15:a557a4c85e54 150 if(buf[0]=='B'){
mchheta 15:a557a4c85e54 151 const char s[2] = ":";
mchheta 15:a557a4c85e54 152 char *token;
mchheta 15:a557a4c85e54 153
mchheta 15:a557a4c85e54 154 /* get the first token */
mchheta 15:a557a4c85e54 155 token = strtok(buf, s);
mchheta 15:a557a4c85e54 156 /* get the other tokens there*/
mchheta 15:a557a4c85e54 157 while( token != NULL ) {
mchheta 15:a557a4c85e54 158 brdspCnt++;
mchheta 15:a557a4c85e54 159 strcpy(Board_specs[brdspCnt],token);
mchheta 15:a557a4c85e54 160 printf( " Boardspec[%d] = %s\r\n\n",brdspCnt, Board_specs[brdspCnt] );
mchheta 15:a557a4c85e54 161
mchheta 15:a557a4c85e54 162 token = strtok(NULL, s);
mchheta 15:a557a4c85e54 163 }
mchheta 15:a557a4c85e54 164
mchheta 15:a557a4c85e54 165
mchheta 15:a557a4c85e54 166
mchheta 15:a557a4c85e54 167
mchheta 15:a557a4c85e54 168 }
mchheta 15:a557a4c85e54 169 else if(buf[0]=='P'){
mchheta 15:a557a4c85e54 170 prtCnt++;
mchheta 15:a557a4c85e54 171 if (prtCnt<10){
mchheta 15:a557a4c85e54 172 Port_SensorID[prtCnt]=int(buf[9]-'0');
mchheta 15:a557a4c85e54 173 Port_Multiplier[prtCnt]= UnitConversion(Port_SensorID[prtCnt]);
mchheta 15:a557a4c85e54 174 char *senStr = SensorName(Port_SensorID[prtCnt]);
mchheta 15:a557a4c85e54 175 strcpy(Port_Description[prtCnt],senStr);
mchheta 15:a557a4c85e54 176
mchheta 15:a557a4c85e54 177 printf("%d %0.2f %s\r\n",Port_SensorID[prtCnt],Port_Multiplier[prtCnt],Port_Description[prtCnt]);
mchheta 15:a557a4c85e54 178 }
mchheta 15:a557a4c85e54 179 else{
mchheta 15:a557a4c85e54 180 Port_SensorID[prtCnt]=int(buf[10]-'0');
mchheta 15:a557a4c85e54 181 Port_Multiplier[prtCnt]= UnitConversion(Port_SensorID[prtCnt]);
mchheta 15:a557a4c85e54 182 char *senStr = SensorName(Port_SensorID[prtCnt]);
mchheta 15:a557a4c85e54 183 strcpy(Port_Description[prtCnt],senStr);
mchheta 15:a557a4c85e54 184
mchheta 15:a557a4c85e54 185 printf("%d %0.2f %s\r\n",Port_SensorID[prtCnt],Port_Multiplier[prtCnt],Port_Description[prtCnt]);
mchheta 15:a557a4c85e54 186 }
mchheta 15:a557a4c85e54 187
mchheta 15:a557a4c85e54 188 }
mchheta 15:a557a4c85e54 189 //printf(text);
mchheta 15:a557a4c85e54 190 memset(buf, '\0', sizeof(buf));
mchheta 15:a557a4c85e54 191 bufcnt = 0;
mchheta 15:a557a4c85e54 192 }
mchheta 15:a557a4c85e54 193
mchheta 15:a557a4c85e54 194 }
mchheta 15:a557a4c85e54 195
mchheta 15:a557a4c85e54 196 printf("\r\n End of text file \r\n");
mchheta 15:a557a4c85e54 197 printf("\r\nLine Count %d\r\n",lineCnt);
mchheta 15:a557a4c85e54 198 }
mchheta 15:a557a4c85e54 199
mchheta 15:a557a4c85e54 200 /*This function returns the multiplying factor for sensor. It helps converting raw value to standard units. Sensor ID is available in SD Card */
mchheta 15:a557a4c85e54 201
mchheta 15:a557a4c85e54 202 float UnitConversion(int Sens_ID){
mchheta 15:a557a4c85e54 203 switch (Sens_ID){
mchheta 15:a557a4c85e54 204 case 0 :
mchheta 15:a557a4c85e54 205 Multiplier = 0.0;
mchheta 15:a557a4c85e54 206 break;
mchheta 15:a557a4c85e54 207 case 1 :
mchheta 15:a557a4c85e54 208 Multiplier = 2000.0;
mchheta 15:a557a4c85e54 209 break;
mchheta 15:a557a4c85e54 210 case 2 :
mchheta 15:a557a4c85e54 211 Multiplier = 140;
mchheta 15:a557a4c85e54 212 break;
mchheta 15:a557a4c85e54 213 case 3 :
mchheta 15:a557a4c85e54 214 Multiplier = 27.85;
mchheta 15:a557a4c85e54 215 break;
mchheta 15:a557a4c85e54 216 case 4 :
mchheta 15:a557a4c85e54 217 Multiplier = 50.0;
mchheta 15:a557a4c85e54 218 break;
mchheta 15:a557a4c85e54 219 case 5 :
mchheta 15:a557a4c85e54 220 Multiplier = 50.0;
mchheta 15:a557a4c85e54 221 break;
mchheta 15:a557a4c85e54 222 case 6 :
mchheta 15:a557a4c85e54 223 Multiplier = 240.0;
mchheta 15:a557a4c85e54 224 break;
mchheta 15:a557a4c85e54 225 case 7 :
mchheta 15:a557a4c85e54 226 Multiplier = 100.0;
mchheta 15:a557a4c85e54 227 break;
mchheta 15:a557a4c85e54 228 case 8 :
mchheta 15:a557a4c85e54 229 Multiplier = 100;
mchheta 15:a557a4c85e54 230 break;
mchheta 15:a557a4c85e54 231 }
mchheta 15:a557a4c85e54 232 return Multiplier;
mchheta 15:a557a4c85e54 233 }
mchheta 15:a557a4c85e54 234
mchheta 15:a557a4c85e54 235 /* This function returns name of the sensor based on Sensor ID */
mchheta 15:a557a4c85e54 236 char *SensorName(int Sens_ID){
mchheta 15:a557a4c85e54 237
mchheta 15:a557a4c85e54 238 static char *strng ;
mchheta 15:a557a4c85e54 239 //memset(strng, '\0', sizeof(strng));
mchheta 15:a557a4c85e54 240
mchheta 15:a557a4c85e54 241 switch (Sens_ID){
mchheta 15:a557a4c85e54 242 case 0 :
mchheta 15:a557a4c85e54 243 strng = "Null";
mchheta 15:a557a4c85e54 244 break;
mchheta 15:a557a4c85e54 245 case 1 :
mchheta 15:a557a4c85e54 246 strng = "Carbondioxide(ppm)";
mchheta 15:a557a4c85e54 247 break;
mchheta 15:a557a4c85e54 248 case 2 :
mchheta 15:a557a4c85e54 249 strng = "Current(0-100)Amps";
mchheta 15:a557a4c85e54 250 break;
mchheta 15:a557a4c85e54 251 case 3 :
mchheta 15:a557a4c85e54 252 strng = "Current(0-20)Amps";
mchheta 15:a557a4c85e54 253 break;
mchheta 15:a557a4c85e54 254 case 4 :
mchheta 15:a557a4c85e54 255 strng = "Temperature(0-50)Degree-Celsius";
mchheta 15:a557a4c85e54 256 break;
mchheta 15:a557a4c85e54 257 case 5 :
mchheta 15:a557a4c85e54 258 strng = "Temperature(0-50)Degree-Celsius";
mchheta 15:a557a4c85e54 259 break;
mchheta 15:a557a4c85e54 260 case 6 :
mchheta 15:a557a4c85e54 261 strng = "Pressure(PSIG)";
mchheta 15:a557a4c85e54 262 break;
mchheta 15:a557a4c85e54 263 case 7 :
mchheta 15:a557a4c85e54 264 strng = "Humidity(Percentage)";
mchheta 15:a557a4c85e54 265 break;
mchheta 15:a557a4c85e54 266 case 8 :
mchheta 15:a557a4c85e54 267 strng = "Compressed-Airflow(Percentage)";
mchheta 15:a557a4c85e54 268 break;
mchheta 15:a557a4c85e54 269 }
mchheta 15:a557a4c85e54 270 return strng;
mchheta 15:a557a4c85e54 271 }
mchheta 15:a557a4c85e54 272
mchheta 15:a557a4c85e54 273 /*This function is used to send command to Wi-Fi module. */
mchheta 15:a557a4c85e54 274 void SendCMD()
mchheta 15:a557a4c85e54 275 {
mchheta 15:a557a4c85e54 276 esp.printf("%s", snd);
mchheta 15:a557a4c85e54 277 }
unix_guru 14:d71b1aa3c8bf 278
mchheta 15:a557a4c85e54 279 /*This function is used to receieve response from the Wi-Fi module */
mchheta 15:a557a4c85e54 280 void getreply()
mchheta 15:a557a4c85e54 281 {
mchheta 15:a557a4c85e54 282 memset(buf, '\0', sizeof(buf));
mchheta 15:a557a4c85e54 283 t.start();
mchheta 15:a557a4c85e54 284 ended=0;
mchheta 15:a557a4c85e54 285 count=0;
mchheta 15:a557a4c85e54 286 while(!ended) {
mchheta 15:a557a4c85e54 287 if(esp.readable()) {
mchheta 15:a557a4c85e54 288 buf[count] = esp.getc();
mchheta 15:a557a4c85e54 289 count++;
mchheta 15:a557a4c85e54 290 }
mchheta 15:a557a4c85e54 291 if(t.read() > timeout) {
mchheta 15:a557a4c85e54 292 ended = 1;
mchheta 15:a557a4c85e54 293 t.stop();
mchheta 15:a557a4c85e54 294 t.reset();
mchheta 15:a557a4c85e54 295 }
mchheta 15:a557a4c85e54 296 }
mchheta 15:a557a4c85e54 297 }
mchheta 15:a557a4c85e54 298
mchheta 15:a557a4c85e54 299 /* This function is used to configure Wi-Fi module. It also connects to the internet */
mchheta 15:a557a4c85e54 300 void ESPconfig()
mchheta 15:a557a4c85e54 301 {
mchheta 15:a557a4c85e54 302 wait(1);
mchheta 15:a557a4c85e54 303 strcpy(snd,"AT\r\n");
mchheta 15:a557a4c85e54 304 SendCMD();
mchheta 15:a557a4c85e54 305 wait(1);
mchheta 15:a557a4c85e54 306 strcpy(snd,"AT\r\n");
mchheta 15:a557a4c85e54 307 SendCMD();
mchheta 15:a557a4c85e54 308 wait(1);
mchheta 15:a557a4c85e54 309 strcpy(snd,"AT\r\n");
mchheta 15:a557a4c85e54 310 SendCMD();
mchheta 15:a557a4c85e54 311 timeout=1;
mchheta 15:a557a4c85e54 312 getreply();
mchheta 15:a557a4c85e54 313 wait(1);
mchheta 15:a557a4c85e54 314 pc.printf("\f---------- Starting ESP Config ----------\r\n\n");
mchheta 15:a557a4c85e54 315
mchheta 15:a557a4c85e54 316 pc.printf("---------- Reset & get Firmware ----------\r\n");
mchheta 15:a557a4c85e54 317 strcpy(snd,"AT+RST\r\n");
mchheta 15:a557a4c85e54 318 SendCMD();
mchheta 15:a557a4c85e54 319 timeout=5;
mchheta 15:a557a4c85e54 320 getreply();
mchheta 15:a557a4c85e54 321 pc.printf(buf);
mchheta 15:a557a4c85e54 322
mchheta 15:a557a4c85e54 323 wait(1);
mchheta 15:a557a4c85e54 324
mchheta 15:a557a4c85e54 325 pc.printf("\n---------- Get Version ----------\r\n");
mchheta 15:a557a4c85e54 326 strcpy(snd,"AT+GMR\r\n");
mchheta 15:a557a4c85e54 327 SendCMD();
mchheta 15:a557a4c85e54 328 timeout=4;
mchheta 15:a557a4c85e54 329 getreply();
mchheta 15:a557a4c85e54 330 pc.printf(buf);
mchheta 15:a557a4c85e54 331
mchheta 15:a557a4c85e54 332 wait(1);
mchheta 15:a557a4c85e54 333
mchheta 15:a557a4c85e54 334 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
mchheta 15:a557a4c85e54 335 pc.printf("\n---------- Setting Mode ----------\r\n");
mchheta 15:a557a4c85e54 336 strcpy(snd, "AT+CWMODE=1\r\n");
mchheta 15:a557a4c85e54 337 SendCMD();
mchheta 15:a557a4c85e54 338 timeout=4;
mchheta 15:a557a4c85e54 339 getreply();
mchheta 15:a557a4c85e54 340 //getEspReply();
mchheta 15:a557a4c85e54 341 pc.printf(buf);
mchheta 15:a557a4c85e54 342
mchheta 15:a557a4c85e54 343 wait(2);
mchheta 15:a557a4c85e54 344
mchheta 15:a557a4c85e54 345 // set CIPMUX to 0=Single,1=Multi
mchheta 15:a557a4c85e54 346 pc.printf("\n---------- Setting Connection Mode ----------\r\n");
mchheta 15:a557a4c85e54 347 strcpy(snd, "AT+CIPMUX=1\r\n");
mchheta 15:a557a4c85e54 348 SendCMD();
mchheta 15:a557a4c85e54 349 timeout=4;
mchheta 15:a557a4c85e54 350 getreply();
mchheta 15:a557a4c85e54 351 //getEspReply();
mchheta 15:a557a4c85e54 352 pc.printf(buf);
mchheta 15:a557a4c85e54 353
mchheta 15:a557a4c85e54 354 wait(2);
mchheta 15:a557a4c85e54 355
mchheta 15:a557a4c85e54 356 /*pc.printf("\n---------- Listing Access Points ----------\r\n");
mchheta 15:a557a4c85e54 357 strcpy(snd, "AT+CWLAP\r\n");
mchheta 15:a557a4c85e54 358 SendCMD();
mchheta 15:a557a4c85e54 359 timeout=15;
mchheta 15:a557a4c85e54 360 getreply();
mchheta 15:a557a4c85e54 361 pc.printf(buf);
mchheta 15:a557a4c85e54 362
mchheta 15:a557a4c85e54 363 wait(2);*/
mchheta 15:a557a4c85e54 364
mchheta 15:a557a4c85e54 365 pc.printf("\n---------- Connecting to AP ----------\r\n");
mchheta 15:a557a4c85e54 366 pc.printf("ssid = %s pwd = %s\r\n",Board_specs[2],Board_specs[3]);//,ssid,pwd);
mchheta 15:a557a4c85e54 367 strcpy(snd, "AT+CWJAP=\"");
mchheta 15:a557a4c85e54 368 strcat(snd, Board_specs[2]);
mchheta 15:a557a4c85e54 369 strcat(snd, "\",\"");/* Here (\") denotes inverted commas in strings */
mchheta 15:a557a4c85e54 370 strcat(snd, Board_specs[3]);
mchheta 15:a557a4c85e54 371 strcat(snd, "\"\r\n");
mchheta 15:a557a4c85e54 372 pc.printf(snd);
mchheta 15:a557a4c85e54 373 SendCMD();
mchheta 15:a557a4c85e54 374 timeout=10;
mchheta 15:a557a4c85e54 375 getreply();
mchheta 15:a557a4c85e54 376 //getEspReply();
mchheta 15:a557a4c85e54 377 pc.printf(buf);
mchheta 15:a557a4c85e54 378
mchheta 15:a557a4c85e54 379
mchheta 15:a557a4c85e54 380 wait(5);
mchheta 15:a557a4c85e54 381
mchheta 15:a557a4c85e54 382 pc.printf("\n---------- Get IP's ----------\r\n");
mchheta 15:a557a4c85e54 383 strcpy(snd, "AT+CIFSR\r\n");
mchheta 15:a557a4c85e54 384 SendCMD();
mchheta 15:a557a4c85e54 385 timeout=3;
mchheta 15:a557a4c85e54 386 getreply();
mchheta 15:a557a4c85e54 387 pc.printf(buf);
mchheta 15:a557a4c85e54 388 memset(text, '\0', sizeof(text));
mchheta 15:a557a4c85e54 389 strcpy(text,buf);
mchheta 15:a557a4c85e54 390 //const char s[2] = ",";
mchheta 15:a557a4c85e54 391 char *token2;
mchheta 15:a557a4c85e54 392
mchheta 15:a557a4c85e54 393 /* get the first token */
mchheta 15:a557a4c85e54 394 token2 = strtok(text, "\"");
mchheta 15:a557a4c85e54 395 token2 = strtok(NULL, "\"");
mchheta 15:a557a4c85e54 396 strcpy(wifiIP,token2);
mchheta 15:a557a4c85e54 397 //token2 = strtok(NULL, "\"");
mchheta 15:a557a4c85e54 398 pc.printf("\n\n%s\n\n",wifiIP);
mchheta 15:a557a4c85e54 399 //const char* ipData = string(buf);
mchheta 15:a557a4c85e54 400 //const char* msg="Hello World!";
mchheta 15:a557a4c85e54 401 //pc.printf(ipData);
mchheta 15:a557a4c85e54 402
mchheta 15:a557a4c85e54 403 wait(1);
mchheta 15:a557a4c85e54 404
mchheta 15:a557a4c85e54 405 pc.printf("\n---------- Get Connection Status ----------\r\n");
mchheta 15:a557a4c85e54 406 strcpy(snd, "AT+CIPSTATUS\r\n");
mchheta 15:a557a4c85e54 407 SendCMD();
mchheta 15:a557a4c85e54 408 timeout=5;
mchheta 15:a557a4c85e54 409 //getEspReply();
mchheta 15:a557a4c85e54 410 getreply();
mchheta 15:a557a4c85e54 411 pc.printf(buf);
WiredHome 0:037b95a5cc85 412
mchheta 15:a557a4c85e54 413 pc.printf("\n\n\n If you get a valid (non zero) IP, ESP8266 has been set up.\r\n");
mchheta 15:a557a4c85e54 414 pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n");
mchheta 15:a557a4c85e54 415 pc.printf(" It saves the SSID and password settings internally\r\n");
mchheta 15:a557a4c85e54 416 wait(1);
mchheta 15:a557a4c85e54 417 TCP_Boardspecs();
mchheta 15:a557a4c85e54 418 }
mchheta 15:a557a4c85e54 419 void reconnect()
mchheta 15:a557a4c85e54 420 {
mchheta 15:a557a4c85e54 421 pc.printf("\n---------- Connecting to AP ----------\r\n");
mchheta 15:a557a4c85e54 422 pc.printf("ssid = %s pwd = %s\r\n",Board_specs[2],Board_specs[3]);//,ssid,pwd);
mchheta 15:a557a4c85e54 423 strcpy(snd, "AT+CWJAP=\"");
mchheta 15:a557a4c85e54 424 strcat(snd, Board_specs[2]);
mchheta 15:a557a4c85e54 425 strcat(snd, "\",\"");/* Here (\") denotes inverted commas in strings */
mchheta 15:a557a4c85e54 426 strcat(snd, Board_specs[3]);
mchheta 15:a557a4c85e54 427 strcat(snd, "\"\r\n");
mchheta 15:a557a4c85e54 428 pc.printf(snd);
mchheta 15:a557a4c85e54 429 SendCMD();
mchheta 15:a557a4c85e54 430 timeout=1;
mchheta 15:a557a4c85e54 431 getreply();
mchheta 15:a557a4c85e54 432 //getEspReply();
mchheta 15:a557a4c85e54 433 pc.printf(buf);
mchheta 15:a557a4c85e54 434 }
mchheta 15:a557a4c85e54 435
mchheta 15:a557a4c85e54 436
mchheta 15:a557a4c85e54 437 /* This function sends information to the server. The information consits of which sensor is connected to each port, board_id and Boot time */
mchheta 15:a557a4c85e54 438 void TCP_Boardspecs(){
mchheta 15:a557a4c85e54 439
mchheta 15:a557a4c85e54 440 pc.printf("\n---------- Start TCP_IP Connection with WAMP ----------\r\n");
mchheta 15:a557a4c85e54 441 strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"134.68.70.220\",80\r\n");
mchheta 15:a557a4c85e54 442 //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"192.168.1.2\",8181\r\n");
mchheta 15:a557a4c85e54 443 SendCMD();
mchheta 15:a557a4c85e54 444 timeout=0.5;
mchheta 15:a557a4c85e54 445 getreply();
mchheta 15:a557a4c85e54 446 pc.printf(buf);
mchheta 15:a557a4c85e54 447
mchheta 15:a557a4c85e54 448 //wait();
mchheta 15:a557a4c85e54 449
mchheta 15:a557a4c85e54 450
mchheta 15:a557a4c85e54 451
mchheta 15:a557a4c85e54 452 pc.printf("\n---------- Set TCP Data frame ----------\r\n");
mchheta 15:a557a4c85e54 453 memset(text, '\0', sizeof(text));
mchheta 15:a557a4c85e54 454 sprintf(text, "GET /IAC_BoardSpecs_DataLoad.php?boardId=IAC_%s&wifiIP=%s&Port1Sensor=%s&Port2Sensor=%s&Port3Sensor=%s&Port4Sensor=%s&Port5Sensor=%s&Port6Sensor=%s&Port7Sensor=%s&Port8Sensor=%s&Port9Sensor=%s&Port10Sensor=%s\r\n",Board_specs[1],wifiIP,Port_Description[1],Port_Description[2],Port_Description[3],Port_Description[4],Port_Description[5],Port_Description[6],Port_Description[7],Port_Description[8],Port_Description[9],Port_Description[10]);
mchheta 15:a557a4c85e54 455 int sz = strlen(text);
mchheta 15:a557a4c85e54 456 pc.printf("\n\n%d\r\n",sz);
mchheta 15:a557a4c85e54 457 sprintf(snd, "AT+CIPSEND=4,%d\r\n",sz);
mchheta 15:a557a4c85e54 458 //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"184.106.153.149\",80\r\n")
mchheta 15:a557a4c85e54 459 SendCMD();
mchheta 15:a557a4c85e54 460 timeout=0.5;
mchheta 15:a557a4c85e54 461 getreply();
mchheta 15:a557a4c85e54 462 pc.printf(buf);
mchheta 15:a557a4c85e54 463
mchheta 15:a557a4c85e54 464
mchheta 15:a557a4c85e54 465 //wait(0.5);
mchheta 15:a557a4c85e54 466
mchheta 15:a557a4c85e54 467 pc.printf("\n---------- Send Data frame ----------\r\n");
mchheta 15:a557a4c85e54 468
mchheta 15:a557a4c85e54 469 strcpy(snd,text);
mchheta 15:a557a4c85e54 470 pc.printf(snd);
mchheta 15:a557a4c85e54 471
mchheta 15:a557a4c85e54 472 SendCMD();
mchheta 15:a557a4c85e54 473 timeout=0.5;
mchheta 15:a557a4c85e54 474 getreply();
mchheta 15:a557a4c85e54 475 pc.printf(buf);
mchheta 15:a557a4c85e54 476
mchheta 15:a557a4c85e54 477
mchheta 15:a557a4c85e54 478 //wait(1);
mchheta 15:a557a4c85e54 479
mchheta 15:a557a4c85e54 480 pc.printf("\n---------- Close TCP/IP Connection ----------\r\n");
mchheta 15:a557a4c85e54 481 strcpy(snd, "AT+CIPCLOSE=5\r\n");
mchheta 15:a557a4c85e54 482 SendCMD();
mchheta 15:a557a4c85e54 483 timeout=0.1;
mchheta 15:a557a4c85e54 484 getreply();
mchheta 15:a557a4c85e54 485 pc.printf(buf);
mchheta 15:a557a4c85e54 486
mchheta 15:a557a4c85e54 487 //wait(2);
mchheta 15:a557a4c85e54 488
mchheta 15:a557a4c85e54 489
mchheta 15:a557a4c85e54 490 }
mchheta 15:a557a4c85e54 491
mchheta 15:a557a4c85e54 492 /*This function sends sensor data to the server. Once the sensor data is read, this function is used to send the data to the server */
mchheta 15:a557a4c85e54 493 void TCP_DataSend(){
mchheta 15:a557a4c85e54 494
mchheta 15:a557a4c85e54 495 char buffer[32];
mchheta 15:a557a4c85e54 496 pc.printf("\n---------- Start TCP_IP Connection with WAMP ----------\r\n");
mchheta 15:a557a4c85e54 497 strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"134.68.70.220\",80\r\n");
mchheta 15:a557a4c85e54 498 SendCMD();
mchheta 15:a557a4c85e54 499 timeout=0.1;
mchheta 15:a557a4c85e54 500 getreply();
mchheta 15:a557a4c85e54 501 pc.printf(buf);
mchheta 15:a557a4c85e54 502 pc.printf("\n---------- Set TCP Data frame ----------\r\n");
mchheta 15:a557a4c85e54 503 memset(text, '\0', sizeof(text));
mchheta 15:a557a4c85e54 504
mchheta 15:a557a4c85e54 505
mchheta 15:a557a4c85e54 506
mchheta 15:a557a4c85e54 507 sprintf(text, "GET /Sensor_readings.php?Board_ID=IAC_%s&Port_ID=%s&Value=%0.2f&MCTime=%u\r\n", Board_specs[1], port[port_number], port_value,(unsigned int)seconds);
mchheta 15:a557a4c85e54 508 int sz1 = strlen(text);
mchheta 15:a557a4c85e54 509 pc.printf("\n\n%d\r\n",sz1);
mchheta 15:a557a4c85e54 510 sprintf(snd, "AT+CIPSEND=4,%d\r\n",sz1);
mchheta 15:a557a4c85e54 511 SendCMD();
mchheta 15:a557a4c85e54 512 pc.printf("\r \n\nGetting Reply\n\r\n");
mchheta 15:a557a4c85e54 513 timeout=0.1;
mchheta 15:a557a4c85e54 514 getreply();
mchheta 15:a557a4c85e54 515 pc.printf(buf);
mchheta 15:a557a4c85e54 516
mchheta 15:a557a4c85e54 517 pc.printf("\n---------- Send Data frame ----------\r\n");
mchheta 15:a557a4c85e54 518 strcpy(snd,text);
mchheta 15:a557a4c85e54 519 pc.printf(snd);
mchheta 15:a557a4c85e54 520 pc.printf("\n\n Getting Reply\n\r\n");
mchheta 15:a557a4c85e54 521 SendCMD();
mchheta 15:a557a4c85e54 522 timeout=0.2;
mchheta 15:a557a4c85e54 523 getreply();
mchheta 15:a557a4c85e54 524 pc.printf(buf);
mchheta 15:a557a4c85e54 525
mchheta 15:a557a4c85e54 526 /*If the response from wi-fi module is an error, the sensor data is stored as backup data in SD card. It also attempts to reconnect to the server */
mchheta 15:a557a4c85e54 527 if(strstr(buf,"ERROR")!=0 ||strstr(buf,"busy")!=0 || strstr(buf,"404 Not Found")!=0)
mchheta 15:a557a4c85e54 528 {
mchheta 15:a557a4c85e54 529 Backup(snd);
mchheta 15:a557a4c85e54 530 //ESPconfig();
mchheta 15:a557a4c85e54 531 reconnect();
mchheta 15:a557a4c85e54 532 }
mchheta 15:a557a4c85e54 533
mchheta 15:a557a4c85e54 534 /*Based on the server response, actuation of relay is done here */
mchheta 15:a557a4c85e54 535 if(strstr(buf,"Relay 1=on")!=0)
mchheta 15:a557a4c85e54 536 Relay1=1;
mchheta 15:a557a4c85e54 537 else if(strstr(buf,"Relay 1=off")!=0)
mchheta 15:a557a4c85e54 538 Relay1=0;
mchheta 15:a557a4c85e54 539
mchheta 15:a557a4c85e54 540 if(strstr(buf,"Relay 2=on")!=0)
mchheta 15:a557a4c85e54 541 Relay2=1;
mchheta 15:a557a4c85e54 542 else if(strstr(buf,"Relay 2=off")!=0)
mchheta 15:a557a4c85e54 543 Relay2=0;
mchheta 15:a557a4c85e54 544
mchheta 15:a557a4c85e54 545 if(strstr(buf,"Relay 3=on")!=0)
mchheta 15:a557a4c85e54 546 Relay3=1;
mchheta 15:a557a4c85e54 547 else if(strstr(buf,"Relay 3=off")!=0)
mchheta 15:a557a4c85e54 548 Relay3=0;
mchheta 15:a557a4c85e54 549
mchheta 15:a557a4c85e54 550 if(strstr(buf,"Relay 4=on")!=0)
mchheta 15:a557a4c85e54 551 Relay4=1;
mchheta 15:a557a4c85e54 552 else if(strstr(buf,"Relay 4=off")!=0)
mchheta 15:a557a4c85e54 553 Relay4=0;
mchheta 15:a557a4c85e54 554
mchheta 15:a557a4c85e54 555 /* get the first token */
mchheta 15:a557a4c85e54 556
mchheta 15:a557a4c85e54 557
mchheta 15:a557a4c85e54 558 //wait(1);
mchheta 15:a557a4c85e54 559
mchheta 15:a557a4c85e54 560 pc.printf("\n---------- Close TCP/IP Connection ----------\r\n");
mchheta 15:a557a4c85e54 561 strcpy(snd, "AT+CIPCLOSE=5\r\n");
mchheta 15:a557a4c85e54 562 SendCMD();
mchheta 15:a557a4c85e54 563 timeout=0.1;
mchheta 15:a557a4c85e54 564 //getreply();
mchheta 15:a557a4c85e54 565 pc.printf(buf);
mchheta 15:a557a4c85e54 566
mchheta 15:a557a4c85e54 567 /*If the response from the server is as expected, the command attempts to send backup data from the SD Card */
mchheta 15:a557a4c85e54 568 if(strstr(buf,"Relay")!=0)
mchheta 15:a557a4c85e54 569 {
mchheta 15:a557a4c85e54 570 //for(int i=0;i<10;i++)
mchheta 15:a557a4c85e54 571 //{
mchheta 15:a557a4c85e54 572 SendBackupData();
mchheta 15:a557a4c85e54 573 //}
mchheta 15:a557a4c85e54 574 }
mchheta 15:a557a4c85e54 575 }
unix_guru 13:3f6204d6140a 576
unix_guru 13:3f6204d6140a 577
unix_guru 13:3f6204d6140a 578
mchheta 15:a557a4c85e54 579 /*This function is used to extract particular information from string. For example, information enclosed between < and > symbol will be extracted into a string */
mchheta 15:a557a4c85e54 580 std::string extract(const std::string& str, char beg, char end)
mchheta 15:a557a4c85e54 581 {
mchheta 15:a557a4c85e54 582 std::size_t begPos ;
mchheta 15:a557a4c85e54 583 if ( (begPos = str.find(beg)) != std::string::npos )
mchheta 15:a557a4c85e54 584 {
mchheta 15:a557a4c85e54 585 std::size_t endPos ;
mchheta 15:a557a4c85e54 586 if ( (endPos = str.find(end, begPos)) != std::string::npos && endPos != begPos+1 )
mchheta 15:a557a4c85e54 587 return str.substr(begPos+1, endPos-begPos-1) ;
mchheta 15:a557a4c85e54 588 }
unix_guru 13:3f6204d6140a 589
mchheta 15:a557a4c85e54 590 return std::string() ;
mchheta 15:a557a4c85e54 591 }
mchheta 15:a557a4c85e54 592
mchheta 15:a557a4c85e54 593 /*This function is used to retrieve current time from the web */
mchheta 15:a557a4c85e54 594 int retriveTime()
mchheta 15:a557a4c85e54 595 {
mchheta 15:a557a4c85e54 596
mchheta 15:a557a4c85e54 597 pc.printf("\n---------- Start TCP_IP Connection with WAMP ----------\r\n");
mchheta 15:a557a4c85e54 598 strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"134.68.70.220\",80\r\n");
mchheta 15:a557a4c85e54 599 SendCMD();
mchheta 15:a557a4c85e54 600 timeout=0.5;
mchheta 15:a557a4c85e54 601 getreply();
mchheta 15:a557a4c85e54 602 pc.printf(buf);
WiredHome 0:037b95a5cc85 603
mchheta 15:a557a4c85e54 604 //wait();
mchheta 15:a557a4c85e54 605
mchheta 15:a557a4c85e54 606
mchheta 15:a557a4c85e54 607
mchheta 15:a557a4c85e54 608 pc.printf("\n---------- Set TCP Data frame ----------\r\n");
mchheta 15:a557a4c85e54 609 memset(text, '\0', sizeof(text));
mchheta 15:a557a4c85e54 610 //sprintf(text, "GET /test1.php?\r\n");
mchheta 15:a557a4c85e54 611 sprintf(text, "GET /TimeQuery.php?\r\n");
mchheta 15:a557a4c85e54 612 int sz = strlen(text);
mchheta 15:a557a4c85e54 613 pc.printf("\n\n%d\r\n",sz);
mchheta 15:a557a4c85e54 614 sprintf(snd, "AT+CIPSEND=4,%d\r\n",sz);
mchheta 15:a557a4c85e54 615 //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"184.106.153.149\",80\r\n")
mchheta 15:a557a4c85e54 616 SendCMD();
mchheta 15:a557a4c85e54 617 timeout=0.5;
mchheta 15:a557a4c85e54 618 getreply();
mchheta 15:a557a4c85e54 619 pc.printf(buf);
mchheta 15:a557a4c85e54 620
mchheta 15:a557a4c85e54 621
mchheta 15:a557a4c85e54 622 pc.printf("\n---------- Send Data frame ----------\r\n");
mchheta 15:a557a4c85e54 623
mchheta 15:a557a4c85e54 624 strcpy(snd,text);
mchheta 15:a557a4c85e54 625 pc.printf(snd);
mchheta 15:a557a4c85e54 626
mchheta 15:a557a4c85e54 627 SendCMD();
mchheta 15:a557a4c85e54 628 timeout=0.5;
mchheta 15:a557a4c85e54 629 getreply();
mchheta 15:a557a4c85e54 630 pc.printf("Start");
mchheta 15:a557a4c85e54 631
mchheta 15:a557a4c85e54 632
mchheta 15:a557a4c85e54 633 pc.printf(buf);
mchheta 15:a557a4c85e54 634 pc.printf("End");
mchheta 15:a557a4c85e54 635
mchheta 15:a557a4c85e54 636 string time = extract(buf,'>','<');
mchheta 15:a557a4c85e54 637 int rTime = atoi(time.c_str());
mchheta 15:a557a4c85e54 638 //int rtime = stoi(time);
mchheta 15:a557a4c85e54 639 pc.printf("Time = %d",rTime);
mchheta 15:a557a4c85e54 640 pc.printf("\n---------- Close TCP/IP Connection ----------\r\n");
mchheta 15:a557a4c85e54 641 strcpy(snd, "AT+CIPCLOSE=5\r\n");
unix_guru 14:d71b1aa3c8bf 642
mchheta 15:a557a4c85e54 643 SendCMD();
mchheta 15:a557a4c85e54 644 timeout=0.5;
mchheta 15:a557a4c85e54 645 getreply();
mchheta 15:a557a4c85e54 646 pc.printf(buf);
mchheta 15:a557a4c85e54 647 return rTime;
unix_guru 14:d71b1aa3c8bf 648 }
mchheta 15:a557a4c85e54 649
mchheta 15:a557a4c85e54 650 /*This function is responsible to open TCP/IP connection and send the backup data to server */
mchheta 15:a557a4c85e54 651 void Senddta(char bckp[])
unix_guru 14:d71b1aa3c8bf 652 {
mchheta 15:a557a4c85e54 653 if(strlen(bckp)>1){
mchheta 15:a557a4c85e54 654 pc.printf("\n---------- Start TCP_IP Connection with WAMP ----------\r\n");
mchheta 15:a557a4c85e54 655 strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"134.68.70.220\",80\r\n");
mchheta 15:a557a4c85e54 656 //strcpy(snd, "AT+CIPSTART=4,\"TCP\",\"149.165.231.70\",8660\r\n");
mchheta 15:a557a4c85e54 657 SendCMD();
mchheta 15:a557a4c85e54 658 timeout=0.1;
mchheta 15:a557a4c85e54 659 getreply();
mchheta 15:a557a4c85e54 660 pc.printf(buf);
mchheta 15:a557a4c85e54 661 pc.printf("\n---------- Set TCP Data frame ----------\r\n");
mchheta 15:a557a4c85e54 662 memset(text, '\0', sizeof(text));
mchheta 15:a557a4c85e54 663
mchheta 15:a557a4c85e54 664 char buffer[32];
mchheta 15:a557a4c85e54 665 //strftime(buffer, 32,"%Y%m%d%H%M%S\n", localtime(&seconds));
mchheta 15:a557a4c85e54 666 //strftime(buffer, 32,"%s\n", localtime(&seconds));
mchheta 15:a557a4c85e54 667 //printf("Time as a custom formatted string = %s", buffer);
mchheta 15:a557a4c85e54 668 sprintf(text, bckp);
mchheta 15:a557a4c85e54 669 int sz1 = strlen(text);
mchheta 15:a557a4c85e54 670 pc.printf("\n\n%d\r\n",sz1);
mchheta 15:a557a4c85e54 671 sprintf(snd, "AT+CIPSEND=4,%d\r\n",sz1);
mchheta 15:a557a4c85e54 672 SendCMD();
mchheta 15:a557a4c85e54 673 pc.printf("\r \n\nGetting Reply\n\r\n");
mchheta 15:a557a4c85e54 674 timeout=0.2;
mchheta 15:a557a4c85e54 675 getreply();
mchheta 15:a557a4c85e54 676 pc.printf(buf);
mchheta 15:a557a4c85e54 677 pc.printf("\n---------- Send Backup Data frame ----------\r\n");
mchheta 15:a557a4c85e54 678 strcpy(snd,bckp);
mchheta 15:a557a4c85e54 679 pc.printf(snd);
mchheta 15:a557a4c85e54 680 pc.printf("\n\n Getting Reply\n\r\n");
mchheta 15:a557a4c85e54 681 SendCMD();
mchheta 15:a557a4c85e54 682 timeout=0.1;
mchheta 15:a557a4c85e54 683 getreply();
mchheta 15:a557a4c85e54 684 pc.printf(buf);
mchheta 15:a557a4c85e54 685 }
mchheta 15:a557a4c85e54 686 //else
mchheta 15:a557a4c85e54 687 //wait(0.15);
mchheta 15:a557a4c85e54 688 }
mchheta 15:a557a4c85e54 689
mchheta 15:a557a4c85e54 690 /*In case the firmware is unable to send data to the server, this function stores data into SD Card */
mchheta 15:a557a4c85e54 691 void Backup(char text[])
mchheta 15:a557a4c85e54 692 { fclose(fp);
mchheta 15:a557a4c85e54 693 pc.printf("Appending data to data file \r\n");
mchheta 15:a557a4c85e54 694 //fp = fopen("/sd/Backup.txt", "a");
mchheta 15:a557a4c85e54 695 if((fp=fopen("/sd/Backup.txt","a")) == NULL){
mchheta 15:a557a4c85e54 696 pc.printf("Could not open file");
mchheta 15:a557a4c85e54 697 fclose(fp);
mchheta 15:a557a4c85e54 698 fp=fopen("/sd/Backup.txt","w");
mchheta 15:a557a4c85e54 699 fclose(fp);
mchheta 15:a557a4c85e54 700 }
mchheta 15:a557a4c85e54 701 fclose(fp);
mchheta 15:a557a4c85e54 702 fp = fopen("/sd/Backup.txt", "a");
mchheta 15:a557a4c85e54 703 fprintf(fp, "%s", text);
mchheta 15:a557a4c85e54 704 pc.printf("\n\n%s\n\n", text);
mchheta 15:a557a4c85e54 705 //fputc('\n', fp);
mchheta 15:a557a4c85e54 706 fclose(fp);
mchheta 15:a557a4c85e54 707 wait(0.5);
unix_guru 14:d71b1aa3c8bf 708 }
mchheta 15:a557a4c85e54 709
mchheta 15:a557a4c85e54 710 /*This function extracts data from backup file in SD Card. It passes data Senddta function which opens TCP/IP connection and sends data to server.
mchheta 15:a557a4c85e54 711 Once data is sent to the server, that particular sent data is deleted from Backup file. */
mchheta 15:a557a4c85e54 712 void SendBackupData()
mchheta 15:a557a4c85e54 713 {
mchheta 15:a557a4c85e54 714 char bckp[1024];
mchheta 15:a557a4c85e54 715 fp = fopen("/sd/Backup.txt","r");
mchheta 15:a557a4c85e54 716 //fp2 = fopen("/sd/temp.txt","w");
mchheta 15:a557a4c85e54 717 if(strlen(fgets(bckp, sizeof(bckp), fp)) < 10){
mchheta 15:a557a4c85e54 718 pc.printf("No Backup Data");
mchheta 15:a557a4c85e54 719 fclose(fp);
mchheta 15:a557a4c85e54 720 wait(1.5);
mchheta 15:a557a4c85e54 721 //remove("/sd/Backup.txt");
mchheta 15:a557a4c85e54 722 }
mchheta 15:a557a4c85e54 723 //fclose(fp);
mchheta 15:a557a4c85e54 724 else
mchheta 15:a557a4c85e54 725 {
mchheta 15:a557a4c85e54 726 fclose(fp);
mchheta 15:a557a4c85e54 727 fp = fopen("/sd/Backup.txt","r");
mchheta 15:a557a4c85e54 728 //for(int i=0;i<5;i++){
mchheta 15:a557a4c85e54 729 fgets(bckp, sizeof(bckp), fp);
mchheta 15:a557a4c85e54 730 pc.printf("%s", bckp);
mchheta 15:a557a4c85e54 731 fclose(fp);
mchheta 15:a557a4c85e54 732
mchheta 15:a557a4c85e54 733 //wait(2);
mchheta 15:a557a4c85e54 734 Senddta(bckp);
mchheta 15:a557a4c85e54 735 //}
mchheta 15:a557a4c85e54 736 fclose(fp);
mchheta 15:a557a4c85e54 737 int ctr = 0;
mchheta 15:a557a4c85e54 738 memset(bckp, '\0', sizeof(bckp));
mchheta 15:a557a4c85e54 739 //char c = fgetc(fp);
mchheta 15:a557a4c85e54 740 char copy[100];
mchheta 15:a557a4c85e54 741 //wait(3);
mchheta 15:a557a4c85e54 742 fp=fopen("/sd/Backup.txt","r");
mchheta 15:a557a4c85e54 743 fp2 = fopen("/sd/temp.txt","w");
mchheta 15:a557a4c85e54 744 while ((fgets(copy,sizeof(copy),fp))!=NULL)
mchheta 15:a557a4c85e54 745 {
mchheta 15:a557a4c85e54 746 ctr++;
mchheta 15:a557a4c85e54 747 if(ctr==1)
mchheta 15:a557a4c85e54 748 pc.printf("Skip first line\r\n");
mchheta 15:a557a4c85e54 749 else
mchheta 15:a557a4c85e54 750 fputs(copy,fp2);
mchheta 15:a557a4c85e54 751 }
mchheta 15:a557a4c85e54 752 //sprintf(copy,"\0");
mchheta 15:a557a4c85e54 753 //sprintf(bckp,"\0");
mchheta 15:a557a4c85e54 754 //wait(2);
mchheta 15:a557a4c85e54 755
mchheta 15:a557a4c85e54 756
mchheta 15:a557a4c85e54 757 fclose(fp);
mchheta 15:a557a4c85e54 758 fclose(fp2);
mchheta 15:a557a4c85e54 759 remove("/sd/Backup.txt");
mchheta 15:a557a4c85e54 760 file_rename("/sd/temp.txt", "/sd/Backup.txt");
mchheta 15:a557a4c85e54 761 memset(copy, '\0', sizeof(copy));
mchheta 15:a557a4c85e54 762 }
unix_guru 14:d71b1aa3c8bf 763 }
WiredHome 0:037b95a5cc85 764 int main()
WiredHome 0:037b95a5cc85 765 {
mchheta 15:a557a4c85e54 766 pc.baud(115200);
mchheta 15:a557a4c85e54 767 esp.baud(115200);
mchheta 15:a557a4c85e54 768 SDcrdRead();
mchheta 15:a557a4c85e54 769
mchheta 15:a557a4c85e54 770 pc.printf("Board_specs[2] = %s and Board_specs[3]= %s \r\n", Board_specs[2], Board_specs[3]);
mchheta 15:a557a4c85e54 771 wait(2);
mchheta 15:a557a4c85e54 772 ESPconfig();
mchheta 15:a557a4c85e54 773 set_time(retriveTime());
mchheta 15:a557a4c85e54 774
mchheta 15:a557a4c85e54 775 while (true) {
mchheta 15:a557a4c85e54 776 seconds = time(NULL);
mchheta 15:a557a4c85e54 777 //wait(1);
mchheta 15:a557a4c85e54 778 /*Loop to read and send data to server */
mchheta 15:a557a4c85e54 779 for(int i = 0; i <10; i++){
mchheta 15:a557a4c85e54 780 if(Port_Multiplier[i+1]==0) //If no sensor attached, don't read data
mchheta 15:a557a4c85e54 781 {
mchheta 15:a557a4c85e54 782 }
mchheta 15:a557a4c85e54 783 else{
mchheta 15:a557a4c85e54 784 //seconds = time(NULL);
mchheta 15:a557a4c85e54 785 port_value=Port[i].read()*Port_Multiplier[i+1]; //Read data and convert raw value to standard units
mchheta 15:a557a4c85e54 786 port_number=i;
mchheta 15:a557a4c85e54 787 TCP_DataSend(); //Send data to the server
mchheta 15:a557a4c85e54 788 pc.printf(" %f",port_value);
mchheta 15:a557a4c85e54 789 }
unix_guru 14:d71b1aa3c8bf 790 }
mchheta 15:a557a4c85e54 791
mchheta 15:a557a4c85e54 792 //wait(4);
mchheta 15:a557a4c85e54 793 //fp = fopen("/sd/Backup.txt","r");
mchheta 15:a557a4c85e54 794
mchheta 15:a557a4c85e54 795
mchheta 15:a557a4c85e54 796 pc.printf("\n");
WiredHome 3:ca6a1026c28e 797 }
mchheta 15:a557a4c85e54 798 }