IOT EC

Dependencies:   4DGL-uLCD-SE EthernetInterface HTTPClient NTPClient mbed-rpc mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
macenzofan
Date:
Wed Feb 08 21:54:07 2017 +0000
Commit message:
IOT EC

Changed in this revision

4DGL-uLCD-SE.lib Show annotated file Show diff for this revision Revisions of this file
EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
HTTPClient.lib Show annotated file Show diff for this revision Revisions of this file
NTPClient.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rpc.lib Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/4DGL-uLCD-SE.lib	Wed Feb 08 21:54:07 2017 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/macenzofan/code/4DGL-uLCD-SE/#f09725357991
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetInterface.lib	Wed Feb 08 21:54:07 2017 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/mbed_official/code/EthernetInterface/#183490eb1b4a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HTTPClient.lib	Wed Feb 08 21:54:07 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/donatien/code/HTTPClient/#277279a1891e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NTPClient.lib	Wed Feb 08 21:54:07 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/KKempeneers/code/NTPClient/#537dcd4ff837
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Feb 08 21:54:07 2017 +0000
@@ -0,0 +1,122 @@
+#include "mbed.h"
+#include "NTPClient.h"
+#include "uLCD_4DGL.h"
+#include "EthernetInterface.h"
+#include "HTTPClient.h"
+ 
+//SET UP ULCD
+EthernetInterface eth;
+uLCD_4DGL uLCD(p28,p27,p11); // serial tx, serial rx, reset pin;
+NTPClient ntpClient;
+HTTPClient httpClient;
+void parse(char buffer[], int *j, char *string); //FUNCTION TO PARSE HTTP GET DATA
+char httpGetData[200]; //BUFFER TO HOLD DATA FROM HTTP GET REQUEST
+ 
+ 
+ 
+ 
+int main() {
+    time_t ctTime; //system time structure
+    uLCD.baudrate(2000000); //Crank up Baudrate
+    uLCD.cls();    //Clear uLCD screen
+    uLCD.background_color(BLACK); //SET BACKGROUND COLOR TO WHITE
+    //SETS THE BACKGROUND COLOR OF TEXT TO WHITE ON THE ULCD
+    uLCD.textbackground_color(BLACK);
+    uLCD.locate(0,0);  //Start printing on col0, row0
+    uLCD.printf("Getting IP Address\n"); //Print to uLCD
+    eth.init(); //USE DHCP to get local IP address
+    eth.connect(); //Connect to the network
+    uLCD.printf("IP ADDRESS is %s\n",eth.getIPAddress()); //Get Ethernet Address and display It on ULCD
+    wait(3.0);
+    char success[10]={0};  //success first
+    char countryFull[20]={0}; //Full Country Name
+    char countryAbrv[5]={0}; //Abbreviated Country Name or country Code
+    char stateAbrv[5]={0}; //Abbreviated State or region code
+    char stateFull[15]={0}; //Full State Name
+    char city[15]={0}; //City Name
+    char zip[6]={0}; //ZIP CODE
+    char latitude[10]={0}; //latitude
+    char longitude[10]={0}; //longitude
+    char timeZone[30]={0}; //timeZone
+    int j=0;
+    uLCD.printf("Getting Geolocation Data\n");
+    //HANDLES THE HTTP GET REQUEST THE WAY THE FUNCTION IS CALLED HERE IS THE FOLLOWING
+    // get(DOMAIN_NAME,BUFFER,TIMEOUT_VAL)
+    //DOMAIN_NAME= domain name that get request is sent to
+    //BUFFER= buffer to store data returned from the server
+    //TIMEOUT_VAL= Time before the request times out
+    HTTPResult r = httpClient.get("http://ip-api.com/csv",httpGetData,128); //GET GEOLOCATION DATA (CSV)
+    
+    if (r==HTTP_OK) { //IF THE DATA WAS RECIEVED
+        j=0;
+        //parse and display each of the API's location information strings on the LCD
+        parse(httpGetData, &j, success); 
+        parse(httpGetData,&j,countryFull);
+        parse(httpGetData,&j,countryAbrv);
+        parse(httpGetData,&j,stateAbrv);
+        parse(httpGetData,&j,stateFull);
+        parse(httpGetData,&j,city);
+        parse(httpGetData,&j,zip);
+        parse(httpGetData,&j,latitude);
+        parse(httpGetData,&j,longitude);
+        parse(httpGetData,&j,timeZone);
+        uLCD.cls();
+        uLCD.printf("GEOLOCATION DATA RECIEVED\n");  
+    } 
+    else { //HTTP GET REQUEST ERRORED
+        uLCD.cls();
+        uLCD.printf("HTTP Error %d", r);
+        return -1;
+    }
+    uLCD.printf("Reading Time...\n");
+    char* domainName="us.pool.ntp.org"; //SET TO DOMAIN NAME OF SERVER GETTING TIME FROM
+    //GETS THE TIME FROM THE SERVER
+    //setTime(DOMAIN_NAME,PORT_NUMBER,TIME_OUT)
+    //DOMAIN_NAME= domain name
+    //PORT NUMBER=port number (123 for NTP)
+    //TIME_OUT= timeout value for request
+    ntpClient.setTime(domainName,123,0x00005000);
+    uLCD.printf("Time Set\n");
+    //Delay for human time to read LCD display
+    wait(3.0);
+    uLCD.cls();
+    //SETS THE BACKGROUND COLOR OF TEXT TO WHITE ON THE ULCD
+    uLCD.textbackground_color(BLACK);
+    char buffer[80]; //BUFFER TO HOLD FORMATTED TIME DATA
+    uLCD.color(BLUE);//SET TEXT COLOR TO BLUE
+    uLCD.locate(0,8);
+    uLCD.printf("%s, %s %s\n",city,stateAbrv,zip); //PRINT CITY STATE AND ZIP INFORMATION
+    uLCD.printf("%s\nLAT:%s\nLONG:%s\n",countryAbrv,latitude,longitude); //PRINT COUNTRY and LATITUDE AND LONGITUDE 
+    uLCD.printf("Timezone:\n%s",timeZone); //PRINT TIMEZONE
+    uLCD.color(RED);
+    eth.disconnect(); //DISCONNECT FROM THE NETWORK 
+    uLCD.text_height(2); //2x Text Height
+    while (1) {
+        // loop and periodically update the LCD's time display
+        uLCD.locate(0,0);
+        ctTime = time(NULL)-(3600*4);  //TIME with offset for eastern time US
+        //FORMAT TIME FOR DISPLAY AND STORE FORMATTED RESULT IN BUFFER
+        strftime(buffer,80,"%a %b %d\n%T %p %z\n %Z\n",localtime(&ctTime));
+        uLCD.printf("Univ Time Clock\n%s", buffer);
+        wait(.1);
+    }  
+}
+ 
+ 
+ 
+ 
+ 
+ 
+//SET FOR CSV FORMAT: NEEDS TO BE EDITED IF DIFFERENT FORMAT
+void parse(char buffer[], int *j, char *string) {
+//extracts next location string data item from buffer
+    int i=0;
+    for (i=0; i<=strlen(buffer); i++) {  //TOTAL SIZE OF RETURNED DATA
+        if ((buffer[*j+i] == ',')||(buffer[*j+i] == '\0' )) { //IF comma or end of string
+            //comma is the string field delimiter
+            string[i]=0; //SETS END OF SRTRING TO 0
+            *j=*j+i+1; //UPDATES to 1 after comma seperated value
+            break;
+        } else string[i]=buffer[*j+i]; //Keep adding to the string
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rpc.lib	Wed Feb 08 21:54:07 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-rpc/#4490a0d9cb2a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Wed Feb 08 21:54:07 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-rtos/#58563e6cba1e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Feb 08 21:54:07 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/176b8275d35d
\ No newline at end of file