요즘 같은 시대에 대기질 정보는 정말 중요합니다. 저 같은 경우만 해도 아침에 날씨와 함께 미세먼지 수치를 항상 확인하거든요. 미세먼지 농도, 초미세먼지 상태, 오존, 일산화탄소 수치까지 우리 건강과 직결되니까요. 특히 스마트홈 기기나 공기청정기처럼 IoT(사물인터넷) 장치와 연결하면 훨씬 유용하게 쓸 수 있습니다.
오늘은 환경부 대기질 API를 활용해 IoT 기기와 연동하는 방법을 소개하겠습니다. ‘미세미세’ 같은 앱이 어떻게 실시간으로 정보를 가져오고, 우리 생활에 어떻게 반영하는지를 알고 싶다면 이 글을 끝까지 읽어보세요.
환경부 대기질 API란?
환경부에서는 국민 누구나 실시간으로 대기 상태를 확인할 수 있도록 Open API를 제공합니다. 대표적으로 아래와 같은 정보들을 실시간 혹은 일정 간격으로 받아볼 수 있어요.
- 미세먼지(PM10) 및 초미세먼지(PM2.5) 수치
- 오존(O3), 아황산가스(SO2), 일산화탄소(CO), 이산화질소(NO2)
- 통합대기환경지수(CAI)
- 측정소별 실시간 데이터
이 API는 에어코리아와 연결되어 있으며, 공공데이터포털(data.go.kr)에서 신청하여 발급받은 서비스 키(API Key)를 통해 사용합니다.
환경부 API와 IoT 기기 연동 개요
단순히 앱에서 데이터만 확인하는 수준을 넘어, 우리가 가지고 있는 IoT 기기(예: 라즈베리파이, ESP32, 스마트 공기청정기 등)와 연동하면 진짜 ‘똑똑한 환경 제어’가 가능합니다.
예를 들어,
- 미세먼지 수치가 일정 기준 이상일 때 공기청정기를 자동으로 작동
- 오존 농도가 높으면 창문을 자동으로 닫음
- 실내외 공기질 비교 후 환기 타이밍 알림
이런 기능은 환경부 대기질 API와 IoT 기술을 연동해서 구현할 수 있습니다.
IoT 연동을 위한 기본 구조
IoT 연동을 위한 전체 구조는 다음과 같습니다:
- 환경부 API 호출 (JSON/XML 데이터 수신)
- IoT 서버 혹은 클라우드로 전달 (AWS, Azure, 혹은 로컬 서버 사용 가능)
- IoT 디바이스 제어 로직 실행 (IFTTT, MQTT, HTTP 연동 등)
- 디바이스 작동 (LED 경고, 팬 작동, 알림 전송 등)
예를 들어, ESP32 보드에 Wi-Fi 연결을 설정하고 Python(MicroPython 또는 Arduino IDE)으로 API 호출을 자동화하면 실시간으로 외부 대기질을 확인할 수 있어요.
실제 코드 예시 (Python 기준)
import requests
API_KEY = "발급받은_서비스_키"
URL = f"http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty"
params = {
"serviceKey": API_KEY,
"returnType": "json",
"sidoName": "서울",
"numOfRows": 1,
"pageNo": 1
}
response = requests.get(URL, params=params)
data = response.json()
pm10 = data['response']['body']['items'][0]['pm10Value']
if int(pm10) > 80:
print("공기질 나쁨! 창문 닫아주세요.")
고급 활용법: 실시간 자동 제어와 알림 시스템
단순히 대기질 정보를 확인하는 걸 넘어서, 자동 제어 시스템을 만들면 완전히 다른 차원의 활용이 가능해집니다.
예를 들어, 아래 시나리오처럼 설계할 수 있습니다.
시나리오 예시: 자동 공기청정 시스템
- 환경부 API를 일정 간격(예: 5분)으로 호출
- 초미세먼지(PM2.5) 수치가 50 이상이면:
- 공기청정기 자동 작동 (MQTT 신호 전송)
- 사용자 스마트폰으로 푸시 알림 전송
- 창문 제어기(서보모터)로 창문 자동 닫기
이런 시스템은 IoT 플랫폼(Firebase, Blynk, ThingsBoard 등)과 연동해서 만들 수 있습니다.
MQTT와의 연동 예시
IoT 시스템에서 자주 쓰이는 통신 프로토콜인 MQTT를 활용하면, 서버에서 특정 조건에 맞는 신호를 보낼 수 있어요. 아래는 Python으로 환경부 API 호출 후 MQTT 메시지를 보내는 예입니다.
import paho.mqtt.client as mqtt
def publish_alert(message):
client = mqtt.Client()
client.connect("broker.hivemq.com", 1883, 60)
client.publish("home/airquality/alert", message)
client.disconnect()
if int(pm10) > 80:
publish_alert("공기질 나쁨, 창문 닫고 공기청정기 작동하세요!")
라즈베리파이 + 센서 + 환경부 API 연동 구조
실제 구축할 때는 외부 API뿐 아니라, 내부 실내 공기질 센서(CO2, TVOC 등)도 함께 연결해서 다음처럼 작동하게 할 수 있어요:
- 외부 대기질: 환경부 API로 수집
- 실내 공기질: MQ135, DHT22, PMS5003 센서 등으로 실시간 측정
- 판단 로직: 실내외 공기질 비교 → 환기 타이밍 자동 판단
- 동작: 서보모터로 창문 열고 닫기, 가습기 작동, 알림 전송 등
이렇게 하면 단순히 데이터를 보여주는 걸 넘어서 실제로 생활에 도움이 되는 자동화를 구현할 수 있죠.
대기질 API 사용 시 주의사항
환경부 API를 제대로 활용하려면 아래 사항에 유의해야 합니다.
- 일일 호출 횟수 제한: 공공데이터포털에서 발급받은 기본 키는 일일 약 1000회까지 제한
- 지역별 데이터 정확성: 측정소가 없는 지역은 인접 시군구 기준으로 표시될 수 있음
- 데이터 업데이트 주기: 보통 1시간 단위 갱신
자동화 시스템에서는 이 시간 간격을 고려하여 데이터 호출 및 로직 트리거 조건을 설계해야 합니다.
활용 아이디어 요약
활용 분야 | 설명 |
---|---|
공기청정기 자동 제어 | 미세먼지 수치에 따라 자동 작동 |
실시간 알림 시스템 | 모바일 앱 푸시나 문자 전송 |
창문 자동 제어 | 오염 수치 따라 자동 환기 제어 |
날씨+공기 통합 앱 | 위치 기반 대기질+날씨 통합 표시 |
어린이집/학교 알림 | 대기질 나쁨 시 부모에게 실시간 전송 |
왜 환경부 API와 IoT 연동이 중요한가?
단순히 앱에서 정보를 확인하는 것을 넘어서, 환경 데이터를 능동적으로 활용하는 시대입니다. 공기질이 나쁘다고 알기만 하고 아무 행동을 하지 않는다면 소용이 없겠죠.
이제는 API를 통해 자동화된 행동을 유도하고, 건강을 지키는 실질적인 대응이 필요한 때입니다.
환경부 대기질 API와 IoT 연동은 그 핵심에 있습니다. 개발자, 메이커, 일반 사용자 누구든 이 정보를 활용해 더 똑똑한 삶을 설계해볼 수 있어요.