Display Current Weather
Dependencies: WIZnetInterface mbed
main.cpp@0:87760ecf2cae, 2016-04-04 (annotated)
- Committer:
- joon874
- Date:
- Mon Apr 04 09:56:52 2016 +0000
- Revision:
- 0:87760ecf2cae
My Weather Station
Who changed what in which revision?
User | Revision | Line number | New 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 | } |