티스토리 뷰

개요

 

- mqtt 구성하는 녀석은 publish, subscribe, broker 보면 된다.

1) 특정 topic 으로 데이터를 publish 하는 놈이 있고

2) 특정 topic 대해 subscribe 하는 놈이 있으며,

3) publish 하는 놈이 broker에게 주면, broker topic subscribe 놈들에게 보내준다.

 

 

기본 동작

 

아래 그림을 보자 (출처: https://goo.gl/SescBN)

 

동작 순서는 다음과 같다.

1) 동작하는 Broker 있어야 하며 subscriber, publisher ip, port 정보를 알아야 한다

2) Subscriber Broker 연결하고, 원하는 topic subscribe 한다.

- , 이런 토픽이 오면 제게 보내주세요. 하는

- 아래 그림에서는 Client-D E Topic1 subscribe

- Client-F Topic2, Client-C Topic3 subscribe 했다.

3) Publisher Broker 연결하고, 특정 Topic 으로 message publish 한다.

- 그러면 해당 Topic 구독한 Subscirber 들에게 message 전달된다.

- 아래 그림에서 개만 보면,

Client-C Topic2 message 를 Publish 하고 Broker 이를 Client-F 에게 전달한다

Client-F Topic3으로 message Publish 하고 Broker 이를 Client-C 에게 전달한다


 

 

참고. QoS Retained

 

Retained

- Publisher retained true 하여 publish 하면

- Broker true publish 가장 마지막 message 항상 가지고 있는다

- 그러면 새로 해당 topic subscirbe 하는 Subscirber 생겨도 가장 마지막 message 즉각적으로 받게 된다.

, 다음번 publish 전까지 아무것도 받지 못하는 상황을 면하게 된다.

 

Qos - Quality of Servece

 

- 참고링크: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels

- 0, 1, 2 값을 가지며 각각, 한번만, 최소한 한번, 정확히 한번만 보낸다는 의미를 가진다.

 

- QoS 0 - at most once 이면 Client Broker 에게 한번만 publish 하고 끝이다.

- QoS 1 - at least once 이면 Client Broker 에게 publish PUBACK 이라는 잘받았다는 메시지를 받는다.

메시지를 받을때까지는 Client 메시지를 보관하게 된다.

- QoS 2 - exactly once 이면 한번만 주고받는 것을 보장한다.

1) Client PUBLISH 한다

2) Broker PUBREC 할당한 packetId 보낸다

3) Client 보낸걸 확인했으니, message 지우고, packetId 다시 Broker에게 보낸다. PUBREL

4) Broker packetId 비교해서 이상없음을 확인후 PUBCOMP 보냄

 

 

구현개요

 

1) windows broker 설치

2) windows subscriber 구현

3) 라즈베리파이에 publisher 구현. 센서정보 전달

 

Windows broker 설치

 

- 가이드 링크: https://goo.gl/Teb1la

 

- mosquitto 라는 broker 설치해보자

- open source (EPL/EDL licensed) message broker

- 다운로드: https://mosquitto.org/

- 설치중 Dependency 설치를 요구함 - 아래 3 파일이 필요함

 


- libeay32.dll (OpenSSL)

- ssleay32.dll (OpenSSL)

- pthreadVC2.dll

http://slproweb.com/products/Win32OpenSSL.html 에서

Win32 OpenSSL v1.0.2o Light 설치후 dll mosquitto 디렉토리로 복사 (C:\Program Files (x86)\mosquitto)

- 현시점 최신인 v1.1.0h 에서는 필요한 파일이 없었음

ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/dll/x86/pthreadVC2.dll

- pthreadVC2.dll 다운로드후 mosquitto 디렉토리로 복사 (C:\Program Files (x86)\mosquitto)

 

- dll mosquitto 폴더로 복사한 다음에 다시 mosquitto 설치를 하자.

- 그러면 윈도우 서비스에 mosquitto 설정되어 있는 것을 확인할 있다.

 


 

mosquitto broker 설치 되었는지 테스트

 

- 원문링크: https://goo.gl/lJk6jF

- 구글 크롬 extention 통해 간단히 테스트해볼 있다.

- MQTTLens 사용하여 설치한 mosquitto 동작을 확인해보자

 

1) MQTTLens 설치. https://goo.gl/7RQYGC

2) mosquitto 우선 실행하고, 돌아가는 것을 확인한다.

- command 창에서 netstat -an 명령으로 1883 포트 동작을 확인


 

3) MQTTLens 실행후 host 등록

 

- 현재 컴퓨터에 할당된 IP 주소를 확인하여 적기 - 여기서 노트북은 192.168.2.9 였다.

- mosquitto broker 디폴트 Port 1883

- CREATE CONNECTION 으로 연결 생성

 


 

4) 연결 확인, Subscirbe Publish topic 설정

 

- 왼쪽에 test 라는 connection 연결되었다는 초록색 아이콘이 보임

- 테스트 앱은 publish subscribe 해주는 역할임.

- 따라서, topic home/sensor1/data/ 각각 설정해줌

- QoS 0,1,2 설정할 있음. 메시지 전달을 얼마나 정확하게 해줘야는지 정도라고 보면

- 실제 동작은 초록색 SUBSCRIBE 버튼 한번 누르고,  PUBLISH 버튼 한번 누르면 .

- 아래쪽에 Subscription 정보와 이후 Publish 하였을때에 받은 Message 나온다.




반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함