Управление через реле: умная розетка

До сих пор мы читали мир. Теперь научимся им управлять — включать и выключать настоящие приборы по команде из сети.

Реле — это электромагнитный выключатель, которым управляет 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 и сеть, а безопасность и обратное подтверждение состояния — обязательны. Теперь свяжем датчики и исполнители правилами — автоматизацией умного дома.

Проверьте себя
1. Зачем между ESP32 и реле ставят транзистор?
AДля красоты
BКатушка реле берёт слишком большой ток для вывода ESP32
CЧтобы усилить Wi-Fi
DЧтобы реле светилось
2. Что обеспечивает безопасность при коммутации сетевого напряжения 220 В?
AБолее длинные провода
BОптопара (оптическая развязка), изолирующая ESP32 от высокого напряжения
CОтключение Wi-Fi
DБольше конденсаторов