레이블이 Open source software인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Open source software인 게시물을 표시합니다. 모든 게시물 표시

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 …