1. 개요
MQTT(Message Queuing Telemetry transport)는 저대역폭 환경에서 M2M (machine to machine) 원격 측정을 위해 설계된 경량 발행-구독 메시징 프로토콜이다. 1999년 초기 버전이 IBM에서 만들어졌고, 2010년 8월에 무료로 오픈되었다. 2011년 11월, IBM과 EUROTECH가 이클립스 프로젝트 PAHO에 MQTT를 기증했고, 2013년, MQTT v3.1을 민간 표준화 기구인 OASIS에 제출하여 2014년 9월에 표준화되었다. 홈 오토메이션(몇년전 뭉뚱그려서 "유비쿼터스"라고 불리던 그것.) 분야의 성장이 예상보다 매우 더디어서 아직까지는 매우 마이너한 기술이다.2. 특징
무선으로 네트워크에 연결된 비교적 단순한 기기들간의 간단한 소통을 목적으로 만들어진 만큼 리소스를 매우 적게 요구하기 때문에 사물인터넷에 최적화된 프로토콜이다. 헤더가 작게는 단 2바이트일 정도로, HTTP와는 비교도 안되게 작다.통신은 '브로커'라고 불리는 서버에 의해 중계되며, 클라이언트들은 임의의 '토픽'을 '구독(subscribe)'하거나 토픽에 메시지를 '게시(publish)'하는 식으로 상호간에 통신한다. 어느 한 클라이언트가 메세지(payload)를 퍼블리싱 하면 브로커(서버)는 해당 토픽을 구독중인 클라이언트들에게 메시지를 보낸다. 이는 마치 인터넷 게시판이나 RSS피드의 작동 방식과 비슷한데, 이러한 구조와 단순하고 가벼운 프로토콜 덕분에 IoT 개념을 탑재한 수많은 기기들 간의 유연한 통신이 가능할 것으로 기대된다.
실제로 현재 IoT 업계에서 허브가 필요한 근거리 통신규격을 대부분 Zigbee를 사용하고 있으나, 통신 규격만 같을 뿐이지 지원되는 허브 자체가 각 제조사별로 천차만별이라 스마트홈을 만든답시고 여기저기서 장비를 사모으다 보면 다른 회사들의 허브를 3개씩 달고 앱도 모두 따로 깔아야 하는 등의 어이없는 일이 벌어지곤 한다. 이런 불편함에서 탄생한 것이 Zigbee2MQTT이며 오픈소스로 운영된다. 제조사별로 (통신 규격만 같을 뿐) 각자 제각각인 제어 수단을 하나로 합치려는 시도인데, Zigbee 통신을 지원하는 제품이 있으면 그것을 MQTT 프로토콜로 통신하여 한번에 제어하는 것을 시도하는 원리다. MQTT 자체가 매우 가볍고 단순하기 때문에 Zigbee만 지원된다면 현존하는 거의 모든 제품이 호환될 정도로 뛰어난 범용성을 자랑한다. 라즈베리 파이나 현재 사용중인 NAS의 Docker에 브로커 서버를 올리고 보통 알리익스프레스 등지에서 저렴한 지그비 동글을 구입해 장착하여 지그비 수신기로 만들면 거의 모든 지그비 제품을 한번에 통제 가능한 저렴한 만능 허브가 된다.