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๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋ฉ๋๋ค.











