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
사용자 추가
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 -c /usr/local/mosquitto/mosquitto.conf
라즈베리파이 wlan 절전 해제
sudo nano /etc/network/interfaces
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 |