Управление через реле: умная розетка
До сих пор мы читали мир. Теперь научимся им управлять — включать и выключать настоящие приборы по команде из сети.
Реле — это электромагнитный выключатель, которым управляет ESP32. Оно позволяет слабому 3,3-вольтовому сигналу коммутировать мощную нагрузку — вплоть до приборов из розетки.
Умная розетка — это устройство, которое включает и выключает прибор по команде из приложения. Сердце такой розетки — реле: электромагнит, который физически замыкает и размыкает мощную цепь, получая слабый управляющий сигнал. ESP32 подаёт «1» на вывод, через транзистор срабатывает катушка реле, контакты замыкаются — прибор включается. Команда приходит по MQTT, значит управлять можно хоть из другого города.
Это объединяет всё: транзистор-ключ из раздела про компоненты, GPIO-выход, Wi-Fi и MQTT-подписку. Устройство подписывается на командную тему и реагирует на сообщения вроде on и off.
Как это работает под капотом
[телефон] --publish home/socket/cmd = "on"--> [БРОКЕР]
|
[ESP32] <--subscribe home/socket/cmd-----------+
|
GPIO -> [транзистор] -> [реле] -> замыкает цепь прибора
ESP32 получает команду, разбирает её и устанавливает вывод в нужное состояние. Хорошая практика — после переключения публиковать обратно фактическое состояние (например в home/socket/state), чтобы приложение всегда показывало правду. Логику разбора команд отработаем в Python — «Посчитай сам ▶».
# Обработчик MQTT-команд для умной розетки
def handle_command(topic, message, state):
msg = message.strip().lower()
if topic != "home/socket/cmd":
return state, None
if msg == "on":
state = True
elif msg == "off":
state = False
elif msg == "toggle":
state = not state
else:
return state, f"неизвестная команда: {message}"
# подтверждаем фактическое состояние обратно в брокер
return state, f"publish home/socket/state = {'on' if state else 'off'}"
state = False
incoming = [("home/socket/cmd", "ON"),
("home/socket/cmd", "toggle"),
("home/socket/cmd", "off"),
("home/other", "on"),
("home/socket/cmd", "blink")]
for topic, msg in incoming:
state, reply = handle_command(topic, msg, state)
print(f"{topic} '{msg}' -> {reply}")
Эта врезка показывает чистую обработку команд: распознаём on/off/toggle, игнорируем чужие темы, сообщаем об ошибке на непонятную команду и подтверждаем состояние. Ровно это крутится внутри умной розетки.
Безопасность — здесь главное. Если реле коммутирует приборы из розетки (220 В), это уже опасное напряжение. Силовую часть собирают аккуратно, изолируют, а ESP32 отделяют от высокого напряжения оптопарой (оптической развязкой). Новичкам безопаснее тренироваться на низковольтной нагрузке — светодиодной ленте 12 В или лампочке от батарейки — и не лезть в сеть 220 В без опыта и наставника.
Частые ошибки
- Подключать реле прямо к выводу без транзистора. Катушка реле берёт слишком большой ток для GPIO.
- Забыть защитный диод у катушки реле. Выброс при выключении повредит транзистор.
- Не подтверждать состояние. Приложение «не знает», сработала ли команда, без обратной публикации.
Best practices
- Всегда ставь транзистор/драйвер и защитный диод между ESP32 и реле.
- Публикуй фактическое состояние после каждого переключения.
- Для сетевого напряжения используй оптоизоляцию и не работай с 220 В без опыта.
Где это встречается
Управление нагрузкой по сети — это то, ради чего многие и приходят в IoT. Умные розетки, выключатели света, привод штор, замок двери, система полива, открывание ворот — всё это в основе своей «реле плюс контроллер плюс сеть». Поняв этот шаблон один раз, ты можешь автоматизировать почти любой прибор в доме, добавив ему дистанционное и программное управление.
Важно знать про альтернативы реле. Механическое реле щёлкает и изнашивается, поэтому для частых переключений и плавной регулировки используют твердотельные реле и силовые транзисторы (MOSFET) — они бесшумны и долговечны. А для безопасной работы с сетью 220 В выпускают готовые сертифицированные модули с изоляцией. Начинать стоит с низковольтных нагрузок, но понимание принципа коммутации открывает дорогу к любым проектам автоматизации — от настольной лампы до целого дома.
Запомни главное
- Реле даёт слабому сигналу коммутировать мощную нагрузку.
- Между ESP32 и реле обязательны транзистор и защитный диод.
- Для сети 220 В нужна оптоизоляция; подтверждай состояние обратно.
- Публикуй фактическое состояние после каждого переключения реле.
Итог: умная розетка управляет мощной нагрузкой через реле по MQTT-командам, объединяя транзистор-ключ, GPIO и сеть, а безопасность и обратное подтверждение состояния — обязательны. Теперь свяжем датчики и исполнители правилами — автоматизацией умного дома.