Наконец мы готовы к тому, чтобы устройства нашего "умного" дома стали устройствами Интернета вещей, что позволит получать данные с датчиков и управлять исполнительными устройствами нашего "умного дома" через интернет из любой точки мира. В качестве устройства управления удобнее всего использовать мобильный телефон. Нас интересует получение данных на телефон и управление исполнительными устройствами с телефона. Т.е. мобильный телефон выступает в качестве еще одного устройства IoT, совмещающего в себе табло для отображения данных с датчиков и пульт для управления исполнительными устройствами.
Устройства в сетях IoT взаимодействуют друг с другом по средствам различных интерфейсов и протоколов передачи данных. Рассмотрим наиболее популярный и одновременно простой протокола обмена для устройств Интернета вещей – MQTT (Message Queue Telemetry Transport).
Основные особенности протокола MQTT:
• Асинхронный протокол;
• Компактные сообщения;
• Работа в условиях нестабильной связи на линии передачи данных;
• Поддержка нескольких уровней качества обслуживания (QoS);
• Легкая интеграция новых устройств.
Обмен сообщениями в протоколе MQTT осуществляется между клиентом (client), который может быть издателем или подписчиком (publisher/subscriber) сообщений, и брокером (broker) сообщений (например, Mosquitto MQTT). Издатель и подписчик не передают друг другу сообщения напрямую, не устанавливают прямой контакт, могут не знать о существовании друг друга. Издатель отправляет данные на MQTT брокер, указывая в сообщении определенную тему, топик (topic). Подписчики могут получать разные данные от множества издателей в зависимости от подписки на соответствующие топики.
Топики представляют собой символы с кодировкой UTF-8. Иерархическая структура топиков имеет формат "дерева", что упрощает их организацию и доступ к данным. Топики состоят из одного или нескольких уровней, которые разделены между собой символом "/".
/home/living /living-room1/temperature
Устройства MQTT используют определенные типы сообщений для взаимодействия с брокером, ниже представлены основные:
• Connect – установить соединение с брокером
• Disconnect – разорвать соединение с брокером
• Publish – опубликовать данные в топик на брокере
• Subscribe – подписаться на топик на брокере
• Unsubscribe – отписаться от топика
Схема простого взаимодействия между подписчиком, издателем и брокером показана на рис. 9.1.
Рис. 9.1. Схема простого взаимодействия по протоколу MQTT.