Edison Carrick / Mbed 2 deprecated Wifi_Alarm_Sunrise_Simulator

Dependencies:   mbed

Fork of huzzah_helloWorld by ECE 4180 Team Who

Committer:
ecarrick
Date:
Fri Mar 18 15:43:24 2016 +0000
Revision:
2:f01835b2e4f7
Parent:
1:e4753022f351
Child:
3:072c63f44572
minor edits and cleaning;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jhunter029 0:57cec3469a80 1 #include "mbed.h"
ecarrick 1:e4753022f351 2 #include <string>
ecarrick 1:e4753022f351 3 #include <sstream>
ecarrick 1:e4753022f351 4 #include <stdlib.h>
ecarrick 1:e4753022f351 5
jhunter029 0:57cec3469a80 6 Serial pc(USBTX, USBRX);
jhunter029 0:57cec3469a80 7 Serial esp(p28, p27); // tx, rx
jhunter029 0:57cec3469a80 8 DigitalOut reset(p26);
jhunter029 0:57cec3469a80 9 DigitalOut led1(LED1);
ecarrick 1:e4753022f351 10 DigitalOut led2(LED2);
ecarrick 1:e4753022f351 11 DigitalOut led3(LED3);
jhunter029 0:57cec3469a80 12 DigitalOut led4(LED4);
ecarrick 1:e4753022f351 13 DigitalIn pb(p10);
ecarrick 1:e4753022f351 14 PwmOut light(p21);
ecarrick 1:e4753022f351 15
ecarrick 1:e4753022f351 16 Ticker alarmChecker;
ecarrick 1:e4753022f351 17 bool alarmFired = false;
ecarrick 1:e4753022f351 18 int alarmHour = 23;
ecarrick 1:e4753022f351 19 int alarmMin = 49;
ecarrick 1:e4753022f351 20 int alarmDur = 1;
ecarrick 1:e4753022f351 21 string data;
jhunter029 0:57cec3469a80 22 Timer t;
ecarrick 1:e4753022f351 23 time_t rtc;
ecarrick 1:e4753022f351 24 struct tm *tp;
ecarrick 1:e4753022f351 25
jhunter029 0:57cec3469a80 26
jhunter029 0:57cec3469a80 27 int count,ended,timeout;
jhunter029 0:57cec3469a80 28 char buf[2024];
jhunter029 0:57cec3469a80 29 char snd[1024];
ecarrick 1:e4753022f351 30 char val[2];
jhunter029 0:57cec3469a80 31
ecarrick 1:e4753022f351 32 char ssid[32] = "ssid"; // enter WiFi router ssid inside the quotes
ecarrick 2:f01835b2e4f7 33 char pwd [32] = "Password"; // enter WiFi router password inside the quotes
jhunter029 0:57cec3469a80 34
ecarrick 1:e4753022f351 35 void SendCMD(),getreply(),ESPhttp(),ESPsetbaudrate(), sendConfig(), ESPreset(), sendNTPFunction(), updateNTP(), getUtime(), startSunrise(float d);
ecarrick 1:e4753022f351 36
ecarrick 1:e4753022f351 37 void alarmCheck(){
ecarrick 1:e4753022f351 38 rtc = time(NULL);
ecarrick 1:e4753022f351 39 tp = localtime(&rtc);
ecarrick 1:e4753022f351 40 led1=1;
ecarrick 1:e4753022f351 41 if(!alarmFired){
ecarrick 1:e4753022f351 42 printf("hr: %d min:%d\r\n", tp->tm_hour, tp->tm_min);
ecarrick 1:e4753022f351 43 int daystamp = tp->tm_hour * 3600 + tp->tm_min * 60;
ecarrick 1:e4753022f351 44 int alarmstamp = alarmHour * 3600 + alarmMin * 60 - (alarmDur * 60);
ecarrick 1:e4753022f351 45 pc.printf("%d - %d = %d", alarmstamp, daystamp, alarmstamp - daystamp);
ecarrick 1:e4753022f351 46 if( (alarmstamp - daystamp) <= 0){
ecarrick 1:e4753022f351 47 // time to start the wake up sequence
ecarrick 1:e4753022f351 48 startSunrise((float)(alarmDur*60));
ecarrick 1:e4753022f351 49 alarmFired = true;
ecarrick 1:e4753022f351 50 }
ecarrick 1:e4753022f351 51 } else{
ecarrick 1:e4753022f351 52 if(tp->tm_hour == 0)
ecarrick 1:e4753022f351 53 alarmFired = false;
ecarrick 1:e4753022f351 54 }
ecarrick 1:e4753022f351 55 wait(1);
ecarrick 1:e4753022f351 56 led1=0;
ecarrick 1:e4753022f351 57
ecarrick 1:e4753022f351 58 }
ecarrick 1:e4753022f351 59
ecarrick 1:e4753022f351 60 void flush(){
ecarrick 1:e4753022f351 61 while(esp.readable()) {
ecarrick 1:e4753022f351 62 char tmp = esp.getc();
ecarrick 1:e4753022f351 63 data += tmp;
ecarrick 1:e4753022f351 64 pc.putc(tmp);
ecarrick 1:e4753022f351 65 }
ecarrick 1:e4753022f351 66 }
jhunter029 0:57cec3469a80 67 void dev_recv()
jhunter029 0:57cec3469a80 68 {
jhunter029 0:57cec3469a80 69 led1 = !led1;
ecarrick 1:e4753022f351 70 timeout=2;
ecarrick 1:e4753022f351 71 getreply();
ecarrick 1:e4753022f351 72 pc.printf("%s\n\n", buf);
ecarrick 1:e4753022f351 73 char * location = strstr(buf, "GET /?");
ecarrick 1:e4753022f351 74 if(location != NULL){
ecarrick 1:e4753022f351 75 //pc.printf("%d\n", location - buf);
ecarrick 1:e4753022f351 76 char * hour = strstr(buf, "h=");
ecarrick 1:e4753022f351 77 char * min = strstr(buf, "m=");
ecarrick 1:e4753022f351 78 char * dur = strstr(buf, "d=");
ecarrick 1:e4753022f351 79 if(hour != NULL && min != NULL && dur != NULL){
ecarrick 1:e4753022f351 80 strncpy(val, hour+2,2);
ecarrick 1:e4753022f351 81 alarmHour = atoi(val) %24;
ecarrick 1:e4753022f351 82 strncpy(val, min+2,2);
ecarrick 1:e4753022f351 83 alarmMin = atoi(val) %60;
ecarrick 1:e4753022f351 84 strncpy(val, dur+2,2);
ecarrick 1:e4753022f351 85 alarmDur = atoi(val);
ecarrick 1:e4753022f351 86
ecarrick 1:e4753022f351 87 pc.printf("New config: hrs %d min %d duration %d", alarmHour, alarmMin, alarmDur);
ecarrick 1:e4753022f351 88 sendConfig();
ecarrick 1:e4753022f351 89
ecarrick 1:e4753022f351 90 }
jhunter029 0:57cec3469a80 91 }
jhunter029 0:57cec3469a80 92 }
jhunter029 0:57cec3469a80 93
jhunter029 0:57cec3469a80 94 void pc_recv()
jhunter029 0:57cec3469a80 95 {
jhunter029 0:57cec3469a80 96 led4 = !led4;
jhunter029 0:57cec3469a80 97 while(pc.readable()) {
jhunter029 0:57cec3469a80 98 esp.putc(pc.getc());
jhunter029 0:57cec3469a80 99 }
jhunter029 0:57cec3469a80 100 }
jhunter029 0:57cec3469a80 101
jhunter029 0:57cec3469a80 102
jhunter029 0:57cec3469a80 103 int main()
jhunter029 0:57cec3469a80 104 {
ecarrick 1:e4753022f351 105
ecarrick 1:e4753022f351 106 pb.mode(PullDown);
ecarrick 1:e4753022f351 107 light.period(0.005); //200Hz to eliminate flicker
jhunter029 0:57cec3469a80 108 reset=0; //hardware reset for 8266
ecarrick 1:e4753022f351 109 pc.baud(115200); // set what you want here depending on your terminal program speed
jhunter029 0:57cec3469a80 110 pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r");
jhunter029 0:57cec3469a80 111 wait(0.5);
jhunter029 0:57cec3469a80 112 reset=1;
ecarrick 1:e4753022f351 113 timeout=1;
jhunter029 0:57cec3469a80 114 getreply();
ecarrick 1:e4753022f351 115
ecarrick 1:e4753022f351 116 // RESET wifi module and and connect to the wifi
ecarrick 1:e4753022f351 117 ESPreset();
ecarrick 1:e4753022f351 118
ecarrick 1:e4753022f351 119 // send the NTP function to wifi module
ecarrick 1:e4753022f351 120 sendNTPFunction();
ecarrick 1:e4753022f351 121
ecarrick 2:f01835b2e4f7 122 rtc = time(NULL);
ecarrick 2:f01835b2e4f7 123 tp = localtime(&rtc);
ecarrick 1:e4753022f351 124
ecarrick 1:e4753022f351 125
ecarrick 1:e4753022f351 126 while(tp->tm_year ==0){
ecarrick 1:e4753022f351 127 updateNTP();
ecarrick 1:e4753022f351 128 wait(3);
ecarrick 1:e4753022f351 129 getUtime();
ecarrick 1:e4753022f351 130 wait(1);
ecarrick 1:e4753022f351 131 }
ecarrick 1:e4753022f351 132
ecarrick 1:e4753022f351 133 led3=1;
ecarrick 1:e4753022f351 134
ecarrick 1:e4753022f351 135 for(float i=0.0;i<1.0;i+=0.1){
ecarrick 1:e4753022f351 136 light=i;
ecarrick 1:e4753022f351 137 wait(0.5);
ecarrick 1:e4753022f351 138 }
ecarrick 1:e4753022f351 139 light = 0;
jhunter029 0:57cec3469a80 140
ecarrick 1:e4753022f351 141 //ESPreset();
jhunter029 0:57cec3469a80 142
ecarrick 1:e4753022f351 143 ESPhttp();
ecarrick 1:e4753022f351 144
ecarrick 1:e4753022f351 145 //pc.attach(&pc_recv, Serial::RxIrq);
jhunter029 0:57cec3469a80 146 esp.attach(&dev_recv, Serial::RxIrq);
jhunter029 0:57cec3469a80 147
ecarrick 1:e4753022f351 148 rtc = time(NULL);
ecarrick 1:e4753022f351 149 pc.printf("%s\r\n", ctime(&rtc));
ecarrick 1:e4753022f351 150 led1=0;led2=0;led3=0;led4=0;
ecarrick 1:e4753022f351 151 tp = localtime(&rtc);
ecarrick 1:e4753022f351 152 printf("hr: %d min:%d\r\n", tp->tm_hour, tp->tm_min);
ecarrick 1:e4753022f351 153 alarmChecker.attach(&alarmCheck, 60);
jhunter029 0:57cec3469a80 154 while(1) {
jhunter029 0:57cec3469a80 155 sleep();
jhunter029 0:57cec3469a80 156 }
jhunter029 0:57cec3469a80 157
jhunter029 0:57cec3469a80 158 }
ecarrick 1:e4753022f351 159
ecarrick 1:e4753022f351 160 void startSunrise(float d){
ecarrick 1:e4753022f351 161 for(float i=0.0; i < 1.0; i += (1.0/d)){
ecarrick 1:e4753022f351 162 light = i;
ecarrick 1:e4753022f351 163 pc.printf("%f\n", i);
ecarrick 1:e4753022f351 164 wait(1);
ecarrick 1:e4753022f351 165 }
ecarrick 1:e4753022f351 166 light = 1.0;
ecarrick 1:e4753022f351 167
ecarrick 1:e4753022f351 168 wait(120);
ecarrick 1:e4753022f351 169 light = 0;
ecarrick 1:e4753022f351 170
ecarrick 1:e4753022f351 171 }
jhunter029 0:57cec3469a80 172
jhunter029 0:57cec3469a80 173 // Sets new ESP8266 baurate, change the esp.baud(xxxxx) to match your new setting once this has been executed
jhunter029 0:57cec3469a80 174 void ESPsetbaudrate()
jhunter029 0:57cec3469a80 175 {
ecarrick 1:e4753022f351 176 strcpy(snd, "uart.setup(0, 9600, 8, 0, 1, 0)\r\n"); // change the numeric value to the required baudrate
jhunter029 0:57cec3469a80 177 SendCMD();
ecarrick 1:e4753022f351 178 timeout=2;
ecarrick 1:e4753022f351 179 getreply();
ecarrick 1:e4753022f351 180 pc.printf(buf);
jhunter029 0:57cec3469a80 181 }
jhunter029 0:57cec3469a80 182
ecarrick 1:e4753022f351 183 void ESPreset(){
jhunter029 0:57cec3469a80 184 pc.printf("---------- Reset & get Firmware ----------\r\n");
jhunter029 0:57cec3469a80 185 strcpy(snd,"node.restart()\r\n");
jhunter029 0:57cec3469a80 186 SendCMD();
ecarrick 1:e4753022f351 187 timeout=2;
jhunter029 0:57cec3469a80 188 getreply();
jhunter029 0:57cec3469a80 189 pc.printf(buf);
ecarrick 1:e4753022f351 190
ecarrick 1:e4753022f351 191 ESPsetbaudrate();
ecarrick 1:e4753022f351 192
ecarrick 1:e4753022f351 193
jhunter029 0:57cec3469a80 194 pc.printf("\n---------- Connecting to AP ----------\r\n");
ecarrick 2:f01835b2e4f7 195 //pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
jhunter029 0:57cec3469a80 196 strcpy(snd, "wifi.sta.config(\"");
jhunter029 0:57cec3469a80 197 strcat(snd, ssid);
jhunter029 0:57cec3469a80 198 strcat(snd, "\",\"");
jhunter029 0:57cec3469a80 199 strcat(snd, pwd);
jhunter029 0:57cec3469a80 200 strcat(snd, "\")\r\n");
jhunter029 0:57cec3469a80 201 SendCMD();
ecarrick 1:e4753022f351 202 timeout=3;
jhunter029 0:57cec3469a80 203 getreply();
jhunter029 0:57cec3469a80 204 pc.printf(buf);
jhunter029 0:57cec3469a80 205
jhunter029 0:57cec3469a80 206 wait(5);
jhunter029 0:57cec3469a80 207
jhunter029 0:57cec3469a80 208 pc.printf("\n---------- Get IP's ----------\r\n");
jhunter029 0:57cec3469a80 209 strcpy(snd, "print(wifi.sta.getip())\r\n");
jhunter029 0:57cec3469a80 210 SendCMD();
ecarrick 1:e4753022f351 211 timeout=2;
jhunter029 0:57cec3469a80 212 getreply();
jhunter029 0:57cec3469a80 213 pc.printf(buf);
jhunter029 0:57cec3469a80 214
jhunter029 0:57cec3469a80 215 wait(1);
jhunter029 0:57cec3469a80 216
jhunter029 0:57cec3469a80 217 pc.printf("\n---------- Get Connection Status ----------\r\n");
jhunter029 0:57cec3469a80 218 strcpy(snd, "print(wifi.sta.status())\r\n");
ecarrick 1:e4753022f351 219 pc.printf("%s", snd);
jhunter029 0:57cec3469a80 220 SendCMD();
ecarrick 1:e4753022f351 221 timeout=2;
jhunter029 0:57cec3469a80 222 getreply();
jhunter029 0:57cec3469a80 223 pc.printf(buf);
ecarrick 1:e4753022f351 224
ecarrick 1:e4753022f351 225
ecarrick 1:e4753022f351 226 }
jhunter029 0:57cec3469a80 227
ecarrick 1:e4753022f351 228 // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++
ecarrick 1:e4753022f351 229 void ESPhttp()
ecarrick 1:e4753022f351 230 {
ecarrick 1:e4753022f351 231
jhunter029 0:57cec3469a80 232 pc.printf("\n---------- Setting up http server ----------\r\n");
ecarrick 1:e4753022f351 233
ecarrick 1:e4753022f351 234 sendConfig();
ecarrick 1:e4753022f351 235
ecarrick 1:e4753022f351 236 strcpy(snd, "srv=net.createServer(net.TCP)\r\n");
jhunter029 0:57cec3469a80 237 SendCMD();
jhunter029 0:57cec3469a80 238 wait(1);
jhunter029 0:57cec3469a80 239 strcpy(snd, "srv:listen(80,function(conn)\r\n");
jhunter029 0:57cec3469a80 240 SendCMD();
jhunter029 0:57cec3469a80 241 wait(1);
jhunter029 0:57cec3469a80 242 strcpy(snd, "conn:on(\"receive\",function(conn,payload)\r\n");
jhunter029 0:57cec3469a80 243 SendCMD();
jhunter029 0:57cec3469a80 244 wait(1);
ecarrick 1:e4753022f351 245
jhunter029 0:57cec3469a80 246 strcpy(snd, "print(payload)\r\n");
jhunter029 0:57cec3469a80 247 SendCMD();
jhunter029 0:57cec3469a80 248 wait(1);
jhunter029 0:57cec3469a80 249
ecarrick 1:e4753022f351 250
jhunter029 0:57cec3469a80 251 strcpy(snd, "conn:send(\"<!DOCTYPE html>\")\r\n");
jhunter029 0:57cec3469a80 252 SendCMD();
jhunter029 0:57cec3469a80 253 wait(1);
jhunter029 0:57cec3469a80 254
jhunter029 0:57cec3469a80 255 strcpy(snd, "conn:send(\"<html>\")\r\n");
jhunter029 0:57cec3469a80 256 SendCMD();
jhunter029 0:57cec3469a80 257 wait(1);
jhunter029 0:57cec3469a80 258
ecarrick 1:e4753022f351 259 strcpy(snd, "conn:send(\"<h1>Configure Sunrise Alarm</h1><br><br><form method='get'>Wake up at: <input name=h value='\")\r\n");
ecarrick 1:e4753022f351 260 SendCMD();
ecarrick 1:e4753022f351 261 wait(1);
ecarrick 1:e4753022f351 262
ecarrick 1:e4753022f351 263 strcpy(snd, "conn:send(hour)\r\n");
ecarrick 1:e4753022f351 264 SendCMD();
ecarrick 1:e4753022f351 265 wait(1);
ecarrick 1:e4753022f351 266
ecarrick 1:e4753022f351 267 strcpy(snd, "conn:send(\"'> Hours and <input name=m value='\")\r\n");
ecarrick 1:e4753022f351 268 SendCMD();
jhunter029 0:57cec3469a80 269 wait(1);
jhunter029 0:57cec3469a80 270
ecarrick 1:e4753022f351 271 strcpy(snd, "conn:send(min)\r\n");
ecarrick 1:e4753022f351 272 SendCMD();
ecarrick 1:e4753022f351 273 wait(1);
ecarrick 1:e4753022f351 274
ecarrick 1:e4753022f351 275 strcpy(snd, "conn:send(\"'> minutes <br> <br> Start sunrise <input name=d value='\")\r\n");
ecarrick 1:e4753022f351 276 SendCMD();
ecarrick 1:e4753022f351 277 wait(1);
ecarrick 1:e4753022f351 278
ecarrick 1:e4753022f351 279 strcpy(snd, "conn:send(dur)\r\n");
ecarrick 1:e4753022f351 280 SendCMD();
ecarrick 1:e4753022f351 281 wait(1);
ecarrick 1:e4753022f351 282
ecarrick 1:e4753022f351 283 strcpy(snd, "conn:send(\"'> minutes before <input type=submit value='submit'></form>\")\r\n");
jhunter029 0:57cec3469a80 284 SendCMD();
jhunter029 0:57cec3469a80 285 wait(1);
jhunter029 0:57cec3469a80 286
jhunter029 0:57cec3469a80 287 strcpy(snd, "conn:send(\"</html>\")\r\n");
jhunter029 0:57cec3469a80 288 SendCMD();
jhunter029 0:57cec3469a80 289 wait(1);
jhunter029 0:57cec3469a80 290
jhunter029 0:57cec3469a80 291 strcpy(snd, "end)\r\n");
jhunter029 0:57cec3469a80 292 SendCMD();
jhunter029 0:57cec3469a80 293 wait(1);
jhunter029 0:57cec3469a80 294
jhunter029 0:57cec3469a80 295 strcpy(snd, "conn:on(\"sent\",function(conn) conn:close() end)\r\n");
jhunter029 0:57cec3469a80 296 SendCMD();
jhunter029 0:57cec3469a80 297 wait(1);
jhunter029 0:57cec3469a80 298 strcpy(snd, "end)\r\n");
jhunter029 0:57cec3469a80 299 SendCMD();
ecarrick 1:e4753022f351 300
ecarrick 1:e4753022f351 301 flush();
ecarrick 1:e4753022f351 302
ecarrick 1:e4753022f351 303 pc.printf("\r\nDONE\r\n");
jhunter029 0:57cec3469a80 304 }
jhunter029 0:57cec3469a80 305
jhunter029 0:57cec3469a80 306 void SendCMD()
jhunter029 0:57cec3469a80 307 {
ecarrick 1:e4753022f351 308 pc.printf("%s", snd);
jhunter029 0:57cec3469a80 309 esp.printf("%s", snd);
jhunter029 0:57cec3469a80 310 }
jhunter029 0:57cec3469a80 311
jhunter029 0:57cec3469a80 312 void getreply()
jhunter029 0:57cec3469a80 313 {
jhunter029 0:57cec3469a80 314 memset(buf, '\0', sizeof(buf));
jhunter029 0:57cec3469a80 315 t.start();
jhunter029 0:57cec3469a80 316 ended=0;
jhunter029 0:57cec3469a80 317 count=0;
jhunter029 0:57cec3469a80 318 while(!ended) {
jhunter029 0:57cec3469a80 319 if(esp.readable()) {
jhunter029 0:57cec3469a80 320 buf[count] = esp.getc();
jhunter029 0:57cec3469a80 321 count++;
jhunter029 0:57cec3469a80 322 }
jhunter029 0:57cec3469a80 323 if(t.read() > timeout) {
jhunter029 0:57cec3469a80 324 ended = 1;
jhunter029 0:57cec3469a80 325 t.stop();
jhunter029 0:57cec3469a80 326 t.reset();
jhunter029 0:57cec3469a80 327 }
jhunter029 0:57cec3469a80 328 }
jhunter029 0:57cec3469a80 329 }
jhunter029 0:57cec3469a80 330
ecarrick 1:e4753022f351 331 void sendConfig()
ecarrick 1:e4753022f351 332 {
ecarrick 1:e4753022f351 333 stringstream strs;
ecarrick 1:e4753022f351 334 stringstream strs1;
ecarrick 1:e4753022f351 335 stringstream strs2;
ecarrick 1:e4753022f351 336
ecarrick 1:e4753022f351 337 strcpy(snd, "hour=");
ecarrick 1:e4753022f351 338 SendCMD();
ecarrick 1:e4753022f351 339 strs << alarmHour;
ecarrick 1:e4753022f351 340 string temp_str = strs.str();
ecarrick 1:e4753022f351 341 char const* pchar = temp_str.c_str();
ecarrick 1:e4753022f351 342 strcpy(snd, pchar);
ecarrick 1:e4753022f351 343 SendCMD();
ecarrick 1:e4753022f351 344 strcpy(snd, "\r\n");
ecarrick 1:e4753022f351 345 SendCMD();
ecarrick 1:e4753022f351 346 wait(1);
ecarrick 1:e4753022f351 347
ecarrick 1:e4753022f351 348
ecarrick 1:e4753022f351 349 strcpy(snd, "min=");
ecarrick 1:e4753022f351 350 SendCMD();
ecarrick 1:e4753022f351 351 strs1 << alarmMin;
ecarrick 1:e4753022f351 352 temp_str = strs1.str();
ecarrick 1:e4753022f351 353 pchar = temp_str.c_str();
ecarrick 1:e4753022f351 354 strcpy(snd, pchar);
ecarrick 1:e4753022f351 355 SendCMD();
ecarrick 1:e4753022f351 356 strcpy(snd, "\r\n");
ecarrick 1:e4753022f351 357 SendCMD();
ecarrick 1:e4753022f351 358 wait(1);
ecarrick 1:e4753022f351 359
ecarrick 1:e4753022f351 360
ecarrick 1:e4753022f351 361
ecarrick 1:e4753022f351 362 strcpy(snd, "dur=");
ecarrick 1:e4753022f351 363 SendCMD();
ecarrick 1:e4753022f351 364 strs2 << alarmDur;
ecarrick 1:e4753022f351 365 temp_str = strs2.str();
ecarrick 1:e4753022f351 366 pchar = temp_str.c_str();
ecarrick 1:e4753022f351 367 strcpy(snd, pchar);
ecarrick 1:e4753022f351 368 SendCMD();
ecarrick 1:e4753022f351 369 strcpy(snd, "\r\n");
ecarrick 1:e4753022f351 370 SendCMD();
ecarrick 1:e4753022f351 371 wait(1);
ecarrick 1:e4753022f351 372 }
ecarrick 1:e4753022f351 373
ecarrick 1:e4753022f351 374 void sendNTPFunction()
ecarrick 1:e4753022f351 375 {
ecarrick 2:f01835b2e4f7 376 wait(5);
ecarrick 2:f01835b2e4f7 377
ecarrick 2:f01835b2e4f7 378 pc.printf("\n---------- Setting up NTp Client on Wifi Module ----------\r\n");
ecarrick 2:f01835b2e4f7 379
ecarrick 1:e4753022f351 380 strcpy(snd, "timezone = -4\r\n");
ecarrick 1:e4753022f351 381 SendCMD();
ecarrick 1:e4753022f351 382 wait(2);
ecarrick 1:e4753022f351 383 strcpy(snd, "request=string.char(227,0,6,236,0,0,0,0,0,0,0,0,49,78,49,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)\r\n");
ecarrick 1:e4753022f351 384 SendCMD();
ecarrick 1:e4753022f351 385 wait(4);
ecarrick 1:e4753022f351 386
ecarrick 1:e4753022f351 387 strcpy(snd, "time = 0\r\n");
ecarrick 1:e4753022f351 388 SendCMD();
ecarrick 1:e4753022f351 389 wait(1);
ecarrick 1:e4753022f351 390 strcpy(snd, "sk=net.createConnection(net.UDP, 0)\r\n");
ecarrick 1:e4753022f351 391 SendCMD();
ecarrick 1:e4753022f351 392 wait(1);
ecarrick 1:e4753022f351 393
ecarrick 1:e4753022f351 394 strcpy(snd, "sk:on(\"receive\", function(sck, payload)\r\n");
ecarrick 1:e4753022f351 395 SendCMD();
ecarrick 1:e4753022f351 396 wait(1);
ecarrick 1:e4753022f351 397 strcpy(snd, "print(\"YAY!\")\r\n");
ecarrick 1:e4753022f351 398 SendCMD();
ecarrick 1:e4753022f351 399 wait(1);
ecarrick 1:e4753022f351 400 strcpy(snd, "local highw,loww,ntpstamp\r\n");
ecarrick 1:e4753022f351 401 SendCMD();
ecarrick 1:e4753022f351 402 wait(1);
ecarrick 1:e4753022f351 403 strcpy(snd, "highw = payload:byte(41) * 256 + payload:byte(42)\r\n");
ecarrick 1:e4753022f351 404 SendCMD();
ecarrick 1:e4753022f351 405 wait(1);
ecarrick 1:e4753022f351 406 strcpy(snd, "loww = payload:byte(43) * 256 + payload:byte(44)\r\n");
ecarrick 1:e4753022f351 407 SendCMD();
ecarrick 1:e4753022f351 408 wait(1);
ecarrick 1:e4753022f351 409 strcpy(snd, "ntpstamp=( highw * 65536 + loww ) + ( timezone* 3600)\r\n");
ecarrick 1:e4753022f351 410 SendCMD();
ecarrick 1:e4753022f351 411 wait(1);
ecarrick 1:e4753022f351 412 strcpy(snd, "time = ntpstamp - 1104494400 - 1104494400\r\n");
ecarrick 1:e4753022f351 413 SendCMD();
ecarrick 1:e4753022f351 414 wait(1);
ecarrick 1:e4753022f351 415 strcpy(snd, "print(time)\r\n");
ecarrick 1:e4753022f351 416 SendCMD();
ecarrick 1:e4753022f351 417 wait(1);
ecarrick 1:e4753022f351 418
ecarrick 1:e4753022f351 419 strcpy(snd, "sck:close()\r\n");
ecarrick 1:e4753022f351 420 SendCMD();
ecarrick 1:e4753022f351 421 wait(1);
ecarrick 1:e4753022f351 422
ecarrick 1:e4753022f351 423 strcpy(snd, "end )\r\n");
ecarrick 1:e4753022f351 424 SendCMD();
ecarrick 1:e4753022f351 425 wait(1);
ecarrick 1:e4753022f351 426
ecarrick 1:e4753022f351 427 flush();
ecarrick 1:e4753022f351 428 wait(15);
ecarrick 1:e4753022f351 429 //updateNTP();
ecarrick 1:e4753022f351 430 }
ecarrick 1:e4753022f351 431 void updateNTP(){
ecarrick 1:e4753022f351 432 flush();
ecarrick 1:e4753022f351 433 strcpy(snd, "sk:connect(123,\"104.232.3.3\")\r\n");
ecarrick 1:e4753022f351 434 SendCMD();
ecarrick 1:e4753022f351 435 wait(3);
ecarrick 1:e4753022f351 436 strcpy(snd, "sk:send(request)\r\n");
ecarrick 1:e4753022f351 437 SendCMD();
ecarrick 1:e4753022f351 438 wait(4);
ecarrick 1:e4753022f351 439 timeout=3;
ecarrick 1:e4753022f351 440 getreply();
ecarrick 1:e4753022f351 441 pc.printf(buf);
ecarrick 1:e4753022f351 442 //getUtime();
ecarrick 1:e4753022f351 443 }
ecarrick 1:e4753022f351 444
ecarrick 1:e4753022f351 445 void getUtime(){
ecarrick 1:e4753022f351 446 flush();
ecarrick 1:e4753022f351 447 strcpy(snd, "print(time)\r\n");
ecarrick 1:e4753022f351 448 SendCMD();
ecarrick 1:e4753022f351 449 wait(1);
ecarrick 1:e4753022f351 450 timeout=5;
ecarrick 1:e4753022f351 451 getreply();
ecarrick 1:e4753022f351 452 pc.printf(buf);
ecarrick 1:e4753022f351 453 int utime = atoi(buf);
ecarrick 1:e4753022f351 454 if(utime != NULL)
ecarrick 1:e4753022f351 455 set_time(utime);
ecarrick 1:e4753022f351 456 time_t seconds = time(NULL);
ecarrick 1:e4753022f351 457 pc.printf("Time as a basic string = %s", ctime(&seconds));
ecarrick 1:e4753022f351 458 }