아두이노 센서 데이터 대시보드 구현 (2/7) – Mosquitto

Published Sep 8, 2024 | Updated Jan 8, 2025 | 0 comments

아두이노 온습도 센서에서 수집된 데이터로 대시보드를 구성하는 과정을 살펴보겠습니다
총 7개의 포스트로 이루어지며 아래 글목록을 보시면 확인이 가능합니다.

개요

아두이노 환경에서 네트워크로 데이터를 전송하기 위해 MQTT 프로토콜을 사용하기로 했습니다.
트래픽 부화를 최소화 한다는 점에서 선택하게 되었습니다.

Software (mqtt.org) 사이트를 참조해 보면 MQTT 를 지원하는 다양한 환경이 존재한다는 것을 알 수 있습니다.
MQTTnet 과 같은 .net 패키지도 존재하기 때문에 .net 개발 경력으로 최소한의 기능만 갖춰서 대시보드까지 만들려고 생각도 해봤지만 조금씩 다양한 기능에 욕심이 생겨 오픈 소스를 최대한 활용해서 구축하게 되었습니다.

도커 컨테이너에 올려서 사용할 수 있어야 한다는 전제 조건으로 비교하던 중 Mosquitto 로 결정하게 되었습니다.
그럼 Mosquitto 를 Docker 컨테이너에 올려서 구성하는 과정에 대해 살펴보겠습니다.

컨테이너 실행 스크립트

서버에 SSH 로 접속해서 컨테이너 루트 폴더에서 다음 스크립트를 실행하면 컨테이너가 실행됩니다.
eclipse-mosquitto – Official Image | Docker Hub 허브 페이지를 참조해서 필요한 볼륨을 매핑하고
외부 포트 번호만 임의로 수정해서 사용했습니다.
차후 이미지가 업데이트 된 경우 업그레이드를 위한 스크립트도 포함되어 있습니다.
필요에 따라 활용하기 위해 모든 스크립트를 파일로 저장해서 사용하였습니다.

#Docker 루트 폴더로 이동
cd /volume1/docker

#폴더 생성 
mkdir Mosquitto

#컨테이너 폴더로 이동
cd /volume1/Mosquitto

#컨테이너 중지
docker stop Mosquitto 

#컨테이너 삭제
docker rm Mosquitto

#컨테이너 이미지 최신버전으로 가져옴
docker pull  eclipse-mosquitto

#폴더 생성 
mkdir Mosquitto/config
mkdir Mosquitto/data
mkdir Mosquitto/log 

#컨테이너 폴더로 이동
cd ..

# 컨테이너 실행
# 41883 - mqtt
# 49001 - websocket
docker run -d --name Mosquitto -p 41883:1883 -p 49001:9001 \
  --restart="always" \
  -v /volume1/docker/Mosquitto/config:/mosquitto/config \
  -v /volume1/docker/Mosquitto/data:/mosquitto/data \
  -v /volume1/docker/Mosquitto/log:/mosquitto/log \
  eclipse-mosquitto

사용자 인증 설정

사용자 인증 설정은 다음 페이지를 참조해서 진행하였습니다.
Mosquitto Docker Configuration – Ultimate Guide | Cedalo

패스워드 파일 생성

다음 스크립트는 컨테이너에 접속해서 패스워드 파일을 생성하는 스크립트 결과를 보여줍니다.
config 폴더가 공유 되고 있으므로 config 폴더에 패스워드 파일을 생성합니다.
추후 권한 관련 문제로 파일 권환도 미리 수정했습니다.
{{사용자계정}} 을 수정해야 합니다.

kkomzi@KKOMZI_HPN54L:~$ docker exec -it  -u 1883 Mosquitto sh
/ $ mosquitto_passwd -c /mosquitto/config/passwd_file {{사용자계정}}
Password:
Reenter password:
Warning: File /mosquitto/config/passwd_file has world readable permissions. Future versions will refuse to load this file.
To fix this, use `chmod 0700 /mosquitto/config/passwd_file`./ $
/ $ chmod 0700 /mosquitto/config/passwd_file

Config 파일 수정

mosquitto.conf 파일에서 다음 2개 라인을 찾아서 패스워드 파일 경로를 수정하고 익명 사용자 로그인을 방지하기 위해 다음과 같이 수정합니다.

password_file /mosquitto/config/passwd_file
allow_anonymous false

기본 설정으로 MQTT 프로토콜만 지원하는데, websocket 도 지원할 수 있게 Config 파일을 다음과 같이 수정합니다.
Extra listeners 를 검색해서 빠른 이동이 가능합니다.

# =================================================================
# Extra listeners
# =================================================================
listener 1883
protocol mqtt

listener 9001
protocol websockets

컨테이너 재시작

다음 스크립트를 실행해서 컨테이너를 빠져나온 다음 컨테이너를 다시 시작 합니다.

/ $ exit
kkomzi@KKOMZI_HPN54L:~$ docker restart Mosquitto
Mosquitto
kkomzi@KKOMZI_HPN54L:~$

MQTT Tool

Mosquitto 구성이 완료되고 MQTT 발행 및 구독 테스트를 하기 위해 다음 2가지를 사용해 보았습니다.
MQTT Explorer 와 MQTT X 에 관해 각각 살펴보겠습니다.

MQTT Explorer

설치형 프로그램으로 발행 및 구독 테스트가 용이합니다.
MQTT Explorer – MQTT client to visualize, publish, subscribe, plot topics. Visualizes topics in a topic hierarchy. Intended for service integration, maintenance and refactorings.(Ref : https://mqtt.org/software)

실행해 보면 다음과 같이 일부 수치 데이터의 경우 그래프 형태로도 확인이 가능합니다.

MQTT X

설치형 프로그램도 가능하지만 Docker 컨테이너를 구성해서 웹으로도 사용이 가능합니다.
MQTT X – MQTT X is a cross-platform MQTT desktop client open sourced by EMQ, which supports macOS, Linux, and Windows. MQTT X adopts the form of chat interface, which simplifies the page operation, facilitates the user to quickly test the MQTT/MQTTS connection, publish and subscribe to MQTT messages.(Ref : https://mqtt.org/software)

MQTT X 컨테이너 실행

다음 스크립트를 실행해서 컨테이너를 실행합니다.

#Docker 루트 폴더로 이동
cd /volume1/docker

#폴더 생성 
mkdir Mqttx

#컨테이너 폴더로 이동
cd /volume1/docker/Mqttx

#컨테이너 중지
docker stop Mqttx

#컨테이너 삭제
docker rm Mqttx

#컨테이너 이미지 최신버전으로 가져옴
docker pull emqx/mqttx-web

docker run -d --name Mqttx -p 49002:80 \
  --restart="always" \
  emqx/mqttx-web

웹으로 접속해서 연결을 추가한 다음 구독이 필요한 토픽까지 지정하고 나면 다음과 같이 실시간으로 전송되는 데이터를 쉽게 확인할 수 있습니다.

Learn more on this topic

Related Blog Posts

WinSCP 접속 버퍼 길이 최적화

WinSCP 접속 버퍼 길이 최적화

WinSCP 에서 대용량 데이터를 복사하던 중에 발생한 상황에 대한 해결 과정입니다. (접속 버퍼 길이 최적화)

read more

Join in the conversation

Leave a Comment

0 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

무료 온라인 전광판

전광판

텍스트를 입력하고 텍스트 효과 및 배경효과 를 변경해서 전체화면으로 표시할 수 있는 전광판 용도로 사용하실 수 있습니다. 각종 스포츠 및 공연 관람시 응원 용도로 사용이 가능합니다.

Carousel

여러개의 슬라이드를 추가하여 프레젠테이션 및 이미지 슬라이드 용도로 사용하실 수 있습니다. 브라우저가 포함된 IT 기기로 큰 모니터에 연결하여 매장 내 공지사항 및 메뉴소개를 이미지로 표시할 수 있습니다.

Pin It on Pinterest

Shares
Share This

Share This

Share this post with your friends!

Shares