Домашний MQTT-брокер: что это и зачем он умному дому
Брокер — почтовое отделение умного дома: через него проходит каждое показание и каждая команда. Рассказываем, где его поселить и как настроить так, чтобы потом не переделывать.
Разделы материала
Что делает брокер
В схеме MQTT устройства не знают адресов друг друга. Каждое подключается к брокеру, сообщает, какие топики ему интересны, и отправляет свои сообщения туда же. Брокер проверяет права, сверяет топик сообщения со списком подписок и пересылает его всем, кто ждёт. Он же хранит сообщения с флагом retained и публикует «завещания» отключившихся клиентов. Как устроены сами топики и флаги, мы разобрали в материале про обмен сообщениями.
Получается, что брокер — единственная точка, через которую проходит вся жизнь дома. Если он недоступен, датчики продолжают мерить, но их никто не слышит, а реле не получают команд. Отсюда главное требование: брокер должен работать всегда.
Где его запустить
Нагрузка от десятка-другого датчиков ничтожна, поэтому мощное железо не нужно. Важнее надёжность и круглосуточная работа.
| Где | Плюсы | На что обратить внимание |
|---|---|---|
| Одноплатный мини-компьютер | тихий, экономичный, легко поставить рядом с роутером | карта памяти изнашивается от частой записи; лучше внешний накопитель |
| Домашний сервер или старый ноутбук | много ресурсов, можно поставить рядом базу истории и панель | потребляет больше энергии, шумит |
| Сетевое хранилище с контейнерами | уже работает круглосуточно, есть резервное копирование | обновления системы хранилища иногда перезапускают контейнеры |
| Роутер с поддержкой пакетов | не нужно отдельное устройство | мало памяти, сложнее обновлять, перегрузка роутера бьёт по всей сети |
| Облачный сервер | доступен отовсюду без настройки домашней сети | без интернета дом «глохнет», нужен обязательный TLS и пароли |
Условная семья с дачей в посёлке N обычно приходит к гибриду: брокер стоит на мини-компьютере в доме, а для просмотра снаружи используется защищённый туннель или мост к внешнему брокеру. Автоматика при этом продолжает работать, даже когда пропадает связь с внешним миром.
Локально или в облаке
Локальный брокер отвечает за доли секунды, не зависит от провайдера и не отправляет данные о вашем доме третьим лицам. Минус — доступ снаружи придётся организовывать самому.
Облачный брокер удобен, когда устройства разбросаны по разным адресам: квартира, дача, гараж. Но каждое нажатие выключателя совершает путешествие через интернет и обратно, а при обрыве связи сценарии перестают срабатывать.
Для того, что должно работать «всегда» — свет, отопление, протечки, — надёжнее локальный вариант. Облако хорошо как дополнение.
Порты и шифрование
У MQTT два стандартных порта:
- 1883 — обычное соединение без шифрования. Годится только внутри доверенной домашней сети;
- 8883 — соединение поверх TLS. Обязательно для всего, что идёт через интернет.
Минимальная конфигурация брокера в общем виде выглядит так (синтаксис зависит от выбранной программы, смысл везде одинаковый):
listener 1883 192.168.1.10 # только домашняя сеть
listener 8883 # внешние подключения
certfile /etc/broker/server.crt
keyfile /etc/broker/server.key
allow_anonymous false
password_file /etc/broker/users
Ключевая строка — запрет анонимных подключений. По умолчанию многие брокеры пускают кого угодно.
Учётные записи и права
Заводите отдельного пользователя на каждое устройство или хотя бы на каждую группу: «датчики кухни», «реле света», «панель». Тогда скомпрометированный датчик не сможет отправлять команды замку, а панель для гостей не увидит камеры. Большинство брокеров поддерживают списки доступа: кто в какие топики может писать и какие читать.
Пароль в прошивке
Логин и пароль датчика хранятся в его прошивке. Если устройство физически доступно посторонним, например стоит на улице, исходите из того, что пароль могут прочитать, и давайте этой учётной записи минимальные права.
Подробнее о защите всего дома — в материале про безопасность умного дома.
Как проверить, что брокер работает
- Откройте на компьютере консольный MQTT-клиент и подпишитесь на все топики маской
#под учётной записью администратора. - Из второго окна опубликуйте тестовое сообщение в топик вроде
test/proverka. - Сообщение должно появиться в первом окне. Если нет — проверьте адрес, порт и пароль.
- Попробуйте подключиться без пароля: брокер должен отказать.
- Перезапустите устройство, на котором стоит брокер, и убедитесь, что служба поднялась сама.
- Отключите один датчик от питания и проверьте, что в его топике статуса появилось «завещание».
Обновления и резервная копия
Брокер — программа, у которой выходят исправления, в том числе по безопасности. Раз в несколько месяцев проверяйте обновления и ставьте их, предварительно сохранив конфигурацию. Перед обновлением полезно предупредить домашних: на пару минут датчики потеряют связь, а сценарии не сработают.
Чек-лист настройки
- Брокер стоит на устройстве, которое работает круглосуточно и запускает службу автоматически.
- У устройства постоянный адрес в домашней сети.
- Анонимный доступ выключен, у каждой группы устройств своя учётная запись.
- Внешние подключения идут только через порт с TLS.
- Настроены права на топики: кто пишет, кто читает.
- Конфигурация и список пользователей лежат в резервной копии.
- Проверено, что после отключения питания всё поднимается без вашего участия.
Типичные ошибки
- Порт 1883 проброшен в интернет. Открытый брокер без пароля быстро находят сканеры, после чего чужие люди видят и меняют состояние вашего дома.
- Брокер на рабочем компьютере. Ноутбук закрыли, уехали — дом перестал реагировать на выключатели.
- Одна учётная запись на всё. Удобно на старте, неудобно, когда нужно отозвать доступ одному устройству.
- Запись истории на карту памяти без ограничений. Карта выходит из строя, а вместе с ней и брокер.
- Нет резервной копии настроек. Восстанавливать список пользователей и права по памяти долго.
Когда брокер готов, пора решать, по какому каналу к нему пойдут датчики: об этом — материал про выбор протокола.
Вопросы и ответы
Можно ли обойтись без брокера?
Для MQTT — нет, протокол построен вокруг посредника. Без брокера устройства могут общаться по другим протоколам, например напрямую по HTTP, но теряется удобство подписок.
Сколько устройств выдержит домашний брокер?
Для квартиры или загородного дома запас огромный: ограничением скорее станет домашняя сеть и Wi-Fi, а не сам брокер.
Нужен ли сертификат для локальной сети?
Внутри доверенной сети можно обойтись без TLS, но если в сеть пускают гостей или есть устройства с сомнительной прошивкой, шифрование не помешает и дома.
Как получить доступ к дому снаружи, не открывая брокер?
Через защищённый туннель или VPN до домашней сети либо через мост к внешнему брокеру, который пересылает только нужные топики.