IoT(Internet of Things, 사물인터넷)은 인터넷을 통해 서로 연결된 물리적 장치들이 데이터를 교환하고 상호작용하는 기술입니다.
이 개념은 1980년대 후반에 등장하였으며 1999년 Kevin Ashton이라는 연구원이 “Internet of Things”용어를 처음 사용하면서
개념이 구체화되기 시작했습니다.
이후, 2000년대 스마트폰과 무선 인터넷 기술의 발전으로 IoT는 빠르게 확산되었고, 클라우드 컴퓨팅과 빅데이터의 등장으로
IoT는 비즈니스와 산업 분야에서 중요한 역할을 맡게 되었습니다.
최근 몇 년은 5G와 같은 고속 인터넷 기술의 발전에 힘입어 더욱 다양한 장치에도 사용되고 있습니다.
IoT의 가장 큰 장점은 사물들이 스스로 정보를 수집하고 분석하여 동작한다는 점입니다. 이로 인해 인간의 개입을 최소화하고,
자동화를 이루며 생산성을 높이고 비용을 절감시킬 수 있습니다. 또한, IoT기기는 대량데이터를 수집하고 분석 및 모니터링할 수 있어
효율성을 크게 향상시킬 수 있습니다. 예를 들면 스마트 홈 기기나 산업 자동화 시스템이 있습니다.
하지만 IoT 시스템은 저전력을 위한 Wi-Fi나 Bluetooth와 같은 네트워크를 사용하기 때문에, 고속 데이터 전송이나
정밀한 동기화가 필요한 경우 한계가 있습니다. 예를 들어, 진동, 소음, 고속 주파수와 같은 고속 데이터 측정에는
IoT만으로는 처리하기 어렵습니다.
이 경우, DAQ(Data Acquisition) 시스템을 사용하여 고속 데이터를 수집하고 동기화하는 방법이 더 적합 합니다.
그래서 주로 고속 데이터 측정이나 동기화가 필요하지 않은 경우에는 IoT 시스템을 활용합니다.
예를 들어, IoT를 이용한 수질 모니터링이나 경산시의 스마트 악취 및 미세먼지 모니터링은 IoT 기술을 효과적으로 적용할 수 있는 분야입니다.
이러한 시스템은 온도, PH값, 용존 산소 등 다양한 환경 데이터를 수집하여 실시간으로 모니터링 하여 사용합니다.
(이미지 참조 : https://www.dusuniot.com/ko/blog/iot-based-water-quality-monitoring/)
IoT에서 가장 널리 사용되는 메시징 프로토콜은 MQTT (Message Queuing Telemetry Transport)입니다.
MQTT는 저대역폭 환경에서 M2M(machine to machine) 네트워크 대역폭이 제한적이고,
장치의 처리 능력이 낮은 경우에도 효율적으로 동작하도록 설계되었습니다. 그렇기 때문에 대역폭, 배터리 및 리소스 측면에서 효율적입니다.
또한 MQTT는 수천 개의 클라이언트와 동시에 연결할 수 있으며, Broker를 여러 대 사용하여 분산형 시스템으로 확장할 수 있습니다.
이렇게 하면 대규모 IoT 시스템에서도 안정적으로 메시지를 전달할 수 있기 때문에 저전력을 필요로 하는 IoT의 프로토콜로
많이 사용하고 있습니다.
MQTT는 게시/구독(Publish/Subscribe) 모델을 사용합니다. IoT 디바이스는 TCP를 통해 MQTT Broker라는 서버에 데이터를
주제로 게시합니다. Broker는 클라이언트가 발행한 메시지를 받아서, 이를 구독한 다른 클라이언트에게 전달하는 역할을 하며, 이를 통해 중앙에서 모든 장치의 통신을 제어하고 모니터링할 수 있습니다.
인증된 클라이언트는 모든 주제를 구독할 수 있으며 게시자가 쓰는 대로 Broker로부터 값을 받을 수 있습니다.
이 방식 덕분에, 통신하는 장치들이 서로 직접 연결되지 않고, Broker를 통해 간접적으로 통신할 수 있습니다. 게시자(디바이스)는 구독자에 대해 알 필요가 없으므로 디바이스 레벨에서 관리하기 쉽습니다. Broker는 여러 디바이스에서 여러 가지 동시 연결을 지원할 수 있습니다.
주제는 계층적 레벨을 가질 수 있는 단순 문자열입니다. 주제의 예로는 GothamCityPlant/Building1/Pump7/Power가 있습니다. GothamCityPlant가 가장 상위 레벨이며, Power가 가장 하위 레벨입니다.
MQTT는 메시지의 전송 품질을 보장하기 위해 3개의 QoS 수준을 제공합니다.
여기서 QoS 란 한정된 네트워크 자원 내에서 특정 트래픽이 일정수준의 성능, 속도를 보장받는 네트워크 기술입니다.
이 기능을 통해 메시지 전달의 신뢰성을 조정할 수 있습니다.
• QoS 0: "최대 한 번" 메시지가 전달됩니다. 즉, 메시지가 한 번만 전송되고, 전송 실패 시 재전송하지 않습니다.
• QoS 1: "최소 한 번" 메시지가 전달됩니다. 메시지가 성공적으로 전달될 때까지 재전송됩니다.
• QoS 2: "정확히 한 번" 메시지가 전달됩니다. 중복 없이 정확히 한 번만 메시지가 전달합니다.
MQTT는 기본적으로 TCP에 기반으로 한 간단한 프로토콜이기 때문에 암호화나 인증기능을 제공하지 않지만,
TLS/SSL을 통한 보안 통신을 지원합니다. 이를 통해 데이터 전송 중에 중간자 공격이나 데이터 도청을 방지할 수 있습니다.
인증 및 권한 관리는 Broker에서 처리할 수 있습니다.
MQTT에서 Broker가 가장 중요한 역할을 합니다. 따라서 사용목적에 맞는 Broker를 고르는 것이 중요합니다.
MQTT의 Broker로 사용할 수 있는 소프트웨어로 Rabbit MQ와 Mosquitto, HiveMQ , EMQ가 많이 언급됩니다.
Mosquitto는 무료 오픈소스로 MQTT를 위해 특별히 설계되어 간소화되고 효율적입니다.
또한 C로 작성되어 리눅스, 윈도우 및 Mac에서도 사용이 가능합니다.
RabbitMQ는 AMQP를 지원하는 메시지 Broker로 쉽고 플러그인을 통해 MQTT, STOMP등 다양한 프로토콜을 지원합니다.
다양한 교환 유형에 따라 유연한 라우팅 기능을 제공하므로 복잡한 기업 메시징 시스템에 적합합니다.
HiveMQ 상용 및 오픈소스 버전이 모두 제공되며 클러스터링 및 로드 밸런싱을 지원하여 고가용성을 보장합니다.
엔터프라이즈 환경에 적합 합니다.
EMQ는 RabbitMQ와 마찬가지로 메시징 큐 시스템이지만 MQTT 프로토콜에 최적화되어 설계되었습니다.
상용 및 오픈소스 버전이 모두 제공되며 고급 보안 기능지원 업그레이드 버전으로 EMQX가 있습니다.
LabVIEW에서 브로커를 생성하지 않아도 EMQX나 mosquitto에서 제공하는 무료 MQTT Broker를 통해 테스트할 수 있습니다.
⚫ EMQX 공개 MQTT broker domain: broker.emqx.io
⚫ Mosquitto 공개 MQTT broker domain: test.mosquitto.org
⚫ HiveMQ 공개 MQTT broker domain: broker.hivemq.com