Skip to content

Сеть и mesh

http://<ip-платы>/network.html — admin-only. Параметры UDP-стека для общения с соседними платами.

Блок «Self»

Read-only информация о текущей плате.

Поле Назначение
UUID Идентификатор платы (тот же что в Настройках → Устройство).
Имя Из тех же настроек.
Mode Текущий режим Wi-Fi: STA (подключена) или AP (поднимает свой AP). В AP-режиме mesh между другими платами не работает (нет broadcast'а в локалку).
IP Текущий IP в STA-режиме.

Блок «Соседи»

Таблица плат, от которых пришёл валидный mesh-пакет за последние ~60 секунд:

Колонка Что
UUID Кто прислал
Имя Имя платы (поле name из его device_config)
IP С какого IP пришёл
Last seen Секунд назад был последний валидный пакет

Невалидные пакеты (с неверной подписью) отбрасываются молча — UI их не показывает. Это значит ваш network_secret не совпадает с тем, что у соседа.

Параметры UDP

Поле Назначение
Mode multicast (по умолчанию) или broadcast
Multicast group IP мультикаст-группы. Дефолт 224.0.13.31. Менять только если совпадает с другим продуктом в вашей сети.
Port UDP-порт. Дефолт 13031. Должен совпадать на всех платах в одной mesh-группе.

Multicast vs broadcast:

  • multicast (224.x.x.x) — современный способ. Большинство роутеров его пропускают, в Wi-Fi сегменте работает из коробки.
  • broadcast (255.255.255.255 или broadcast_ip из device_config) — fallback. Иногда лучше работает в гостевых сетях / сегментированных VLAN.

Если соседи не видят друг друга при multicast — попробуйте broadcast.

Network secret

Главный секрет mesh-группы. Без правильного network_secret плата отбросит чужой пакет.

Поле Назначение
Текущий ключ Read-only, можно скопировать кнопкой 📋
Новый ключ Поле ввода + кнопка «Применить»

Формат: 64-символьная hex-строка (32 байта).

Генерация нового

Если ничего не задано — на первом запуске плата генерирует случайные 32 байта. Чтобы объединить несколько плат в одну mesh-группу: возьмите ключ одной (📋), вставьте в другую.

Можно сгенерировать с компьютера:

openssl rand -hex 32

Что меняется при смене ключа

После применения нового network_secret:

  • Плата начнёт подписывать свои пакеты новым ключом.
  • Старые соседи перестанут понимать её, она перестанет понимать их (пока они не получат новый ключ).
  • Применение мгновенное (не нужен ребут).

Зачем мне это меняить

Сценарий Что делать
Развернул первую плату Ничего — она сама сгенерировала ключ.
Добавил вторую плату Скопировать ключ с первой во вторую — обе войдут в одну группу.
Сосед/гость должен подключиться к моей mesh-группе Скопировать ваш ключ ему.
Хочу разделить сеть на две группы На одной части плат сгенерировать новый ключ, не делиться им с другой частью.
Подозреваю утечку ключа Сгенерировать новый и обновить везде.

Что передаётся по mesh

Точно: события задач (udp_send action и udp_event trigger). Каждое — JSON-пакет вида:

{
  "from": "<uuid>",
  "ts": 1778080000,
  "event": "motion_outside",
  "payload": "..."
}

Подписывается HMAC-SHA256(payload, network_secret) и шлётся по UDP. Без правильной подписи — отброс.

Размер пакета — ограничен MTU UDP (обычно 1472 байт). На практике события короткие, лимит не упирается.

Диагностика

  • Сосед не видится. Проверьте: одна Wi-Fi сеть (один сегмент)? одинаковый port, multicast_group, network_secret? Не отрезает ли роутер multicast (некоторые гостевые/firewall-режимы делают это)?
  • Видится, но триггер не срабатывает. Проверьте имя события (event) — оно должно совпадать в udp_send (отправитель) и udp_event (получатель).
  • Самотест. На отправителе — нажмите «▶ Запустить сейчас» в задаче с udp_send. На получателе — смотрите RAM-лог; там будет видно прилёт пакета.

API за этой страницей

См. API → Mesh / Network.