MQTT broker 암호화

- user password 설정

* mosquitto broker가 설치되어있는 환경기반으로 진행된것이므로 broker가 없다면 설치 후 진행

 

# cd /etc/mosquitto  //-- mosquitto위치로 이동

# vi mosquitto.conf  //--설정파일 맨 밑에 추가

# 비밀번호 파일경로 설정
password_file /etc/mosquitto/passwd

# 익명접속차단
allow_anonymous false

 

# vi /etc/mosquitto/passwd   // 비밀번호 파일생성

# username:password
user:1234

 

# mosquitto_passwd -U /etc/mosquitto/passwd  // passwd 파일암호화

# cat passwd  // 암호화 확인

# service mosquitto stop  
# service mosquitto start

 

# mosquitto_sub -h localhost -t /topic  //-- 유저 지정이 없을경우 connection error

 

# mosquitto_sub -h localhost -t /topic -u user -P 1234   // subscribe

# mosquitto_pub -h localhost -t /topic -u user -P 1234 -m "test"  //publish

 

Tip) user 추가시 "mosquitto_passwd -b PW파일위치 ID PW" 로 설정가능 
# mosquitto_passwd -b /etc/mosquitto/passwd admin root1234

'개발일지 > 기타' 카테고리의 다른 글

[Android] FCM push 1  (0) 2020.12.16
docker container를 image로 저장 후 tar 생성  (0) 2020.11.26
이클립스 zip 파일 import  (0) 2020.10.06

 

1. mqtt 설치

pip install paho-mqtt

2. python (subscribe.py)

import paho.mqtt.client as mqtt

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.username_pw_set("user", "1234") # broker에 password가 설정되어 있다면 추가 없으면 생략
    client.subscribe("#") # Topic

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    msg.payload = msg.payload.decode("utf-8")
    print("topic: "+msg.topic+" value: "+msg.payload)



client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("localhost") # broker IP

client.loop_forever() #무한루프

 

 

'개발일지 > Python' 카테고리의 다른 글

[Python] 문자열에서 특정 문자 찾기  (0) 2020.08.04
python 버전 upgrade  (0) 2020.05.27
[Python] 리스트 초기화  (0) 2020.05.25
[Python] 소켓통신 (server, client)  (0) 2020.05.22
[Python] 파이썬 백그라운드 실행  (0) 2020.04.29

Javascript MQTT 웹소켓 통신

- 자바스크립트를 이용하여 MQTT 통신

1. js 다운로드 : 

 

mqttws31-min.js
0.03MB
mqttws31.js
0.08MB

 

2. javascript

- 예제 함수 

  • stratConnect() : 랜덤으로 client ID를 생성하여 MQTT Broker에 연결
  • onConnect() : 연결성공 후 topic 설정하여 subscribe 준비
  • onConnectionLost(responseObject) : 연결이 끊길경우 error message 출력
  • onMessageArrived(message) : subscribe message 출력
  • publish(element) : publish message 전송 / element는 HTML 버튼 선택자 (버튼 클릭시 ON/OFF 메시지 전송)
  • startDisconnect() : 연결 종료
// Called after form input is processed
function startConnect() {
    // random client ID 생성
    clientID = "clientID-" + parseInt(Math.random() * 100);

    // broker IP , broker websocket port
    host = "브로커아이피";
    port = "브로커웹소켓포트";

    console.log("Connecting to: "+host+"  on port: "+port+" / clinet value: "+clientID);

    // connection
    client = new Paho.MQTT.Client(host, Number(port), clientID);

    // callback
    client.onConnectionLost = onConnectionLost;

    // Connect the client, if successful, call onConnect function
    client.connect({ 
        onSuccess: onConnect
    });
}

function onConnect() {
    
    topic = "#"; //MQTT 토픽명 (#은 모든 토픽 허용)

    // Print output
    console.log("Subscriving to: "+topic);

    // Subscribe to the requested topic
    client.subscribe(topic);
    client.onMessageArrived = onMessageArrived;

}

// connection error
function onConnectionLost(responseObject) {
    document.getElementById("messages").innerHTML += '<span>ERROR: Connection lost</span><br/>';
    if (responseObject.errorCode !== 0) {
        document.getElementById("messages").innerHTML += '<span>ERROR: ' + + responseObject.errorMessage + '</span><br/>';
    }
}

// subsribe output
function onMessageArrived(message) {
    console.log("onMessageArrived: " + message.payloadString);
}

// send a message (publish)
function publish (element) {
	
	var topic = $(element).attr("id"); //버튼의 id를 topic으로 설정
	
	if(element.checked == true){
		var message = "ON";
	} else {
		var message = "OFF";
	}
	
    message = new Paho.MQTT.Message(message);
    message.destinationName = topic;
    message.qos = 2;

    client.send(message);
}


// disconnection
function startDisconnect() {
    client.disconnect();
    document.getElementById("messages").innerHTML += '<span>Disconnected</span><br/>';
}

 

 

 

+ Recent posts