Коротко: Брокер на ESP32 поднять можно, но плата для этой роли не предназначена: памяти мало, состояние теряется при перезагрузке, а шифрование почти не помещается. Держать брокер лучше на мини-компьютере или в Home Assistant, а ESP32 оставить её обычную работу — датчик, реле, мост.
MQTT-брокер на ESP32 — популярная тема в самодельных проектах, но у неё есть подвох. Плата действительно умеет принимать сообщения и рассылать их подписчикам, однако роль брокера для неё не родная: памяти мало, диска нет, а питание часто берётся от зарядки. Разберём, когда такой вариант оправдан, а когда лучше поставить брокер на мини-компьютер, оставив ESP32 её обычную работу.
Что вообще делает брокер
Брокер — это посредник. Устройства публикуют сообщения в топики, брокер их принимает и передаёт тем, кто на эти топики подписался. Всё, что от него нужно: держать соединения, помнить подписки, копить небольшую очередь и не терять сообщения на удержание.
Отсюда требования к железу: оперативная память под состояние клиентов, место под удержанные сообщения и логи, ровное питание и перезапуск после сбоя без потери настроек. ESP32 не подходит ни по одному из этих пунктов по-настоящему — и это не недостаток платы, а несовпадение задач.
Что реально умеет ESP32
Плата построена на микроконтроллере с Wi-Fi: у неё сотни килобайт оперативной памяти, нет файловой системы в привычном смысле и нет операционной системы с планировщиком задач. Всё, что вы запускаете, — это одна программа, которую вы загрузили.
Про то, какие выводы платы можно занимать под свои задачи, есть отдельная статья ESP32: какие пины можно использовать.
Из этого следует:
- Брокер на ESP32 существует как учебный проект. Есть компактные реализации, которые принимают подключения и пересылают сообщения. Их обычно хватает на несколько устройств и простые сценарии.
- Устойчивости ждать не стоит. Перезагрузка платы стирает состояние: подписки, удержанные сообщения, незавершённые передачи. Восстанавливать их нечем.
- Подписчиков будет немного. Каждое подключение занимает память, а её на плате мало. Как только клиентов становится десяток, начинаются отказы и перезапуски.
- TLS и аутентификация ограничены. Шифрование на микроконтроллере съедает и память, и процессорное время; на несколько шифрованных подключений ресурсов может не хватить.
- Запаса нет. Брокер на сервере можно перезапустить и обновить, не трогая устройства. Плата с брокером — единая точка отказа для всей автоматики.
Почему брокер лучше держать не на ESP32
Проще всего поставить брокер там, где уже работает система умного дома.
| Где брокер | Плюсы | Минусы |
|---|---|---|
| Мини-компьютер или одноплатный сервер | Память, диск, обновления, перезапуск службы, TLS и пароли | Нужен отдельный компьютер |
| Home Assistant как дополнение | Ничего не надо ставить отдельно, всё в одном месте | Сервер должен работать постоянно |
| Роутер с поддержкой пакетов | Работает круглосуточно и без лишнего железа | Ограниченный набор функций и версий |
| ESP32 | Дёшево, интересно, всё в одной плате | Мало памяти, нет устойчивости, нет нормального TLS |
Если выбор стоит между «брокер на ESP32» и «брокер на том же компьютере, где Home Assistant», второй вариант почти всегда правильнее: он бесплатный, если сервер уже есть.
Когда вариант с ESP32 всё-таки имеет смысл
- Учебная задача. Разобраться, как устроен брокер, удобнее на маленькой плате, чем на сервере.
- Автономный узел без сервера. Например, дача или гараж, где нет постоянного сервера умного дома, а связать между собой нужно три-четыре датчика и реле.
- Временная схема. Собрать стенд на выходные и потом перенести брокер на компьютер.
Во всех остальных случаях ESP32 полезнее в своей обычной роли: датчика, реле, моста Bluetooth или устройства ESPHome.
Смотреть, что происходит в брокере, удобнее клиентом на компьютере: как его выбрать и подключить, написано в статье MQTT-клиент для Windows.
Обычная роль ESP32: клиент MQTT
Именно так плата используется в большинстве умных домов, и здесь у неё всё хорошо.
- Публикация показаний. Датчик температуры, влажности или движения публикует значение в топик и засыпает.
- Подписка на команды. Реле подписывается на топик управления и включает нагрузку по сообщению от сервера.
- Топик доступности. Клиент сообщает брокеру «последнюю волю»: если плата отключится, брокер сам опубликует сообщение о недоступности, и система не будет ждать ответа от молчащего устройства.
- Готовые прошивки. ESPHome, Tasmota и подобные проекты избавляют от написания кода: конфигурация описывается текстом, а прошивка собирается сама.
- Сон между измерениями. Батарейный датчик просыпается по таймеру, отправляет значение и уходит в глубокий сон. Именно поэтому такие датчики живут месяцами.
Что стоит помнить: Wi-Fi подключается не мгновенно, поэтому сразу после пробуждения нужно время на соединение. Если отправлять показания слишком часто, батарейка сядет быстро; если слишком редко — сценарии будут срабатывать с задержкой.
Питание и надёжность
Основная причина «ESP32 живёт своей жизнью» — питание.
- Стабильные пять вольт и запас по току. Во время передачи Wi-Fi плата потребляет заметно больше, чем в покое. Слабый блок питания или тонкий кабель дают просадку, и плата перезагружается.
- Не питайте от порта компьютера. Он подходит для прошивки, но не для круглосуточной работы.
- Отдельный блок питания и корпус. Плата в корпусе с вентиляцией и своим блоком работает годами; плата на столе с гирляндой проводов — нет.
- Статический адрес. Брокеру и серверу проще работать, когда адрес устройства не меняется.
Если в журнале устройства вы видите перезапуски без причины, начинать надо с питания, а не с кода.
Безопасность
- Не выставляйте брокер в интернет. Домашний брокер должен быть доступен только в локальной сети. Наружу его выводят вместе с TLS и паролями, и делать это на ESP32 почти бессмысленно.
- Локальная сеть для устройств. Если роутер умеет отдельную сеть для умного дома, устройства стоит поместить туда: тогда скомпрометированный датчик не увидит ваши компьютеры.
- Пароль на брокере. Публиковать команды управления должен только тот, кому это разрешено. Открытый брокер в квартире — это открытые реле.
- Обновления. ESPHome и Tasmota обновляются штатно; самодельная прошивка остаётся без обновлений, если вы про неё забудете.
Порядок действий, если вы всё же ставите брокер на ESP32
- Возьмите плату с запасом памяти и отдельный блок питания на пять вольт с запасом по току.
- Прошейте плату прошивкой брокера и закрепите за ней статический адрес в локальной сети.
- Подключите два-три устройства и проверьте, что сообщения доходят в обе стороны.
- Задайте удержание только для статусов, а не для всех сообщений: память ограничена.
- Настройте автоматический перезапуск при зависании, если прошивка это умеет.
- Проверьте поведение при пропадании питания: какое состояние будет у реле после включения.
Пункт про питание и пункт про поведение реле после перезапуска — самые важные. Именно на них чаще всего спотыкаются самодельные схемы.
Частые вопросы
Можно ли использовать ESP32 как MQTT-брокер для всего умного дома?
Технически можно, но не стоит. Плата не хранит состояние между перезагрузками и не имеет запаса по памяти: как только устройств становится больше десятка, начинаются отказы. Для постоянной работы лучше подходит мини-компьютер или сам Home Assistant.
Чем брокер отличается от клиента?
Брокер принимает сообщения и рассылает их подписчикам, клиент публикует и подписывается. ESP32 обычно клиент: датчик, реле, мост. Брокер на ESP32 — редкий и ограниченный случай.
Нужен ли отдельный сервер, чтобы поднять брокер?
Не обязательно. Брокер можно поставить дополнением в Home Assistant, на роутер с подходящей прошивкой или на уже работающий мини-компьютер. Отдельная машина нужна только при большой нагрузке.
Почему датчик на ESP32 перезагружается сам по себе?
Чаще всего из-за питания: просадка при передаче по Wi-Fi. Проверьте блок питания и кабель, затем уже смотрите журнал и код. Вторая причина — переполнение памяти при слишком частой отправке сообщений.
Что такое «последняя воля» и зачем она нужна?
Это сообщение, которое клиент оставляет брокеру заранее: если связь оборвётся, брокер опубликует его сам. Так система понимает, что устройство недоступно, вместо того чтобы считать, что оно живо и просто молчит.




Комментарии
Войдите, чтобы оставить комментарий.