Зачем MQTT для управления шторами?
Если кратко, то всё можно свести к решению одной задачи – управлению чем бы то ни было со смартфона. Действительно, если я хочу управлять каким то устройством, какие у меня есть возможности?
- Я могу делать это органами управления на самом устройстве. Но тогда я должен быть на расстоянии вытянутой руки от устройства, которым я хочу управлять.
- Могу воспользоваться пультом. Пульт должен быть рядом, радиус действия его ограничен и для разных устройств мне нужно несколько пультов.
- Мог бы делать это с телефона. Телефон обычно при мне. Если всё настроить как надо, можно управлять всеми устройствами, к которым у меня есть доступ и расстояние не имеет значения.
Здесь мы сталкиваемся с ограничением, о котором явно не говорится, когда вам рассказывают о MQTT. Устройства, которыми вы хотите управлять должны быть подключены к сети. Если телевизор или холодильник ещё можно себе представить подключенными кабелем ethernet или по WiFi, то что насчёт датчиков температуры и лампочек, которые нам часто рисуют, когда рассказывают о MQTT, что уж говорить об управляемых шторах? Да, и лампочки и электрокарнизы с WiFi есть, но все ваши устройства должны будут подключиться к обычному домашнему роутеру. Несколько устройств подключить можно, но за подключение нескольких десятков, ваш роутер спасибо вам не скажет. Получается, что доступ с телефона можно получить только для ограниченного числа устройств? Можно использовать “мосты” – устройства, которые будут взаимодействовать с вашими датчиками, лампочками, выключателями и т.п. например, по радио и всё объединив и обработав будут предоставлять только одно подключение к сети.
Если все устройства, которыми хочется управлять, должны быть подключены к сети, то в чём преимущества MQTT? Как вариант, можно просто поднять сервер на чём-то вроде raspberry pi, создать нужные страницы и управлять всем при помощи браузера. Это неплохое решение. Так создаются многие системы “Умный дом”. Тем не менее у любой такой системы есть поддержка протокола MQTT. Это позволяет расширять перечень устройств, которые можно подключить к “Умному дому” не ограничиваясь каким-то определенным, часто закрытым протоколом. Преимущество MQTT в том, что это упрощенный сетевой протокол, с малыми накладными расходами, работающий на принципе издатель-подписчик и свободный от лицензионных отчислений.
Принцип издатель-подписчик – это шаблон по которому все клиенты сервиса могут публиковать свои и подписываться на чужие сообщения. При этом клиенту не обязательно выполнять обе функции. Наоборот, большинство клиентов либо только публикуют сообщения (например, датчик температуры), либо подписываются на получение сообщений (например, обогреватель). При этом имеется центральное устройство, которое управляет передачей сообщений от издателей подписчикам. Издатели отправляют сообщения центральному устройству. Подписчики информируют центральное устройство о том, какие сообщения они хотят получать. Когда центральное устройство получает новое сообщение от издателя, оно отправляет его тем подписчикам, которые на него подписаны. В терминологии MQTT центральное устройство называется брокером.
Таким образом вся система состоит из трёх сущностей:
- Издатели – устройства публикующие сообщения
- Подписчики – получатели сообщений
- Брокер – центральное устройство обеспечивающее правильную маршрутизацию сообщений, опубликованных издателями, заинтересованным подписчикам. В общем случае, система может включать себя несколько брокеров. Может существовать иерархия, когда один брокер является клиентом, подключенным к другому брокеру. Брокеров можно объединить в сеть устройств обменивающихся данными.
В MQTT есть еще один термин – темы. Темы могут рассматриваться как именование конкретных наборов данных. Обычно это простая строка, которая соответствует легальному слову на английском языке для простоты использования. По существу, издатель публикует данные по одной из тем. Аналогично, подписчик может подписаться на определенную тему. Работа брокера заключается в маршрутизации сообщений на основе темы.
Теперь мы знаем достаточно для того, чтобы самостоятельно создать систему управления нашими устройствами. В общем случае это выглядит так.
- На смартфон из магазина приложений устанавливается клиент MQTT. Клиентов много, выбираем тот, что больше подходит. Как пример “IoT MQTT Dashboard”. В клиенте настраиваем экраны, помещая на них кнопки и другие органы управления.
- Нам нужен брокер. Брокер можно настроить например, на raspberry pi. В этом случае все наши данные будут храниться у нас. Либо можно воспользоваться облачными серверами MQTT. У большинства провайдеров есть бесплатные тарифные планы.
- Сами устройства, которыми хотим управлять. В числе устройств может быть сразу сервер “Умного дома”, к которому подключено всё остальное. В этом случае “Умный дом” служит мостом между управляемыми устройствами и брокером. Но можно обойтись и без него. В этом случае система получится проще и дешевле.