MQTT (Message Queuing Telemetry Transport)
- ISO 표준(ISO/IEC PRF 20922) publish - subscriber 기반의 메시징 프로토콜.
- TCP/IP 프로토콜 위에서 동작하며 IoT 시스템에서 주로 사용.
- 공식사이트: https://mqtt.org
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
AWS IoT Core
- 별도의 인프라 구축없이 IoT device를 관리할 수 있게 해 주는 AWS 클라우드 서비스
- MQTT 및 HTTPS 를 지원
Mosquitto
- 오픈소스 MQTT 메시지 브로커 (https://github.com/eclipse/mosquitto)
- publish/subscribe 모델을 이용한 경량화 통신 기능을 제공
- cmd 기반으로 동작. 매우 가볍다.
- 공식사이트: https://mosquitto.org/
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 설치 (윈도우11)
openSSL 을 함께 설치해야 된다고들 하는데, 나는 따로 openSSL은 설치하지 않았지만 잘 동작하였다.
설치 후 시스템 환경변수에 path 설정.
# AWS IoT Core 에 사물 및 인증서 생성
경로 1
사물과 정책, 인증서 등을 각각 생성.
총 5개의 인증서 파일이 생성되어 다운로드 받을 수 있는데 mosquitto 테스트에서는 표시한 3개의 인증서 파일이 필요하다. key 파일의 경우 이 화면이 지나면 다운받을 수 없으므로 반드시 받아야 한다.
경로 2
조금 더 쉽게 필요 요소 한번에 생성
'디바이스 연결' 메뉴를 통할 경우, 사물, 정책, 디바이스 쉐도우, 인증서 등이 한번에 생성되는데, '연결 키트 다운로드' 를 통해 인증서 및 기본 테스트 코드를 받을 수 있다. CA 인증서(root-CA.crt 파일)는 키트에 포함되어 있는 start.sh 를 실행하여 얻을 수 있다. 이 경로로 생성되는 인증서 파일은 파일명이 좀 더 깔끔하다.
# 정책 편집
기본 생성되는 정책에서 테스트를 위해 모든 동작이 허용되도록 아래와 같이 변경하였다.
# mosquitto 서비스 실행
> net start mosquitto
# AWS IoT 콘솔 'MQTT 테스트 클라이언트' 메뉴 설정
외부에서 발행한 MQTT 메시지가 AWS IoT 로 잘 들어오는지 확인하기 위한 테스트 클라이언트 설정.
# MQTT publish
> mosquitto_pub -h '~~~~east-2.amazonaws.com' -t 'mqttTest' -m '{\"test\":\"11\"}' -p 8883 --cafile .\root-CA.crt --key .\blogTest.private.key --cert .\blogTest.cert.pem
- -h: mqtt host (디바이스 엔드포인드 - AWS IoT 설정에서 확인)
- -t: publish 할 mqtt topic
- -m: 전달메시지
- -p: port. mosquitto 기본 1883 이지만, AWS IoT 의 경우에는 8883 사용
- --cafile: CA인증서 (서버 인증)
- --cert: 디바이스 인증서 (클라이언트 인증)
- --key: 클라이언트 private key
# 결과
의도한 대로 'mqttTest' 토픽으로 메시지가 잘 전달된다.
'프로그래밍 > etc' 카테고리의 다른 글
VMWare 실행시, "다른 프로세스가 파일의 한 부분을 잠갔으므로, 프로세스가 해당 파일을 액세스 할 수 없습니다" 오류 (Cannot open the disk or one of the snapshot disks it depends on.) (0) | 2022.09.14 |
---|---|
HDR 사진 출력시 화면 밝기 이상 현상 (Windows 11) (0) | 2022.07.12 |
타임스탬프 변환 (Epoch/Unix timestame conversion) (0) | 2022.06.17 |
MySQL, MariaDB 무료 Client Tool (0) | 2022.05.27 |
Outlook 에서 읽은 상태 설정 변경 (0) | 2022.05.11 |