2015년 3월 5일 목요일

Raspberry Pi에 Mosquitto (MQTT broker) 설치하기

IoT에서 많이 이야기되고 있는 MQTT를 사용하려면 브로커가 있어야만 한다. 오픈소스로 쉽게 사용할 수 있는 브로커로 Mosquitto가 있다. (모기와는 스펠링이 아주 조끔 다름)



라즈베리 파이에 설치하는 경우 mosquitto의 개발자인 Roger Light이 Mosquitto Debian Repository를 만들어 놓았기 때문에 이를 이용하면 손쉽게 최신버젼을 설치할 수 있다. 먼저 repository를 추가해 줘야 한다.

$ curl -O http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
$ sudo apt-key add mosquitto-repo.gpg.key
$ rm mosquitto-repo.gpg.key
$ cd /etc/apt/sources.list.d
$ sudo curl -O http://repo.mosquitto.org/debian/mosquitto-repo.list

$ sudo apt-get update

이제 repository가 추가되었으니 mosquitto를 설치하면 된다. mosquitto, mosquitto-clients, python-mosquitto 3개의 패키지가 있고 전부 설치해도 약 665KB의 공간만을 차지하기 때문에 설치하는데 공간 부담은 별로 없다.

* mosquitto : MQTT 브로커
* mosquitto-clients : 커맨드라인 클라이언트
* python-mosquitto : python binding

apt-get으로 설치하면 된다.


$ sudo apt-get install mosquitto mosquitto-clients python-mosquitto

설치가 완료되면 mosquitto가 자동으로 실행된다.

설정을 변경하고 싶으면 먼저 mosquitto의 실행을 중단시킨다.

$ sudo /etc/init.d/mosquitto stop

이제 원하는대로 설정을 변경하면 된다. 설정파일은 디폴트로 /etc/mosquitto/mosquitto.conf 가 된다. 설정을 변경했으면 제대로 동작하는지 확인해 볼 수 있다.

$ sudo /usr/bin/mosquitto -c /etc/mosquitto/mosquitto.conf
1378042632: mosquitto version 1.2 (build date 2013-08-09 21:49:03+0100) starting
1378042632: Config loaded from /etc/mosquitto/mosquitto.conf.
1378042632: Opening ipv4 listen socket on port 1883.
1378042632: Opening ipv4 listen socket on port 8883.
1378042632: Opening ipv6 listen socket on port 8883.
1378042632: Warning: Address family not supported by protocol ...^C 1
378042634: mosquitto version 1.2 terminating

1378042634: Saving in-memory database to /tmp/mosquitto.db.

원하는대로 설정이 된것이 확인되었으면 다시 서비스를 시작시키면 된다.

sudo /etc/init.d/mosquitto restart

이제 MQTT publisher/subscriber가 브로커를 사용할 수 있다.

만일 TLS를 사용하도록 설정해 놓은 경우 mosquitto 클라이언트는 CA certificate(ca.cert)의 복사본을 가지고 있어야만 브로커에 억세스 할 수 있다. ca.cert는 public certificate이기 때문에 암호화 하지 않고 전달해도 상관없다.


$ mosquitto_pub —cafile ca.cert -h 127.0.0.1 -p 8883 …

새 버젼인 mosquitto 1.2 클라이언트는 디폴트로 TLS v1.2를 사용하기 때문에 TLS v1을 사용하도록 하려면 옵션을 추가해 줘야 한다.


$ mosquitto_pub —cafile ca.cert -h 127.0.0.1 -p 8883 —tls-version tlsv1 …



댓글 없음:

댓글 쓰기