๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[IoT Service Platform] Raspberry Pi IoT Server : InfluxDB, MQTT, Grafana, Node-RED & Docker ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/Protocol

[IoT Service Platform] Raspberry Pi IoT Server : InfluxDB, MQTT, Grafana, Node-RED & Docker

์ง•์ง•์•ŒํŒŒ์นด 2023. 6. 19. 02:14
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” Learn Embedded Systems ๋‹˜์˜ ์œ ํŠœ๋ธŒ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

=> Raspberry Pi IoT Server Tutorial: InfluxDB, MQTT, Grafana, Node-RED & Docker

 

๐Ÿ–ฅ๏ธ Node-Red

: ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋“ค, API, ์˜จ๋ผ์ธ ์„œ๋น„์Šค๋ฅผ ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์˜ ์ผ๋ถ€๋กœ ์™€์ด์–ด๋ง(๋ฐฐ์„ ํ™”)์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ณธ๋ž˜ IBM์ด ๊ฐœ๋ฐœํ•œ ์‹œ๊ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ํ”Œ๋กœ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ๋„๊ตฌ

: IoT ์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ์—ฐ๊ฒฐํ•˜์—ฌ ์›น์œผ๋กœ ์‹œ๊ฐํ™” ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ์šฉ๋„

 

๐Ÿ–ฅ๏ธ InfluxDB

: ์ธํ”Œ๋Ÿญ์Šค๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ ์†Œ์Šค ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

: ์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งคํŠธ๋ฆญ์Šค, ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ์„ผ์„œ ๋ฐ์ดํ„ฐ, ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ๋“ฑ ๋ถ„์•ผ์—์„œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ๊ณ ์†์˜ ๊ณ ๊ฐ€์šฉ์„ฑ์˜ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰์— ์ตœ์ ํ™”

: ๋งŽ์€ ์“ฐ๊ธฐ ์ž‘์—…๊ณผ ์ฟผ๋ฆฌ ๋ถ€ํ•˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด 2013๋…„์— Go ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋œ ์˜คํ”ˆ์†Œ์Šค TSDB

: ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๊ณ , ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” TSDB

: Restful API๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด API ํ†ต์‹ ์ด ๊ฐ€๋Šฅ

 

๐Ÿ–ฅ๏ธ Grafana

: ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ์˜คํ”ˆ ์†Œ์Šค ์• ๋„๋ฆฌํ‹ฑ์Šค ๋ฐ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์‹œ๊ฐํ™” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

: ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋‚˜์˜ ๋Œ€์‹œ๋ณด๋“œ(๋˜๋Š” ์—ฌ๋Ÿฌ ๋Œ€์‹œ๋ณด๋“œ)๋กœ ํ†ตํ•ฉ๋œ ์ฐจํŠธ์™€ ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์†์‰ฝ๊ฒŒ ํ•ด์„ํ•˜๊ณ  ์ดํ•ด ๊ฐ€๋Šฅ

 

๐Ÿ–ฅ๏ธ Docker

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

: ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ

๐Ÿš€ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ ๋ฌธ์ œ & ์„œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ๋™์ผํ•œ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

: ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋žจ, ์‹คํ–‰ํ™˜๊ฒฝ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ถ”์ƒํ™”ํ•˜๊ณ  ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ด์คŒ

 

๐Ÿ’  ์ปจํ…Œ์ด๋„ˆ

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

: ๊ฒฉ๋ฆฌ๋œ ๊ณต๊ฐ„์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ธฐ์ˆ 

: ์ถ”๊ฐ€์ ์ธ OS๋ฅผ ์„ค์น˜ํ•˜์—ฌ ๊ฐ€์ƒํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์„ฑ๋Šฅ๋ฌธ์ œ๋กœ, ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ

: ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์ด ๋ฐฉ์‹์„ ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ, ๋‹จ์ˆœํžˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๊ฒŒ ๋™์ž‘

 

๐Ÿ’  ์ด๋ฏธ์ง€(Image)

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

: ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์— ํ•„์š”ํ•œ ํŒŒ์ผ๊ณผ ์„ค์ •๊ฐ’๋“ฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ƒํƒœ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š๊ณ  ๋ณ€ํ•˜์ง€ ์•Š์Œ

: ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•œ ์ƒํƒœ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ณ€ํ•˜๋Š” ๊ฐ’์€ ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ

: ๊ฐ™์€ ์ด๋ฏธ์ง€์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋”๋ผ๋„ ์ด๋ฏธ์ง€๋Š” ๋ณ€ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์Œ

: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ง

: ์ƒˆ๋กœ์šด ์„œ๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์€ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ๋งŒ ํ•˜๋ฉด ๋จ 

(ํ•œ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ฒœ ๋Œ€์˜ ์„œ๋ฒ„ ๋ฌธ์ œ ์—†์Œ)

 

๐Ÿ’  ๋ ˆ์ด์–ด ์ €์žฅ๋ฐฉ์‹

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

: ๋„์ปค ์ด๋ฏธ์ง€๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ์šฉ๋Ÿ‰์ด ์ˆ˜๋ฐฑ MB (๋น„ํšจ์œจ) 

: ์œ ๋‹ˆ์˜จ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ด์–ด๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉ

: ์ด๋ฏธ์ง€๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฝ๊ธฐ ์ „์šฉ(read only ๋ ˆ์ด์–ด)๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ํŒŒ์ผ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •๋˜๋ฉด ์ƒˆ๋กœ์šด ๋ ˆ์ด์–ด๊ฐ€ ์ƒ์„ฑ

ubuntu ์ด๋ฏธ์ง€๊ฐ€ A + B + C์˜ ์ง‘ํ•ฉ์ด๋ผ๋ฉด =>  ubuntu ์ด๋ฏธ์ง€๋ฅผ ๋ฒ ์ด์Šค๋กœ ๋งŒ๋“  nginx ์ด๋ฏธ์ง€๋Š” A + B + C + nginx
webapp ์ด๋ฏธ์ง€๋ฅผ nginx ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด => A + B + C + nginx + source ๋ ˆ์ด์–ด

๐Ÿš€ webapp ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด A, B, C, nginx ๋ ˆ์ด์–ด๋ฅผ ์ œ์™ธํ•œ ์ƒˆ๋กœ์šด source(v2) ๋ ˆ์ด์–ด๋งŒ ๋‹ค์šด๋ฐ›์œผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ต‰์žฅํžˆ ํšจ์œจ์ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ด€๋ฆฌ

 

๐Ÿ–ฅ๏ธ IoT Stack

๐Ÿ’  ํ™˜๊ฒฝ ์„ค์ •

sudo apt update
sudo apt upgrade
curl -fsSL https://raw.githubusercontent.com/SensorsIot/IOTstack/master/install.sh | bash

sudo shutdown -r now

 

๐Ÿ’  docker ์—์„œ ๋‹ค์šด๋กœ๋“œ ํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ํƒ

cd IOTstack
./menu.sh

grafana

influxdb

mosquitto

nodered (issue -> youtube ๋ณด๊ณ  ๋”ฐ๋ผํ•˜์‹œ๊ธธ!)

portainer-ce

docker-compose ps

 

๐Ÿ’  portainer-ce

Docker Web GUI ๊ธฐ๋ฐ˜ Container ๊ด€๋ฆฌ ํˆด

ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ ์žˆ๋Š” Docker ๊ด€๋ จ๋œ ์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€, ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํฌ ๋“ฑ์„ web์—์„œ ๊ด€๋ฆฌ

// docker portainer ๋“ค์–ด๊ฐ€๊ธฐ
http://you_ip:9000

docker exec -it influxdb influx

 

๐Ÿ’  Node-RED ๋“ค์–ด๊ฐ€๊ธฐ

// Node-RED ๋“ค์–ด๊ฐ€๊ธฐ
http://you_ip:1880

mqtt

 

 

๐Ÿ’  Grafana ๋“ค์–ด๊ฐ€๊ธฐ

์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ admin ์ด๋‹ค!!!

ํ•œ์ฐธ ํ—ค๋งธ๋‹ค.... ๊ทธ๋ฆฌ๊ณ  ๋น„๋ฒˆ ๋ฐ”๊พธ๊ธธ!

 

์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์„œ ๊ทธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์ธ๋ฐ,

๋ฐ์ดํ„ฐ๋ฅผ ๋„ค๊ฐœ๋ฐ–์— ์•ˆ๋„ฃ์–ด์„œ ์ €๋ ‡๋‹ค.. ใ…‹ใ…‹

728x90
๋ฐ˜์‘ํ˜•
Comments