[매드] 아두이노 강좌 - 37. openweathermap api 및 소개

안녕하세요~~~ ^^ 매드 입니다.

이번에 소개할 내용은 OpenweatherMAP Api 입니다!!

사실.. 유투브에 방송올린건 거의 1달은 넘은 것 같네요....OTL

그래서!! 기억도 잘 안나지만 간단히 한번 소개해 보겠습니다.


37-1. Api(Application Program Interface)

<OpenWeatherMap 로고(출처:구글사진)>

우선 Api에 대해서 간략히 말씀드리면(사실 네이버에이 이렇게 써있음)
프로그램 또는 애플리케이션이 운영 체제에 어떤 처리를 위해서 호출 할 수 있는 서브루틴 또는 함수의 집합이다. 메이커가 표준화한 API를 공개하면 주변 기기와의 인터페이스에 특히 주의하지 않아도 프로그램을 개발할 수 있고 애플리케이션 프로그램의 개발이 용이해진다.

라고 되어있네요... 쿨럭쿨럭... 먼가 어려운 용어들이 많은데요.

제가 한번더 요약하면 API는 기존에 반복적으로 사용하거나 새롭게 사용하는 어떤 서비스를 사용자가 손쉽게 사용할 수 있도록 미리 만들어 놓은 함수 라고 생각하시면 될 것 같습니다.

이 API 덕분에 지금 기술의 많은 진입 장벽이 무너졌다고 해도 과언이 아니죠. 이 API를 보통은 돈주고 사야하지만 요즘에는 OpenAPI라고 해서 공개되어 무료로 배포되는 것도 많이 있습니다. 대박이죠? 이를 하드웨어에 적용한게 아두이노, 라즈베리파이, Mbed 같은 것들이라고 보시면 될 것 같네요.

이걸 날씨에 적용해서 날씨데이터를 손쉽게 사용할 수 있도록 api를 만들어 공개한 것이 지금 제가 소개할려는 http://www.openweathermap.org 입니다.

완전 따봉이죠!?


37-2. OpenWeatherMap


<출처:매드캡쳐>

이 openweathermap에 방문하면 여러가지 많은 항목들이 있는데요. 손쉽게 웹에서 날씨를 확인 할 수도 있도록 해놨습니다. 위에 탭에서 API를 클릭하면 우리가 원하는 API에 대한 설명을 볼 수 있죠.

사실 약 1년전? 만해도 이 싸이트에서 api를 무작위로 가져가서 마음대로 사용이 가능했습니다. 그런데 엄청난 외부트레픽으로 인해 날씨 정보를 제공하는 서비스 품질도 떨어지고 서버 불안정까지 초래가 되었지요.(필자가 당시에 써봤는데 날씨데이터를 서버에서 제대로 받아오는게 듬성듬성 이였음)

그래서 특단의 조치를 취한 것이!! 회원가입을 해서 API Key 라는 것을 사용해야되는 것이지요!! ㅎㅎ 이 Key는 회원가입한 개개인이 다 다르므로 공개해서도 안되며 본인만이 이 키를 가지고 사용해야 추후에도 무료로(?) 계속 사용하실 수 있으실 겁니다.

자세한 내용들은 홈페이지를 참조해서 보면 될 것 같네요.


37-3. 사용 방법?

사용 방법은 별거 없습니다. 이건 서버, 클라이언트 통신을 한번이라도 해보신 분이여야만 좀 더 이해가 빠르실 것 같네요. 관련한 내용은 인터넷을 통해서 자료를 찾아보시면 될 것 같고 저는 핵심만 알려드리겠습니다.

서버에서 날씨를 받아오는 명령은

api.openweathermap.org/data/2.5/weather?q=London

이런 식으로 서버로 날려주면 런던의 날씨 데이터가 날라오게되는 겁니다.

홈페이지에는 이렇게 나와있네요.

API call:
api.openweathermap.org/data/2.5/weather?q={city name}
api.openweathermap.org/data/2.5/weather?q={city name},{country code}

간단하죠? 그럼 아까말한 api key는 어디다가...??

API call:
http://api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID={APIKEY}

요렇게 나와있네요! ㅎㅎ

저 뒤에 {APIKEY} 대신에 로그인 후 발급받은 api key를 넣으시면 됩니다.
아래 예를 보면 11111111 이라고 적힌 부분이 되겠죠.

Example of API call:
api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=1111111111

이렇게 해서 서버로 날려주면 여러분은 아래와 같은 코드들을 볼 수 있는데요.

{"coord":
{"lon":145.77,"lat":-16.92},
"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],
"base":"cmc stations",
"main":{"temp":293.25,"pressure":1019,"humidity":83,"temp_min":289.82,"temp_max":295.37},
"wind":{"speed":5.1,"deg":150},
"clouds":{"all":75},
"rain":{"3h":3},
"dt":1435658272,
"sys":{"type":1,"id":8166,"message":0.0166,"country":"AU","sunrise":1435610796,"sunset":1435650870},
"id":2172797,
"name":"Cairns",
"cod":200}

여기서 원하는 부분만 파싱해서 데이터를 사용하시면 됩니다.
파싱이라는게 새로 또 나오는데... ㅡㅠ 이것도 나중에 시간나면 다시 설명드리고 자세한건 구글신께... 쿨럭쿨럭...

데이터에 대한 내용은 
링크를 쭉 읽어보시면 상세히 나와있습니다.

아마 여러분 모두 당연히 하실 수 있으시리라 믿습니다!! >.< 모르시는 부분은 리플 주세요!

글로쓰기는 했지만 영상으로 보고...싶다면 유투브로!


댓글 쓰기

1 댓글

  1. 영상 잘봤습니다!! 관련해서 프로젝트 준비 중인데 혹시 ddongh1122@naver.com으로 코드를 메일로 보내 주실 수 있을까요??

    답글삭제