Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Cat M1
- SerialPassthrough
- WizFi310
- IOT
- Neul
- ESP8266
- PicoC
- WizFi210
- 안드로이드
- ThingPlug
- 오픈 하우스
- IoTMakers
- micropython
- SKT
- C Script
- WiFi
- Gainspan
- AT+FSOCK
- W7500
- MQTT
- AT+MEVTFORM
- KT
- cloud
- OpenSSL
- WizFi250
- LoRa
- NB-IoT
- script
- WIZwiki-W7500
- SSL Server
Archives
- Today
- Total
IoT Wireless
Get Weather data from OpenWeatherMap with WizFi250 본문
아래에는 WizFi250으로 OpenWeatherMap 사이트에서 제공하는 Open API로 특정한 도시(Seoul)의 날씨 정보 를 가져오는 예제이다. (OpenWeatherMap에서 제공하는 JSON과 XML 예제를 이용)
먼저, OpenWeatherMap에서 API 관련 내용을 확인한다.
Calls by city name. API respond with a list of results that matchs a searching word.
In JSON : api.openweathermap.org/data/2.5/weather?q=London,uk
In XML : api.openweathermap.org/data/2.5/weather?q=London&mode=xml
http://openweathermap.org/current
그리고, PC에서 위에 설명된 내용으로 JSON과 XML 형식으로 서울의 날씨 데이터를 가져오고, 이 과정에서의 Network Packet을 아래와 같이 캡쳐했다.
여기에서 \r(Carriage return, 0x0d), \n(Line Feed, 0x0a)등의 정확한 입력과 전송하는 데이터 크기(72 Byte, 81 Byte)에 유의해야 한다.
* JSON GET /data/2.5/weather?q=Seoul HTTP/1.1\r\n Host: api.openweathermap.org\r\n\r\n (72 Byte) * XML GET /data/2.5/weather?q=Seoul&mode=xml HTTP/1.1\r\n Host: api.openweathermap.org\r\n\r\n (81 Byte)이제, 사전 준비 작업은 끝났고, WizFi250을 실제 구동하여 보겠다.
먼저, AP에 Association을 한다.
AT+WSET=0,Team Wiki [OK] AT+WSEC=0,,12345678 [OK] AT+WNET=1 [OK] AT+WJOIN Joining : Team Wiki Successfully joined : Team Wiki [Link-Up Event] IP Addr : 192.168.101.33 Gateway : 192.168.101.1 [OK]OpenWeatherMap API 서버의 IP 주소를 가져온다.
AT+FDNS=api.openweathermap.org,3000 128.199.164.95 [OK]OpenWeatherMap API 서버에 접속한다.
AT+SCON=O,TCN,128.199.164.95,80,,0 [OK] [CONNECT 0]OpenWeatherMap API 서버에 JSON Request Data를 보낸다.
AT+SSEND=0,,,72 [0,,,72] (여기에서 위에 설명된 72 Byte를 전송하면 된다.) [OK]그럼, OpenWeatherMap API 서버에서 아래와 같은 JSON Reply를 보내온다.
{0,128.199.164.95,80,857}HTTP/1.1 200 OK Server: nginx Date: Wed, 06 Aug 2014 00:06:49 GMT Content-Type: application/json; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive X-Source: redis Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST 221 {"coord":{"lon":126.98,"lat":37.57},"sys":{"type":3,"id":8519,"message":0.033,"country":"KR","sunrise":1407184771,"sunset":1407234998},"weather":[{"id":721,"main":"Haze","description":"haze","icon":"50n"},{"id":500,"main":"Rain","description":"light rain","icon":"10n"},{"id":701,"main":"Mist","description":"mist","icon":"50n"}],"base":"cmc stations","main":{"temp":297.26,"pressure":1005,"humidity":83,"temp_min":295.15,"temp_max":298.15},"wind":{"speed":1,"deg":140},"clouds":{"all":40},"dt":1407277800,"id":1835848,"name":"Seoul","cod":200} 0수신이 완료되고 Connection이 남아 있다면, OpenWeatherMap API 서버와의 연결을 종료한다.
AT+SMGMT=ALL [DISCONNECT 0] [OK]자, 이제 위에서 받은 JSON 데이터를 분석하여 원하는 날씨 데이터(서울의 온도, 습도, 바람 등)를 사용하면 된다.
아래에는 XML로 데이터를 받을 경우의 예제인데, 근본적으로 WizFi250의 운용 형태는 JSON과 비슷하다.
AT+SCON=O,TCN,128.199.164.95,80,,0 [OK] [CONNECT 0] AT+SSEND=0,,,81 [0,,,81] (여기에서 위에 설명된 81 Byte를 전송한다.) [OK] {0,128.199.164.95,80,969}HTTP/1.1 200 OK Server: nginx Date: Tue, 05 Aug 2014 23:59:54 GMT Content-Type: text/xml; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive X-Source: back Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST 29a0 AT+SMGMT=ALL [DISCONNECT 0] [OK] KR
'WiFi module' 카테고리의 다른 글
GCM(Google Cloud Messaging for Android) with WizFi250 (0) | 2014.11.14 |
---|---|
WizFi250 F/W Manual Upgrade (0) | 2014.11.14 |
AT Command Host Source Sample (0) | 2014.11.14 |
Xively Demo with WizFi250 (0) | 2014.11.14 |
WizFi250 DNS Query & TCP Client Connection (0) | 2014.11.14 |