3.3 스마트 홈 시스템 설계
3.3.2 게이트웨이 설계
센서 디바이스 3의 메인 프로그램의 동작은 그림 3.8과 같다.
그림 3.8 센서 디바이스 3 프로그램 순서도 Fig 3.8 Flow chart of program for Sensor Device 3
게이트웨이의 주요 기능은 다음과 같다
게이트웨이의 메시지 송수신을 위해서 MQTT를 사용하는데 MQTT 자체는 메시지를 어떻게 보낼 것인지를 정의하는 규약일 뿐, 실제 MQTT를 동작시 키기 위해서는 서버 역할을 해주는 프로그램이 필요하다. 따라서 MQTT 프 로토콜을 지원하는 메시지 브로커 서버인 Mosquitto를 설치하여 운영한다.
Mosquitto 오픈소스는 효율적이고 경량의 통신으로 양방향 pub/sub 메시징 서비스가 가능하고 이기종 플랫폼 간에 개발이 용이하다. 또한 웹브라우저 에 정보를 제공하기 위해 HTTP 프로토콜 대신에 웹 소켓을 지원하여 Mosquitto의 웹 소켓 서버를 통해 웹 브라우저를 이용해서 실시간 정보를 가시화한다.
사물인터넷 하드웨어 플랫폼과 온라인 서비스를 동시에 다루기 위해서 응용 개발 도구인 Node-RED를 사용하여 기본적으로 게이트웨이를 통하여 수집 된 정보는 그대로 또는 재해석하여 화면에 텍스트나 그래프형태로 시각화한 다. 해당 정보는 스마트폰 앱을 통해서 정보를 확인하거나 경우에 따라 액 추에이터를 구동할 수도 있다. Node-RED는 게이트웨이에서 사물 연결 플랫 폼 역할을 수행한다. 게이트웨이에 연결된 센서, 통신, 자원 등 모든 것이 추상화된 사물 연결 플랫폼인 Node-RED를 통해서 서비스가 가능하다. 또한 MySQL 데이터베이스 서버와 개방형 클라우드 서비스에 정보를 저장하고, 중요한 정보는 트위터를 통해 사용자에게 알람 서비스를 전달한다. 카메라 를 통해서 수집된 영상 정보는 외부에서 이메일과 메신저로 실시간 확인할 수도 있다.
MQTT는 아두이노나 라즈베리 파이 같은 임베디드 장치간 통신을 위한 가벼 운 메시징 프로토콜이다. 본 시스템을 구축하는데 안정적인 데이터 수집을 위 해서 센서 디바이스와 게이트웨이 사이의 통신은 사물인터넷 표준 프로토콜인 MQTT를 적용하여 통신량을 줄일 수 있도록 하였다.
본 시스템에서는 다른 상용제품에 비해 성능이 우수하고 오픈소스로 활용할
수 있는 Mosquitto MQTT broker를 사용한다. 그림 3.9은 제안한 시스템에서 사 물인터넷 센서 디바이스와 사물인터넷 게이트웨이 사이에 데이터를 송․수신하 기 위한 MQTT의 발행/구독의 모델 구조를 보여준다. 앞서 언급하였듯, MQTT 프로토콜은 토픽 구조로 정보를 전송하게 된다. 라즈베리 파이에 설치된 MQTT 브로커에 수신을 희망하는 정보의 구독 토픽을 등록하면, 아두이노 센서 디바 이스에서는 센싱된 정보를 정해진 토픽으로 MQTT 브로커로 발행한다. MQTT 브로커는 구독을 신청한 곳에 정보를 중계한다. 여기에서는 Node-RED에서 정 보 구독을 신청하고 발행된 정보를 받아서 관리 및 모니터링을 수행한다.
그림 3.9 발행/구조 모델 구조 Fig 3.9 Publish/Scribe model structure
안정적인 사물인터넷 데이터 수집을 위해서 주제를 분류하여 MQTT 토픽을 설계하였 다. 각 송수신하는 항목별로 주제를 분석하여 원하는 동작을 수행한다. 표 3.4처럼 크게 Publish는 각 항목별로 건물/디바이스/주제로 분류하였고 Subscribe는 건물/디바이스/액추 에이터 종류의 주제로 하였다.
Pub/Sub Topic Sensing Value Sensor
Pub
home/node1/temperature 실내 온도
센서 모듈 home/node1/humidity 실내 습도
home/node1/light 실내 조도 home/node2/temperature 화분 주변 온도
home/node2/humidity 화분 주변 습도 home/node2/moisture 화분 수분
home/node3/flame 화재 home/node3/gas 가스 home/node3/motion 모션
Sub
home/node1/switch1 전원 스위치
액추에이터 home/node2/switch2 펌프 스위치 모듈
home/node3/switch3 가스 스위치 표 3.4 MQTT 토픽 설계
Table 3.4 Publish/Subscribe Sensing Value per Topic
그림 3.10은 전체 시스템에서 데이터를 전송하거나 전송받는 메시지의 흐름 을 나타낸다. 기본적으로 MQTT 프로토콜은 메시지를 발행하고 특정 토픽을 구 독하는 구조이다. 발행자나 구독자는 모두 브로커에 연결되어 동작한다. 하나 이상의 발행자와 구독자가 동시에 메시지를 보내고 받을 수 있다. 따라서 MQTT 브로커를 중심으로 발행자와 구독자가 동시에 동작되는 모델을 설계해 야 한다.
그림 3.10 시스템의 메시지 흐름 Fig 3.10 Message flow of the system
MQTT 브로커를 중계자로 한 클라이언트(Sensor Device, Node-RED) 간의 통 신은 다음과 같이 4단계로 이루어진다.
첫 번째 단계는 연결 단계로서 클라이언트와 브로커 간의 연결을 맺는 것이 다. 여기에서는 계정 관리에 필요한 아이디와 패스워드는 클라이언트 연결시 에 요구하지 않도록 한다.
두 번째는 토픽 등록 단계로서 메시지 수신을 위한 클라이언트에 대한 것으 로 수신하고자 하는 메시지의 토픽을 등록하는 것이다. 하나 이상의 토픽을 브로커에 등록해 해당하는 토픽의 메시지를 수신할 수 있다.
세 번째는 송수신 단계로 송신 클라이언트(Sensor Device)는 토픽과 메시지를 전송하면 앞서 토픽을 등록한 수신 클라이언트(Node-RED)에게 메시지가 전 달된다. 이때 메시지의 송수신을 보장하기 위해 QoS 레벨을 함께 전송함으로
써 송신 클라이언트, 브로커, 수신 클라이언트 간에 트랜잭션 보장을 준수하 게 한다.
네 번째는 연결 해지 단계로서 더이상의 메시지 송수신이 필요 없을 경우 토 픽 등록을 해지하고 클라이언트와 서버 간의 연결을 종료하는 것이다. 구현 된 시스템에서는 계속적으로 모니터링을 수행하는 것으로 네 번째 단계는 수 행하지 않도록 한다.