SmartAir는 실시간 공기질 모니터링과 자동 제어를 통해 건강한 실내 환경을 제공하는 스마트 홈 솔루션입니다. IoT 센서와 MQTT 프로토콜을 활용하여 실시간으로 공기질 데이터를 수집하고, 사용자에게 직관적인 대시보드를 제공합니다.
“건강한 실내 환경을 위한 스마트한 선택”
- IoT 센서를 통한 실시간 데이터 수집
- MQTT 프로토콜 기반의 안정적인 데이터 통신
- 동시성 제어를 통한 신뢰성 있는 데이터 처리
- 실시간 공기질 지수 시각화
- 시간대별 공기질 추이 분석
- 예측 공기질 시각화
- 예측값과 실측값 비교와 시간대별 가중치를 통한 오차 감지
- Firebase Cloud Messaging 기반 실시간 푸시 알림
- LG ThinQ API 연동 (OAuth2 + PAT 기반 디바이스 제어)
- 실내 공기 상태에 따라 공기청정기, 에어컨 제어
- Framework: Spring Boot 3.4.3
- Language: Java 17
- Database: MySQL (Amazon RDS)
- Message Broker: MQTT (Mosquitto)
- Infra: AWS EC2, S3, Route53, ALB, CodeDeploy
- Build Tool: Gradle
- Spring Data JPA, Security + JWT + OAuth2
- Firebase Cloud Messaging (FCM)
- LG ThinQ API (AES 암호화 기반 통신)
- Lombok
- Swagger, Gradle, JUnit5
-
Developer & GitHub Actions
개발자는 GitHub에 코드를 푸시하고, GitHub Actions를 통해 CI/CD가 자동으로 실행됩니다. -
AWS CodeDeploy & EC2
빌드된 애플리케이션은 AWS CodeDeploy를 통해 EC2 인스턴스에 자동 배포됩니다. -
ALB & Route53
클라이언트의 요청은 Route53(도메인)과 ALB(Application Load Balancer)를 거쳐 EC2로 전달됩니다. -
Spring Boot & MQTT
EC2 내부에서 Spring Boot 백엔드와 MQTT 브로커가 함께 동작하며, IoT 센서 데이터와 클라이언트 요청을 처리합니다. -
Amazon RDS
모든 서비스 데이터는 Amazon RDS(MySQL)에 저장됩니다. -
외부 API 연동
Firebase, LG ThinQ 등 외부 서비스와 연동하여 다양한 스마트홈 기능을 제공합니다. -
S3 & Endpoint Gateway
파일 업로드/다운로드 등은 Endpoint Gateway를 통해 S3에 안전하게 저장됩니다.
-
데이터 수집
- IoT 센서에서 MQTT를 통해 실시간 데이터 전송
- 동시성 제어를 통한 안정적인 데이터 처리
-
데이터 처리
- 실시간 공기질 지수 계산
- 사용자 설정에 따른 알림 처리
- 자동 제어 로직 실행
-
데이터 저장
- MySQL 데이터베이스에 효율적으로 저장
- 인덱싱을 통한 빠른 시간 기반 데이터 조회
- 실시간 데이터 처리 및 분석
- Java 17 이상
- MySQL 8.0 이상
- MQTT Broker (Mosquitto)
# 프로젝트 클론
git clone https://github.com/your-username/SmartAir.git
# 프로젝트 디렉토리로 이동
cd SmartAir
# 의존성 설치 및 빌드
./gradlew build
# 애플리케이션 실행
./gradlew bootRun- Swagger UI:
http://localhost:8080/swagger-ui.html
