Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

165 Commits
 
 
 
 

Repository files navigation

GrowingPetPlant

반려 식물을 키우는 ‘식집사'들이 늘어나는 요즈음, 식물을 간편하게 기를 수 있는 어플을 제작하고자 하였습니다.
Mqtt 프로토콜을 활용해 아두이노와의 통신을 기반으로 한 IoT 연계 어플입니다.
GrowingPetPlant를 통해 식집사들이 부담을 덜고, 식물 가꾸기를 더욱 즐길 수 있기를 기대합니다.

🪴 시연 영상

Video Label

🛠️ Tech Stack

Category Technologies
Backend
Database
Cloud
Tool

ERD

gpp_uml

시스템 구조도

GPP_시스템구조도

주요 기능

  • 식물 온실 온도, 대기 습도, 토양 습도 실시간 모니터링
  • 아두이노를 통해 원격 물 주기, 조명 on/off, 팬 on/off
  • 식물 온실 자동화
  • 식물 온실 환경에 대한 데이터를 그래프로 시각화
  • 수분 공급 일자 캘린더에 표시

상세 화면

홈 화면 - 낮/밤

Home 낮/밤

상태바

Home 상태바

독 바

Home 독 바

홈 화면 - 스와이프시 식물 추가

Home Plant Add

캘린더

Calendar

그래프

Graph

Mqtt 통신

Topic 발행

Screenshot 2024-08-24 at 10 05 15 PM

Server는 유저가 독 바의 버튼을 눌러 기능을 실행하면 해당 기능에 맞는 Topic의 message를 발행합니다.
예를 들어, 유저가 조명 버튼을 누르면 "TOPIC_LIGHT" 토픽에 message를 발행합니다.
발행하는 message는 현재 아두이노의 조명의 작동 여부를 확인하고, 이와 반대 동작을 수행하도록 합니다.

실시간 모니터링

Screenshot 2024-08-24 at 10 05 31 PM

Server는 아두이노가 10초마다 특정 Topic에 발행하는 message를 수신해 해당 유저-식물 번호의 데이터를 저장하고, 실시간 정보를 업데이트합니다.
이때, 여러 식물의 실시간 정보를 받기 위해 아두이노가 발행하는 토픽을 "userPlant/+/temperature"와 같이 지정합니다.
와일드카드 처리를 통해 유저-식물 번호를 구분해 정보를 업데이트할 수 있습니다.

온실 자동화

@Scheduled 어노테이션을 통해 매일 자정 온실 자동화 함수를 실행합니다.
유저의 자동화 설정 여부를 확인해 설정한 유저의 유저-식물의 상태를 모니터링합니다.
만약, 유저-식물의 상태가 식물DB에 저장되어있는 최적 상태를 벗어나있다면 수분 공급, 조명 작동, 팬 작동을 통해 식물 온실을 최적 상태로 유도합니다.

About

반려식물 키우기 - 백엔드

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages