sdfghjjh

Dependencies:   Adafruit_GFX WIZnetInterface mbed

Fork of Weather_Forecast_Helloworld_WIZwiki-W7500 by IOP

Committer:
jcm931213
Date:
Tue Jun 13 04:12:33 2017 +0000
Revision:
16:60040aaa87df
Parent:
15:c4e32b8b8130
Child:
17:bf1228469a6c
becky

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joon874 0:5d0d5244d683 1 #include "mbed.h"
joon874 0:5d0d5244d683 2 #include "EthernetInterface.h"
joon874 0:5d0d5244d683 3 #include "Adafruit_SSD1306.h"
joon874 11:d6285226f186 4
joon874 11:d6285226f186 5 // W7500 onboard LED & Init
joon874 11:d6285226f186 6 DigitalOut gled(LED2,0);
jcm931213 15:c4e32b8b8130 7
joon874 0:5d0d5244d683 8
joon874 11:d6285226f186 9 // I2C Class
joon874 11:d6285226f186 10 I2C i2c(PA_10,PA_9);
joon874 11:d6285226f186 11
joon874 11:d6285226f186 12 // OLED Class
joon874 11:d6285226f186 13 Adafruit_SSD1306_I2c gOled(i2c,NC,0x78,64,128);
joon874 11:d6285226f186 14
joon874 11:d6285226f186 15 // Declare Ethernet Class
joon874 11:d6285226f186 16 EthernetInterface eth;
joon874 11:d6285226f186 17
joon874 11:d6285226f186 18 // Declare TCP Connection Class
joon874 11:d6285226f186 19 TCPSocketConnection sock;
joon874 0:5d0d5244d683 20
joon874 0:5d0d5244d683 21
joon874 11:d6285226f186 22
joon874 0:5d0d5244d683 23 int main() {
joon874 11:d6285226f186 24
joon874 0:5d0d5244d683 25 int phy_link;
joon874 0:5d0d5244d683 26 printf("Wait a second...\r\n");
joon874 0:5d0d5244d683 27
joon874 11:d6285226f186 28 //--------- Have to modify the mac address-------------
joon874 11:d6285226f186 29 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0xff, 0xff, 0x25};
joon874 11:d6285226f186 30
joon874 11:d6285226f186 31 eth.init(mac_addr); //Use DHCP
jcm931213 15:c4e32b8b8130 32
jcm931213 15:c4e32b8b8130 33 // phy link
jcm931213 15:c4e32b8b8130 34 do{
jcm931213 15:c4e32b8b8130 35 phy_link = eth.ethernet_link();
jcm931213 15:c4e32b8b8130 36 printf("...");
jcm931213 15:c4e32b8b8130 37 wait(2);
jcm931213 15:c4e32b8b8130 38 }while(!phy_link);
jcm931213 15:c4e32b8b8130 39 printf("\r\n");
jcm931213 15:c4e32b8b8130 40
jcm931213 15:c4e32b8b8130 41 eth.connect();
jcm931213 15:c4e32b8b8130 42
jcm931213 15:c4e32b8b8130 43 printf("IP Address is %s\r\n\r\n", eth.getIPAddress());
jcm931213 15:c4e32b8b8130 44 printf("MASK Address is %s\r\n\r\n", eth.getNetworkMask());
jcm931213 15:c4e32b8b8130 45 printf("GATEWAY Address is %s\r\n\r\n", eth.getGateway());
jcm931213 15:c4e32b8b8130 46 printf("MAC Address is %s\r\n\r\n", eth.getMACAddress());
joon874 0:5d0d5244d683 47
joon874 0:5d0d5244d683 48 while(1){
joon874 11:d6285226f186 49 // TCP socket connect to openweather server
joon874 11:d6285226f186 50 //TCPSocketConnection sock;
jcm931213 15:c4e32b8b8130 51 char http_addr[]="api.openweathermap.org";
jcm931213 15:c4e32b8b8130 52 int port=80;
joon874 11:d6285226f186 53
jcm931213 15:c4e32b8b8130 54 //connect
jcm931213 15:c4e32b8b8130 55 ///////////////////////////////////////////////////////////
jcm931213 16:60040aaa87df 56
jcm931213 15:c4e32b8b8130 57 ////////////////////////////////////////////////////////////
joon874 11:d6285226f186 58
joon874 11:d6285226f186 59 // GET method, to request weather forecast
joon874 11:d6285226f186 60 char http_cmd[] = "GET /data/2.5/weather?q=London,uk&appid=a0ca47dd7f6066404629b3e1ad728981 HTTP/1.0\n\n";
jcm931213 15:c4e32b8b8130 61
joon874 11:d6285226f186 62
jcm931213 15:c4e32b8b8130 63 //send data
jcm931213 15:c4e32b8b8130 64 ///////////////////////////////////////////////////////
jcm931213 15:c4e32b8b8130 65
jcm931213 15:c4e32b8b8130 66 ///////////////////////////////////////////////////////
joon874 11:d6285226f186 67
joon874 11:d6285226f186 68 // get data into buffer
joon874 11:d6285226f186 69 char buffer[2048];
joon874 11:d6285226f186 70 int ret;
joon874 11:d6285226f186 71 while (true) {
jcm931213 15:c4e32b8b8130 72 // break the while(), when don't received tha data
jcm931213 15:c4e32b8b8130 73 // save the data to buffer
jcm931213 15:c4e32b8b8130 74 // save the return value to ret
jcm931213 15:c4e32b8b8130 75 //receive data
jcm931213 15:c4e32b8b8130 76 //////////////////////////////////////////////////////
jcm931213 15:c4e32b8b8130 77
jcm931213 15:c4e32b8b8130 78
jcm931213 15:c4e32b8b8130 79
jcm931213 15:c4e32b8b8130 80 ////////////////////////////////////////////////////
joon874 11:d6285226f186 81 buffer[ret] = '\0';
joon874 11:d6285226f186 82 printf("Received %d chars from server: %s\n", ret, buffer);
joon874 11:d6285226f186 83 }
joon874 11:d6285226f186 84 printf("\r\n\r\n");
joon874 11:d6285226f186 85
joon874 11:d6285226f186 86 // parsing current date, weather, city, tempurature
joon874 11:d6285226f186 87 char *date;
joon874 11:d6285226f186 88 char *weather;
joon874 11:d6285226f186 89 char *city;
joon874 11:d6285226f186 90 char *temper;
joon874 11:d6285226f186 91
joon874 11:d6285226f186 92 char cur_date[17] = {0};
joon874 11:d6285226f186 93 char weather_con[15] = {0};
joon874 11:d6285226f186 94 char city_name[10] = {0};
joon874 11:d6285226f186 95 char temper_data[3] = {0};
joon874 0:5d0d5244d683 96
joon874 11:d6285226f186 97 int temp;
joon874 11:d6285226f186 98 int num100, num10, num1;
joon874 11:d6285226f186 99
joon874 11:d6285226f186 100 //parding date
joon874 11:d6285226f186 101 date = strstr(buffer, "Date");
joon874 11:d6285226f186 102 for(int x=0;x<17;x++){
joon874 11:d6285226f186 103 cur_date[x] = date[x+6];
joon874 11:d6285226f186 104 }
joon874 11:d6285226f186 105
joon874 11:d6285226f186 106 // parsing weather condition
joon874 11:d6285226f186 107 weather = strstr(buffer, "main");
joon874 11:d6285226f186 108 for(int i=0; i<15;i++){
joon874 11:d6285226f186 109 weather_con[i] = weather[i+7];
joon874 11:d6285226f186 110 if(weather_con[i] == 34){
joon874 11:d6285226f186 111 weather_con[i] = 0;
joon874 11:d6285226f186 112 break;
joon874 11:d6285226f186 113 }
joon874 11:d6285226f186 114 }
joon874 11:d6285226f186 115
joon874 11:d6285226f186 116 // parsing city name
joon874 11:d6285226f186 117 city = strstr(buffer, "name");
joon874 11:d6285226f186 118 for(int j=0; j<10;j++){
joon874 11:d6285226f186 119 city_name[j] = city[j+7];
joon874 11:d6285226f186 120 if(city_name[j] == 34){
joon874 11:d6285226f186 121 city_name[j] = 0;
joon874 11:d6285226f186 122 break;
joon874 11:d6285226f186 123 }
joon874 11:d6285226f186 124 }
joon874 0:5d0d5244d683 125
joon874 11:d6285226f186 126 //parsing current tempurature
joon874 11:d6285226f186 127 temper = strstr(buffer, "temp");
joon874 11:d6285226f186 128 for(int k=0; k<3;k++){
joon874 11:d6285226f186 129 temper_data[k] = temper[k+6];
joon874 11:d6285226f186 130 }
joon874 11:d6285226f186 131
joon874 11:d6285226f186 132 //kelvin to celius converter
joon874 11:d6285226f186 133 num100 = temper_data[0]- 48;
joon874 11:d6285226f186 134 num10 = temper_data[1] - 48;
joon874 11:d6285226f186 135 num1 = temper_data[2]- 48;
joon874 11:d6285226f186 136 temp = (num100*100 + num10*10 + num1) - 273;
joon874 11:d6285226f186 137
joon874 11:d6285226f186 138 // Debug message
joon874 11:d6285226f186 139 printf("city name : %s\r\n", city_name);
joon874 11:d6285226f186 140 printf("weather : %s\r\n", weather_con);
joon874 11:d6285226f186 141 printf("temperature : %d\r\n\r\n", temp);
joon874 11:d6285226f186 142
joon874 11:d6285226f186 143 // OLED Display
joon874 11:d6285226f186 144 gOled.begin();
joon874 11:d6285226f186 145 gOled.clearDisplay();
joon874 11:d6285226f186 146 gOled.printf("%s\n\n", cur_date);
joon874 11:d6285226f186 147 gOled.printf("City : %s\n", city_name);
joon874 11:d6285226f186 148 gOled.printf("Weather : %s\n", weather_con);
joon874 11:d6285226f186 149 gOled.printf("Temper : %d\n", temp);
joon874 11:d6285226f186 150 gOled.display();
joon874 11:d6285226f186 151 gOled.setTextCursor(0,0);
joon874 11:d6285226f186 152
jcm931213 15:c4e32b8b8130 153
joon874 0:5d0d5244d683 154
jcm931213 15:c4e32b8b8130 155 //close
jcm931213 15:c4e32b8b8130 156 //////////////////////////////////////////////////
joon874 0:5d0d5244d683 157
jcm931213 15:c4e32b8b8130 158 //////////////////////////////////////////////////
joon874 11:d6285226f186 159 /*
joon874 11:d6285226f186 160 * everytime in delay, request weather forecast
joon874 11:d6285226f186 161 */
joon874 11:d6285226f186 162 wait(20.0);
joon874 0:5d0d5244d683 163
joon874 0:5d0d5244d683 164 };
joon874 0:5d0d5244d683 165
joon874 0:5d0d5244d683 166 }