[1] MQTT (Message Queuing Telemetry Transport)
1. MQTT 개요
MQTT - The Standard for IoT Messaging
Why MQTT? Lightweight and Efficient MQTT clients are very small, require minimal resources so can be used on small microcontrollers. MQTT message headers are small to optimize network bandwidth. Bi-directional Communications MQTT allows for messaging betwe
mqtt.org
① Broker
- 단어 그대로 Publisher와 Subscriber 사이의 중재자 역할
- Subscriber가 구독한 topic을 갖고 대기
- Publisher가 특정 topic으로 송신한 message를 수신 후, 그 topic을 구독한 Subscriber에게 해당 message를 송신
② Publisher
- Broker에게 특정 topic에 대해서 message를 송신
③ Subscriber
- 특정 topic을 구독하겠다고 Broker에게 송신한 뒤, 대기
- Broker가 해당 주제의 message를 받아서 송신해 주면, 그 message를 수신
2. Broker SW 설치
- 여러 Broker SW가 있지만 Mosquitto를 사용해보자.
Eclipse Mosquitto
Eclipse Mosquitto is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto is lightweight and is suitable for use on all devices
mosquitto.org
- 최신 버전 말고, 이전 버전으로 다운 받고 설치
-> mosquitto-1.6.9-install-windows-x64.exe
https://mosquitto.org/files/binary/win64/
Index of /files/binary/win64/
mosquitto.org
3. 시스템 변수에 경로 추가
- 탐색기에서 내PC 오른쪽 버튼 -> 속성 -> 고급 시스템 설정 -> 환경 변수
-> 시스템 변수 중에 Path 누르고 편집 -> 텍스트 편집 -> 변수 값에 다음 경로 추가(세미콜론 꼭 넣을 것)
C:\Program Files\mosquitto
4. MQTT 통신 테스트
1) 명령 프롬프트 4개 실행
2) 명령 프롬프트 창1에서 broker 실행
- 명령어> mosquitto -v
※ mosquitto 명령어 옵션
3) 명령 프롬프트 창2에서 subscriber1 실행
- 명령어> mosquitto_sub -t iot
- -t : topic
4) 명령 프롬프트 창3에서 subscriber2 실행
- 3)과 동일하게
5) 명령 프롬프트 창4에서 publisher 실행
- 명령어> mosquitto_pub -t iot -m "led_on"
- -m : message
6) subscriber에서 broker의 IP로 접근
- 위에서는 단순히 내 PC 안에서만 접속을 확인한 것
- 외부에서도 접속이 되는지 확인하기 위해 IP로 접속을 테스트 한다.
- 명령어> mosquitto_sub -h XXX.XXX.XXX.XXX -p 1883 -t iot
- -h : host IP 입력
- -p : port (1883으로 고정)
7) publisher에서 broker의 IP로 접근 및 메시지 전송
- 명령어> mosquitto_pub -h XXX.XXX.XXX.XXX -p 1883 -t iot -m "led_on"
- subscriber에 정상적으로 전송됐는지 확인
8) publisher에서 메시지를 여러 개 보내고 싶은 경우
- JSON 형식으로 전송할 수 있다.
- 명령어> mosquitto_pub -h XXX.XXX.XXX.XXX -p 1883 -t iot -m "{\"h\":65, \"t\": 24}"
5. Python에서 paho.mqtt 패키지 사용
1) paho-mqtt 패키지 설치
2) publisher로 message 전송
- publish 모듈의 single 메소드 사용
- 매개변수 : topic, payload(message), hostname(broker IP) 등
import paho.mqtt.publish as publish
publish.single("iot", "led_on_off", hostname="XXX.XXX.XXX.XXX")
6. 라즈베리파이를 client로 사용하기 위한 설치
1) mosquitto-clients 설치
- 명령어: ~$ sudo apt-get install mosquitto-clients
※ 설치 확인 명령어:~ $ dpkg -L mosquitto-clients
2) paho.mqtt 패키지 설치
- 명령어: ~$ pip3 install paho.mqtt
※ Windows의 명령 프롬프트에서 사용한 명령어를 라즈베리파이 Terminal에서도 동일하게 사용하여 client로서 통신할 수 있다. 라즈베리파이는 broker(server) 역할을 하면 안 되기 때문에 client로, 즉 subscriber나 publisher로만 사용해야 한다.
- 끝 -
'프로젝트형 IoT 서비스 개발 4회차 > 3. 게이트웨이 디바이스 제어' 카테고리의 다른 글
[Day56] 2022-04-18(월) 라즈베리파이5 - Thread1 - 김서연 강사님 (1) | 2022.04.18 |
---|---|
[Day55] 2022-04-15(금) 라즈베리파이4 - MQTT2(paho.mqtt) - 김서연 강사님 (0) | 2022.04.15 |
[Day54] 2022-04-14(목) 라즈베리파이 준비7 - Visual Studio Code - 김서연 강사님 (0) | 2022.04.14 |
[Day53] 2022-04-13(수) 라즈베리파이2 - GPIO2(PWM) - 김서연 강사님 (0) | 2022.04.13 |
[Day52] 2022-04-12(화) 라즈베리파이1 - GPIO1(PUSH버튼) - 김서연 강사님 (0) | 2022.04.12 |