HDC랩스 NOVA FullStack 과정, 1팀의 First 프로젝트 Repository 입니다.
스마트 빌딩을 주제 각 디바이스들에 대한 원격 제어, 자동 데이터 수집 기능을 구현한 서비스입니다.
권한에 따라 지원되는 서비스를 구분하였으며,
크게 전체통제가 가능한 관리자와, 각 오피스 별 부분 사용자 역할로 구분이 됩니다.
| 시스템 아키텍처 |
|---|
![]() |
| ERD |
|---|
![]() |
| MQTT API |
|---|
![]() |
📦src
┣ 📂main
┃ ┣ 📂java
┃ ┃ ┣ 📜smartbuilding.sql // Database, Tables 생성 시 실행할 sql파일
┃ ┃ ┣ 📜Main.java // psvm 메서드로 java를 실행하는 첫 파일
┃ ┃ ┣ 📂dao // DB 작업 (CRUD) 을 수행하는 DAO 파일이 들어가는 폴더
┃ ┃ ┣ 📂dto // 데이터 전달 형식을 class, DTO 단위로 들어가는 폴더
┃ ┃ ┣ 📂mqtt //MqttClient 클래스를 통해 Connect, Sub/Pub 가 구현된 파일 폴더
┃ ┃ ┣ 📂controller // 프로젝트에서 주요 기능들을 처리하는 로직8
┃ ┃ ┣ 📂service // 각 기능 별로 로직 구현하는 폴더
┃ ┃ ┣ 📂util // DB Connection, ANSI Escape Codes 등 static으로 초기 생성하는 데이터
┃ ┃ ┣ 📂config // Broker 서버, DB 서버와 관련된 민감정보들이 들어가는 폴더 (깃에 안올림)
┃ ┃ ┗ 📂view // 콘솔 화면, UI를 넣는 폴더
| 작업 항목 | 시작 날짜 | 종료 날짜 | 기간(일) |
|---|---|---|---|
| 프로젝트 구조 설계 | 2025-10-21 | 2025-10-22 | 2 |
| 프로젝트 UI 설계 | 2025-10-22 | 2025-10-22 | 1 |
| 프로젝트 기능 구현 | 2025-10-22 | 2025-10-27 | 6 |
| ERD 구조 작성 | 2025-10-23 | 2025-10-25 | 3 |
| MQTT API 설계 | 2025-10-24 | 2025-10-25 | 2 |
| 전체 기능 테스트 및 오류 수정 | 2025-10-27 | 2025-10-28 | 2 |
| 최종 검토 및 발표 | 2025-10-29 | 2025-10-29 | 1 |
| 개발환경 | 언어 | 모듈 | 데이터베이스 |
|---|---|---|---|
| Eclipse | Java | paho-mqtt mysql-connector-java |
MySQL |
| VSCode | Python | paho-mqtt RPi.GPIO |
MySQL |
입력한 ID, PW 값으로 회원 조회를 하고, 권한에 맞게 관리자 / 사용자 페이지로 이동한다.
회원가입 시 회원 정보가 추가되며, 사용자 권한으로 가입된다.
로그인한 회원의 권한과 출입문을 비교하고, 제어할 수 있는 경우 해당 문을 원격으로 연다.
Mqtt 토픽을 통해 해당 출입문을 열고, 해당 데이터 로그를 DB에 저장한다.
제어할 수 없는 경우 콘솔에 제어 거부를 출력하고, 해당 데이터 로그를 DB에 저장한다.
사무실마다 제어할 수 있는 디바이스 목록들이 다르다. 권한에 따라 제어할 수 있는 사무실 목록들을 출력하고, 어떤 사무실을 제어할 지 선택한다.
사무실 선택 시, 디바이스 목록들이 출력되고, 제어할 수 있는 액추에이터를 선택해 제어 여부를 선택하게 한다.
| 이름 | 역할 및 담당 기능 |
|---|---|
| 양준길 | PM MQTT 통신 구축 프로젝트 일정관리 엘리베이터 기능 구현 |
| 조수민 | ERD 설계 및 DB 연동 출입문 기능 구현 화재감지센서 데이터 수집 |
| 이희원 | 주차 관리 기능 구현 센서 로그 수집 |
| 김광민 | IoT 조명 제어 기능 구현 온습도 센서 로그 수집 |
프로그램 실행에 MySQL8.0, Mosquitto가 필요합니다.
소스코드 실행 전에 미리 다운로드 받는걸 권장합니다.
위 프로그램은 자바 소스코드로, Eclipse 나 Intellij 환경에서 실행하는 걸 가정하에 설명드립니다.
먼저 소스코드를 로컬 환경에 다운로드 받습니다.
git clone https://github.com/iot-building/iot_server.git
다운받은 소스코드 내엔 build.gradle 파일이 있습니다.
build.gradle 내에 명시된 라이브러리들을 모두 받아야 정상 실행이 가능합니다.
파일 경로 "src/main/java/config/broker.properties" 에 파일을 만든다.
위 파일에는 broker.ip, broker.port가 포함되어야 한다.
로컬에서 Mqtt 브로커를 실행할 경우 아래와 같이 입력한다.
broker.ip = localhost
broker.port = 1883
파일 경로 "src/main/java/config/db.properties" 에 파일을 만든다.
위 파일에는 db.ip, db.port, db.database, db.user, db.password 가 포함되어야 한다.
로컬에서 MySQL 서버를 실행할 경우 아래와 같이 입력한다.
db.ip = localhost
db.port = 3306
db.database = smart_building
db.user = '사용할 db 유저'
db.password = '패스워드'
smartbuilding.sql 파일을 실행합니다(src/main/java/smartbuilding.sql).
실행 후 사용되는 데이터베이스, 테이블, 기본 레코드들이 데이터베이스 상에 있어야 합니다. 어떤 테이블이 필요한 지는 ERD를 참고하면 됩니다.











