Display Current Weather

Dependencies:   WIZnetInterface mbed

Committer:
joon874
Date:
Mon Apr 04 09:56:52 2016 +0000
Revision:
0:87760ecf2cae
My Weather Station

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joon874 0:87760ecf2cae 1 #include "mbed.h"
joon874 0:87760ecf2cae 2 #include "EthernetInterface.h"
joon874 0:87760ecf2cae 3
joon874 0:87760ecf2cae 4
joon874 0:87760ecf2cae 5 #define ECHO_SERVER_PORT 80 // HTTP default Port 80
joon874 0:87760ecf2cae 6 char ServerName[] = "api.openweathermap.org";
joon874 0:87760ecf2cae 7 char http_cmd[] = "GET /data/2.5/weather?q=Seoul,kr&appid=2a65f5f2e53b247a01a0fef6a536e50c HTTP/1.0\r\n\r\n";
joon874 0:87760ecf2cae 8
joon874 0:87760ecf2cae 9 #define BUFFER_SIZE 2048
joon874 0:87760ecf2cae 10 char buffer[BUFFER_SIZE];
joon874 0:87760ecf2cae 11
joon874 0:87760ecf2cae 12
joon874 0:87760ecf2cae 13 // Intitialize the Ethernet Client Library
joon874 0:87760ecf2cae 14 EthernetInterface eth;
joon874 0:87760ecf2cae 15
joon874 0:87760ecf2cae 16
joon874 0:87760ecf2cae 17 int main() {
joon874 0:87760ecf2cae 18
joon874 0:87760ecf2cae 19 printf("-- Welcome WIZwiki-W7500 Platform -- \r\n");
joon874 0:87760ecf2cae 20
joon874 0:87760ecf2cae 21 // Enter a MAC Address for your Platform
joon874 0:87760ecf2cae 22 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x03, 0x04, 0x02};
joon874 0:87760ecf2cae 23
joon874 0:87760ecf2cae 24 // Initializing MAX Address
joon874 0:87760ecf2cae 25 eth.init(mac_addr);
joon874 0:87760ecf2cae 26
joon874 0:87760ecf2cae 27 while(1)
joon874 0:87760ecf2cae 28 {
joon874 0:87760ecf2cae 29
joon874 0:87760ecf2cae 30 do{
joon874 0:87760ecf2cae 31 printf(" Link - Wait... \r\n");
joon874 0:87760ecf2cae 32 wait(1);
joon874 0:87760ecf2cae 33 }while(!eth.ethernet_link());
joon874 0:87760ecf2cae 34 printf("-- Ethetnet PHY Link - Done -- \r\n");
joon874 0:87760ecf2cae 35
joon874 0:87760ecf2cae 36 if (eth.connect() < 0 )
joon874 0:87760ecf2cae 37 printf("-- EThernet Connect - Fail -- \r\n");
joon874 0:87760ecf2cae 38 else
joon874 0:87760ecf2cae 39 {
joon874 0:87760ecf2cae 40 printf("-- Assigned Network Information -- \r\n");
joon874 0:87760ecf2cae 41 printf(" IP : %s\r\n\r\n", eth.getIPAddress());
joon874 0:87760ecf2cae 42 printf(" MASK : %s\r\n\r\n", eth.getNetworkMask());
joon874 0:87760ecf2cae 43 printf(" GW : %s\r\n\r\n", eth.getGateway());
joon874 0:87760ecf2cae 44 }
joon874 0:87760ecf2cae 45
joon874 0:87760ecf2cae 46 // Initialize the TCP Socket Connection
joon874 0:87760ecf2cae 47 TCPSocketConnection sock;
joon874 0:87760ecf2cae 48
joon874 0:87760ecf2cae 49 if(sock.connect(ServerName, ECHO_SERVER_PORT) < 0)
joon874 0:87760ecf2cae 50 printf("-- Connect - Fail -- \r\n");
joon874 0:87760ecf2cae 51 else
joon874 0:87760ecf2cae 52 {
joon874 0:87760ecf2cae 53 printf("-- Connect - Connected -- \r\n");
joon874 0:87760ecf2cae 54 wait(3);
joon874 0:87760ecf2cae 55 while(sock.is_connected() == false)
joon874 0:87760ecf2cae 56 {
joon874 0:87760ecf2cae 57 printf(" .");
joon874 0:87760ecf2cae 58 }
joon874 0:87760ecf2cae 59 sock.send_all(http_cmd, sizeof(http_cmd));
joon874 0:87760ecf2cae 60 }
joon874 0:87760ecf2cae 61
joon874 0:87760ecf2cae 62
joon874 0:87760ecf2cae 63 int n = sock.receive_all(buffer, BUFFER_SIZE);
joon874 0:87760ecf2cae 64
joon874 0:87760ecf2cae 65 if(n < 0)
joon874 0:87760ecf2cae 66 break;
joon874 0:87760ecf2cae 67 else
joon874 0:87760ecf2cae 68 {
joon874 0:87760ecf2cae 69 for(int i=0; i<n; i++)
joon874 0:87760ecf2cae 70 printf("%c", buffer[i]);
joon874 0:87760ecf2cae 71 }
joon874 0:87760ecf2cae 72
joon874 0:87760ecf2cae 73 char *date;
joon874 0:87760ecf2cae 74 char *weather;
joon874 0:87760ecf2cae 75 char *city;
joon874 0:87760ecf2cae 76 char *temper;
joon874 0:87760ecf2cae 77
joon874 0:87760ecf2cae 78 char cur_date[17] = {0};
joon874 0:87760ecf2cae 79 char weather_con[15] = {0};
joon874 0:87760ecf2cae 80 char city_name[10] = {0};
joon874 0:87760ecf2cae 81 char temper_data[3] = {0};
joon874 0:87760ecf2cae 82
joon874 0:87760ecf2cae 83 int temp;
joon874 0:87760ecf2cae 84 int num100, num10, num1;
joon874 0:87760ecf2cae 85
joon874 0:87760ecf2cae 86 date = strstr(buffer, "Date");
joon874 0:87760ecf2cae 87 for(int x=0;x<17;x++){
joon874 0:87760ecf2cae 88 cur_date[x] = date[x+6];
joon874 0:87760ecf2cae 89 }
joon874 0:87760ecf2cae 90
joon874 0:87760ecf2cae 91 weather = strstr(buffer, "main");
joon874 0:87760ecf2cae 92 for(int i=0; i<15;i++){
joon874 0:87760ecf2cae 93 weather_con[i] = weather[i+7];
joon874 0:87760ecf2cae 94 if(weather_con[i] == 34){
joon874 0:87760ecf2cae 95 weather_con[i] = 0;
joon874 0:87760ecf2cae 96 break;
joon874 0:87760ecf2cae 97 }
joon874 0:87760ecf2cae 98 }
joon874 0:87760ecf2cae 99
joon874 0:87760ecf2cae 100 city = strstr(buffer, "name");
joon874 0:87760ecf2cae 101 for(int j=0; j<10;j++){
joon874 0:87760ecf2cae 102 city_name[j] = city[j+7];
joon874 0:87760ecf2cae 103 if(city_name[j] == 34){
joon874 0:87760ecf2cae 104 city_name[j] = 0;
joon874 0:87760ecf2cae 105 break;
joon874 0:87760ecf2cae 106 }
joon874 0:87760ecf2cae 107 }
joon874 0:87760ecf2cae 108
joon874 0:87760ecf2cae 109 temper = strstr(buffer, "temp");
joon874 0:87760ecf2cae 110 for(int k=0; k<3;k++){
joon874 0:87760ecf2cae 111 temper_data[k] = temper[k+6];
joon874 0:87760ecf2cae 112 }
joon874 0:87760ecf2cae 113
joon874 0:87760ecf2cae 114 num100 = temper_data[0] - 48;
joon874 0:87760ecf2cae 115 num10 = temper_data[1] - 48;
joon874 0:87760ecf2cae 116 num1 = temper_data[2] - 48;
joon874 0:87760ecf2cae 117
joon874 0:87760ecf2cae 118 temp = (num100*100 + num10*10 + num1) - 273;
joon874 0:87760ecf2cae 119
joon874 0:87760ecf2cae 120 /*
joon874 0:87760ecf2cae 121 * printf
joon874 0:87760ecf2cae 122 */
joon874 0:87760ecf2cae 123 printf("\r\n\r\n");
joon874 0:87760ecf2cae 124 printf("--------- Weather Station --------\r\n");
joon874 0:87760ecf2cae 125 printf("-- DATE : %s\r\n", cur_date);
joon874 0:87760ecf2cae 126 printf("-- CITY NAME : %s\r\n", city_name);
joon874 0:87760ecf2cae 127 printf("-- WEATHER : %s\r\n", weather_con);
joon874 0:87760ecf2cae 128 printf("-- TEMPURATURE : %d\r\n", temp);
joon874 0:87760ecf2cae 129 printf("------------------------------------\r\n");
joon874 0:87760ecf2cae 130
joon874 0:87760ecf2cae 131 sock.close();
joon874 0:87760ecf2cae 132
joon874 0:87760ecf2cae 133 eth.disconnect();
joon874 0:87760ecf2cae 134
joon874 0:87760ecf2cae 135 wait(60.0);
joon874 0:87760ecf2cae 136
joon874 0:87760ecf2cae 137 }
joon874 0:87760ecf2cae 138
joon874 0:87760ecf2cae 139 }