728x90

Install Mosquitto:

CODE: SELECT ALL

wget 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 wget http://repo.mosquitto.org/debian/mosquitto-repo.list
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients



Test Mosquitto:

(broker) Terminal window 1:

mosquitto -v


...port 1833 


(sub) Terminal window 2:

mosquitto_sub -t test




(pub) Terminal window 3:

mosquitto_pub -t test -m "Good morning"




허용된 유저만 접속하도록 설정



사용자 유저/패스워드를 담는 파일

sudo nano mosquitto_auth.txt   



mosquitto 설정 파일 수정

sudo nano /etc/mosquitto/mosquitto.conf



다음과 같이 수정한다.
allow_anonymous false

password_file /etc/mosquitto/mosquitto_auth.txt


사용자 추가

 sudo mosquitto_passwd /etc/mosquitto/mosquitto_auth.txt <사용자_이름>


비밀번호 입력 및 재 입력을 통해 추가한다.



이후 MQTT Dashboard에서 사용자 이름과 패스워드를 넣고 접속을 해야만 pub 이 가능한 걸 볼 수 있다.




mosquitto start / stop / restart

sudo /etc/init.d/mosquitto start



mosquitto 인증 플러그인


기존의 설치된 mosquitto를 제거, 아래 사이트에서 wget으로 최신 버전을 받아 압축해제한다.

https://mosquitto.org/download/



config.mk 파일 수정

WITH_SRV:=yes를 no로 수정



make 하고 make install 한다.



mosquitto-auth-plug 다운

https://github.com/jpmens/mosquitto-auth-plug


압축 해제 후 config.mk 파일을 적절하게 수정 (config.mk.in을 mk로 바꿔서 수정한다. 사전에 openssl 설치 및 컴파일도 필요)


# Select your backends from this list

BACKEND_CDB ?= no

BACKEND_MYSQL ?= yes

BACKEND_SQLITE ?= no

BACKEND_REDIS ?= no

BACKEND_POSTGRES ?= no

BACKEND_LDAP ?= no

BACKEND_HTTP ?= no

BACKEND_JWT ?= no

BACKEND_MONGO ?= no

BACKEND_FILES ?= no


# Specify the path to the Mosquitto sources here

# MOSQUITTO_SRC = /usr/local/Cellar/mosquitto/1.4.12


MOSQUITTO_SRC = /usr/local/mosquitto


# Specify the path the OpenSSL here


#OPENSSLDIR = /usr/bin

OPENSSLDIR = /usr/local/openssl


# Specify optional/additional linker/compiler flags here

# On macOS, add

#       CFG_LDFLAGS = -undefined dynamic_lookup

# as described in https://github.com/eclipse/mosquitto/issues/244


# CFG_LDFLAGS = -undefined dynamic_lookup  -L/usr/local/Cellar/openssl/1.0.2l/lib

# CFG_CFLAGS = -I/usr/local/Cellar/openssl/1.0.2l/include -I/usr/local/Cellar/mosquitto/1.4.12/include


#CFG_LDFLAGS = -undefined dynamic_lookup  -L/usr/local/openssl/

#CFG_CFLAGS = -I/usr/local/openssl/include -I/usr/local/mosquitto-1.4.14/include

#CFG_CFLAGS = -DRAW_SALT


make하여 생긴  auth-plug.so 파일을 mosquitto 경로(/usr/local/mosquitto) 로 옮겨준다.

mosquitto.conf 에서 # security 항목을 찾아 적절히 수정한다. 


#auth_plugin

auth_plugin /usr/local/mosquitto/auth-plug.so

auth_opt_backends mysql

auth_opt_host localhost

auth_opt_port 3306

auth_opt_dbname 


auth_opt_user root

auth_opt_pass 


auth_opt_userquery SELECT pw FROM users WHERE username = '%s'

#auth_opt_superquery SELECT IFNULL(COUNT(*), 0) FROM users WHERE username = '%s' AND super = 1

auth_opt_aclquery SELECT topic FROM acls WHERE username = '%s'


port 1883

protocol mqtt



mosquitto 브로커 시작

mosquitto -c /usr/local/mosquitto/mosquitto.conf




라즈베리파이 wlan 절전 해제


 sudo nano /etc/network/interfaces



wlan 항목 찾아서 wireless-power off 추가

auto wlan0

allow-hotplug wlan0

iface wlan0 inet dhcp

wireless-power off

    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf





'Study > Embedded' 카테고리의 다른 글

라즈베리파이에서 nginx, php, php-sqlite 설치  (0) 2017.08.10
wizfi 250, mqtt-sqlite 센서값 전송  (0) 2017.08.03
라즈베리 HTTP 서버 구축  (0) 2017.06.27
GCM  (0) 2017.06.27
라즈베리파이, Pi4J를 통한 GPIO 제어  (0) 2017.06.20

+ Recent posts