티스토리 뷰
개요
- 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개 파일이 필요함
|
||
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가 나온다.
'embedded' 카테고리의 다른 글
banana pi quick start - 원격 접속 (0) | 2018.07.18 |
---|---|
banana pi quick start - microSD 용량 (0) | 2018.07.18 |
banana pi quick start - os 설치 (2) | 2018.07.18 |
mqtt - raspberry pi 센서 데이터를 서버로 보내기 (3) (1) | 2018.07.13 |
mqtt - raspberry pi 센서 데이터를 서버로 보내기 (2) (0) | 2018.07.13 |
- Total
- Today
- Yesterday
- 티스토리챌린지
- 인텔리제이
- 오블완
- golang
- websocket
- notion
- intellij
- 노션
- 클린 애자일
- 엉클 밥
- 2023
- 독서후기
- 잡학툰
- OpenAI
- 체호프
- API
- 독서
- strange
- 영화
- ChatGPT
- github
- 2024년
- clean agile
- agile
- Gin
- go
- solid
- folklore
- bun
- Bug
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |