Visitor Tracking via Wi-Fi

Wi-Fi Probe request is used to actively seek any, or a particular access point.

wifi-probe-eng

For example, if you turn on the Wi-Fi of the smart phone, the smart phone will show all available AP list. At this time, the smart phone transmits the “Probe Request” packets to search the APs around. After then the phone will show a list of APs that sends the response packets to the phone.

The probe request packet includes MAC address information of the device. Therefore, if we can capture this probe request packet in any specific area, it is possible to collect the data about staying time of devices. In this posting, we will make a device to track Wi-Fi devices using probe request packets.

<Hardware>

We need below hardware

  • WIZwiki-W7500 (ARM Cortex-M0 Platform)
  • WizFi310 : Wi-Fi Module (This module has the function to capture the probe-request packet.)
  • SD CARD

probe-1

WizFi310 scans the probe request around and send the data to WIZwiki-W7500ECO. After parsing the data, WIZwiki-W7500 save the data in the SD Card.

The source code for this operation, can be downloadable from mbed.

https://developer.mbed.org/users/jehoon/code/WiFi_Tracker/

 

<Result>

We could get the below data.

probe-2

  • X4000 : Probe request packet
  • xx:xx:xx ~~ : MAC Address
  • -84:RSSI (Wireless Signal Sensitivity)

By analyzing above raw data, we could get below result

probe-3

probe-4

 

  • WizFi310 captured about 36,000 Probe request packets
  • Found 343 MAC addresses
  • Captured 15,000 probe requests from a MAC address
  • Captured more than 1000 probe requests from 5 MAC addresses
  • Captured more than 100 probe requests from 33 address

If we use this ‘probe request packet capture’ function, we may be able to make the device to search the visitors who often visit a specific area and sends various information such as restaurant, movies, parking places and etc.

mCIA : WiFi Component ESP8266 with WIZwiki-W7500

* WIZnet Project with WIZwiki-W7500

1. Purpose

– will apply ESP8266, that is getting attention as a low-price wireless module in current market, as mCIA.

  • Basic Example of mCIA : apply only ESP8266
  • Application Example : apply Dual NIC (WIZnet TCP/IP & ESP8266)

Untitled

– There are some WIZnet customers who realize using with W5x00 & WizFi.

2. Apply only ESP8266

Picture2

3. Dual NIC – problem encountered

  • There is difficulty in order that Dual NIC is realized because of mbed class structure
  • not designed because Ethernet/Socket class considers inheritance and extension
  • occurs problem not only in WIZwiki-W7500 platform but also mbed platform

→ wrong design by mbed S/W architect

Picture3 Picture4

→ negative answer on mbed forum

4. Dual NIC – similar case

5

5. Dual NIC – realization

Picture5

6. Dual NIC – result

Picture6 Picture7

Conclusion

– I know that this way is a kind of work-around way. Best way is to design a new network-abstract-class and hierarchical network-interface-classes based on the network-abstract-class.

  • Ethernet : IwIP, WIZnet hardwired TCP/IP
  • WiFi : ESP8266, WiFly, WizFi250, CC3000
  • Other interfaces (3G/4G, BT, ….)

I believe that mbed-team will release a new network classes based on a hierarchical architecture.

7. Dual NIC – mCIA posting

Picture8 Picture9 Picture10

8. Dual NIC – feedback

Picture11

Picture12

9. Network / Socket Library redesigning?

13

– This library might not be compatible with existing library.

10. Conclusion

  • Basic Example of mCIA : apply only ESP8266

→  Success!

  • Application Example : apply Dual NIC (WIZnet TCP/IP & ESP8266)

→ had little difficulty because of mbed architectural problem

→ mbed team is modifying Network/Socket library

→ will update Dual NIC once this library is officially updated

WizFi250 Geolocation and NTP Example on WIZwiki-W7500 of mbed platform

System Diagram

I would make a watch that can check my location and time using WizFi250 and WIZwiki-W7500. I used Geolocation Server to get my location and NTP Server to get current time. The following picture is system diagram of this project.

20150626_171106

Materials

For more detailed information about following materials, please refer to the following link; http://www.life4iot.com/2015/06/30/wizfi250-hello-world-demo-on-wizwiki-w7500-of-mbed-platform/?lang=en.

WIZwiki-W7500 (MCU Platform)

wizwiki-w7500_main

WizFi250-EVB (Wi-Fi Module)

ShopDtl_1203_20140918154919

Sensor Shield

TB2wSGHaFXXXXcLXXXXXXXXXXXX_!!33841454

SSD1306 OLED

  • Features
    • Resolution: 128 x 64 dot matrix panel
    • Power supply
      • VDD = 1.65V to 3.3V for IC logic
      • VCC = 7V to 15V for Panel driving
    • For matrix display
      • OLED driving output voltage, 15V maximum
      • Segment maximum source current: 100uA
      • Common maximum sink current: 15mA
      • 256 step contrast brightness current control
    • Embedded 128 x 64 bit SRAM display buffer
    • Pin selectable MCU Interfaces:
      • 8-bit 6800/8080-series parallel interface
      • 3 /4 wire Serial Peripheral Interface
      • I2C Interface
    • Screen saving continuous scrolling function in both horizontal and vertical direction
    • RAM write synchronization signal
    • Programmable Frame Rate and Multiplexing Ratio
    • Row Re-mapping and Column Re-mapping
  • On-Chip Oscillator
  • Chip layout for COG & COF
  • Wide range of operating temperature: -40°C to 85°C

Hardware Configuartion

WIZwiki-W7500 Board uses UART0 RX/TX/CTS/RTS pins to control WizFi250 and I2C SDA/SCL pins to control SSD1306 OLED.

20150626_204959

WizFi250-EVB Sensor Shield WIZwiki-W7500 SSD1306
RX-TX RXD TXD
TX-RX TXD RXD
CTS-RTS CTS D8
RTS-CTS RTS D7
WizFi250-RESET JP10-2 PA12
I2C SCL SCL PA9 SCL
I2C SDA SDA PA10 SDA
VCC VCC VCC
GND GND

Compile WizFi250 Geolocation and NTP Example

You can use Geolocation and NTP Example for WizFi250 on WIZwiki-W7500 by entering the following site; https://developer.mbed.org/teams/WIZnet/code/WizFi250-Geolocation_NTP/.

SSD1306 Library

I used Adafruit GFX Library in order to use SSD1306 Library. I found there is some sort of bug in this Display function while I used this library. So, I modified them and sent the “Pull Request” message to original author.

Modified Adafruit GFX Library

Orignal Adafruit GFX Library

HTTP Client

HTTP Client Library is used for sending any request to the web server and receiving any response from the web server. In this example, we would contact the ip-api.com server to get the Geolocation. If connecting ip-api.com/csv sever, we would get all the information such as country name, address, latitude, longitude, and TimeZone in CSV format.

You would be able to download HTTP Client Library by clicking following link; https://developer.mbed.org/users/donatien/code/HTTPClient/.

NTP Client

NTP Client Library is used to gain UTC(Universal Time Coordinated) information at Network Time Server using UDP communication. In this example, we would use kr.pool.ntp.org as NTP Server Domain of South Korea. In order to get to know the time of South Korea, we should add 9 hours to the information from NTP Server because it is UTC.

NTP Client Library

Example Source Code

WizFi250-Geolocation NTP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include "mbed.h"
#include "Adafruit_SSD1306.h"
#include "WizFi250Interface.h"
#include "NTPClient.h"
#include "HTTPClient.h"
#define SECURE WizFi250::SEC_AUTO
#define SSID "wizohp"
#define PASS "wiznet218"
#if defined(TARGET_WIZwiki_W7500)
    #define SDA                  PA_10
    #define SCL                  PA_9
    WizFi250Interface wizfi250(D1,D0,D7,D8,PA_12,NC,115200);
    Serial pc(USBTX,USBRX);
#endif
// an SPI sub-class that provides a constructed default
class I2CPreInit : public I2C
{
public:
    I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl)
    {
        frequency(100000);
        start();
    };
};
I2CPreInit gI2C(SDA,SCL);
Adafruit_SSD1306_I2c gOled(gI2C,NC,0x78,64,128);
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
    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, returnCode;
    pc.baud(115200);
    gOled.begin();
    gOled.clearDisplay();
    wizfi250.init();
    returnCode = wizfi250.connect(SECURE, SSID, PASS);
    if ( returnCode == 0 )
    {
        printf(" - WiFi Ready\r\n");
        printf("IP Address is %s\r\n", wizfi250.getIPAddress());
    }
    else
    {
        printf(" - Could not initialize WiFi - ending\r\n");
        return 0;
    }
    //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, &amp;j, success);
        parse(httpGetData,&amp;j,countryFull);
        parse(httpGetData,&amp;j,countryAbrv);
        parse(httpGetData,&amp;j,stateAbrv);
        parse(httpGetData,&amp;j,stateFull);
        parse(httpGetData,&amp;j,city);
        parse(httpGetData,&amp;j,zip);
        parse(httpGetData,&amp;j,latitude);
        parse(httpGetData,&amp;j,longitude);
        parse(httpGetData,&amp;j,timeZone);
        gOled.printf("HTTP Data Received\r\n");
        gOled.display();
    }
    else { //HTTP GET REQUEST ERRORED
        gOled.printf("HTTP Error %d\r\n", r);
        gOled.display();
        return -1;
    }
    printf("Reading Time...\r\n");
    char* domainName="kr.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);
    printf("Time Set\r\n");
    //Delay for human time to read LCD display
    wait(3.0);
    char buffer[80]; //BUFFER TO HOLD FORMATTED TIME DATA
    gOled.printf("%s, %s %s, %s\r\n",city,stateAbrv,zip,countryAbrv); //PRINT CITY STATE AND ZIP INFORMATION AND COUNTRY
    gOled.printf("LAT:%s\r\nLONG:%s\r\n",latitude,longitude); //PRINT LATITUDE AND LONGITUDE
    gOled.printf("Timezone:%s\r\n",timeZone); //PRINT TIMEZONE
    wizfi250.disconnect(); //DISCONNECT FROM THE NETWORK
    while (1) {
        //ctTime = time(NULL)-(3600*4);  //TIME with offset for eastern time US
        ctTime = time(NULL)+(3600*9);  //TIME with offset for eastern time KR
        //FORMAT TIME FOR DISPLAY AND STORE FORMATTED RESULT IN BUFFER
        strftime(buffer,80,"%a %b %d\r\n%T %p %z\r\n %Z\r\n",localtime(&amp;ctTime));
        gOled.printf("Univ Time Clock\r\n%s\r\n", buffer);
        gOled.display();
        gOled.setTextCursor(0,40);
        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&lt;=strlen(buffer); i++) {  //TOTAL SIZE OF RETURNED DATA
        if ((buffer[*j+i] == ',')||(buffer[*j+i] == '' )) { //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
    }
}

Demo Video

WIZnet WizFi210 Module as a New WiFi Module

P1040309

I’m playing with a new wifi module today from WizNet, the WizFi210. I have mine mounted on a test board that has 9 pin rs-232, usb, and TTL Serial interfaces. There is an Arduino shield available as well. This is a inexpensive wifi board that can be used for many applications, from smart appliances to wireless sensor monitoring. For ease of testing and prototyping, the test board or the shield are a necessity.

The wifi module itself is the square board on the right end of the test board, covered in metal, with the antenna attached. There is a version with on board chip antenna as well. I’ll be documenting the setup and Arduino sketches necessary for communicating with this device, as well as it’s applicability to working with a Raspberry Pi. Stay tuned!

Arduino Library

  • Single band 2.4GHz IEEE802.11b Wi-Fi module
  • Host Interface : UART & SPI
  • Quick booting time : under 20msec
  • Ultra low power through dynamic power management (34μA at the standby mode)
  • Security protocols : WEP, WPA/WPA2-PSK, Enterprise (EAP-FAST, EAP-TLS, EAP-TTLS, PEAP)
  • Operation temperature : -40 ~ 85
  • CE, FCC, KCC, TELEC certified
  • Dimension : 32 x 23.5 x 2.9(mm)
  • Provides chip antenna mounted version

Source: arduinotronics.blogspot.com

WIZnet WizFi250 (Air Command Mode)

  1. What is WizFi250 <Air Command Mode>?

The Air Command Mode enables the WizFi250 to use AT Commands via WiFi, whereas the AT commands were normally used via Serial(UART). Now users can implement the WizFi250 AT command function with their PC or smart phones without a physical interface like Serial.

For example,

  • WiFi Provisioning (Setting the SSID, Passphrase, or IP of the AP trying to connect)
  • Serial-to-WIFI function socket control (using AT+SCON)
  • WizFi250 GPIO control (Controlling the LED connected with WizFi250 by smart phone)
  • Checking the current WIFI information connected with WizFi250 (AT+WSTAT)
  • WizFi250 remote reset

+ NOTICE that the <Air Command Mode> is only operable for F/W 1.0.1.8 or up +

  1. How to start WizFi250 <Air Command Mode>

: Users can start the <Air Command Mode> by using (a) the AT Command or (b) the GPIO.

(a) <Air Command Mode> by using the AT Command

The command for AT command is as below.

aaaaaa

Input the command as above.

bbbbb

The error was caused because the WIFI network for WizFi250 is not enabled.

In other words, if WizFi250 is connected to the AP or not operating in AP mode, the socket cannot be opened and thus the error.

Now set the WizFi250 in AP mode and input the <Air Command> command.

ccccccc

The WizFi250 is now operating as Soft AP and is ready for Air Command with TCP 5001.

(b) <Air Command Mode> by using GPIO

Click the function button (pin42) of the WizFi250-EVB, and the WizFi250 will operate in AP mode, automatically enabling the <Air Command Mode>.

ddddddd              

  1. How to use WizFi250 <Air Command Mode>

To send AT command to a WizFi250 in <Air Command Mode>, send “WizFi250AirCmd:” (15byte) first, and then the AT command, and lastly <CR>(Carriage Return,0x0d) 1 byte.

The actual example is as below.

eeeeeeeeee

  1. How to set WIFI using WizFi250 <Air Command Mode>

ffffffffff

The above image is the result of the Wizfi250 command below.

ggggggg

It can be seen as below that the WIFI Provisioning values from the rebooted WizFi250 are correctly set.

hhhhhhhhhh

WIZnet WizFi250 Basic Study and Training

wifi 250

1. WIZnet WizFi250 Feature

  • Single band 2.4GHz IEEE 802.11b/g/n
  • Integrated RF power amplifier
  • Supports wireless data rates up to 65Mbit/s
  • 1MB Flash Memory, 128KB SRAM, 1MB Serial Flash
  • Supports per packet Rx Antenna diversity
  • Low power consumption & excellent power management performance
  • Small size, suitable for low volume system integration.
  • Easy integration into mobile and handheld devices flexible system configuration.
  • 412-2.484 GHz two SKUs for worldwide market.
  • Device Package : 28×20 mm (17×20 mm)
  • Serial Interface : UART, SPI
  • Powerful Web server provides
  • Soft AP, WiFi Direct
  • Sufficient memory retention
  • Wi-Fi Security (WEP, WPA/WPA2PSK)
  • L2 Switching
  • OTA(Over The Air F/W Upgrading

2. AT Command Overview

  • The Customer use the setting AT command and parameter through UART(or SPI) interface.
  • The Start characters is “AT” and the End characters “Enter Key” (CR, \r, 0x0d).
  • Ex) ‘AT+MMSG=1’ => ‘A’, ‘T’, ‘+’, ‘M’, ‘M’, ‘S’, ‘G’, ‘=’, ‘1’, ‘CR(0x0d)‘
  • Command mode:

The WizFi250 first default mode is the Command mode

All AT-command execute this mode

This mode use the data transmit /receive for managing system, Wi-Fi setting.

  • Data mode : This mode use for real data transmit / receive

 3. Demo: Station mode, TCP Server

  • Block Diagram

222

  • AT COMMAND
AT+WLEAVE  => Disconnect previous Association[OK]    <= WizFi250 response from the AT+WLEAVE command

AT+WANT=0  => set the Antenna (0:uFL,1:PA,3:Auto)

[OK]

AT+WSET=0,WIZnet_MakerSpace_2.4  => set the SSID

[OK]

AT+WSEC=0,,xxxxxxxx => set the Passphrase

[OK]

AT+WNET=0,192.168.0.xxx,255.255.255.0,192.168.0.1 => set the IP

[OK]

AT+WJOIN => AP Association / Joining : WIZnet_MakerSpace_2.4 Successfully joined : WIZnet_MakerSpace_2.4

[Link-Up Event]

IP Addr    : 192.168.0.xxx

Gateway    : 192.168.0.1

[OK]

AT+SCON=O,TSN,,0,5000,1 => set the Socket (TCP Server)

[OK]

[CONNECT 0]

Hello WizFi250

4. Demo: Station mode, TCP Client

  • Block Diagram

33333333333333

  • AT COMMAND
AT+WLEAVE  => Disconnect previous Association[OK]

AT+WANT=0  => set the Antenna (0:uFL,1:PA,3:Auto)

[OK]

AT+WSET=0,WIZnet_MakerSpace_2.4  => set the SSID

[OK]

AT+WSEC=0,,xxxxxxxx => set the Passphrase

[OK]

AT+WNET=1  => set the DHCP ON

[OK]

AT+WJOIN => AP Association / Joining : WIZnet_MakerSpace_2.4

[Link-Up Event]

IP Addr    : 192.168.3.110

Gateway    : 192.168.3.1

[OK]

AT+SCON=O,TCN,192.168.3.111,5000,,1 => set the Socket (TCP Client)

[OK]

[CONNECT 0]

Hello WizFi250

5. Demo: AP mode, TCP Server

  • Block diagram

5555

  • AT COMMAND
AT+WLEAVE[OK]

AT+WANT=0

[OK]

AT+WSET=1,WizFi250AP

[OK]

AT+WSEC=1,WPA2,12345678

[OK]

AT+WNET=0,192.168.12.1,255.255.255.0,192.168.12.1

[OK]

AT+WJOIN

Joining : WizFi250AP

Successfully joined : WizFi250AP

[Link-Up Event]

IP Addr    : 192.168.12.1

Gateway    : 192.168.12.1

[OK]

AT+SCON=O,TSN,,0,5000,1

[OK]

[CONNECT 0]

Hello WizFi250

 

<Notice>

As below command sustain the setting service mode after

AT+SCON=S,TSN,,0,5000,1

Power Off -> On

AT+MPROF=S

 

6. Demo: Multi Socket

  • Block diagram

6666666666666

  • AT Command
AT+WLEAVE[OK]

AT+WANT=0

[OK]

AT+WSET=0,WIZnet_MakerSpace_2.4  => set the SSID

[OK]

AT+WSEC=0,,xxxxxxxx =>set the  Passphrase

[OK]

AT+WNET=1

OK]

AT+WJOIN

Joining : WizFiDemoAP

Successfully joined : WizFiDemoAP

[Link-Up Event]

IP Addr    : 192.168.3.110

Gateway    : 192.168.3.1

[OK]

AT+SCON=O,TCN,192.168.3.111,5000,,0

[OK]

[CONNECT 0]

AT+SCON=O,TCN,192.168.3.112,5000,,0

[OK]

[CONNECT 1]

{0,192.168.3.111,2735,15}Hello From PC

{1,192.168.3.112,5436,22}Data From Smartphone

 

7. Demo: Connect to Google Web

  • Block diagram

77777777777

  • AT COMMAND
AT+WLEAVE  => Disconnect previous Association[OK]

AT+WANT=0  => set the Antenna (0:uFL,1:PA,3:Auto)

[OK]

AT+WSET=0,WIZnet_MakerSpace_2.4  => set the SSID

[OK]

AT+WSEC=0,,xxxxxxxx => set the Passphrase

[OK]

AT+WNET=1  => set the DHCP ON

[OK]

AT+WJOIN => AP Association / Joining : WIZnet_MakerSpace_2.4

[Link-Up Event]

IP Addr    : 192.168.3.110

Gateway    : 192.168.3.1

[OK]

AT+SFORM=000000000 => Define the header of receive data

[OK]

AT+FDNS=google.com,3000 => Find IP address of google.com

74.125.128.102

[OK]

AT+SCON=O,TCN,74.125.128.102,80,0,0

[OK]

[CONNECT 0]

AT+SSEND=0,,,18

[0,,,18]

GET / HTTP/1.1\r\n => This 18 bytes is real date that It’ll send to be google web server. This was not displayed in your PC monitor!

[OK]

HTTP/1.1 302 Found

Location: http://www.google.co.kr/?gws_rd=cr&ei=pIz0U…&#8230;..

Cache-Control: private

Content-Type: text/html; charset=UTF-8

………………………..

8. Demo: Get Weather Data from Web

  • Block diagram

888888

  • AT COMMAND
AT+WLEAVE  => Disconnect previous Association[OK]

AT+WANT=0  => set the Antenna (0:uFL,1:PA,3:Auto)

[OK]

AT+WSET=0,WIZnet_MakerSpace_2.4  => set the SSID

[OK]

AT+WSEC=0,,xxxxxxxx => set the Passphrase

[OK]

AT+WNET=1  => set the DHCP ON

[OK]

AT+WJOIN => AP Association / Joining : WIZnet_MakerSpace_2.4

[Link-Up Event]

IP Addr    : 192.168.3.110

Gateway    : 192.168.3.1

 

AT+FDNS=api.openweathermap.org,3000  => Find IP address of server

128.199.164.95

[OK]

AT+SCON=O,TCN,128.199.164.95,80,,0

[OK]

 

[CONNECT 0]

AT+SSEND=0,,,81

[0,,,81]

GET /data/2.5/weather?q=Seoul&mode=xml HTTP/1.1\r\n

Host: api.openweathermap.org\r\n\r\n

=> OpenWeatherMap  This 81 bytes is real data that it’ll send to the Weather Server. This was not displayed in your PC monitor!

[OK]

{0,128.199.164.95,80,969}HTTP/1.1 200 OK

Server: nginx

Date: Tue, 05 Aug 2014 23:59:54 GMT

…………………………………………………………….

<temperature max=”298.15″ min=”296.15″ unit=”kelvin” value=”297.38″>

<humidity unit=”%” value=”83″>

<pressure unit=”hPa” value=”1006″>

…………………………………………………………….

 

Sourced by http://ilikethisplus.tistory.com/2

 

Sourced by Steve Kim (ssekim@wiznet.co.kr)