IoT Alarm System

Dependencies:   ESP8266NodeMCUInterface JPEGCamera SDFileSystem IoT_Security xbee_lib

Fork of HUZZAHESP8266-web-control-LPC1768 by Austin Dong

Committer:
kbrahmbhatt6
Date:
Fri Apr 29 07:04:08 2016 +0000
Revision:
6:bcbe1be26da5
Parent:
5:bc0296a5ad8a
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
star297 0:e2a155f50119 1 // ESP8266 Static page WEB server to control Mbed
star297 0:e2a155f50119 2
star297 0:e2a155f50119 3 #include "mbed.h"
kbrahmbhatt6 6:bcbe1be26da5 4 #include "JPEGCamera.h"
kbrahmbhatt6 6:bcbe1be26da5 5 #include "xbee.h"
kbrahmbhatt6 6:bcbe1be26da5 6 #include "ESP8266Interface.h"
kbrahmbhatt6 6:bcbe1be26da5 7 #include "TCPSocketConnection.h"
kbrahmbhatt6 6:bcbe1be26da5 8 #include "SDFileSystem.h"
kbrahmbhatt6 6:bcbe1be26da5 9
kbrahmbhatt6 6:bcbe1be26da5 10 SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
kbrahmbhatt6 6:bcbe1be26da5 11 //#include "rtos.h"
kbrahmbhatt6 6:bcbe1be26da5 12
kbrahmbhatt6 6:bcbe1be26da5 13 //Print temperature from TMP36 analog temperature sensor
kbrahmbhatt6 6:bcbe1be26da5 14 ///////////////////////////////////////////////////////////////////////////////
kbrahmbhatt6 6:bcbe1be26da5 15 //Setup a new class for TMP36 sensor
kbrahmbhatt6 6:bcbe1be26da5 16 class TMP36
kbrahmbhatt6 6:bcbe1be26da5 17 {
kbrahmbhatt6 6:bcbe1be26da5 18 public:
kbrahmbhatt6 6:bcbe1be26da5 19 TMP36(PinName pin);
kbrahmbhatt6 6:bcbe1be26da5 20 TMP36();
kbrahmbhatt6 6:bcbe1be26da5 21 operator float ();
kbrahmbhatt6 6:bcbe1be26da5 22 float read();
kbrahmbhatt6 6:bcbe1be26da5 23 private:
kbrahmbhatt6 6:bcbe1be26da5 24 //class sets up the AnalogIn pin
kbrahmbhatt6 6:bcbe1be26da5 25 AnalogIn _pin;
kbrahmbhatt6 6:bcbe1be26da5 26 };
kbrahmbhatt6 6:bcbe1be26da5 27
kbrahmbhatt6 6:bcbe1be26da5 28 TMP36::TMP36(PinName pin) : _pin(pin)
kbrahmbhatt6 6:bcbe1be26da5 29 {
kbrahmbhatt6 6:bcbe1be26da5 30 // _pin(pin) means pass pin to the AnalogIn constructor
kbrahmbhatt6 6:bcbe1be26da5 31 }
kbrahmbhatt6 6:bcbe1be26da5 32
kbrahmbhatt6 6:bcbe1be26da5 33 float TMP36::read()
kbrahmbhatt6 6:bcbe1be26da5 34 {
kbrahmbhatt6 6:bcbe1be26da5 35 //convert sensor reading to temperature in degrees C
kbrahmbhatt6 6:bcbe1be26da5 36 return ((_pin.read()*3.3)-0.500)*100.0;
kbrahmbhatt6 6:bcbe1be26da5 37 }
kbrahmbhatt6 6:bcbe1be26da5 38 //overload of float conversion (avoids needing to type .read() in equations)
kbrahmbhatt6 6:bcbe1be26da5 39 TMP36::operator float ()
kbrahmbhatt6 6:bcbe1be26da5 40 {
kbrahmbhatt6 6:bcbe1be26da5 41 //convert sensor reading to temperature in degrees C
kbrahmbhatt6 6:bcbe1be26da5 42 return ((_pin.read()*3.3)-0.500)*100.0;
kbrahmbhatt6 6:bcbe1be26da5 43 }
kbrahmbhatt6 6:bcbe1be26da5 44 ///////////////////////////////////////////////////////////////////////////////
kbrahmbhatt6 6:bcbe1be26da5 45
kbrahmbhatt6 6:bcbe1be26da5 46
kbrahmbhatt6 6:bcbe1be26da5 47
kbrahmbhatt6 6:bcbe1be26da5 48
star297 0:e2a155f50119 49
star297 0:e2a155f50119 50 Serial pc(USBTX, USBRX);
kbrahmbhatt6 6:bcbe1be26da5 51 //Serial esp(p28, p27); // tx, rx
kbrahmbhatt6 6:bcbe1be26da5 52 LocalFileSystem local("local"); //save images on mbed
star297 2:d4c6bc0f2dc4 53
star297 0:e2a155f50119 54 // Standard Mbed LED definitions
ausdong 5:bc0296a5ad8a 55 DigitalOut led1(LED1);
ausdong 5:bc0296a5ad8a 56 DigitalOut led2(LED2);
ausdong 5:bc0296a5ad8a 57 DigitalOut led3(LED3);
ausdong 5:bc0296a5ad8a 58 DigitalOut led4(LED4);
star297 0:e2a155f50119 59
ausdong 5:bc0296a5ad8a 60 // some test values to show on web page
4180_1 4:40dd020463ea 61 AnalogIn Ain1(p18);
4180_1 4:40dd020463ea 62 AnalogIn Ain2(p19);
star297 0:e2a155f50119 63
ausdong 5:bc0296a5ad8a 64 /*
ausdong 5:bc0296a5ad8a 65 char ssid[32] = "hsd"; // enter WiFi router ssid inside the quotes
ausdong 5:bc0296a5ad8a 66 char pwd [32] = "austin123"; // enter WiFi router password inside the quotes
ausdong 5:bc0296a5ad8a 67 */
4180_1 4:40dd020463ea 68 float temperature, AdcIn, Ht;
star297 0:e2a155f50119 69 float R1=100000, R2=10000; // resistor values to give a 10:1 reduction of measured AnalogIn voltage
star297 0:e2a155f50119 70 char Vcc[10];
star297 0:e2a155f50119 71 char Temp[10];
ausdong 5:bc0296a5ad8a 72
ausdong 5:bc0296a5ad8a 73 // things for sending/receiving data over serial
ausdong 5:bc0296a5ad8a 74 volatile int tx_in=0;
ausdong 5:bc0296a5ad8a 75 volatile int tx_out=0;
ausdong 5:bc0296a5ad8a 76 volatile int rx_in=0;
ausdong 5:bc0296a5ad8a 77 volatile int rx_out=0;
ausdong 5:bc0296a5ad8a 78 const int buffer_size = 4095;
ausdong 5:bc0296a5ad8a 79 char tx_buffer[buffer_size+1];
ausdong 5:bc0296a5ad8a 80 char rx_buffer[buffer_size+1];
ausdong 5:bc0296a5ad8a 81 void Tx_interrupt();
ausdong 5:bc0296a5ad8a 82 void Rx_interrupt();
ausdong 5:bc0296a5ad8a 83 void send_line();
ausdong 5:bc0296a5ad8a 84 void read_line();
kbrahmbhatt6 6:bcbe1be26da5 85 void alarmPhoto(int);
ausdong 5:bc0296a5ad8a 86
ausdong 5:bc0296a5ad8a 87 int DataRX;
ausdong 5:bc0296a5ad8a 88 int update;
ausdong 5:bc0296a5ad8a 89 int count;
ausdong 5:bc0296a5ad8a 90 char cmdbuff[1024];
ausdong 5:bc0296a5ad8a 91 char replybuff[4096];
ausdong 5:bc0296a5ad8a 92 char webdata[4096]; // This may need to be bigger depending on WEB browser used
ausdong 5:bc0296a5ad8a 93 char webbuff[4096]; // Currently using 1986 characters, Increase this if more web page data added
star297 0:e2a155f50119 94 char timebuf[30];
ausdong 5:bc0296a5ad8a 95 void SendCMD(),getreply(),ReadWebData(),startserver();
kbrahmbhatt6 6:bcbe1be26da5 96 void gettime(),setRTC(),getTemperature();
ausdong 5:bc0296a5ad8a 97 char rx_line[1024];
ausdong 5:bc0296a5ad8a 98 int port =80; // set server port
ausdong 5:bc0296a5ad8a 99 int SERVtimeout =5; // set server timeout in seconds in case link breaks.
ausdong 5:bc0296a5ad8a 100 struct tm t;
star297 1:71ed1afbf344 101 // manual set RTC values
4180_1 4:40dd020463ea 102 int minute =00; // 0-59
4180_1 4:40dd020463ea 103 int hour =12; // 2-23
4180_1 4:40dd020463ea 104 int dayofmonth =26; // 1-31
4180_1 4:40dd020463ea 105 int month =8; // 1-12
star297 1:71ed1afbf344 106 int year =15; // last 2 digits
star297 2:d4c6bc0f2dc4 107
kbrahmbhatt6 6:bcbe1be26da5 108 PwmOut Alarm(p21);
kbrahmbhatt6 6:bcbe1be26da5 109 JPEGCamera camera(p13, p14); //Camera
kbrahmbhatt6 6:bcbe1be26da5 110 TMP36 myTMP36(p15);
kbrahmbhatt6 6:bcbe1be26da5 111 DigitalOut P16(p16);
kbrahmbhatt6 6:bcbe1be26da5 112 DigitalOut P17(p17);
kbrahmbhatt6 6:bcbe1be26da5 113 DigitalOut P19(p19);
kbrahmbhatt6 6:bcbe1be26da5 114 DigitalOut P20(p20);
kbrahmbhatt6 6:bcbe1be26da5 115 float tempC;
kbrahmbhatt6 6:bcbe1be26da5 116 xbee xbee2(p9,p10,p11);
kbrahmbhatt6 6:bcbe1be26da5 117 char read_data[202];
kbrahmbhatt6 6:bcbe1be26da5 118 Serial esp(p28, p27); // tx, rx
kbrahmbhatt6 6:bcbe1be26da5 119 void Email();
kbrahmbhatt6 6:bcbe1be26da5 120 //ESP8266Interface esp1(p28, p27, p26, 9600, 3000);
kbrahmbhatt6 6:bcbe1be26da5 121 //EthernetInterface eth;
kbrahmbhatt6 6:bcbe1be26da5 122
kbrahmbhatt6 6:bcbe1be26da5 123 ////////
kbrahmbhatt6 6:bcbe1be26da5 124 //tempC = myTMP36;
kbrahmbhatt6 6:bcbe1be26da5 125 ///printf(" T=%5.2F C \n\r", tempC);//for testing
kbrahmbhatt6 6:bcbe1be26da5 126 //if(tempC>45) {
kbrahmbhatt6 6:bcbe1be26da5 127 //add code
kbrahmbhatt6 6:bcbe1be26da5 128 //}
kbrahmbhatt6 6:bcbe1be26da5 129 ///////
kbrahmbhatt6 6:bcbe1be26da5 130
4180_1 4:40dd020463ea 131 int main()
4180_1 4:40dd020463ea 132 {
kbrahmbhatt6 6:bcbe1be26da5 133 camera.setPictureSize(JPEGCamera::SIZE320x240);
ausdong 5:bc0296a5ad8a 134 pc.baud(9600);
kbrahmbhatt6 6:bcbe1be26da5 135 ////////////////////////////////xbee2.RecieveData(read_data,0); //ADD THIS BACK!!!
kbrahmbhatt6 6:bcbe1be26da5 136 // led3 = 1;
kbrahmbhatt6 6:bcbe1be26da5 137 //
kbrahmbhatt6 6:bcbe1be26da5 138 // ///////////Emailing the user
kbrahmbhatt6 6:bcbe1be26da5 139 // Email();
ausdong 5:bc0296a5ad8a 140 esp.baud(9600);
ausdong 5:bc0296a5ad8a 141 led1=1,led2=0,led3=0, led4=0;
ausdong 5:bc0296a5ad8a 142 // Setup a serial interrupt function to receive data
ausdong 5:bc0296a5ad8a 143 esp.attach(&Rx_interrupt, Serial::RxIrq);
ausdong 5:bc0296a5ad8a 144 // Setup a serial interrupt function to transmit data
ausdong 5:bc0296a5ad8a 145 esp.attach(&Tx_interrupt, Serial::TxIrq);
kbrahmbhatt6 6:bcbe1be26da5 146 Alarm.period(1.0/100);
4180_1 4:40dd020463ea 147 if (time(NULL) < 1420070400) {
4180_1 4:40dd020463ea 148 setRTC();
4180_1 4:40dd020463ea 149 }
star297 0:e2a155f50119 150 startserver();
ausdong 5:bc0296a5ad8a 151 DataRX=0;
ausdong 5:bc0296a5ad8a 152 count=0;
kbrahmbhatt6 6:bcbe1be26da5 153 xbee2.RecieveData(read_data,0);
kbrahmbhatt6 6:bcbe1be26da5 154 led3 = 1;
kbrahmbhatt6 6:bcbe1be26da5 155 Alarm = 0.5;
kbrahmbhatt6 6:bcbe1be26da5 156 //Take photo
kbrahmbhatt6 6:bcbe1be26da5 157 alarmPhoto(5); //will be saved as PICT005.jpg
kbrahmbhatt6 6:bcbe1be26da5 158 //FILE *fp = fopen("/local/pict005.jpg", "w"); // Open "out.txt" on the local file system for writing
kbrahmbhatt6 6:bcbe1be26da5 159 // if (fp != NULL) {
kbrahmbhatt6 6:bcbe1be26da5 160 // pc.printf("File opens\n");
kbrahmbhatt6 6:bcbe1be26da5 161 // }
kbrahmbhatt6 6:bcbe1be26da5 162 // mkdir("/sd/mydir", 0777);
kbrahmbhatt6 6:bcbe1be26da5 163 // FILE *fp1 = fopen("/sd/mydir/sdtest.jpg", "w");
kbrahmbhatt6 6:bcbe1be26da5 164 // //fprintf(fp1, fp);
kbrahmbhatt6 6:bcbe1be26da5 165 // fclose(fp1);
kbrahmbhatt6 6:bcbe1be26da5 166
kbrahmbhatt6 6:bcbe1be26da5 167 // email the user
kbrahmbhatt6 6:bcbe1be26da5 168 // Can turn-off the alarm
kbrahmbhatt6 6:bcbe1be26da5 169
kbrahmbhatt6 6:bcbe1be26da5 170 //
kbrahmbhatt6 6:bcbe1be26da5 171 ///////////Emailing the user
kbrahmbhatt6 6:bcbe1be26da5 172 //Email();
kbrahmbhatt6 6:bcbe1be26da5 173 // ESP8266Interface esp1(p28, p27, p26, 9600, 3000);
kbrahmbhatt6 6:bcbe1be26da5 174 // esp1.init();
kbrahmbhatt6 6:bcbe1be26da5 175 // esp1.connect("ssid", "password");
kbrahmbhatt6 6:bcbe1be26da5 176 // printf("IP Address is %s\n", esp1.getIPAddress());
kbrahmbhatt6 6:bcbe1be26da5 177 // TCPSocketConnection sock;
kbrahmbhatt6 6:bcbe1be26da5 178 // //delete esp1;
kbrahmbhatt6 6:bcbe1be26da5 179 //
kbrahmbhatt6 6:bcbe1be26da5 180 //
kbrahmbhatt6 6:bcbe1be26da5 181 // sock.connect("blahblahmbed.comlu.com", 80); //http://blahblahmbed.comlu.com/ "mbed.org"
kbrahmbhatt6 6:bcbe1be26da5 182 //
kbrahmbhatt6 6:bcbe1be26da5 183 // char http_cmd[] = "GET http://blahblahmbed.comlu.com/index.php HTTP/1.0\n\n"; // /media/uploads/mbed_official/hello.txt
kbrahmbhatt6 6:bcbe1be26da5 184 // sock.send_all(http_cmd, sizeof(http_cmd)-1);
kbrahmbhatt6 6:bcbe1be26da5 185 // char buffer[300];
kbrahmbhatt6 6:bcbe1be26da5 186 // int ret;
kbrahmbhatt6 6:bcbe1be26da5 187 // while (true) {
kbrahmbhatt6 6:bcbe1be26da5 188 // ret = sock.receive(buffer, sizeof(buffer)-1);
kbrahmbhatt6 6:bcbe1be26da5 189 // if (ret <= 0) break;
kbrahmbhatt6 6:bcbe1be26da5 190 // buffer[ret] = '\0';
kbrahmbhatt6 6:bcbe1be26da5 191 // printf("Received %d chars from server:\n%s\n", ret, buffer);
kbrahmbhatt6 6:bcbe1be26da5 192 // }
kbrahmbhatt6 6:bcbe1be26da5 193 // sock.close();
kbrahmbhatt6 6:bcbe1be26da5 194 // esp1.disconnect();
kbrahmbhatt6 6:bcbe1be26da5 195 // //////////
kbrahmbhatt6 6:bcbe1be26da5 196 //if (time(NULL) < 1420070400) {
kbrahmbhatt6 6:bcbe1be26da5 197 // setRTC();
kbrahmbhatt6 6:bcbe1be26da5 198 // }
kbrahmbhatt6 6:bcbe1be26da5 199 // startserver();
kbrahmbhatt6 6:bcbe1be26da5 200 //eth.init(); //Use DHCP
kbrahmbhatt6 6:bcbe1be26da5 201 //eth.connect();
kbrahmbhatt6 6:bcbe1be26da5 202 //printf("IP Address is %s\n", eth.getIPAddress());
kbrahmbhatt6 6:bcbe1be26da5 203
kbrahmbhatt6 6:bcbe1be26da5 204 //TCPSocketConnection sock;
kbrahmbhatt6 6:bcbe1be26da5 205 //sock.connect("blahblahmbed.comlu.com", 80); //http://blahblahmbed.comlu.com/ "mbed.org"
kbrahmbhatt6 6:bcbe1be26da5 206
kbrahmbhatt6 6:bcbe1be26da5 207 //char http_cmd[] = "GET http://blahblahmbed.comlu.com/index.php HTTP/1.0\n\n"; // /media/uploads/mbed_official/hello.txt
kbrahmbhatt6 6:bcbe1be26da5 208 //sock.send_all(http_cmd, sizeof(http_cmd)-1);
4180_1 4:40dd020463ea 209 while(1) {
4180_1 4:40dd020463ea 210 if(DataRX==1) {
star297 0:e2a155f50119 211 ReadWebData();
ausdong 5:bc0296a5ad8a 212 esp.attach(&Rx_interrupt, Serial::RxIrq);
ausdong 5:bc0296a5ad8a 213 }
ausdong 5:bc0296a5ad8a 214 if(update==1) // update time, hit count, and analog levels in the HUZZAH chip
ausdong 5:bc0296a5ad8a 215 {
ausdong 5:bc0296a5ad8a 216 // get new values
ausdong 5:bc0296a5ad8a 217 gettime();
kbrahmbhatt6 6:bcbe1be26da5 218 //gettemp();
kbrahmbhatt6 6:bcbe1be26da5 219 //getbattery();
kbrahmbhatt6 6:bcbe1be26da5 220 getTemperature();
kbrahmbhatt6 6:bcbe1be26da5 221 //if (tempC > 27) {
kbrahmbhatt6 6:bcbe1be26da5 222 // Alarm = 0.5;
kbrahmbhatt6 6:bcbe1be26da5 223 // }
ausdong 5:bc0296a5ad8a 224 count++;
ausdong 5:bc0296a5ad8a 225 // send new values
kbrahmbhatt6 6:bcbe1be26da5 226 //sprintf(cmdbuff, "count,time,analog1,analog2=%d,\"%s\",\"%s\",\"%s\"\r\n",count,timebuf,Temp,Vcc);
kbrahmbhatt6 6:bcbe1be26da5 227 sprintf(cmdbuff, "count,time,tempC=%d,\"%s\",\"%f\"\r\n",count,timebuf,tempC);
kbrahmbhatt6 6:bcbe1be26da5 228 //esp1.send(cmdbuff, 1024);
kbrahmbhatt6 6:bcbe1be26da5 229 //esp1.recv(replybuff, sizeof(replybuff));
ausdong 5:bc0296a5ad8a 230 SendCMD();
ausdong 5:bc0296a5ad8a 231 getreply();
ausdong 5:bc0296a5ad8a 232 update=0;
4180_1 4:40dd020463ea 233 }
star297 0:e2a155f50119 234 }
4180_1 4:40dd020463ea 235 }
star297 0:e2a155f50119 236
kbrahmbhatt6 6:bcbe1be26da5 237 void Email() {
kbrahmbhatt6 6:bcbe1be26da5 238 /////////Emailing the user
kbrahmbhatt6 6:bcbe1be26da5 239 ESP8266Interface esp1(p28, p27, p26, 9600, 3000);
kbrahmbhatt6 6:bcbe1be26da5 240 esp1.init();
kbrahmbhatt6 6:bcbe1be26da5 241 esp1.connect("ssid", "password");
kbrahmbhatt6 6:bcbe1be26da5 242 printf("IP Address is %s\n", esp1.getIPAddress());
kbrahmbhatt6 6:bcbe1be26da5 243 TCPSocketConnection sock;
kbrahmbhatt6 6:bcbe1be26da5 244 //delete esp1;
kbrahmbhatt6 6:bcbe1be26da5 245
kbrahmbhatt6 6:bcbe1be26da5 246
kbrahmbhatt6 6:bcbe1be26da5 247 sock.connect("blahblahmbed.comlu.com", 80); //http://blahblahmbed.comlu.com/ "mbed.org"
kbrahmbhatt6 6:bcbe1be26da5 248
kbrahmbhatt6 6:bcbe1be26da5 249 char http_cmd[] = "GET http://blahblahmbed.comlu.com/index.php HTTP/1.0\n\n"; // /media/uploads/mbed_official/hello.txt
kbrahmbhatt6 6:bcbe1be26da5 250 sock.send_all(http_cmd, sizeof(http_cmd)-1);
kbrahmbhatt6 6:bcbe1be26da5 251 char buffer[300];
kbrahmbhatt6 6:bcbe1be26da5 252 int ret;
kbrahmbhatt6 6:bcbe1be26da5 253 while (true) {
kbrahmbhatt6 6:bcbe1be26da5 254 ret = sock.receive(buffer, sizeof(buffer)-1);
kbrahmbhatt6 6:bcbe1be26da5 255 if (ret <= 0) break;
kbrahmbhatt6 6:bcbe1be26da5 256 buffer[ret] = '\0';
kbrahmbhatt6 6:bcbe1be26da5 257 printf("Received %d chars from server:\n%s\n", ret, buffer);
kbrahmbhatt6 6:bcbe1be26da5 258 }
kbrahmbhatt6 6:bcbe1be26da5 259 sock.close();
kbrahmbhatt6 6:bcbe1be26da5 260 esp1.disconnect();
kbrahmbhatt6 6:bcbe1be26da5 261 //////////
kbrahmbhatt6 6:bcbe1be26da5 262 }
kbrahmbhatt6 6:bcbe1be26da5 263
4180_1 4:40dd020463ea 264 // Reads and processes GET and POST web data
star297 0:e2a155f50119 265 void ReadWebData()
4180_1 4:40dd020463ea 266 {
4180_1 4:40dd020463ea 267 wait_ms(200);
ausdong 5:bc0296a5ad8a 268 esp.attach(NULL,Serial::RxIrq);
4180_1 4:40dd020463ea 269 DataRX=0;
4180_1 4:40dd020463ea 270 memset(webdata, '\0', sizeof(webdata));
ausdong 5:bc0296a5ad8a 271 strcpy(webdata, rx_buffer);
ausdong 5:bc0296a5ad8a 272 memset(rx_buffer, '\0', sizeof(rx_buffer));
ausdong 5:bc0296a5ad8a 273 rx_in = 0;
ausdong 5:bc0296a5ad8a 274 rx_out = 0;
ausdong 5:bc0296a5ad8a 275 // check web data for form information
ausdong 5:bc0296a5ad8a 276 if( strstr(webdata, "check=led1v") != NULL ) {
ausdong 5:bc0296a5ad8a 277 led1=!led1;
ausdong 5:bc0296a5ad8a 278 }
ausdong 5:bc0296a5ad8a 279 if( strstr(webdata, "check=led2v") != NULL ) {
ausdong 5:bc0296a5ad8a 280 led2=!led2;
ausdong 5:bc0296a5ad8a 281 }
ausdong 5:bc0296a5ad8a 282 if( strstr(webdata, "check=led3v") != NULL ) {
ausdong 5:bc0296a5ad8a 283 led3=!led3;
ausdong 5:bc0296a5ad8a 284 }
ausdong 5:bc0296a5ad8a 285 if( strstr(webdata, "check=led4v") != NULL ) {
ausdong 5:bc0296a5ad8a 286 led4=!led4;
ausdong 5:bc0296a5ad8a 287 }
kbrahmbhatt6 6:bcbe1be26da5 288 if( strstr(webdata, "check=speakeron") != NULL ) {
kbrahmbhatt6 6:bcbe1be26da5 289 if (Alarm == 0.5){Alarm=0.0;}
kbrahmbhatt6 6:bcbe1be26da5 290 else Alarm=0.5;
kbrahmbhatt6 6:bcbe1be26da5 291 }
kbrahmbhatt6 6:bcbe1be26da5 292 if( strstr(webdata, "check=photo") != NULL ) {
kbrahmbhatt6 6:bcbe1be26da5 293 alarmPhoto(count);
kbrahmbhatt6 6:bcbe1be26da5 294 FILE *fp = fopen("/local/pict003.jpg", "w"); // Open "out.txt" on the local file system for writing
kbrahmbhatt6 6:bcbe1be26da5 295 if (fp != NULL) {
kbrahmbhatt6 6:bcbe1be26da5 296 pc.printf("File opens\n");
kbrahmbhatt6 6:bcbe1be26da5 297 }
kbrahmbhatt6 6:bcbe1be26da5 298 fclose(fp);
kbrahmbhatt6 6:bcbe1be26da5 299 }
ausdong 5:bc0296a5ad8a 300 if( strstr(webdata, "POST") != NULL ) { // set update flag if POST request
ausdong 5:bc0296a5ad8a 301 update=1;
ausdong 5:bc0296a5ad8a 302 }
ausdong 5:bc0296a5ad8a 303 if( strstr(webdata, "GET") != NULL && strstr(webdata, "favicon") == NULL ) { // set update flag for GET request but do not want to update for favicon requests
ausdong 5:bc0296a5ad8a 304 update=1;
4180_1 4:40dd020463ea 305 }
star297 0:e2a155f50119 306 }
ausdong 5:bc0296a5ad8a 307 // Starts webserver
star297 0:e2a155f50119 308 void startserver()
star297 0:e2a155f50119 309 {
ausdong 5:bc0296a5ad8a 310 gettime();
kbrahmbhatt6 6:bcbe1be26da5 311 //gettemp();
kbrahmbhatt6 6:bcbe1be26da5 312 //getbattery();
4180_1 4:40dd020463ea 313 pc.printf("++++++++++ Resetting ESP ++++++++++\r\n");
ausdong 5:bc0296a5ad8a 314 strcpy(cmdbuff,"node.restart()\r\n");
ausdong 5:bc0296a5ad8a 315 SendCMD();
ausdong 5:bc0296a5ad8a 316 wait(2);
ausdong 5:bc0296a5ad8a 317 getreply();
ausdong 5:bc0296a5ad8a 318
ausdong 5:bc0296a5ad8a 319 pc.printf("\n++++++++++ Starting Server ++++++++++\r\n> ");
ausdong 5:bc0296a5ad8a 320
ausdong 5:bc0296a5ad8a 321 // initial values
ausdong 5:bc0296a5ad8a 322 sprintf(cmdbuff, "count,time,analog1,analog2=0,\"%s\",\"%s\",\"%s\"\r\n",timebuf,Temp,Vcc);
ausdong 5:bc0296a5ad8a 323 SendCMD();
ausdong 5:bc0296a5ad8a 324 getreply();
ausdong 5:bc0296a5ad8a 325 wait(0.5);
ausdong 5:bc0296a5ad8a 326
ausdong 5:bc0296a5ad8a 327 //create server
ausdong 5:bc0296a5ad8a 328 sprintf(cmdbuff, "srv=net.createServer(net.TCP,%d)\r\n",SERVtimeout);
ausdong 5:bc0296a5ad8a 329 SendCMD();
ausdong 5:bc0296a5ad8a 330 getreply();
ausdong 5:bc0296a5ad8a 331 wait(0.5);
ausdong 5:bc0296a5ad8a 332 strcpy(cmdbuff,"srv:listen(80,function(conn)\r\n");
star297 0:e2a155f50119 333 SendCMD();
star297 1:71ed1afbf344 334 getreply();
ausdong 5:bc0296a5ad8a 335 wait(0.3);
ausdong 5:bc0296a5ad8a 336 strcpy(cmdbuff,"conn:on(\"receive\",function(conn,payload) \r\n");
ausdong 5:bc0296a5ad8a 337 SendCMD();
ausdong 5:bc0296a5ad8a 338 getreply();
ausdong 5:bc0296a5ad8a 339 wait(0.3);
ausdong 5:bc0296a5ad8a 340
ausdong 5:bc0296a5ad8a 341 //print data to mbed
ausdong 5:bc0296a5ad8a 342 strcpy(cmdbuff,"print(payload)\r\n");
ausdong 5:bc0296a5ad8a 343 SendCMD();
ausdong 5:bc0296a5ad8a 344 getreply();
ausdong 5:bc0296a5ad8a 345 wait(0.2);
ausdong 5:bc0296a5ad8a 346
kbrahmbhatt6 6:bcbe1be26da5 347 strcpy(cmdbuff,"conn:send('<!DOCTYPE html><html><body><h1>IoT Alarm System</h1>')\r\n");
ausdong 5:bc0296a5ad8a 348 SendCMD();
ausdong 5:bc0296a5ad8a 349 getreply();
ausdong 5:bc0296a5ad8a 350 wait(0.4);
kbrahmbhatt6 6:bcbe1be26da5 351 // strcpy(cmdbuff,"conn:send('<body style=\"background-color:#FF0000;>')\r\n");
kbrahmbhatt6 6:bcbe1be26da5 352 // SendCMD();
kbrahmbhatt6 6:bcbe1be26da5 353 // getreply();
kbrahmbhatt6 6:bcbe1be26da5 354 // wait(0.4);
ausdong 5:bc0296a5ad8a 355 strcpy(cmdbuff,"conn:send('Hit count: '..count..'')\r\n");
star297 1:71ed1afbf344 356 SendCMD();
star297 2:d4c6bc0f2dc4 357 getreply();
ausdong 5:bc0296a5ad8a 358 wait(0.2);
ausdong 5:bc0296a5ad8a 359 strcpy(cmdbuff,"conn:send('<br>Last hit (based on mbed RTC time): '..time..'<br><hr>')\r\n");
ausdong 5:bc0296a5ad8a 360 SendCMD();
ausdong 5:bc0296a5ad8a 361 getreply();
ausdong 5:bc0296a5ad8a 362 wait(0.4);
kbrahmbhatt6 6:bcbe1be26da5 363 //strcpy(cmdbuff,"conn:send('Analog 1: '..analog1..' V<br>Analog 2: '..analog2..' V<br><hr>')\r\n");
kbrahmbhatt6 6:bcbe1be26da5 364 // SendCMD();
kbrahmbhatt6 6:bcbe1be26da5 365 // getreply();
kbrahmbhatt6 6:bcbe1be26da5 366 // wait(0.3);
kbrahmbhatt6 6:bcbe1be26da5 367 strcpy(cmdbuff,"conn:send('Temperature: '..tempC..'')\r\n");
star297 1:71ed1afbf344 368 SendCMD();
star297 3:f7febfa77784 369 getreply();
ausdong 5:bc0296a5ad8a 370 wait(0.3);
kbrahmbhatt6 6:bcbe1be26da5 371
ausdong 5:bc0296a5ad8a 372 strcpy(cmdbuff,"conn:send('<form method=\"POST\"')\r\n");
ausdong 5:bc0296a5ad8a 373 SendCMD();
ausdong 5:bc0296a5ad8a 374 getreply();
ausdong 5:bc0296a5ad8a 375 wait(0.3);
ausdong 5:bc0296a5ad8a 376 strcpy(cmdbuff, "conn:send('<p><input type=\"checkbox\" name=\"check\" value=\"led1v\"> flip LED1')\r\n");
ausdong 5:bc0296a5ad8a 377 SendCMD();
ausdong 5:bc0296a5ad8a 378 getreply();
ausdong 5:bc0296a5ad8a 379 wait(0.3);
kbrahmbhatt6 6:bcbe1be26da5 380 /////////////////////////////////////////////////////////////////////////////////////////////////////////
kbrahmbhatt6 6:bcbe1be26da5 381 // strcpy(cmdbuff, "conn:send('<p><input type=\"image\" src=\"/PICT002.jpg\" alt=\"Submit\"> blah')\r\n");
kbrahmbhatt6 6:bcbe1be26da5 382 // SendCMD();
kbrahmbhatt6 6:bcbe1be26da5 383 // getreply();
kbrahmbhatt6 6:bcbe1be26da5 384 // wait(0.3);
kbrahmbhatt6 6:bcbe1be26da5 385 /////////////////////////////////////////////////////////////////////////////////////////////////////////
kbrahmbhatt6 6:bcbe1be26da5 386
ausdong 5:bc0296a5ad8a 387 strcpy(cmdbuff, "conn:send('<p><input type=\"checkbox\" name=\"check\" value=\"led2v\"> flip LED2')\r\n");
ausdong 5:bc0296a5ad8a 388 SendCMD();
ausdong 5:bc0296a5ad8a 389 getreply();
ausdong 5:bc0296a5ad8a 390 wait(0.3);
ausdong 5:bc0296a5ad8a 391 strcpy(cmdbuff, "conn:send('<p><input type=\"checkbox\" name=\"check\" value=\"led3v\"> flip LED3')\r\n");
star297 3:f7febfa77784 392 SendCMD();
star297 2:d4c6bc0f2dc4 393 getreply();
ausdong 5:bc0296a5ad8a 394 wait(0.3);
ausdong 5:bc0296a5ad8a 395 strcpy(cmdbuff, "conn:send('<p><input type=\"checkbox\" name=\"check\" value=\"led4v\"> flip LED4')\r\n");
ausdong 5:bc0296a5ad8a 396 SendCMD();
ausdong 5:bc0296a5ad8a 397 getreply();
ausdong 5:bc0296a5ad8a 398 wait(0.3);
kbrahmbhatt6 6:bcbe1be26da5 399
kbrahmbhatt6 6:bcbe1be26da5 400 strcpy(cmdbuff, "conn:send('<p><input type=\"checkbox\" name=\"check\" value=\"speakeron\"> Alarm')\r\n");
kbrahmbhatt6 6:bcbe1be26da5 401 SendCMD();
kbrahmbhatt6 6:bcbe1be26da5 402 getreply();
kbrahmbhatt6 6:bcbe1be26da5 403 wait(0.3);
kbrahmbhatt6 6:bcbe1be26da5 404 strcpy(cmdbuff, "conn:send('<p><input type=\"checkbox\" name=\"check\" value=\"photo\"> Take Photo')\r\n");
kbrahmbhatt6 6:bcbe1be26da5 405 SendCMD();
kbrahmbhatt6 6:bcbe1be26da5 406 getreply();
kbrahmbhatt6 6:bcbe1be26da5 407 wait(0.3);
kbrahmbhatt6 6:bcbe1be26da5 408
ausdong 5:bc0296a5ad8a 409 strcpy(cmdbuff,"conn:send('<p><input type=\"submit\" value=\"send-refresh\"></form>')\r\n");
ausdong 5:bc0296a5ad8a 410 SendCMD();
ausdong 5:bc0296a5ad8a 411 getreply();
ausdong 5:bc0296a5ad8a 412 wait(0.3);
ausdong 5:bc0296a5ad8a 413 strcpy(cmdbuff, "conn:send('<p><h2>How to use:</h2><ul><li>Select a checkbox to flip on/off</li><li>Click Send-Refresh to send data and refresh values</li></ul></body></html>')\r\n");
ausdong 5:bc0296a5ad8a 414 SendCMD();
ausdong 5:bc0296a5ad8a 415 getreply();
ausdong 5:bc0296a5ad8a 416 wait(0.5);
ausdong 5:bc0296a5ad8a 417 // end web page data
ausdong 5:bc0296a5ad8a 418 strcpy(cmdbuff, "conn:on(\"sent\",function(conn) conn:close() end)\r\n"); // close current connection
ausdong 5:bc0296a5ad8a 419 SendCMD();
ausdong 5:bc0296a5ad8a 420 getreply();
ausdong 5:bc0296a5ad8a 421 wait(0.3);
ausdong 5:bc0296a5ad8a 422 strcpy(cmdbuff, "end)\r\n");
ausdong 5:bc0296a5ad8a 423 SendCMD();
ausdong 5:bc0296a5ad8a 424 getreply();
ausdong 5:bc0296a5ad8a 425 wait(0.2);
ausdong 5:bc0296a5ad8a 426 strcpy(cmdbuff, "end)\r\n");
ausdong 5:bc0296a5ad8a 427 SendCMD();
ausdong 5:bc0296a5ad8a 428 getreply();
ausdong 5:bc0296a5ad8a 429 wait(0.2);
ausdong 5:bc0296a5ad8a 430
ausdong 5:bc0296a5ad8a 431 strcpy(cmdbuff, "tmr.alarm(0, 1000, 1, function()\r\n");
ausdong 5:bc0296a5ad8a 432 SendCMD();
ausdong 5:bc0296a5ad8a 433 getreply();
ausdong 5:bc0296a5ad8a 434 wait(0.2);
ausdong 5:bc0296a5ad8a 435 strcpy(cmdbuff, "if wifi.sta.getip() == nil then\r\n");
ausdong 5:bc0296a5ad8a 436 SendCMD();
ausdong 5:bc0296a5ad8a 437 getreply();
ausdong 5:bc0296a5ad8a 438 wait(0.2);
ausdong 5:bc0296a5ad8a 439 strcpy(cmdbuff, "print(\"Connecting to AP...\\n\")\r\n");
ausdong 5:bc0296a5ad8a 440 SendCMD();
ausdong 5:bc0296a5ad8a 441 getreply();
ausdong 5:bc0296a5ad8a 442 wait(0.2);
ausdong 5:bc0296a5ad8a 443 strcpy(cmdbuff, "else\r\n");
ausdong 5:bc0296a5ad8a 444 SendCMD();
ausdong 5:bc0296a5ad8a 445 getreply();
ausdong 5:bc0296a5ad8a 446 wait(0.2);
ausdong 5:bc0296a5ad8a 447 strcpy(cmdbuff, "ip, nm, gw=wifi.sta.getip()\r\n");
ausdong 5:bc0296a5ad8a 448 SendCMD();
ausdong 5:bc0296a5ad8a 449 getreply();
ausdong 5:bc0296a5ad8a 450 wait(0.2);
ausdong 5:bc0296a5ad8a 451 strcpy(cmdbuff,"print(\"IP Address: \",ip)\r\n");
ausdong 5:bc0296a5ad8a 452 SendCMD();
ausdong 5:bc0296a5ad8a 453 getreply();
ausdong 5:bc0296a5ad8a 454 wait(0.2);
ausdong 5:bc0296a5ad8a 455 strcpy(cmdbuff,"tmr.stop(0)\r\n");
ausdong 5:bc0296a5ad8a 456 SendCMD();
ausdong 5:bc0296a5ad8a 457 getreply();
ausdong 5:bc0296a5ad8a 458 wait(0.2);
ausdong 5:bc0296a5ad8a 459 strcpy(cmdbuff,"end\r\n");
ausdong 5:bc0296a5ad8a 460 SendCMD();
ausdong 5:bc0296a5ad8a 461 getreply();
ausdong 5:bc0296a5ad8a 462 wait(0.2);
ausdong 5:bc0296a5ad8a 463 strcpy(cmdbuff,"end)\r\n");
ausdong 5:bc0296a5ad8a 464 SendCMD();
ausdong 5:bc0296a5ad8a 465 getreply();
ausdong 5:bc0296a5ad8a 466 wait(0.2);
ausdong 5:bc0296a5ad8a 467
ausdong 5:bc0296a5ad8a 468 pc.printf("\n\n++++++++++ Ready ++++++++++\r\n\n");
4180_1 4:40dd020463ea 469 }
ausdong 5:bc0296a5ad8a 470
ausdong 5:bc0296a5ad8a 471
star297 0:e2a155f50119 472 // ESP Command data send
star297 0:e2a155f50119 473 void SendCMD()
star297 0:e2a155f50119 474 {
ausdong 5:bc0296a5ad8a 475 int i;
ausdong 5:bc0296a5ad8a 476 char temp_char;
ausdong 5:bc0296a5ad8a 477 bool empty;
ausdong 5:bc0296a5ad8a 478 i = 0;
ausdong 5:bc0296a5ad8a 479 // Start Critical Section - don't interrupt while changing global buffer variables
ausdong 5:bc0296a5ad8a 480 NVIC_DisableIRQ(UART1_IRQn);
ausdong 5:bc0296a5ad8a 481 empty = (tx_in == tx_out);
ausdong 5:bc0296a5ad8a 482 while ((i==0) || (cmdbuff[i-1] != '\n')) {
ausdong 5:bc0296a5ad8a 483 // Wait if buffer full
ausdong 5:bc0296a5ad8a 484 if (((tx_in + 1) % buffer_size) == tx_out) {
ausdong 5:bc0296a5ad8a 485 // End Critical Section - need to let interrupt routine empty buffer by sending
ausdong 5:bc0296a5ad8a 486 NVIC_EnableIRQ(UART1_IRQn);
ausdong 5:bc0296a5ad8a 487 while (((tx_in + 1) % buffer_size) == tx_out) {
ausdong 5:bc0296a5ad8a 488 }
ausdong 5:bc0296a5ad8a 489 // Start Critical Section - don't interrupt while changing global buffer variables
ausdong 5:bc0296a5ad8a 490 NVIC_DisableIRQ(UART1_IRQn);
ausdong 5:bc0296a5ad8a 491 }
ausdong 5:bc0296a5ad8a 492 tx_buffer[tx_in] = cmdbuff[i];
ausdong 5:bc0296a5ad8a 493 i++;
ausdong 5:bc0296a5ad8a 494 tx_in = (tx_in + 1) % buffer_size;
ausdong 5:bc0296a5ad8a 495 }
ausdong 5:bc0296a5ad8a 496 if (esp.writeable() && (empty)) {
ausdong 5:bc0296a5ad8a 497 temp_char = tx_buffer[tx_out];
ausdong 5:bc0296a5ad8a 498 tx_out = (tx_out + 1) % buffer_size;
ausdong 5:bc0296a5ad8a 499 // Send first character to start tx interrupts, if stopped
ausdong 5:bc0296a5ad8a 500 esp.putc(temp_char);
ausdong 5:bc0296a5ad8a 501 }
ausdong 5:bc0296a5ad8a 502 // End Critical Section
ausdong 5:bc0296a5ad8a 503 NVIC_EnableIRQ(UART1_IRQn);
ausdong 5:bc0296a5ad8a 504 return;
4180_1 4:40dd020463ea 505 }
ausdong 5:bc0296a5ad8a 506
4180_1 4:40dd020463ea 507 // Get Command and ESP status replies
star297 0:e2a155f50119 508 void getreply()
4180_1 4:40dd020463ea 509 {
ausdong 5:bc0296a5ad8a 510 read_line();
ausdong 5:bc0296a5ad8a 511 sscanf(rx_line,replybuff);
ausdong 5:bc0296a5ad8a 512 }
ausdong 5:bc0296a5ad8a 513
ausdong 5:bc0296a5ad8a 514 // Read a line from the large rx buffer from rx interrupt routine
ausdong 5:bc0296a5ad8a 515 void read_line() {
ausdong 5:bc0296a5ad8a 516 int i;
ausdong 5:bc0296a5ad8a 517 i = 0;
ausdong 5:bc0296a5ad8a 518 // Start Critical Section - don't interrupt while changing global buffer variables
ausdong 5:bc0296a5ad8a 519 NVIC_DisableIRQ(UART1_IRQn);
ausdong 5:bc0296a5ad8a 520 // Loop reading rx buffer characters until end of line character
ausdong 5:bc0296a5ad8a 521 while ((i==0) || (rx_line[i-1] != '\r')) {
ausdong 5:bc0296a5ad8a 522 // Wait if buffer empty
ausdong 5:bc0296a5ad8a 523 if (rx_in == rx_out) {
ausdong 5:bc0296a5ad8a 524 // End Critical Section - need to allow rx interrupt to get new characters for buffer
ausdong 5:bc0296a5ad8a 525 NVIC_EnableIRQ(UART1_IRQn);
ausdong 5:bc0296a5ad8a 526 while (rx_in == rx_out) {
ausdong 5:bc0296a5ad8a 527 }
ausdong 5:bc0296a5ad8a 528 // Start Critical Section - don't interrupt while changing global buffer variables
ausdong 5:bc0296a5ad8a 529 NVIC_DisableIRQ(UART1_IRQn);
star297 2:d4c6bc0f2dc4 530 }
ausdong 5:bc0296a5ad8a 531 rx_line[i] = rx_buffer[rx_out];
ausdong 5:bc0296a5ad8a 532 i++;
ausdong 5:bc0296a5ad8a 533 rx_out = (rx_out + 1) % buffer_size;
4180_1 4:40dd020463ea 534 }
ausdong 5:bc0296a5ad8a 535 // End Critical Section
ausdong 5:bc0296a5ad8a 536 NVIC_EnableIRQ(UART1_IRQn);
ausdong 5:bc0296a5ad8a 537 rx_line[i-1] = 0;
ausdong 5:bc0296a5ad8a 538 return;
ausdong 5:bc0296a5ad8a 539 }
ausdong 5:bc0296a5ad8a 540
ausdong 5:bc0296a5ad8a 541
ausdong 5:bc0296a5ad8a 542 // Interupt Routine to read in data from serial port
ausdong 5:bc0296a5ad8a 543 void Rx_interrupt() {
ausdong 5:bc0296a5ad8a 544 DataRX=1;
ausdong 5:bc0296a5ad8a 545 //led3=1;
ausdong 5:bc0296a5ad8a 546 // Loop just in case more than one character is in UART's receive FIFO buffer
ausdong 5:bc0296a5ad8a 547 // Stop if buffer full
ausdong 5:bc0296a5ad8a 548 while ((esp.readable()) && (((rx_in + 1) % buffer_size) != rx_out)) {
ausdong 5:bc0296a5ad8a 549 rx_buffer[rx_in] = esp.getc();
ausdong 5:bc0296a5ad8a 550 // Uncomment to Echo to USB serial to watch data flow
ausdong 5:bc0296a5ad8a 551 pc.putc(rx_buffer[rx_in]);
ausdong 5:bc0296a5ad8a 552 rx_in = (rx_in + 1) % buffer_size;
ausdong 5:bc0296a5ad8a 553 }
ausdong 5:bc0296a5ad8a 554 //led3=0;
ausdong 5:bc0296a5ad8a 555 return;
ausdong 5:bc0296a5ad8a 556 }
ausdong 5:bc0296a5ad8a 557
ausdong 5:bc0296a5ad8a 558
ausdong 5:bc0296a5ad8a 559 // Interupt Routine to write out data to serial port
ausdong 5:bc0296a5ad8a 560 void Tx_interrupt() {
ausdong 5:bc0296a5ad8a 561 //led2=1;
ausdong 5:bc0296a5ad8a 562 // Loop to fill more than one character in UART's transmit FIFO buffer
ausdong 5:bc0296a5ad8a 563 // Stop if buffer empty
ausdong 5:bc0296a5ad8a 564 while ((esp.writeable()) && (tx_in != tx_out)) {
ausdong 5:bc0296a5ad8a 565 esp.putc(tx_buffer[tx_out]);
ausdong 5:bc0296a5ad8a 566 tx_out = (tx_out + 1) % buffer_size;
ausdong 5:bc0296a5ad8a 567 }
ausdong 5:bc0296a5ad8a 568 //led2=0;
ausdong 5:bc0296a5ad8a 569 return;
ausdong 5:bc0296a5ad8a 570 }
ausdong 5:bc0296a5ad8a 571
ausdong 5:bc0296a5ad8a 572 void gettime()
ausdong 5:bc0296a5ad8a 573 {
ausdong 5:bc0296a5ad8a 574 time_t seconds = time(NULL);
ausdong 5:bc0296a5ad8a 575 strftime(timebuf,50,"%H:%M:%S %a %d %b %y", localtime(&seconds));
ausdong 5:bc0296a5ad8a 576 }
ausdong 5:bc0296a5ad8a 577
ausdong 5:bc0296a5ad8a 578 void setRTC()
ausdong 5:bc0296a5ad8a 579 {
ausdong 5:bc0296a5ad8a 580 t.tm_sec = (0); // 0-59
ausdong 5:bc0296a5ad8a 581 t.tm_min = (minute); // 0-59
ausdong 5:bc0296a5ad8a 582 t.tm_hour = (hour); // 0-23
ausdong 5:bc0296a5ad8a 583 t.tm_mday = (dayofmonth); // 1-31
ausdong 5:bc0296a5ad8a 584 t.tm_mon = (month-1); // 0-11 "0" = Jan, -1 added for Mbed RCT clock format
ausdong 5:bc0296a5ad8a 585 t.tm_year = ((year)+100); // year since 1900, current DCF year + 100 + 1900 = correct year
ausdong 5:bc0296a5ad8a 586 set_time(mktime(&t)); // set RTC clock
star297 0:e2a155f50119 587 }
kbrahmbhatt6 6:bcbe1be26da5 588
star297 0:e2a155f50119 589 // Analog in example
kbrahmbhatt6 6:bcbe1be26da5 590 void getTemperature()
star297 0:e2a155f50119 591 {
kbrahmbhatt6 6:bcbe1be26da5 592 tempC=myTMP36;
kbrahmbhatt6 6:bcbe1be26da5 593 //Ht = (AdcIn*3.3); // set the numeric to the exact MCU analog reference voltage for greater accuracy
kbrahmbhatt6 6:bcbe1be26da5 594 //tempC = 5.0;
kbrahmbhatt6 6:bcbe1be26da5 595
kbrahmbhatt6 6:bcbe1be26da5 596 if (tempC > 30.0) {
kbrahmbhatt6 6:bcbe1be26da5 597 //then alarm goes off (speaker)
kbrahmbhatt6 6:bcbe1be26da5 598 //Message sent to webpage (maybe email or text)
kbrahmbhatt6 6:bcbe1be26da5 599
kbrahmbhatt6 6:bcbe1be26da5 600 //Take input from webpage to turn it off
kbrahmbhatt6 6:bcbe1be26da5 601 }
kbrahmbhatt6 6:bcbe1be26da5 602
kbrahmbhatt6 6:bcbe1be26da5 603 //sprintf(Vcc,"%2.3f",tempC);
star297 0:e2a155f50119 604 }
kbrahmbhatt6 6:bcbe1be26da5 605 void alarmPhoto(int i)
4180_1 4:40dd020463ea 606 {
kbrahmbhatt6 6:bcbe1be26da5 607 if (camera.isReady()) {
kbrahmbhatt6 6:bcbe1be26da5 608 char filename[32];
kbrahmbhatt6 6:bcbe1be26da5 609 sprintf(filename, "/local/pict%03d.jpg", i);
kbrahmbhatt6 6:bcbe1be26da5 610 //string a = string(filename);
kbrahmbhatt6 6:bcbe1be26da5 611 pc.printf("Picture: %s ", filename);
kbrahmbhatt6 6:bcbe1be26da5 612 if (camera.takePicture(filename))
kbrahmbhatt6 6:bcbe1be26da5 613 {
kbrahmbhatt6 6:bcbe1be26da5 614 while (camera.isProcessing())
kbrahmbhatt6 6:bcbe1be26da5 615 {
kbrahmbhatt6 6:bcbe1be26da5 616 camera.processPicture();
kbrahmbhatt6 6:bcbe1be26da5 617 }
kbrahmbhatt6 6:bcbe1be26da5 618 led1 = 1; //show successful picture was taken
kbrahmbhatt6 6:bcbe1be26da5 619 wait(2.0);
kbrahmbhatt6 6:bcbe1be26da5 620 led1 = 0;
kbrahmbhatt6 6:bcbe1be26da5 621 }
kbrahmbhatt6 6:bcbe1be26da5 622 else
kbrahmbhatt6 6:bcbe1be26da5 623 {
kbrahmbhatt6 6:bcbe1be26da5 624 pc.printf("take picture failed\n");
kbrahmbhatt6 6:bcbe1be26da5 625 led3 = 1; //show picture take failed
kbrahmbhatt6 6:bcbe1be26da5 626 wait(2.0);
kbrahmbhatt6 6:bcbe1be26da5 627 led3 = 0;
kbrahmbhatt6 6:bcbe1be26da5 628 }
kbrahmbhatt6 6:bcbe1be26da5 629 }
kbrahmbhatt6 6:bcbe1be26da5 630 else
kbrahmbhatt6 6:bcbe1be26da5 631 {
kbrahmbhatt6 6:bcbe1be26da5 632 pc.printf("camera is not ready\n");
kbrahmbhatt6 6:bcbe1be26da5 633 led4 = 1; //show camera is not ready
kbrahmbhatt6 6:bcbe1be26da5 634 wait(2.0);
kbrahmbhatt6 6:bcbe1be26da5 635 led4 = 0;
kbrahmbhatt6 6:bcbe1be26da5 636 }
kbrahmbhatt6 6:bcbe1be26da5 637 led2 = 1; //show end of sequence
kbrahmbhatt6 6:bcbe1be26da5 638 wait(2.0);
kbrahmbhatt6 6:bcbe1be26da5 639 led2 = 0;
kbrahmbhatt6 6:bcbe1be26da5 640 pc.printf("Photo taken\n");
kbrahmbhatt6 6:bcbe1be26da5 641 //return filename;
kbrahmbhatt6 6:bcbe1be26da5 642 }
kbrahmbhatt6 6:bcbe1be26da5 643
kbrahmbhatt6 6:bcbe1be26da5 644
kbrahmbhatt6 6:bcbe1be26da5 645
kbrahmbhatt6 6:bcbe1be26da5 646 // Analog in example
kbrahmbhatt6 6:bcbe1be26da5 647 //void getbattery()
kbrahmbhatt6 6:bcbe1be26da5 648 //{
kbrahmbhatt6 6:bcbe1be26da5 649 // AdcIn=Ain1.read();
kbrahmbhatt6 6:bcbe1be26da5 650 // Ht = (AdcIn*3.3); // set the numeric to the exact MCU analog reference voltage for greater accuracy
kbrahmbhatt6 6:bcbe1be26da5 651 // sprintf(Vcc,"%2.3f",Ht);
kbrahmbhatt6 6:bcbe1be26da5 652 //}
kbrahmbhatt6 6:bcbe1be26da5 653 //// Temperature example
kbrahmbhatt6 6:bcbe1be26da5 654 //void gettemp()
kbrahmbhatt6 6:bcbe1be26da5 655 //{
kbrahmbhatt6 6:bcbe1be26da5 656 //
kbrahmbhatt6 6:bcbe1be26da5 657 // AdcIn=Ain2.read();
kbrahmbhatt6 6:bcbe1be26da5 658 // Ht = (AdcIn*3.3); // set the numeric to the exact MCU analog reference voltage for greater accuracy
kbrahmbhatt6 6:bcbe1be26da5 659 // sprintf(Temp,"%2.3f",Ht);
kbrahmbhatt6 6:bcbe1be26da5 660 //}