온도 및 습도 변화 패턴을 시각적으로 확인 가능
환경 조건에 따른 액추에이터 자동 제어 가능성 확인
SSE 기반 실시간 대시보드를 통해 센서 데이터 변화 반영
임계값 초과 시 실시간 팝업 알림 및 센서바 그래프의 UI, 액추에이터 상태 표시 정상 동작 확인
SSE 미연결 상황에서도 Polling 방식으로 알림 수신 가능함을 검증
NOVA 영상.mp4
로그인 기능.mp4
마이페이지 조회 및 정보 수정.mp4
회원 노바And팜 조회 완성본.mp4
팜 신규생성.mp4
프리셋 자동변경.mp4
액추에이터 확인 및 팜별 대시보드 상세보기.mp4
팜 삭제.mp4
타임랩스생성.mp4
주문결제 및 관리자 대시보드.mp4
실물 모형
목표 : IoT 센서와 액추에이터를 활용하여 농작물 재배 환경(온도, 습도, 조도 등)을 실시간으로 모니터링하고,
자동 및 수동 제어가 가능한 웹 브라우저 스마트팜 관리 시스템을 구축한다.
주요 기능 :
라즈베리파이 기반 센서 데이터 수집 (온도, 습도, 조도 등)
MQTT 통신을 활용한 액추에이터 원격 제어 (히터, 팬, 조명 등)
SSE를 활용한 실시간 웹 대시보드 업데이트 및 데이터 시각화
카메라를 활용한 타임랩스 기능
사용자 로그인 및 권한 기반 접근 제어 (JWT 인증)
스마트팜 온라인 마켓 기능
관리자 주문관리 상품관리 기능
프로젝트 기간 : 2025-12-08 ~ 2025-01-09
참여 인원 : 팀장:조수민, 팀원:양준길, 팀원:장세종, 팀원:최우영, 팀원:안창석 (총 5명)
외부 API : 다음 API(주소), SOLAPI(인증), 포트원 API(결제)
작업 항목
시작 날짜
종료 날짜
기간(일)
프로젝트 정의 및 요구사항 정리
2025-12-01
2025-12-07
7
Reference 조사
2025-12-08
2025-12-08
1
아이디어 도출 및 요구사항 작성
2025-12-09
2025-12-09
1
프로젝트 설계서 도출
2025-12-10
2025-12-10
1
개발 및 검토
2025-12-09
2025-12-14
6
프로젝트 발표
2025-12-16
2025-12-16
1
IoT 구조물 조립 및 센서 테스트
2025-12-17
2026-01-01
14
Web / Backend 기본 기능 구현
2025-12-07
2026-01-01
21
MQTT 연동 및 장치 제어
2025-12-10
2025-12-23
14
통합 테스트 및 시연 준비
2025-12-26
2026-01-09
14
최종 시연
2026-01-13
2026-01-13
1
- 온도, 습도, 조도, 토양수분, Co2, 초음파(물통 수위), 카메라 센서 데이터 항목 정의
- 액추에이터 제어 데이터 정의 (히터, 팬, LED, 서보모터(블라인드), 가습기, 워터펌프)
- 라즈베리파이, 센서, 서버 간 통신 구조 설계
- MQTT 기반 데이터 흐름 정의
- 센서 데이터 실시간 수집 구현
- 데이터 저장 형식 및 전처리 로직 설계
- 라즈베리파이 카메라를 통해 주기적으로 프리셋 단계별 팜의 이미지 촬영
- 수집 데이터 정확성 검증
- 데이터베이스 저장 및 관리
- 회원가입 및 ID/PW 찾기 기능 구현
- 아이디 중복 확인, 주소 검색, 이메일 인증 및 전화번호 SMS 인증 API 연동 구현
- 비밀번호 복잡도 정책 및 입력 유효성 검증 로직 구현
- 사용자 기본 정보 조회 및 수정 기능 구현
- 비밀번호 변경 및 Nova 기기 등록 및 삭제 기능 구현
- 기기별·팜별 타임랩스 제작 현황 확인
- 영상 재생 및 다운로드 기능 구현
- 사용자가 보유한 Nova 기기의 팜(Farm) 정보 조회 기능 구현
- 각 팜별 환경 임계값(온도, 습도 등) 사용자 설정 기능 구현
- 팜(Farm) 생성 및 삭제 기능 구현
- 팜(Farm)별 작물 성장 과정을 확인할 수 있는 타임랩스 기능 구현
- 프리셋 단계별 영상 재생 및 다운로드 기능 구현
- 팜(Farm) 환경 데이터 시각화 대시보드 구현
- 기기별·팜별 알림 조회 및 읽음 처리 기능 구현
- MQTT 기반 실시간 환경 데이터 시각화 구현
- 마켓 상품 및 주문 화면 구현
- 주문 내역 확인 및 취소 구현
- 매출 상품목록 통계 시각화 구현
- 주문제어 상품추가 재고추가 구현
- 웹 기반 액추에이터 원격 제어 테스트
- 스마트팜 + 마켓 기능 통합 검증
스마트팜 센서 데이터를 실시간으로 수집할 수 있어야 한다.
수집된 데이터는 실시간으로 웹 대시보드에서 시각적으로 확인 가능해야 한다.
사용자는 웹을 통해 히터, 팬, 조명 등을 원격으로 제어할 수 있어야 한다.
온도/습도/조도 등의 센서값이 임계값을 초과하거나 미만일 경우 알림을 전송해야 한다.
알림은 SSE 기반 실시간 전송
JWT 기반 로그인 인증 및 권한 관리 기능을 제공해야 한다.
프리셋 단계별 팜 사진 촬영 및 저장해야 한다.
저장된 사진을 바탕으로 타임랩스 제작 기능을 제공해야 한다.
성능: 센서 데이터 수집 및 전송 지연은 5초 이내
확장성: 센서 및 액추에이터 추가가 용이한 구조
보안성: 인증되지 않은 사용자의 접근 차단
설계 개요 :
데이터 수집: 라즈베리파이 센서
데이터 전송: MQTT 프로토콜
데이터 저장: MySQL
분석 및 시각화: React 기반 웹 대시보드
하드웨어: 라즈베리파이, Sensor 5종류, Actuator 5종류
백엔드: Java Spring Boot, MySQL, REST API, MQTT
프론트엔드: React, Axios
보안: Spring Security, JWT
JWT(JSON Web Token) 기반 사용자 인증 방식을 적용하여 로그인 상태를 관리
인증 성공 시 Access Token 발급 후 클라이언트에 저장하여 API 요청 시 인증 정보로 사용
인증되지 않은 사용자는 보호된 페이지 접근 제한
신규 사용자를 위한 회원가입 기능 제공
회원가입 시 입력 정보:
아이디(ID), 비밀번호, 이름, 전화번호, 주소, 이메일등등
아이디 중복 여부를 서버와 통신하여 사전 검증
비밀번호 설정 시 보안 강화를 위한 복잡도 정책 적용
최소 길이 및 문자 조합 조건 검증
비밀번호 확인 입력을 통한 일치 여부 검증
주소 입력 편의를 위해 외부 주소 검색 API 연동
회원가입 완료 시 서버에 사용자 정보 저장
사용자가 계정 정보를 분실한 경우를 대비한 ID 및 비밀번호 찾기 기능 제공
ID 찾기:
이름 + 이메일 또는 이름 + 전화번호 정보를 통한 사용자 식별
비밀번호 찾기:
이메일 인증 또는 SMS 인증을 통한 사용자 본인 확인
인증 완료 후 비밀번호 재설정 가능
이메일 인증 API를 연동하여 회원가입 및 비밀번호 재설정 시 사용자 확인
SMS 인증 API를 연동하여 전화번호 기반 본인 인증 처리
인증 코드 유효 시간 제한 및 재요청 처리 로직 구현
모든 입력 항목에 대해 클라이언트·서버 단 유효성 검증 적용
잘못된 입력 값에 대해 즉각적인 사용자 피드백 제공
비밀번호 및 민감 정보는 암호화 처리 후 서버 저장
프로필 페이지를 통해 사용자의 기본 정보를 조회하고 정보 수정
조회 기능
사용자 아이디, 이름, 전화번호, 주소, 이메일 정보 조회
등록된 Nova 기기 목록 확인
수정 기능
비밀번호, 이름, 전화번호, 주소, 이메일 수정
변경 사항 저장 시 즉시 서버 반영
사용자의 계정에 Nova 기기를 등록 및 삭제
기기 등록
기기 삭제
등록된 기기 목록에서 선택 후 삭제
기기 삭제 시 관련 Farm 및 타임랩스 데이터 삭제
3.3.3. 기기별·Farm별 타임랩스 제작 현황 조회
등록된 Nova 기기 및 Farm 단위로 타임랩스 제작 상태 확인
타임랩스 목록 제공
전체 영상 및 단계별(step) 영상 목록 조회
Farm별, 단계별 타임랩스 구분 표시
제작 상태 표시
제작 예정(PENDING), 제작 중(PROCESSING), 제작 완료(COMPLETED)
영상 정보 확인
영상 길이, FPS, 해상도, 단계 정보 (전체 / 단계 번호)
제작이 완료된 타임랩스 영상 재생
제작 완료 상태(COMPLETED) 영상에 한해 재생 버튼 활성화
전체 영상 및 단계별 영상 개별 재생 지원
생성된 타임랩스 영상을 로컬 환경에 저장
영상 이름은 타임랩스 이름 기반으로 자동 지정
3.4.1. 팜(Farm)별 타임랩스 생성 구조
각 Farm은 작물 성장 단계를 기준으로 여러 개의 타임랩스 단계(step)로 구성
Farm 생성 시 타임랩스 프리셋 정보 로드
프리셋에 따라 단계별 촬영 주기, 촬영 기간 설정
각 단계 종료 시 자동으로 단계별 타임랩스 영상 생성
3.4.2. 단계별(step) 타임랩스 영상 조회
모달창에서는 프리셋 단계별 타임랩스 영상을 개별적으로 확인
단계별 영상 목록 제공
단계 번호 및 단계명 표시
촬영 기간 정보 표시
단계별 제작 상태 표시
제작 예정(PENDING), 제작 중(PROCESSING), 제작 완료(COMPLETED)
제작 완료 상태의 영상만 재생 및 다운로드 가능
모든 단계의 타임랩스 제작이 완료되면 전체 성장 과정을 하나의 영상으로 병합하여 제공
단계별 타임랩스 영상 자동 병합
병합된 전체 타임랩스 영상 별도 표시
단계 영상과 동일하게 재생 및 다운로드 기능 제공
React 기반 웹 대시보드를 통해 실시간 센서 데이터 시각화
주요 구성 요소:
온도 / 습도 / 조도 / 토양수분 / CO2 실시간 센서바 그래프
센서별 평균, 최대, 최소값 트렌드데이터 Line Chart
액추에이터 제어 상태 표시 (ex. ON / OFF)
초음파 센서를 활용한 물통 잔량 표시
재배 프리셋 정보 제공
실시간 팝업 알림 및 최근 10개 데이터 제공 (오늘 / 이전 기준)
센서 데이터가 설정된 임계값을 벗어날 경우 알림 이벤트 발생
실시간 알림을 위해 SSE(Server-Sent Events) 기반 단방향 스트리밍 구조 적용
알림 처리 흐름:
센서 데이터 수신
임계값 비교 여부 판단
알림 이벤트 생성
SSE 연결된 클라이언트에 전송
WebSocket 대비 구현 복잡도가 낮고 서버 부하가 적은 SSE 방식을 채택
네트워크 불안정 상황을 고려하여 Polling을 보조 수단으로 사용
SSE 연결 실패 또는 백그라운드 상태의 클라이언트는 Polling API를 통해 알림 상태를 주기적으로 조회
동일 센서 이벤트에 대해 중복 알림이 발생하지 않도록 상태 기반 알림 발생 로직 적용
임계값 초과 상태가 유지되는 동안 추가 알림을 제한하고,
정상 범위로 복귀한 이후 재초과 시에만 알림 재발생
상품 목록 조회: 마켓에 등록된 상품을 확인할 수 있습니다.
상품 상세보기: 각 상품의 상세 정보 확인 가능
장바구니 기능: 원하는 상품을 장바구니에 담고 수량 조정 가능
주문 기능: 선택한 상품을 결제하여 주문 처리
주문 내역 확인 및 취소: 사용자가 이전 주문 내역 확인 및 취소 가능
상품 총 개수 확인,상품 카테고리별 개수 확인, 총 매출 , 총 주문 수, 주문 진행 상황 시각화
상품 추가: 새 상품 등록 상품 수정: 기존 상품 정보 수정 상품 삭제: 불필요한 상품 제거
주문 상태 변경: 결제 완료, 배송 준비, 배송 중 등 송장 번호 등록: 배송 정보 입력 배송 완료 처리: 주문 완료 상태 반영
기술 스택
ERD
REST API (Swagger)
프로젝트에서 효과적으로 수행된 작업 또는 성공 사례
라즈베리파이와 센서를 연동하여 환경 데이터 수집을 자동화하고, MQTT 기반 실시간 전송을 안정적으로 구현함
웹 대시보드를 통해 센서 데이터와 액추에이터 상태를 직관적으로 확인할 수 있도록 시각화함
스마트팜 환경 제어 기능과 마켓 기능을 연계하여 하나의 서비스 흐름으로 통합 구현함
개발 과정에서 팀원 간 역할을 분담하고, 이슈 발생 시 지속적인 소통을 통해 문제를 해결함
타임랩스 촬영 기능을 추가하여 작물 성장 과정을 시각적으로 기록할 수 있도록 구현함
2. 개선이 필요한 점 (What could be improved)
프로젝트 과정에서 비효율적이었거나 개선이 필요한 부분
프로젝트 초기에 API 명세와 데이터 구조가 명확히 정리되지 않아, 개발 중간에 수정이 반복적으로 발생함
센서 및 액추에이터와 같은 물리적 하드웨어 구현 과정에서 예상보다 많은 시간이 소요되었으며, 하드웨어 이슈로 인한 테스트 지연이 발생함
타임랩스 이미지 저장 및 관리 방식에 대한 사전 설계가 부족하여, 구현 과정에서 저장 구조를 재조정해야 했음
프로젝트 초반 설계 단계에서 경험 부족으로 인해 일정 관리가 다소 어려웠으며, 개발 진행 중 일정 조정이 필요했음
3. 배운 점 (Lessons learned)
이번 프로젝트를 통해 학습한 내용
IoT 시스템은 소프트웨어 설계뿐만 아니라 하드웨어 환경까지 함께 고려해야 함을 체감함
팀원들과의 지속적인 소통을 통해 요구사항을 단계적으로 정리하고, 의견을 하나로 통합하는 과정의 중요성을 배움
MQTT, JWT 인증, 센서 제어 등 다양한 기술을 하나의 서비스로 통합하는 경험을 통해 전체 시스템 흐름에 대한 이해도가 향상됨
실제 장비를 활용한 프로젝트에서는 충분한 테스트 시간 확보가 필수적이라는 점을 인식하게 됨
향후 프로젝트에 적용할 개선 방안 또는 실행 계획
프로젝트 초기 단계에서 요구사항 정의와 API 설계에 더 많은 시간을 할당하여 개발 과정의 수정 비용을 줄일 계획
하드웨어 테스트를 위한 시뮬레이션 환경 및 테스트 시나리오를 사전에 준비하여, 물리적 장비로 인한 시행착오를 최소화할 예정
타임랩스 및 환경 데이터를 활용한 자동 제어 로직 고도화 및 데이터 분석 기능을 추가할 계획
성과 :
IoT 센서를 활용한 스마트팜 환경 데이터 실시간 수집 및 자동화 시스템 구현
웹 대시보드를 통한 환경 데이터 시각화 및 액추에이터 원격 제어 기능 구현
스마트팜 생산 농산물을 판매할 수 있는 마켓 기능 개발 및 연동 완료
작물 성장 과정을 기록하는 타임랩스 기능 구현을 통해 생산 과정의 시각적 검증 가능
JWT 기반 사용자 인증 및 권한 관리 기능 적용으로 보안성 강화