Appendices
APPENDIX
Code:
void uploadstatus(){//calling RESTful API to upload datapoint to MCS
to report LED status
while ()
[Link](".");
delay(500);
delay(100);
if(digitalRead(13)==1)
upload_led = "LED_DISPLAY,,1";
else
upload_led = "LED_DISPLAY,,0";
int thislength = upload_led.length();
HttpClient http(c2);
[Link]("POST /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
Appendices
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Content-Length: ");
[Link](thislength);
[Link]("Content-Type: text/csv");
[Link]("Connection: close");
[Link]();
[Link](upload_led);
delay(500);
int errorcount = 0;
while (![Link]())
[Link](".");
delay(100);
int err = [Link]();
int bodyLen = [Link]();
while (c2)
int v = [Link]();
if (v != -1)
Appendices
[Link](char(v));
else
[Link]("no more content, disconnect");
[Link]();
[Link]();
void outzone(){
while ()
[Link](".");
delay(500);
delay(100);
Appendices
if(digitalRead(8)==1)
upload_ledzone = "OUT_ZONE,,1";
else
upload_ledzone = "OUT_ZONE,,0";
int zonelength = upload_ledzone.length();
HttpClient http(c2);
[Link]("POST /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Content-Length: ");
[Link](zonelength);
[Link]("Content-Type: text/csv");
[Link]("Connection: close");
[Link]();
[Link](upload_ledzone);
delay(500);
int errorcount = 0;
while (![Link]())
Appendices
[Link](".");
delay(100);
int err = [Link]();
int bodyLen = [Link]();
while (c2)
int v = [Link]();
if (v != -1)
[Link](char(v));
else
[Link]("no more content, disconnect");
[Link]();
[Link]();
}
Appendices
void uploadGPS(){
while ()
[Link](".");
delay(500);
delay(100);
float latitude_post=latitude;
float longitude_post=longitude;
[Link]("latitude=%.4f\tlongitude=%.4f\n",latitude,longitude);
if(latitude>-90 && latitude<=90 && longitude>=0 &&
longitude<360){
sprintf(buffer_latitude, "%.4f", latitude);
sprintf(buffer_longitude, "%.4f", longitude);
String upload_GPS =
"GPS,,"+String(buffer_latitude)+","+String(buffer_longitude)+","+"0"+"
\n"+"LATITUDE,,"+buffer_latitude+"\n"+"LONGITUDE,,"+buffer_lon
gitude;//null altitude
int GPS_length = upload_GPS.length();
HttpClient http(c2);
Appendices
[Link]("POST /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Content-Length: ");
[Link](GPS_length);
[Link]("Content-Type: text/csv");
[Link]("Connection: close");
[Link]();
[Link](upload_GPS);
delay(500);
if(latitude<15.5343){
digitalWrite(8,HIGH);
else{
digitalWrite(8,LOW);
[Link]("0925376867");
Appendices
int errorcount = 0;
while (![Link]())
[Link](".");
delay(100);
int err = [Link]();
int bodyLen = [Link]();
while (c2)
int v = [Link]();
if (v != -1)
[Link](char(v));
else
[Link]("no more content, disconnect");
[Link]();
}
Appendices
[Link]();
void uploadspeed(){
while ()
[Link](".");
delay(500);
delay(100);
float speed_post=speeda;
[Link]("speeda=%.4f\n",speeda);
sprintf(buffer_speed, "%.4f", speeda);
float time=5;
float speed_temp=sqrt((latitude*latitude-longitude*longitude))/time;
String upload_speed = "SPEED,,"+String(buffer_speed);
Appendices
int speed_length = upload_speed.length();
[Link]("POST /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Content-Length: ");
[Link](speed_length);
[Link]("Content-Type: text/csv");
[Link]("Connection: close");
[Link]();
[Link](upload_speed);
delay(500);
int errorcount = 0;
while (![Link]())
[Link](".");
delay(100);
int err = [Link]();
Appendices
int bodyLen = [Link]();
while (c2)
int v = [Link]();
if (v != -1)
[Link](char(v));
else
[Link]("no more content, disconnect");
[Link]();
[Link]();
GPS:
static unsigned char getComma(unsigned char num,const char *str)
unsigned char i,j = 0;
int len=strlen(str);
Appendices
for(i = 0;i < len;i ++)
if(str[i] == ',')
j++;
if(j == num)
return i + 1;
return 0;
static double getDoubleNumber(const char *s)
char buf[10];
unsigned char i;
double rev;
i=getComma(1, s);
i = i - 1;
strncpy(buf, s, i);
buf[i] = 0;
rev=atof(buf);
return rev;
}
Appendices
static double getIntNumber(const char *s)
char buf[10];
unsigned char i;
double rev;
i=getComma(1, s);
i = i - 1;
strncpy(buf, s, i);
buf[i] = 0;
rev=atoi(buf);
return rev;
void parseGPGGA(const char* GPGGAstr)
int tmp, hour, minute, second, num ;
if(GPGGAstr[0] == '$')
tmp = getComma(1, GPGGAstr);
hour = (GPGGAstr[tmp + 0] - '0') * 10 + (GPGGAstr[tmp + 1] -
'0');
minute = (GPGGAstr[tmp + 2] - '0') * 10 + (GPGGAstr[tmp + 3] -
'0');
Appendices
second = (GPGGAstr[tmp + 4] - '0') * 10 + (GPGGAstr[tmp + 5] -
'0');
sprintf(buff, "UTC timer %2d-%2d-%2d", hour, minute, second);
//[Link](buff);
tmp = getComma(2, GPGGAstr);
latitude = getDoubleNumber(&GPGGAstr[tmp])/100.0;
int latitude_int=floor(latitude);
double latitude_decimal=(latitude-latitude_int)*100.0/60.0;
latitude=latitude_int+latitude_decimal;
tmp = getComma(4, GPGGAstr);
longitude = getDoubleNumber(&GPGGAstr[tmp])/100.0;
int longitude_int=floor(longitude);
double longitude_decimal=(longitude-longitude_int)*100.0/60.0;
longitude=longitude_int+longitude_decimal;
sprintf(buff, "latitude = %10.4f, longitude = %10.4f", latitude,
longitude);
//[Link](buff);
tmp = getComma(7, GPGGAstr);
num = getIntNumber(&GPGGAstr[tmp]);
sprintf(buff, "satellites number = %d", num);
//[Link](buff);
Appendices
else
[Link]("Not get data");
void GPS_receive() {
[Link](&info);
//[Link]((char*)[Link]);
parseGPGGA((const char*)[Link]);
connect:
void AP_connect(){
[Link]("Connecting to AP...");
while (0 == [Link](WIFI_AP))
[Link](".");
delay(500);
[Link]("Success!");
Appendices
[Link]("Connecting site...");
while ()
[Link](".");
delay(500);
[Link]("Success!");
delay(100);
void getconnectInfo(){
//calling RESTful API to get TCP socket connection
[Link]("GET /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Connection: close");
[Link]();
Appendices
delay(500);
int errorcount = 0;
[Link]("waiting for HTTP response...");
while (![Link]())
[Link](".");
errorcount += 1;
delay(150);
[Link]();
int err = [Link]();
int bodyLen = [Link]();
char c;
int ipcount = 0;
int count = 0;
int separater = 0;
while (c2)
int v = (int)[Link]();
if (v != -1)
c = v;
Appendices
//[Link](c);
connection_info[ipcount]=c;
if(c==',')
separater=ipcount;
ipcount++;
else
[Link]("no more content, disconnect");
[Link]();
//connection_info[ipcount]=NULL;
int i;
for(i=0;i<separater;i++)
{ ip[i]=connection_info[i];
int j=0;
separater++;
for(i=separater;i<21 && j<5 && i < ipcount;i++)
Appendices
{ port[j]=connection_info[i];
j++;
//port[j] = NULL;
portnum = atoi (port);
} //getconnectInfo
void connectTCP(){
//establish TCP connection with TCP Server with designate IP and Port
[Link]();
[Link]("Connecting to TCP...");
while (0 == [Link](ip, portnum))
[Link]("Re-Connecting to TCP");
delay(1000);
[Link](tcpdata);
[Link]();
[Link]("Success!");
} //connectTCP
Appendices
void heartBeat(){
[Link]("send TCP heartBeat");
[Link](tcpdata);
[Link]();
} //heartBeat
Upload:
void uploadstatus(){//calling RESTful API to upload datapoint to MCS
to report LED status
while ()
[Link](".");
delay(500);
delay(100);
if(digitalRead(13)==1)
upload_led = "LED_DISPLAY,,1";
else
upload_led = "LED_DISPLAY,,0";
Appendices
int thislength = upload_led.length();
HttpClient http(c2);
[Link]("POST /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Content-Length: ");
[Link](thislength);
[Link]("Content-Type: text/csv");
[Link]("Connection: close");
[Link]();
[Link](upload_led);
delay(500);
int errorcount = 0;
while (![Link]())
[Link](".");
delay(100);
int err = [Link]();
Appendices
int bodyLen = [Link]();
while (c2)
int v = [Link]();
if (v != -1)
[Link](char(v));
else
[Link]("no more content, disconnect");
[Link]();
[Link]();
void outzone(){
while ()
{
Appendices
[Link](".");
delay(500);
delay(100);
if(digitalRead(8)==1)
upload_ledzone = "OUT_ZONE,,1";
else
upload_ledzone = "OUT_ZONE,,0";
int zonelength = upload_ledzone.length();
HttpClient http(c2);
[Link]("POST /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Content-Length: ");
[Link](zonelength);
[Link]("Content-Type: text/csv");
[Link]("Connection: close");
Appendices
[Link]();
[Link](upload_ledzone);
delay(500);
int errorcount = 0;
while (![Link]())
[Link](".");
delay(100);
int err = [Link]();
int bodyLen = [Link]();
while (c2)
int v = [Link]();
if (v != -1)
[Link](char(v));
else
[Link]("no more content, disconnect");
[Link]();
Appendices
[Link]();
void uploadGPS(){
while ()
[Link](".");
delay(500);
delay(100);
float latitude_post=latitude;
float longitude_post=longitude;
[Link]("latitude=%.4f\tlongitude=%.4f\n",latitude,longitude);
if(latitude>-90 && latitude<=90 && longitude>=0 &&
longitude<360){
sprintf(buffer_latitude, "%.4f", latitude);
sprintf(buffer_longitude, "%.4f", longitude);
Appendices
String upload_GPS =
"GPS,,"+String(buffer_latitude)+","+String(buffer_longitude)+","+"0"+"
\n"+"LATITUDE,,"+buffer_latitude+"\n"+"LONGITUDE,,"+buffer_lon
gitude;//null altitude
int GPS_length = upload_GPS.length();
HttpClient http(c2);
[Link]("POST /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Content-Length: ");
[Link](GPS_length);
[Link]("Content-Type: text/csv");
[Link]("Connection: close");
[Link]();
[Link](upload_GPS);
delay(500);
if(latitude<15.5343){
digitalWrite(8,HIGH);
Appendices
else{
digitalWrite(8,LOW);
[Link]("0925376867");
int errorcount = 0;
while (![Link]())
[Link](".");
delay(100);
int err = [Link]();
int bodyLen = [Link]();
while (c2)
int v = [Link]();
if (v != -1)
[Link](char(v));
Appendices
else
[Link]("no more content, disconnect");
[Link]();
[Link]();
void uploadspeed(){
while ()
[Link](".");
delay(500);
}
Appendices
delay(100);
float speed_post=speeda;
[Link]("speeda=%.4f\n",speeda);
sprintf(buffer_speed, "%.4f", speeda);
float time=5;
float speed_temp=sqrt((latitude*latitude-longitude*longitude))/time;
String upload_speed = "SPEED,,"+String(buffer_speed);
int speed_length = upload_speed.length();
[Link]("POST /mcs/v2/devices/");
[Link](DEVICEID);
[Link]("/[Link] HTTP/1.1");
[Link]("Host: ");
[Link](SITE_URL);
[Link]("deviceKey: ");
[Link](DEVICEKEY);
[Link]("Content-Length: ");
[Link](speed_length);
[Link]("Content-Type: text/csv");
Appendices
[Link]("Connection: close");
[Link]();
[Link](upload_speed);
delay(500);
int errorcount = 0;
while (![Link]())
[Link](".");
delay(100);
int err = [Link]();
int bodyLen = [Link]();
while (c2)
int v = [Link]();
if (v != -1)
{
Appendices
[Link](char(v));
else
[Link]("no more content, disconnect");
[Link]();
[Link]();