Enact ๊ธฐ๋ฐ์ ์ค๋งํธํ ๋์๋ณด๋๋ก, Sandstone UI์ Node-RED๋ฅผ ํ์ฉํ์ฌ ์ง๊ด์ ์ธ UI์ ์ค์๊ฐ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ข ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ์ค๋งํธํ ์์คํ ์ ํจ์จ์ ์ธ ๊ด๋ฆฌ๋ฅผ ๋๋ ํํธ, ์ฌ์ฉ์์ ์ ๊ทผ์ฑ์ ๊ณ ๋ คํ์ฌ ๊ฐํธํ ๋ชจ๋ํ๋ฅผ ์ง์ํฉ๋๋ค.
- ๊ฐ์
- ์ฃผ์ ๊ธฐ๋ฅ
- ๊ตฌ์ฑ ๋ฐ UI
- Node-RED ๋ฐ์ดํฐ ํ๋ฆ
- ํต์ ๋ฐฉ์
- ๊ธฐ์ ์คํ
- webOS ํ์ฉ ์ฅ์
- ํ๋ก์ ํธ ํ์ผ ๊ตฌ์กฐ
์ด ํ๋ก์ ํธ๋ ์ค๋งํธํ ๊ด๋ฆฌ์ ํธ๋ฆฌ์ฑ์ ์ ๊ณตํ๊ธฐ ์ํด WebSocket ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ง์ํ๋ ๋ชจ๋ํ๋ ์์คํ ์ ๊ตฌ์ถํฉ๋๋ค. ์ฌ์ฉ์๋ Enact UI๋ฅผ ํตํด ์ง๊ด์ ์ผ๋ก ๋์๋ณด๋๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, Node-RED๋ฅผ ํตํด ๋ฐ์ดํฐ ํ๋ฆ์ ์๊ฐํํ์ฌ ์ค์๊ฐ์ผ๋ก ์์คํ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
-
Overview
์ค๋งํธํ ๋ฐ์ดํฐ๋ฅผ ์ฐจํธ ๋ฐ ๊ทธ๋ํ ํํ๋ก ์๊ฐํํ์ฌ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. AI ๊ธฐ๋ฐ ์์ฅ ์์ธก ๊ธฐ๋ฅ์ ํตํด ์๋ฌผ์ ์์ฅ ์ฃผ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ํ์ ํ๊ณ , ์ค๋งํธํ ํ๊ฒฝ์ ์ต์ ํํ๋ ๋ฐ ๋์์ ์ค๋๋ค. -
Control
์๊ฒฉ์ผ๋ก ์ค๋งํธํ์ ์ ์ดํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. WebSocket ํต์ ์ ํตํด ํฌ, ํํฐ, LED์ ๊ฐ์ ์ฅ์น๋ฅผ ์ค์๊ฐ์ผ๋ก ์กฐ์ํ์ฌ ์ค๋งํธํ ํ๊ฒฝ์ ์กฐ์ ํ ์ ์์ต๋๋ค. -
Video Streaming
์๊ฒฉ์์ ์ค์๊ฐ์ผ๋ก ์ค๋งํธํ์ ์ํ๋ฅผ ๋น๋์ค๋ก ํ์ธํ ์ ์์ต๋๋ค. ESP32 ์นด๋ฉ๋ผ๋ฅผ ํ์ฉํ์ฌ ์ค๋งํธํ ํ๊ฒฝ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. -
Flow Editor
Node-RED๋ฅผ ํตํด ๋ฐ์ดํฐ ํ๋ฆ์ ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ดํ๊ณ ํ์ธํ ์ ์์ต๋๋ค. ๋๋๊ทธ ์ค ๋๋กญ ๋ฐฉ์์ผ๋ก ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํ์ฌ ์ค๋งํธํ ๋ฐ์ดํฐ ํ๋ฆ์ ์ ์ฐํ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. -
Community
์ฌ์ฉ์๊ฐ ์ฌ๋ฐฐํ ์ค๋งํธํ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ณ ํ๋งคํ ์ ์๋ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ค๋งํธํ ๊ด๋ จ ์ง์์ ๊ต๋ฅํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฑฐ๋ํ์ฌ ์ค๋งํธํ ์ํ๊ณ๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค. -
AI Chat
AI ์ฑ๋ด์ ํตํด ์ฌ์ฉ์์๊ฒ ์ค๋งํธํ ๊ด๋ฆฌ์ ํ์ํ ๋์์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์๋ ์ง๋ฌธ์ ํตํด ์๋ํ๋ ๋์์ ๋ฐ์ ์ ์์ต๋๋ค.
-
- ์ค๋ช : ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ , ๊ทธ๋ํ ๋ฐ ์ฐจํธ๋ฅผ ํตํด ์๊ฐ์ ์ผ๋ก ํํํฉ๋๋ค. ์ค๋งํธํ์ ์ํ๋ฅผ ํ๋์ ํ์ ํ๊ณ , ํ์ํ ์กฐ์น๋ฅผ ์ ์ํ๊ฒ ์ทจํ ์ ์์ต๋๋ค.
- ๊ตฌ์ฑ ์์:
- Farm Air Temperature and Humidity: ์จ๋ ๋ฐ ์ต๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ฌ ์๋ฌผ ์์ก ์ํ๋ฅผ ์ฒดํฌํฉ๋๋ค.
- Water Level: ๋ฌผ, ์์๋ถ, ์ฌํ์ฉ์ ๋ฑ ์ค๋งํธํ์ ์์ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
- Illumination: ์กฐ๋๋ฅผ ์ธก์ ํ์ฌ ๋น์ ์์ ์กฐ์ ํ ์ ์์ต๋๋ค.
- AI ์์ธก ๋ฐ์ดํฐ: Water vs Nutrient ์ฐจํธ๋ฅผ ํตํด AI ์์ธก๊ฐ์ ๋ฐ์ํ์ฌ ์์์ ์ ์ ํ ์ฌ์ฉ ์๊ธฐ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
-
- ์ค๋ช : ๊ฐ ๋ชจ๋์ ์๊ฒฉ์ผ๋ก ์ ์ดํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. MQTT ํ๋กํ ์ฝ์ ํตํด ์ผ์๋ก๋ถํฐ ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ฌ UI์ ์ฆ๊ฐ ๋ฐ์๋ฉ๋๋ค.
- ๊ตฌ์ฑ ์์:
- Fan/Heater/LED Light: ์ค์์น๋ฅผ ํตํด ๊ฐ ์ฅ์น๋ฅผ ์จ์คํ ํ ์ ์์ต๋๋ค.
- Pump: ์ฌ๋ผ์ด๋์ ๋ฒํผ์ ํตํด ๋ฌผ์ ๋ ๋ฒจ์ ์กฐ์ ํ๊ณ , ๊ฐ ํฑํฌ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
-
- ์ค๋ช : ์ค๋งํธํ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ณ ํ๋งคํ ์ ์๋ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ค๋งํธํ ๊ด๋ จ ์ง์๊ณผ ๋ฐ์ดํฐ๋ฅผ ๊ต๋ฅํ๋ฉฐ ์ค๋งํธํ ์ํ๊ณ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ:
- ๋ฐ์ดํฐ ๊ฑฐ๋: ์ค๋งํธํ์์ ๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ๊ฑฐ๋ํ์ฌ ์ฌ์ฉ์ ๊ฐ์ ์ํ๊ณ ํ์ฑํ.
- ์ง์ ๊ต๋ฅ: ์ค๋งํธํ ์ด์์ ํ์ํ ์ ๋ณด ๊ณต์ .
-
- ์ค๋ช : AI ์ฑ๋ด์ ํตํด ์ค๋งํธํ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ๋์์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํฉ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ:
- ์๋ด ์๋ํ: ์ฌ์ฉ์๊ฐ ์ง๋ฌธ์ ํ๋ฉด ์๋์ผ๋ก ๋ต๋ณ์ ์ ๊ณต, ์ค๋งํธํ ์ด์์ ํ์ํ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ์ต๋.
- ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์๋ด: ๊ฐ์ข ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ฌผ ๊ด๋ฆฌ์ ํ์ํ ์ค์ง์ ์ธ ์กฐ์ธ์ ์ ๊ณตํฉ๋๋ค.
-
- ์ค๋ช : ESP32 ์นด๋ฉ๋ผ๋ฅผ ํ์ฉํ์ฌ ์ค๋งํธํ์ ์ค์๊ฐ์ผ๋ก ์๊ฒฉ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ:
- ์ค์๊ฐ ์์ ์คํธ๋ฆฌ๋ฐ: ์ฌ์ฉ์๊ฐ ์ธ์ ์ด๋์๋ ์ค๋งํธํ์ ์ํ๋ฅผ ํ์ธํ ์ ์๋๋ก ๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ ์ง์ํฉ๋๋ค.
-
- ์ค๋ช : Node-RED๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ํ๋ฆ์ ์๊ฐ์ ์ผ๋ก ํํํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. ์ผ์ ๋ฐ์ดํฐ ์์ง๋ถํฐ ํด๋ผ์ฐ๋ ์ ์ฅ, ๊ทธ๋ฆฌ๊ณ AI ๋ถ์๊น์ง ๋ชจ๋ ๊ณผ์ ์ ์ง๊ด์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ:
- ๋๋๊ทธ ์ค ๋๋กญ ์ธํฐํ์ด์ค: ๊ฐํธํ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ฐ์ดํฐ ํ๋ฆ์ ์์ ๋กญ๊ฒ ๊ตฌ์ฑ ๋ฐ ์์ ๊ฐ๋ฅ.
- ์ค์๊ฐ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง: ๋ฐ์ดํฐ ํ๋ฆ ๋ชจ๋ํฐ๋ง์ ํตํด ์์คํ ์ค๋ฅ ๋ฐ์ ์ ์ ์ํ๊ฒ ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ.
-
๋ฐ์ดํฐ ํต์ : ์ค๋งํธํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์๋ ์๋ฒ์ HTTP ํต์ ์ ํตํด ์ฃผ๊ณ ๋ฐ์ต๋๋ค. ์ด๋ฅผ ํตํด ์์คํ ์ํ์ AI ์์ธก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํ๋ฉฐ, ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ์์ ์ฑ์ ์ ๊ณตํฉ๋๋ค.
-
์ ์ด ํต์ : WebSocket ํต์ ์ ํ์ฉํ์ฌ ์ค๋งํธํ์ ์๊ฒฉ ์ ์ด๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ํฌ, ํํฐ, LED ๋ฑ์ ์ฅ์น๋ฅผ ์ ์ํ๊ฒ ์ ์ดํ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์๋ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ง๊ด์ ์ธ ์กฐ์์ด ๊ฐ๋ฅํฉ๋๋ค.
- ํ๋ ์์ํฌ: Enact (Sandstone UI)
- ๋ฐ์ดํฐ ํ๋ฆ ๊ด๋ฆฌ: Node-RED
- ๋ชจ๋ํฐ๋ง ๋ฐ ์ ์ด: ์จ์ต๋ ์ผ์ (DHT22), ์กฐ๋ ์ผ์ (CDS), ์์จ ์ผ์, TDS ์ผ์
- ํต์ ํ๋กํ ์ฝ: WebSocket, HTTP
Important
IPK ํ์ผ ํจํค์ง์ ํตํ ์์ฌ์ด ๋ฐฐํฌ
PLKIT ํ๋ก์ ํธ๋ webOS ํ๊ฒฝ์ ๋ง์ถฐ IPK ํ์ผ๋ก ํจํค์งํ์ฌ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด webOS ๊ธฐ๊ธฐ์์ ์ค๋งํธํ ๊ด๋ฆฌ ์ฑ์ ์์ฝ๊ฒ ์ค์นํ๊ณ ์ ์ง ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ webOS ๋๋ฐ์ด์ค์์๋ ๊ฐํธํ๊ฒ ์๋ํ์ฌ ์ ๊ทผ์ฑ์ ๋์
๋๋ค.
Tip
๋ฉํฐ๋ฏธ๋์ด ์ฑ๋ฅ ์ต์ ํ
PLKIT๋ webOS์ ๋ฉํฐ๋ฏธ๋์ด ์ฑ๋ฅ์ ์ต๋๋ก ํ์ฉํ์ฌ ์ค์๊ฐ ๊ณ ํ์ง ๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ ์ํํ๊ฒ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์๋ ์ค๋งํธํ์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ ์ ์์ผ๋ฉฐ, webOS์ ํ๋ฉด ํฌ๊ธฐ์ ๋ง์ถฐ ์ต์ ์ ํ์ง์ ์ ์งํฉ๋๋ค.
Tip
๋ค์ํ ๋๋ฐ์ด์ค ์ง์
webOS๋ ์ค๋งํธ TV, ์ค๋งํธํฐ, IoT ๊ธฐ๊ธฐ ๋ฑ ๋ค์ํ ๋๋ฐ์ด์ค์์ ํ์ฉ๋ ์ ์์ผ๋ฉฐ, PLKIT ํ๋ก์ ํธ๋ ์ด๋ฌํ ๋ค์ํ ํ๋ซํผ์์ ํธํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ํ๋ ๊ธฐ๊ธฐ์์ ์ค๋งํธํ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
Note
์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ ์ ๊ณต
webOS์ ๊ฐ๋ ฅํ UX ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ์ฌ ์ผ๊ด๋๊ณ ์ง๊ด์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. Enact ํ๋ ์์ํฌ์ ๊ฒฐํฉ๋ UI๋ webOS์ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋๋ฉฐ, ์ฌ์ฉ์์๊ฒ ์น์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
PLKIT-FE.dashboard
โโโ .env # ํ๊ฒฝ ๋ณ์ ์ค์ ํ์ผ
โโโ .gitignore # Git์์ ์ ์ธํ ํ์ผ ๋ชฉ๋ก
โโโ package-lock.json # npm ํจํค์ง ์ข
์์ฑ ๊ด๋ฆฌ ํ์ผ
โโโ package.json # ํ๋ก์ ํธ ์ค์ ํ์ผ
โโโ README.md # ํ๋ก์ ํธ ์ค๋ช
ํ์ผ
โโโ src
โ โโโ App
โ โ โโโ App.js # ์ ํ๋ฆฌ์ผ์ด์
๋ฉ์ธ ์ปดํฌ๋ํธ
โ โ โโโ App.module.less # ๋ฉ์ธ ์คํ์ผ ํ์ผ
โ โโโ assets # ํ๋ก์ ํธ์ ํ์ํ ์ด๋ฏธ์ง ๋ฐ ์์ด์ฝ
โ โโโ components # UI ์ปดํฌ๋ํธ ํด๋
โ โ โโโ ChatGPTComponent.js # AI ์ฑ๋ด ์ปดํฌ๋ํธ
โ โ โโโ Community.js # ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ ์ปดํฌ๋ํธ
โ โ โโโ Control.js # ์๊ฒฉ ์ ์ด ์ปดํฌ๋ํธ
โ โ โโโ Overview.js # ๋ฐ์ดํฐ ์๊ฐํ ๋์๋ณด๋
โ โ โโโ VideoStream.js # ์ค์๊ฐ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์ปดํฌ๋ํธ
โ โ โโโ (๊ธฐํ ์ปดํฌ๋ํธ๋ค)
โ โโโ hooks # ์ปค์คํ
ํ
ํด๋
โ โ โโโ usePredictionData.js # AI ์์ธก ๋ฐ์ดํฐ ํ
โ โ โโโ useSmartFarmData.js # ์ค๋งํธํ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ
โ โโโ utils
โ โ โโโ exportChart.js # ์ฐจํธ ๋ด๋ณด๋ด๊ธฐ ์ ํธ๋ฆฌํฐ
โ โโโ views
โ โโโ MainPanel.js # ๋์๋ณด๋ ๋ฉ์ธ ํ๋ฉด
โโโ public
โ โโโ index.html # HTML ํ
ํ๋ฆฟ ํ์ผ
โ โโโ imgs # ์ด๋ฏธ์ง ํ์ผ ํด๋
โโโ node_modules # ํ๋ก์ ํธ ์์กด์ฑ ๋ชจ๋