프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

OpenAPI를 사용하여 WiFi로 대기정보(미세먼지,초미세먼지) 받아오기(1)

2017-07-20 10:33:39

개요

 

안녕하세요~!

 

이번에 소개할 프로젝트는 이전글 Klant님이 올린것과 마찬가지로 대기정보를 측정하는 프로젝트입니다.

다만 다른점이라면 저는 좀 더 스마트하게 WiFi통신으로 국내 대기 측정소에서 측정한 값을 API를 사용해서 받아와 출력합니다 ;)

 

API에서 가져오는 값은 대기 측정소에서 측정한 값이기 때문에

미세먼지, 초미세먼지, 아황산가스농도, 오존농도, 일산화탄소 농도 등 실시간으로 정말 많은 정보를 읽어올 수 있습니다.

 

 

역시나 기본적인 API는 버스정보와 마찬가지로 공공데이터포털(https://www.data.go.kr/)에서 제공하고 있으니

이번 프로젝트 뿐만 아니라 차후에 다양한 API를 사용하시기 위해서는 회원가입은 해주시는 것이 좋습니다!

 

미세먼지에 대한 이슈가 큰 요즘같은 때에 아두이노를 사용하여 미세먼지 측정기를 만들어보시는것이 어떨까요?

 

 

 

※ 사실 예전부터 해보고자 했었던 프로젝트였지만 예전 아두이노 IDE에서는 한글을 지원하지 않았습니다.

그렇기 때문에 대기를 측정할 도시이름을 작성할 수 없어 이 API를 사용할 수 없었지만

최신버전의 아두이노IDE에서는 한글을 지원하기 때문에

'강남구', '서초구', '관악구' 등과 같이 지역이름을 한글로 작성해도 정상적으로 API를 사용하여 데이터를 받아올 수 있습니다.

 

이 프로젝트에서 사용한 아두이노IDE의 버전은 1.8.2입니다.

 

 

 

 

필요한 부품 목록

 

 

※ 간단하게 WiFi보드를 사용하여 대기 중 미세먼지 및 화학 물질 데이터를 가져오는 방법에 대해 알아봅니다.

 

NO    

부품명      

수량     

상세설명

1

OrangeBoard WiFi

1

WizFi250라이브러리 사용

 

부품명 OrangeBoard WiFi
파트

 

 

 

 

 

미세먼지 기준 정보

 

 

보통 미세먼지라 함은 일반적으로 10um(PM10)크기의 미세먼지를 말합니다.

아래 표를 보면 10um이 얼마나 작은 수치인지 알 수 있습니다.

 

 

<출처 : SK이노베이션>

 

 

10um의 미세먼지도 중요하지만 사실 더 중요한 건 그보다 더 작은 2.5um(PM2.5)의 초미세먼지입니다.

PM2.5 이하의 초 미세먼지의 경우, 인체 내 기관지 및 폐 깊숙한 곳까지 침투해 호흡기뿐만 아니라, 심혈관 질환 및 피부질환 등 각종 질병을 유발하는 원인이 될 수도 있다고 합니다

 

 

 

그렇기 때문에 우리나라의 환경부에서는 미세먼지에 대한 기준을 만들어 아래와 같이 공고하고 있습니다.

우리나라의 미세먼지(PM10)과 초미세먼지(PM2.5)의 기준은 아래와 같습니다.

 

 

 

 

 

미세먼지 나쁨단계에서는 장시간 외출이나 무리한 실외활동을 자제해야하고, 매우 나쁨수준에서는 외부활동이 제한됩니다.

 

우리나라의 미세먼지에 대한 기준은 WHO기준에 비하면 낮은편이기 때문에 개인이 좀 더 각별히 신경써야 합니다.

요즘에는 뉴스나 스마트폰, 인터넷포탈사이트에서 쉽게 미세먼지에 대한 정보를 얻을 수 있기 때문에 편리합니다.

 

 

 

 

 

 

OPEN API사용하기

 

 

버스정보시스템과 마찬가지로 공공데이터포탈(https://www.data.go.kr/)에서 API를 받아옵니다.

 

 

 

 

 

 

 

 

미세먼지로 검색하면 아래와 같이 대기오염정보 조회 서비스를 찾을 수 있습니다.

 

 

 

 

 

 

API를 사용하기 위한 서비스키를 받기 위해서는 활용신청이 필요합니다.

 

 

 

 

 

 

 

상세정보를 클릭하면 Open API 활용가이드를 볼 수 있습니다.

 

 

 

 

 

 

 

 

가이드를 보면 다양한 API 명세들이 있지만 이번 프로젝트에서는 '측정소별 실시간 측정정보 조회 오퍼레이션 명세'를 사용해보겠습니다.

 

 

 

 

 

 

예제가 존재하기 때문에 먼저 예제 REST(URI)에 신청해서 받은 서비스키를 넣어서 웹브라우저에서 실행해봅니다.

이 프로젝트에서는 대기 측정소를 종로구가 아닌 서초구로 지정해서 사용해보도록 하겠습니다.

 

 

 

 

 

 

 

 

발급받은 서비스키로 웹에서 정상적으로 데이터를 받아오는 것을 확인했기 때문에

위에 예제를 아두이노에서 적용하여 WiFi로 데이터를 받아올 수 있습니다.

 

 

 

 

 

 

 

 

 

소프트웨어 coding

 

 

 

 

 

 

 

코드내에 있는 APIKEY와 CITY(대기측정소)는 아래와 같이 발급받은 API key와 측정하고자 하는 지역으로 작성해주시면 됩니다.

 

VERSION은 1.3으로 default로 지정했지만 가이드를 참고하여 아래와 같이 작성해주시면 됩니다.

 

버전(ver) 항목설명

- 버전을 포함하지 않고 호출할 경우 : PM2.5 데이터가 포함되지 않은 원래 오퍼레이션 결과 표출.

- 버전 1.0을 호출할 경우 : PM2.5 데이터가 포함된 결과 표출.

- 버전 1.1을 호출할 경우 : PM10, PM2.5 24시간 예측이동 평균데이터가 포함된 결과 표출.

- 버전 1.2을 호출할 경우 : 측정망 정보 데이터가 포함된 결과 표출.

- 버전 1.3을 호출할 경우 : PM10, PM2.5 1시간 등급 자료가 포함된 결과 표출

 

 

 

 

 

postingInterval의 값을 수정하면 데이터를 수신하는 시간을 변경할 수 있습니다.

 

코드 상에는 기본값으로 60000(60초 = 1분)을 지정했으며 데이터 요청 빈도를 수정하고 싶다면 수정하여 사용하시면 됩니다.

다만 일일 데이터 요청 횟수가 있으니 너무 빠른 요청은 지양하시는게 좋습니다.

 

 

 

 

요청 시 응답데이터에 관한 자료는 활용가이드에 자세히 명시되어 있으니 사용 시 가이드를 꼭 참조하시기 바랍니다!

 

 

 

결과 화면

 

 

아래 화면을 보면 데이터 응답 값과 포털사이트에서 검색한 미세먼지(PM10)와 초미세먼지(PM2.5)의 측정값이 같음을 볼 수 있습니다.

 

 

PM10의 측정값 57
PM2.5의 측정값 40
PM10의 등급(Grade) 2(보통)
PM2.5의 등급(Grade) 2(보통)

 

 

 

 

 

 

서초구에서 PM10 검색수치(7월 21일 AM09:00기준)

 

 

 

 

서초구에서 PM2.5 검색수치(7월 21일 AM09:00기준)

 

 

 

 

위 코드에 파싱코드를 추가한다면 측정값만 추출하여 나만의 미세먼지 농도 측정기를 만들어 볼 수 있습니다.

 

수박쨈

아두이노,WiFi,API,미세먼지,공기,파싱,오렌지보드,코코아팹,kocoafab
profile

Lee 2017-11-11 01:15:38

Open API 를 활용하는 방법까지... 감사합니다. 꾸벅

profile

유광우 2017-11-18 23:11:14

좋은 정보 감사합니다!

profile

노잼훈 2017-11-19 14:00:44

업로드까지 되는데 시리얼 모니터에 출력이 안되는데 어떻게 해야하죠?
그리고 꼭 오렌지보드 써야하나요? 전 우노보드에 RN171 TCP/IP 쓰는 WIFI ver2.0 쓰고있습니다.