오늘날 연결된 장치들이 어디에나 있는 세상에서, 사물인터넷(IoT)이라는 용어는 "인터넷에 연결된 위젯"을 뜻하는 사실상의 설명이 되었습니다. 이 화려한, 카멜 케이스(acronym)는 그 자체로 아름답지만, 사람들이 깨닫지 못하는 "인터넷에 연결된 장치들"에는 훨씬 더 많은 것이 있습니다. 이 글에서는 IoT 장치에서 사용되는 가장 널리 사용되는 프로토콜 중 하나인 MQ 텔레메트리 전송(MQTT) 프로토콜에 대해 좀 더 깊이 탐구하고자 합니다. 이 프로토콜이 무엇인지, 어떻게 작동하는지, 그리고 다른 기술들과 비교했을 때 무엇이 새로운지 간략하게 다룰 것입니다. 또한, 아두이노 장치를 사용한 종합적인 예를 통해 설명할 것입니다.
일반적인 클라이언트-서버 설정에서는 제공자(즉, 장치 자체)가 서버에 센서 데이터를 게시하고 소비자가 서버에서 해당 센서 데이터를 보기 위해 요청합니다. MQTT도 마찬가지입니다. 이는 장치 간 통신에 사용되는 경량 프로토콜입니다. 장치는 일반적으로 데이터를 MQTT "브로커"(또는 서버)에 "게시"(즉, 전송)하며, 그러면 다른 장치나 웹 애플리케이션에 제공될 수 있도록 해당 데이터가 보관됩니다. 다른 장치나 웹 애플리케이션은 MQTT 브로커로부터 해당 데이터 세트를 "구독"(즉, 데이터 요청)하고, 그러면 MQTT 브로커가 그들에게 해당 데이터를 전달합니다. 이를 정말로 두 가지 주요 예외를 가진 화려한 웹 서버로 생각해보세요:
위에서 언급한 두 가지 이유로 MQTT는 IoT 장치와 매우 인기 있는 프로토콜이 되었습니다. 역사적으로 사람들은 이러한 형태의 장치-서버 통신을 달성하기 위해 HTTP POST/GET 요청을 사용했지만, 이는 블루투스나 ZigBee와 같은 다른 통신 장치 사용을 제한했습니다. MQTT는 그런 면에서 중립적이므로 이제 인터넷에 연결하지 않고도 MQTT를 사용하여 메시 기반 네트워크 내에서 메시지 전달 기능을 가질 수 있습니다
MQTT를 시작하는 방법은 여러 가지가 있으며, 전체적인 종단 간 솔루션을 설계하는 것을 포함합니다. 간단하게 하기 위해 이 예에서는 Adafruit에서 제공하는 무료 MQTT 브로커 서비스를 활용할 것입니다. 이를 통해 클라이언트 측 개발 프로세스에만 집중할 수 있습니다. 시작하려면 다음이 필요합니다:
환경을 설정하기 위해 먼저 해야 할 몇 가지가 있습니다. 먼저 하드웨어를 설정합시다. 저는 아두이노 우노와 아두이노 이더넷 쉴드를 사용하여 로컬 네트워크에 연결할 것입니다.
이더넷 쉴드를 아두이노 위에 쌓고 네트워크에 다음과 같이 연결해야 합니다:
하드웨어를 구성했으면 아두이노 IDE를 열고 필요한 라이브러리를 설치합시다. 아두이노 IDE를 열고 도구 > 라이브러리 관리...로 이동합니다.
Adafruit MQTT 라이브러리를 검색하고 설치를 클릭합니다:
라이브러리 종속성을 설치하라는 메시지가 표시됩니다. "모두 설치"를 클릭하세요.
지원 라이브러리를 설치한 후에는 파일 > 예제 > Adafruit MQTT 라이브러리 > mqtt_ethernet으로 이동하여 예제를 열 수 있습니다.
이 시점에서 잠시 멈추고 Adafruit IO 계정에서 자격 증명을 가져와야 합니다. Adafruit IO에 로그인하고 상단에 있는 “My Key”를 클릭하세요:
이제 Arduino mqtt_ethernet 스케치 예제로 돌아와서 Adafruit IO 계정에 있는 “Username”과 “Active Key” 필드에 AIO_USERNAME과 AIO_KEY 필드를 채웁니다. 장치가 연결되어 있는지 확인한 다음 업로드를 클릭하세요:
장치의 상태(그리고 MQTT 브로커에 연결되어 있는지 확인하기 위해)를 보려면 도구 > 시리얼 모니터로 이동하세요. 다음과 같은 출력을 볼 수 있어야 합니다:
이 시점에서 데이터가 MQTT 브로커에 성공적으로 전송되고 있음을 확인했습니다. 서버에서 실제 데이터를 보려면 Adafruit IO 계정으로 돌아가서 “Feeds”를 클릭한 다음 “photocell”을 클릭하세요
이제 우리의 Arduino가 MQTT 브로커에 보내는 데이터의 실시간 캡처를 얻게 됩니다. 또한 과거 데이터도 다운로드할 수 있습니다.
축하합니다! 이제 MQTT를 활성화한 장치를 설정하고 데이터를 MQTT 브로커에 게시했습니다. 이제 나만의 맞춤 센서를 구축하고 MQTT 브로커에 데이터를 게시하는 다음 단계로 나아가십시오.
이 글에서 우리는 MQTT가 무엇인지, 왜 사용되는지, 그리고 마이크로컨트롤러에 어떻게 구현하는지에 대해 배웠습니다. 또한 무료 MQTT 브로커 서비스를 시작하는 방법과 그들의 서버에서 데이터를 보는 방법을 시연했습니다. 이제 우리가 사용한 예제를 바탕으로 자신만의 아두이노 스케치를 시작하고, 자신의 센서 데이터를 MQTT 브로커에 게시하고 클라우드에서 볼 수 있어야 합니다.