Настройка CoAP для отклика реле Shelly в Home Assistant
При построении беспроводного умного дома на базе устройств Shelly (работающих по протоколу Wi-Fi) одной из главных проблем является задержка выполнения команд и обновления статусов в Home Assistant. По умолчанию интеграция опрашивает устройства по протоколу HTTP с интервалом в несколько секунд, что делает реакцию системы медленной и некомфортной.
Использование встроенного локального протокола CoAP (Constrained Application Protocol) позволяет решить эту проблему, сократив время реакции реле при нажатии физического выключателя до миллисекунд.
Протокол CoAP представляет собой легковесную альтернативу HTTP, работающую поверх UDP. Вместо постоянного удержания TCP-соединения или периодического опроса (polling), устройства обмениваются короткими пакетами данных. В стандартной конфигурации Shelly использует расширение CoIoT (CoAP для интернета вещей), которое транслирует состояние приборов с помощью мультикаст-пакетов (IP-адрес 224.0.1.187, порт 5683).
Когда вы нажимаете физический выключатель, реле мгновенно отправляет в локальную сеть UDP-пакет со своим новым статусом. Сервер Home Assistant, прослушивающий мультикаст-трафик, фиксирует это изменение в течение 10-20 мс. Это позволяет создавать сложные локальные сценарии, которые срабатывают практически без ощутимой задержки.
IMPORTANT
Для корректной работы мультикаст-вещания CoAP ваш домашний роутер должен поддерживать протокол IGMP и иметь включенную функцию IGMP Snooping. Если эта функция выключена или работает некорректно, роутер может блокировать UDP-пакеты, передаваемые между беспроводным Wi-Fi сегментом умных устройств и проводным LAN-сегментом сервера Home Assistant.
Шаг 1. Подготовка сети и настройка роутера
Перед началом настройки Shelly необходимо убедиться, что ваша локальная сеть готова к передаче мультикаст-трафика:
- Войдите в панель администратора вашего Wi-Fi роутера.
- Перейдите в раздел настроек локальной сети (обычно это вкладка LAN или IPTV).
- Найдите параметр IGMP Snooping и переведите его в состояние “Включено” (Enabled). Если роутер поддерживает выбор версии, установите IGMP v2 или IGMP v3.
- Uбедитесь, что функция блокировки мультикаста (Multicast Storm Control или Wireless Multicast Forwarding) отключена, так как она может принять легитимный CoAP-трафик за сетевую атаку и заблокировать его.
- Назначьте вашему серверу Home Assistant статический IP-адрес (например,
192.168.1.15).
Шаг 2. Конфигурация CoIoT в веб-интерфейсе Shelly
Для перевода реле в локальный режим необходимо выполнить настройку его встроенной прошивки:
- Подключитесь к веб-интерфейсу реле Shelly, введя его локальный IP-адрес в строке браузера. Если прибор новый, сначала подключитесь к его собственной Wi-Fi точке доступа и выполните первичную привязку к домашней сети.
- В боковом меню перейдите в раздел Internet & Security -> Advanced - Developer Settings.
- Установите галочку напротив пункта Enable CoIoT.
- В поле CoIoT peer введите IP-адрес вашего сервера Home Assistant и порт 5683. Например, вместо значения
mcastукажите192.168.1.15:5683. Это переведет вещание из режима общего мультикаста в режим направленного уникаста (unicast), что гарантирует доставку пакетов даже при проблемах с IGMP на роутере. - Нажмите кнопку Save для сохранения конфигурации.
- Перейдите в раздел Device Information и перезагрузите устройство, чтобы новые параметры CoAP вступили в силу.
WARNING
Если вы используете устройства Shelly первого поколения (например, Shelly 1, Shelly 2.5, Shelly Dimmer) на старых версиях прошивки, режим CoIoT peer может не поддерживаться. Обязательно обновите встроенное ПО устройств до последней стабильной версии перед настройкой локального протокола.
Шаг 3. Интеграция Shelly в Home Assistant
Благодаря поддержке протокола автоматического обнаружения (Zero-configuration networking), Home Assistant самостоятельно определит новое устройство в сети:
- Откройте панель управления Home Assistant.
- Перейдите в раздел Настройки -> Устройства и службы.
- В верхней части экрана вы увидите карточку обнаруженного реле Shelly. Нажмите кнопку Настроить.
- Если автообнаружение не сработало, нажмите Добавить интеграцию, выберите Shelly из списка и введите IP-адрес прибора вручную.
- Укажите комнату размещения и подтвердите добавление. В системе появится новая сущность переключателя, например
switch.shelly1_living_room.
NOTE
Рекомендуемый материал по теме: Как настроить Home Assistant в качестве Matter-моста для Алисы
Шаг 4. Вывод сущностей в Алису через Yandex Smart Home
Чтобы получить возможность управлять локальным реле голосом, пробросим его в Яндекс. Этот процесс концептуально похож на то, как настраивается локальная интеграция Tuya в Home Assistant.
- Откройте ваш конфигурационный файл
configuration.yaml. - Добавьте или отредактируйте блок интеграции
yandex_smart_home:
yandex_smart_home:
filter:
include_entities:
- switch.shelly1_living_room
entity_config:
switch.shelly1_living_room:
name: "Свет в гостиной"
room: "Гостиная"
type: devices.types.light
- Проверьте конфигурацию на ошибки через меню управления сервером и выполните быструю перезагрузку Home Assistant.
- Откройте мобильное приложение «Дом с Алисой», перейдите в настройки и обновите список подключенных устройств умного дома. Теперь ваше реле готово принимать голосовые команды. Задержка при локальной обработке составляет менее
0.1 секунды.
TIP
Использование статического CoIoT peer (IP:5683) существенно разгружает беспроводную сеть Wi-Fi, избавляя роутер от необходимости постоянно обрабатывать широковещательные пакеты, что особенно критично при использовании более 20 умных устройств Shelly одновременно.
Инструкция по настройке
Включение IGMP на роутере
Активируйте функции IGMP Snooping и мультикаст-фильтрации в настройках роутера для беспрепятственного прохождения UDP-пакетов.
Настройка CoIoT peer
Откройте веб-панель Shelly, перейдите в настройки разработчика, включите протокол CoIoT и укажите статический unicast-адрес сервера.
Интеграция с Home Assistant
Добавьте Shelly в Home Assistant через автообнаружение, система автоматически подхватит сущность переключателя по локальной сети.
Проброс в Яндекс Алису
Добавьте переключатель в фильтр интеграции Yandex Smart Home, задайте тип устройства Light и обновите устройства в приложении Алисы.
Обсуждение статьи