Raspberry Pi에 Mosquitto MQTT 브로커 설치
이 튜토리얼은 Raspberry Pi 보드에 MQTT 통신을 위한 Mosquitto 브로커를 설치하는 방법을 보여줍니다.

클라우드에서 Mosquitto MQTT 브로커를 실행할 수도 있습니다. 클라우드에서 MQTT Mosquitto 브로커를 실행하면 인터넷에 연결되어 있는 한 다른 네트워크를 사용하여 여러 ESP32/ESP8266 보드와 다른 IoT 기기를 어디서나 연결할 수 있습니다. 아래 튜토리얼을 확인하세요.
클라우드 MQTT Mosquitto 브로커 실행(Digital Ocean을 사용하여 어디서나 액세스)
MQTT 브로커란?
MQTT는 Message Queuing Telemetry Transport의 약자입니다. MQTT는 대역폭이 낮은 제약이 있는 기기를 위해 설계된 간단한 메시징 프로토콜입니다. 따라서 여러 IoT 기기 간에 데이터를 교환하는 데 완벽한 솔루션입니다.
MQTT 통신은 게시 및 구독 시스템으로 작동합니다. 기기는 특정 주제에 대한 메시지를 게시합니다. 해당 토픽에 구독된 모든 기기가 메시지를 수신합니다.
MQTT 브로커는 모든 메시지를 수신하고, 메시지를 필터링하고, 누가 메시지에 관심이 있는지 결정한 다음, 모든 구독 클라이언트에 메시지를 게시하는 역할을 합니다.

mqtt-broker
사용할 수 있는 브로커는 여러 가지가 있습니다. 홈 오토메이션 프로젝트에서는 Raspberry Pi에 설치된 Mosquitto Broker를 사용합니다.

Mosquitto 브로커를 PC에 설치할 수도 있습니다(Raspberry Pi 보드를 사용하는 것만큼 편리하지 않습니다. 기기 간 MQTT 연결을 유지하기 위해 항상 컴퓨터를 실행해야 하기 때문입니다).
MQTT 통신에 대한 자세한 설명은 이 문서를 참조하세요. MQTT란 무엇이며 어떻게 작동하는가
필수 조건
이 튜토리얼을 계속 진행하기 전에
- Raspberry Pi 보드에 대해 잘 알고 있어야 합니다. Raspberry Pi 시작하기를 읽어보세요.
- Raspberry Pi에 Raspberry Pi OS를 설치해야 합니다. Raspberry Pi OS 설치, Wi-Fi 설정, SSH 활성화 및 연결;
다음 하드웨어도 필요합니다.
- 라즈베리 파이 보드 - 최고의 라즈베리 파이 스타터 키트 읽기
- MicroSD 카드 - 16GB Class10
- 라즈베리 파이 전원 공급 장치(5V 2.5A)
이전 링크를 사용하거나 MakerAdvisor.com/tools로 직접 이동하여 프로젝트에 필요한 모든 부품을 최고의 가격으로 찾을 수 있습니다!
홈 오토메이션을 좋아하고 완전한 홈 오토메이션 시스템을 구축하고 싶다면 홈 오토메이션 과정을 다운로드하는 것이 좋습니다.
Raspberry Pi OS에 Mosquitto Broker 설치
Raspberry Pi OS로 Raspberry Pi 보드를 준비한 후 이 튜토리얼을 계속 진행할 수 있습니다.
Mosquitto Broker를 설치해 보겠습니다.
1) 새 Raspberry Pi 터미널 창을 엽니다. Raspberry Pi를 헤드리스로 실행 중인 경우 이 튜토리얼을 확인하여 컴퓨터와 Raspberry Pi 간에 SSH 연결을 설정하는 방법을 알아보세요.

2) 다음 명령을 실행하여 시스템을 업그레이드하고 업데이트합니다.
sudo apt update && sudo apt upgrade
3) Y와 Enter를 누릅니다. 업데이트하고 업그레이드하는 데 시간이 좀 걸립니다(제 경우에는 약 10분이 걸렸습니다).
4) Mosquitto Broker를 설치하려면 다음 명령을 입력합니다.
sudo apt install -y mosquitto mosquitto-clients
5) Raspberry Pi가 부팅될 때 Mosquitto가 자동으로 시작되도록 하려면 다음 명령을 실행해야 합니다(즉, Raspberry Pi가 시작될 때 Mosquitto 브로커가 자동으로 시작됩니다).
sudo systemctl enable mosquitto.service
6) 이제 다음 명령을 실행하여 설치를 테스트합니다.
mosquitto -v
이렇게 하면 현재 Raspberry Pi에서 실행 중인 Mosquitto 버전이 반환됩니다. 2.0.11 이상입니다.

Mosquitto MQTT 브로커 Raspberry Pi 설치
다음 메시지가 표시됩니다. "로컬 전용 모드로 시작합니다. 이 컴퓨터에서 실행 중인 클라이언트에서만 연결이 가능합니다. 원격 액세스를 허용하는 리스너를 정의하는 구성 파일을 만듭니다."
즉, 기본적으로 다른 기기(Raspberry Pi 제외)에서 Mosquitto 브로커와 통신할 수 없습니다. 이는 Mosquitto 버전 2에 적용됩니다. Mosquitto 설명서에서 이 주제에 대한 자세한 내용을 확인하세요.
"Mosquitto 2.0 이상에서는 클라이언트가 연결하기 전에 인증 옵션을 명시적으로 선택해야 합니다. 이전 버전에서는 기본적으로 클라이언트가 인증 없이 연결할 수 있도록 허용합니다."
원격 액세스/인증 활성화
다른 IoT 기기와 통신할 수 있도록 원격 액세스를 활성화하려면 구성 파일을 편집/생성해야 합니다.
이 자습서에서는 다음을 다룹니다.
- 인증 없음
- 사용자 및 비밀번호로 인증
시나리오에 더 적합한 섹션을 선택하세요. 자세한 내용은 설명서를 참조하세요.
Mosquitto 브로커 원격 액세스 활성화(인증 없음)
1) 다음 명령을 실행하여 mosquitto.conf 파일을 엽니다.
sudo nano /etc/mosquitto/mosquitto.conf
2) 화살표 키를 사용하여 파일의 끝으로 이동하고 다음 두 줄을 붙여넣습니다.
listener 1883
allow_anonymous true

원격 연결 및 익명 사용자를 허용하는 Mosquitto 구성 파일
3) 그런 다음 CTRL-X를 눌러 종료하고 파일을 저장합니다. Y와 Enter를 누릅니다.
4) 변경 사항을 적용하려면 Mosquitto를 다시 시작합니다.
sudo systemctl restart mosquitto
Mosquitto 브로커 원격 액세스 활성화(인증: 사용자 및 비밀번호)
MQTT 브로커에 사용자/비밀번호 인증을 추가할 수 있습니다.
1) 다음 명령을 실행하지만 YOUR_USERNAME을 사용하려는 사용자 이름으로 바꾸세요.
sudo mosquitto_passwd -c /etc/mosquitto/passwd YOUR_USERNAME
MQTT 사용자 sara를 사용하므로 다음과 같이 명령을 실행합니다.
sudo mosquitto_passwd -c /etc/mosquitto/passwd sara
원하는 사용자 이름으로 이전 명령을 실행하면 비밀번호를 입력하라는 메시지가 표시됩니다. 비밀번호를 입력하는 동안 문자는 표시되지 않습니다. 비밀번호를 입력하고 사용자/패스 조합을 기억해 두세요. 나중에 프로젝트에서 브로커와 연결하는 데 필요합니다.
이전 명령은 /etc/mosquitto 디렉터리에 passwd라는 비밀번호 파일을 만듭니다.
이제 mosquitto 구성 파일을 편집하여 정의한 사용자 이름과 비밀번호로만 인증을 허용해야 합니다.
2) 다음 명령을 실행하여 구성 파일을 편집합니다.
sudo nano /etc/mosquitto/mosquitto.conf
3) 파일 맨 위에 다음 줄을 추가합니다(파일 맨 위에 있는지 확인하세요. 그렇지 않으면 작동하지 않습니다):
per_listener_settings true
4) 다음 세 줄을 추가하여 인증된 사용자의 연결을 허용하고 Mosquitto에 사용자 이름/암호 파일이 있는 위치를 알려줍니다.
allow_anonymous false
listener 1883
password_file /etc/mosquitto/passwd
구성 파일은 다음과 같습니다(새 줄은 굵은 글씨로 표시):
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
per_listener_settings true
pid_file /run/mosquitto/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
allow_anonymous false
listener 1883
password_file /etc/mosquitto/passwd
# 로컬 구성을 /etc/mosquitto/conf.d/에 넣습니다.
# # 구성 파일에 대한 전체 설명은 다음과 같습니다.
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
per_listener_settings true
pid_file /run/mosquitto/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
allow_anonymous false
listener 1883
password_file /etc/mosquitto/passwd

Mosquitto 브로커 구성 파일 인증 사용자 패스
5) CTRL-X를 누른 다음 Y를 누르고 마지막으로 Enter를 눌러 종료하고 변경 사항을 저장합니다.
6) Mosquitto를 다시 시작하여 변경 사항을 적용합니다.
sudo systemctl restart mosquitto
Mosquitto가 실제로 실행 중인지 확인하려면 다음 명령을 실행할 수 있습니다.
sudo systemctl status mosquitto
이제 사용자 이름과 비밀번호로 인증을 활성화했습니다. 브로커와 통신할 때마다 사용자 이름과 비밀번호를 제공해야 한다는 점을 기억하세요.
더 많은 사용자 추가/비밀번호 변경
기존 비밀번호 파일에 더 많은 사용자를 추가하거나 기존 사용자의 비밀번호를 변경하려면 -c 인수를 생략합니다.
mosquitto_passwd <비밀번호 파일> <사용자 이름>
예를 들어, sara 사용자의 비밀번호를 변경하고 싶고 우리가 만든 비밀번호 파일이 passwd라는 것을 고려하면 명령은 다음과 같습니다.
sudo mosquitto_passwd /etc/mosquitto/passwd sara
Raspberry Pi IP 주소
나중에 프로젝트에서 Mosquitto 브로커를 사용하려면 Raspberry Pi IP 주소를 알아야 합니다. Raspberry Pi IP 주소를 검색하려면 Pi Terminal 창에 다음 명령을 입력합니다.
hostname -I

우리의 경우 Raspberry Pi IP 주소는 192.168.1.144입니다. 향후 프로젝트에서 필요하므로 Raspberry Pi IP 주소를 저장하세요.
Mosquitto 브로커 및 MQTT 클라이언트 테스트
Mosquitto 브로커를 설치한 후 설치를 테스트해야 합니다. 다음 튜토리얼을 따라할 수 있습니다.
Raspberry Pi에서 Mosquitto 브로커 및 클라이언트 테스트
마무리
IoT 프로젝트에서 MQTT 프로토콜을 사용하려면 MQTT 브로커가 필수적입니다. MQTT 브로커는 모든 MQTT 메시지를 수신하여 구독한 모든 클라이언트에 전달합니다. 이 튜토리얼에서는 Raspberry Pi에 Mosquitto 브로커를 설치하는 방법을 알아보았습니다.
홈 오토메이션을 좋아하세요? 저의 코스인 $100에 홈 오토메이션 시스템 구축에서 Node-RED, Raspberry Pi, ESP8266 및 Arduino에 대해 자세히 알아보세요.
질문이 있으신가요? 아래에 댓글을 남겨주세요!
읽어주셔서 감사합니다. 이 게시물이 마음에 드셨다면 다음 게시물도 마음에 드실 것 같으니 저의 블로그를 구독하여 저를 지원해주세요.
Install Mosquitto MQTT Broker on Raspberry Pi
https://randomnerdtutorials.com/how-to-install-mosquitto-broker-on-raspberry-pi/
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩