이 내용을 수행하기 위해서는 ...
- 라즈베리파이에 운영체제가 설치되어 있어야 합니다.
- 아래 내용은 ssh 연결을 통해서 라즈베리파이 모니터를 사용하지 않습니다. ssh 연결을 할 수 있어야 하고, linux 명령어를 알고 있어야 합니다.
- 라즈베리파이의 업데이트가 완료된 상태입니다. 먼저 업데이트를 다 진행해주셔야 합니다.
MQTT 는 사물인터넷을 사용하기 위해 개발된 TCP 기반의 프로토콜로서 낮은 전력, 낮은 대역폭, 낮은 성능의 환경에서도 사용 가능한 통신입니다.
통신의 방법은 publisher -> broker -> subscrivber로 진행됩니다.
통신 방법에 있어서 topic
을 사용하여 데이터를 주고받을 수 있는 경로를 지정할 수 있습니다.
component/device
의 topic을 가지는 전송의 경우, 해당 data가 component/server
로 전송되지 않습니다.mosquitto 는 MQTT 브로커를 실행할 수 있는 오픈소스입니다. 이 브로커는 publish/subscribe를 위한 커맨드라인 유틸리티까지 제공합니다.
먼저 mosquitto 설치 전 서명키를 다운로드 합니다.
cd ~
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
mosquitto 저장소 패키지를 등록합니다.
cd /etc/apt/source.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list
mqtt broker를 설치합니다.
sudo apt-get update
sudo apt-cache search mosquitto
sudo apt-get install mosquitto mosquitto-clients
mosquitto를 실행합니다.
```bash
sudo /etc/init.d/mosquitto start
```
환경 설정을 하고 나면 topic을 이용해 메시지를 보내고 받을 수 있습니다.
mosquitto_sub -d -t hello/world
mosquitto_pub -d -t hello/world -m "Hi!"
그냥 사용하려고 하는 경우에는 라즈베리파이 내부에서 publish, subscribe는 원활하게 잘 동작하지만, 외부와는 접근이 차단됩니다. 이를 해결하기 위한 선행 과제가 있습니다.
Mac에도 Mosquitto가 설치되어 있어야 라즈베리파이로 topic을 가지는 메시지를 전달할 수 있습니다.
Mac 환경이므로 brew를 사용해 설치하도록 하겠습니다.
# 모스키토 설치
brew install mosquitto
# 모스키토 서비스 실행
brew services start mosquitto
라즈베리파이에서 설치한 mosquitto 의 경우 기본적으로 외부 IP로부터 접근을 차단합니다. conf 파일 편집을 통해서 외부 IP 허용과 권한을 부여하겠습니다.
cd /etc/mosquitto/
sudo vi mosquitto.conf
bind_address 0.0.0.0 # 모든 IP 허용
allow_anonymous true # 외부인에 대한 권한 허용
sudo systemctl restart mosquitto
mosquitto_sub -d -t hello/world
mosquitto_pub -h 192.168.10.74 -t hello/world -m "Hi Mosquitto"