Skip to content

wnsrlf0721/TeamProject2-smartFarm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

309 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

가정용 스마트팜 올인원 플랫폼 NOVA

  • 온도 및 습도 변화 패턴을 시각적으로 확인 가능
  • 환경 조건에 따른 액추에이터 자동 제어 가능성 확인
  • SSE 기반 실시간 대시보드를 통해 센서 데이터 변화 반영
  • 임계값 초과 시 실시간 팝업 알림 및 센서바 그래프의 UI, 액추에이터 상태 표시 정상 동작 확인
  • SSE 미연결 상황에서도 Polling 방식으로 알림 수신 가능함을 검증

1. 시각 자료

대시보드 스크린샷

NOVA 시연 영상

NOVA 영상.mp4

기능별 시연

로그인 기능

로그인 기능.mp4

마이페이지 기능

마이페이지 조회 및 정보 수정.mp4

식물 관리 기능

회원 노바And팜 조회 완성본.mp4

팜 신규생성.mp4

프리셋 자동변경.mp4

액추에이터 확인 및 팜별 대시보드 상세보기.mp4

팜 삭제.mp4

타임랩스 기능

타임랩스생성.mp4

결제 및 관리자 대시보드기능

주문결제 및 관리자 대시보드.mp4

실물 모형

실물 모형
FarmModel

2. 프로젝트 정의

  • 목표: IoT 센서와 액추에이터를 활용하여 농작물 재배 환경(온도, 습도, 조도 등)을 실시간으로 모니터링하고, 자동 및 수동 제어가 가능한 웹 브라우저 스마트팜 관리 시스템을 구축한다.
  • 주요 기능:
    • 라즈베리파이 기반 센서 데이터 수집 (온도, 습도, 조도 등)
    • MQTT 통신을 활용한 액추에이터 원격 제어 (히터, 팬, 조명 등)
    • SSE를 활용한 실시간 웹 대시보드 업데이트 및 데이터 시각화
    • 카메라를 활용한 타임랩스 기능
    • 사용자 로그인 및 권한 기반 접근 제어 (JWT 인증)
    • 스마트팜 온라인 마켓 기능
    • 관리자 주문관리 상품관리 기능

3. 프로젝트 개요

  • 프로젝트 기간: 2025-12-08 ~ 2025-01-09
  • 참여 인원: 팀장:조수민, 팀원:양준길, 팀원:장세종, 팀원:최우영, 팀원:안창석 (총 5명)
  • 외부 API: 다음 API(주소), SOLAPI(인증), 포트원 API(결제)

4. 프로젝트 일정

작업 항목 시작 날짜 종료 날짜 기간(일)
프로젝트 정의 및 요구사항 정리 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

5. 단계별 작업 내용

1. 데이터 정의 및 요구사항 분석

1.1. 스마트팜 환경 데이터 정의

- 온도, 습도, 조도, 토양수분, Co2, 초음파(물통 수위), 카메라 센서 데이터 항목 정의
- 액추에이터 제어 데이터 정의 (히터, 팬, LED, 서보모터(블라인드), 가습기, 워터펌프)

2. 데이터 수집 및 설계

2.1. 스마트팜 시스템 아키텍처 설계

- 라즈베리파이, 센서, 서버 간 통신 구조 설계
- MQTT 기반 데이터 흐름 정의

2.2. 센서 데이터 수집 및 전처리

- 센서 데이터 실시간 수집 구현
- 데이터 저장 형식 및 전처리 로직 설계

2.3. 타임랩스 촬영 데이터 수집 설계

- 라즈베리파이 카메라를 통해 주기적으로 프리셋 단계별 팜의 이미지 촬영

3. 분석, 시각화 및 제어

3.1. 환경 데이터 검증 및 저장

- 수집 데이터 정확성 검증
- 데이터베이스 저장 및 관리

3.2. 로그인 페이지

- 회원가입 및 ID/PW 찾기 기능 구현
- 아이디 중복 확인, 주소 검색, 이메일 인증 및 전화번호 SMS 인증 API 연동 구현
- 비밀번호 복잡도 정책 및 입력 유효성 검증 로직 구현

3.3. 프로필 보기 및 타입랩스 페이지

- 사용자 기본 정보 조회 및 수정 기능 구현
- 비밀번호 변경 및 Nova 기기 등록 및 삭제 기능 구현
- 기기별·팜별 타임랩스 제작 현황 확인
- 영상 재생 및 다운로드 기능 구현

3.4. 내 식물관리 페이지

- 사용자가 보유한 Nova 기기의 팜(Farm) 정보 조회 기능 구현
- 각 팜별 환경 임계값(온도, 습도 등) 사용자 설정 기능 구현
- 팜(Farm) 생성 및 삭제 기능 구현

3.4. 타임랩스 생성 및 조회 모달창

- 팜(Farm)별 작물 성장 과정을 확인할 수 있는 타임랩스 기능 구현
- 프리셋 단계별 영상 재생 및 다운로드 기능 구현

3.5. 웹 대시보드 및 알림 페이지

- 팜(Farm) 환경 데이터 시각화 대시보드 구현
- 기기별·팜별 알림 조회 및 읽음 처리 기능 구현
- MQTT 기반 실시간 환경 데이터 시각화 구현

3.6. 마켓 페이지 및 관리자 대시보드

- 마켓 상품 및 주문 화면 구현
- 주문 내역 확인 및 취소 구현
- 매출 상품목록 통계 시각화 구현
- 주문제어 상품추가 재고추가 구현

3.7. 액추에이터 제어 및 통합 테스트

- 웹 기반 액추에이터 원격 제어 테스트
- 스마트팜 + 마켓 기능 통합 검증  

6. 요구사항 정의서

1. 기능 요구사항

  • 스마트팜 센서 데이터를 실시간으로 수집할 수 있어야 한다.
  • 수집된 데이터는 실시간으로 웹 대시보드에서 시각적으로 확인 가능해야 한다.
  • 사용자는 웹을 통해 히터, 팬, 조명 등을 원격으로 제어할 수 있어야 한다.
  • 온도/습도/조도 등의 센서값이 임계값을 초과하거나 미만일 경우 알림을 전송해야 한다.
  • 알림은 SSE 기반 실시간 전송
  • JWT 기반 로그인 인증 및 권한 관리 기능을 제공해야 한다.
  • 프리셋 단계별 팜 사진 촬영 및 저장해야 한다.
  • 저장된 사진을 바탕으로 타임랩스 제작 기능을 제공해야 한다.

2. 비기능 요구사항

  • 성능: 센서 데이터 수집 및 전송 지연은 5초 이내
  • 확장성: 센서 및 액추에이터 추가가 용이한 구조
  • 보안성: 인증되지 않은 사용자의 접근 차단

7. 프로젝트 설계서

1. 데이터 아키텍처

  • 설계 개요:
  • 데이터 수집: 라즈베리파이 센서
  • 데이터 전송: MQTT 프로토콜
  • 데이터 저장: MySQL
  • 분석 및 시각화: React 기반 웹 대시보드

2. 기술 스택

  • 하드웨어: 라즈베리파이, Sensor 5종류, Actuator 5종류
  • 백엔드: Java Spring Boot, MySQL, REST API, MQTT
  • 프론트엔드: React, Axios
  • 보안: Spring Security, JWT

3. 상세 기능

3.1. 로그인 페이지

3.1.1. 사용자 인증 및 계정 접근 구조

  • JWT(JSON Web Token) 기반 사용자 인증 방식을 적용하여 로그인 상태를 관리
  • 인증 성공 시 Access Token 발급 후 클라이언트에 저장하여 API 요청 시 인증 정보로 사용
  • 인증되지 않은 사용자는 보호된 페이지 접근 제한

3.1.2. 회원가입 기능

  • 신규 사용자를 위한 회원가입 기능 제공
  • 회원가입 시 입력 정보:
    • 아이디(ID), 비밀번호, 이름, 전화번호, 주소, 이메일등등
  • 아이디 중복 여부를 서버와 통신하여 사전 검증
  • 비밀번호 설정 시 보안 강화를 위한 복잡도 정책 적용
    • 최소 길이 및 문자 조합 조건 검증
    • 비밀번호 확인 입력을 통한 일치 여부 검증
  • 주소 입력 편의를 위해 외부 주소 검색 API 연동
  • 회원가입 완료 시 서버에 사용자 정보 저장

3.1.3. ID / 비밀번호 찾기 기능

  • 사용자가 계정 정보를 분실한 경우를 대비한 ID 및 비밀번호 찾기 기능 제공
  • ID 찾기:
    • 이름 + 이메일 또는 이름 + 전화번호 정보를 통한 사용자 식별
  • 비밀번호 찾기:
    • 이메일 인증 또는 SMS 인증을 통한 사용자 본인 확인
    • 인증 완료 후 비밀번호 재설정 가능

3.1.4. 외부 인증 API 연동

  • 이메일 인증 API를 연동하여 회원가입 및 비밀번호 재설정 시 사용자 확인
  • SMS 인증 API를 연동하여 전화번호 기반 본인 인증 처리
  • 인증 코드 유효 시간 제한 및 재요청 처리 로직 구현

3.1.5. 입력 유효성 검증 및 보안 처리

  • 모든 입력 항목에 대해 클라이언트·서버 단 유효성 검증 적용
  • 잘못된 입력 값에 대해 즉각적인 사용자 피드백 제공
  • 비밀번호 및 민감 정보는 암호화 처리 후 서버 저장

3.2. 프로필 보기 및 타입랩스 페이지

3.3.1. 사용자 프로필 정보 관리

  • 프로필 페이지를 통해 사용자의 기본 정보를 조회하고 정보 수정
    • 조회 기능
      • 사용자 아이디, 이름, 전화번호, 주소, 이메일 정보 조회
      • 등록된 Nova 기기 목록 확인
    • 수정 기능
      • 비밀번호, 이름, 전화번호, 주소, 이메일 수정
      • 변경 사항 저장 시 즉시 서버 반영

3.3.2. 사용자 프로필 정보 관리

  • 사용자의 계정에 Nova 기기를 등록 및 삭제
    • 기기 등록
      • Nova 시리얼 번호 입력을 통한 기기 등록
    • 기기 삭제
      • 등록된 기기 목록에서 선택 후 삭제
      • 기기 삭제 시 관련 Farm 및 타임랩스 데이터 삭제

3.3.3. 기기별·Farm별 타임랩스 제작 현황 조회

  • 등록된 Nova 기기 및 Farm 단위로 타임랩스 제작 상태 확인
    • 타임랩스 목록 제공
      • 전체 영상 및 단계별(step) 영상 목록 조회
      • Farm별, 단계별 타임랩스 구분 표시
    • 제작 상태 표시
      • 제작 예정(PENDING), 제작 중(PROCESSING), 제작 완료(COMPLETED)
    • 영상 정보 확인
      • 영상 길이, FPS, 해상도, 단계 정보 (전체 / 단계 번호)

3.3.4. 타임랩스 영상 재생 및 다운로드

  • 제작이 완료된 타임랩스 영상 재생
    • 제작 완료 상태(COMPLETED) 영상에 한해 재생 버튼 활성화
    • 전체 영상 및 단계별 영상 개별 재생 지원
  • 생성된 타임랩스 영상을 로컬 환경에 저장
    • 영상 이름은 타임랩스 이름 기반으로 자동 지정

3.3. 내 식물관리 페이지

3.4. 타임랩스 생성 및 조회 모달창

3.4.1. 팜(Farm)별 타임랩스 생성 구조

  • 각 Farm은 작물 성장 단계를 기준으로 여러 개의 타임랩스 단계(step)로 구성
    • Farm 생성 시 타임랩스 프리셋 정보 로드
    • 프리셋에 따라 단계별 촬영 주기, 촬영 기간 설정
    • 각 단계 종료 시 자동으로 단계별 타임랩스 영상 생성

3.4.2. 단계별(step) 타임랩스 영상 조회

  • 모달창에서는 프리셋 단계별 타임랩스 영상을 개별적으로 확인
    • 단계별 영상 목록 제공
      • 단계 번호 및 단계명 표시
      • 촬영 기간 정보 표시
    • 단계별 제작 상태 표시
      • 제작 예정(PENDING), 제작 중(PROCESSING), 제작 완료(COMPLETED)
      • 제작 완료 상태의 영상만 재생 및 다운로드 가능

3.4.3. 전체 타임랩스 영상 조회

  • 모든 단계의 타임랩스 제작이 완료되면 전체 성장 과정을 하나의 영상으로 병합하여 제공
    • 단계별 타임랩스 영상 자동 병합
    • 병합된 전체 타임랩스 영상 별도 표시
    • 단계 영상과 동일하게 재생 및 다운로드 기능 제공

3.4.4. 타임랩스 영상 재생 및 다운로드

3.5. 대시보드 및 알림 시스템설계

3.5.1. 대시보드 및 알림 시스템설계

  • React 기반 웹 대시보드를 통해 실시간 센서 데이터 시각화
  • 주요 구성 요소:
    • 온도 / 습도 / 조도 / 토양수분 / CO2 실시간 센서바 그래프
    • 센서별 평균, 최대, 최소값 트렌드데이터 Line Chart
    • 액추에이터 제어 상태 표시 (ex. ON / OFF)
    • 초음파 센서를 활용한 물통 잔량 표시
    • 재배 프리셋 정보 제공
    • 실시간 팝업 알림 및 최근 10개 데이터 제공 (오늘 / 이전 기준)

3.5.2. 알림 시스템 설계

  • 센서 데이터가 설정된 임계값을 벗어날 경우 알림 이벤트 발생
  • 실시간 알림을 위해 SSE(Server-Sent Events) 기반 단방향 스트리밍 구조 적용
  • 알림 처리 흐름:
    1. 센서 데이터 수신
    2. 임계값 비교 여부 판단
    3. 알림 이벤트 생성
    4. SSE 연결된 클라이언트에 전송
  • WebSocket 대비 구현 복잡도가 낮고 서버 부하가 적은 SSE 방식을 채택
  • 네트워크 불안정 상황을 고려하여 Polling을 보조 수단으로 사용
  • SSE 연결 실패 또는 백그라운드 상태의 클라이언트는 Polling API를 통해 알림 상태를 주기적으로 조회
  • 동일 센서 이벤트에 대해 중복 알림이 발생하지 않도록 상태 기반 알림 발생 로직 적용
  • 임계값 초과 상태가 유지되는 동안 추가 알림을 제한하고, 정상 범위로 복귀한 이후 재초과 시에만 알림 재발생

3.6. 팜마켓

3.6.1 마켓 페이지

  • 상품 목록 조회: 마켓에 등록된 상품을 확인할 수 있습니다.
  • 상품 상세보기: 각 상품의 상세 정보 확인 가능
  • 장바구니 기능: 원하는 상품을 장바구니에 담고 수량 조정 가능
  • 주문 기능: 선택한 상품을 결제하여 주문 처리
  • 주문 내역 확인 및 취소: 사용자가 이전 주문 내역 확인 및 취소 가능

3.6.2 관리자 대시보드

  • 상품 총 개수 확인,상품 카테고리별 개수 확인, 총 매출 , 총 주문 수, 주문 진행 상황 시각화
  • 상품 추가: 새 상품 등록 상품 수정: 기존 상품 정보 수정 상품 삭제: 불필요한 상품 제거
  • 주문 상태 변경: 결제 완료, 배송 준비, 배송 중 등 송장 번호 등록: 배송 정보 입력 배송 완료 처리: 주문 완료 상태 반영

8. 시스템 아키텍처

기술 스택
다운로드
ERD
image
REST API (Swagger)
Swagger RESTAPI

9. 프로젝트 회고

1. 잘한 점 (What went well)

  • 프로젝트에서 효과적으로 수행된 작업 또는 성공 사례
    • 라즈베리파이와 센서를 연동하여 환경 데이터 수집을 자동화하고, MQTT 기반 실시간 전송을 안정적으로 구현함
    • 웹 대시보드를 통해 센서 데이터와 액추에이터 상태를 직관적으로 확인할 수 있도록 시각화함
    • 스마트팜 환경 제어 기능과 마켓 기능을 연계하여 하나의 서비스 흐름으로 통합 구현함
    • 개발 과정에서 팀원 간 역할을 분담하고, 이슈 발생 시 지속적인 소통을 통해 문제를 해결함
    • 타임랩스 촬영 기능을 추가하여 작물 성장 과정을 시각적으로 기록할 수 있도록 구현함

2. 개선이 필요한 점 (What could be improved)

  • 프로젝트 과정에서 비효율적이었거나 개선이 필요한 부분
    • 프로젝트 초기에 API 명세와 데이터 구조가 명확히 정리되지 않아, 개발 중간에 수정이 반복적으로 발생함
    • 센서 및 액추에이터와 같은 물리적 하드웨어 구현 과정에서 예상보다 많은 시간이 소요되었으며, 하드웨어 이슈로 인한 테스트 지연이 발생함
    • 타임랩스 이미지 저장 및 관리 방식에 대한 사전 설계가 부족하여, 구현 과정에서 저장 구조를 재조정해야 했음
    • 프로젝트 초반 설계 단계에서 경험 부족으로 인해 일정 관리가 다소 어려웠으며, 개발 진행 중 일정 조정이 필요했음

3. 배운 점 (Lessons learned)

  • 이번 프로젝트를 통해 학습한 내용
    • IoT 시스템은 소프트웨어 설계뿐만 아니라 하드웨어 환경까지 함께 고려해야 함을 체감함
    • 팀원들과의 지속적인 소통을 통해 요구사항을 단계적으로 정리하고, 의견을 하나로 통합하는 과정의 중요성을 배움
    • MQTT, JWT 인증, 센서 제어 등 다양한 기술을 하나의 서비스로 통합하는 경험을 통해 전체 시스템 흐름에 대한 이해도가 향상됨
    • 실제 장비를 활용한 프로젝트에서는 충분한 테스트 시간 확보가 필수적이라는 점을 인식하게 됨

4. 다음 단계 (Action items)

  • 향후 프로젝트에 적용할 개선 방안 또는 실행 계획
    • 프로젝트 초기 단계에서 요구사항 정의와 API 설계에 더 많은 시간을 할당하여 개발 과정의 수정 비용을 줄일 계획
    • 하드웨어 테스트를 위한 시뮬레이션 환경 및 테스트 시나리오를 사전에 준비하여, 물리적 장비로 인한 시행착오를 최소화할 예정
    • 타임랩스 및 환경 데이터를 활용한 자동 제어 로직 고도화 및 데이터 분석 기능을 추가할 계획

10. 프로젝트 결과 요약

  • 성과:
    • IoT 센서를 활용한 스마트팜 환경 데이터 실시간 수집 및 자동화 시스템 구현
    • 웹 대시보드를 통한 환경 데이터 시각화 및 액추에이터 원격 제어 기능 구현
    • 스마트팜 생산 농산물을 판매할 수 있는 마켓 기능 개발 및 연동 완료
    • 작물 성장 과정을 기록하는 타임랩스 기능 구현을 통해 생산 과정의 시각적 검증 가능
    • JWT 기반 사용자 인증 및 권한 관리 기능 적용으로 보안성 강화

About

[KDT] HDC Labs 스마트 IoT 풀스택 개발자 과정, 2차 Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 39.7%
  • Java 37.6%
  • CSS 19.4%
  • Python 3.1%
  • Other 0.2%