Tutorial 03 · P2P связь

Свяжите две Work-ноды напрямую

Добавьте вторую Work-ноду, создайте LINK через Management и передайте значение от Work A к RGB LED Work B по ESP-NOW без участия компьютера в самом обмене.

Сеть, в которой Work управляет Work

В предыдущих уроках вы подготовили Work-ноду и подключили её к Management. Теперь сеть расширяется: добавим вторую Work-ноду и настроим передачу значения между двумя устройствами напрямую по ESP-NOW.

LINK — это настройка топологии: NET OUT исходной Work передаётся в NET IN другой Work. Management создаёт и хранит конфигурацию LINK, но не участвует в каждом последующем P2P-сообщении.

Почему не два одинаковых WorkRgb? Готовый образ fsm32-node-work-rgb.bin имеет только сетевые входы CmdR/G/B и аппаратные выходы RgbR/G/B. В нём нет NET OUT — источника LINK. Поэтому Work A использует образ Work433, который публикует Btn1/2/3 как NET OUT.
Оборудование для урока
РольПлата и готовый образПример порта
ManagementESP32-C3 + OLED 0.42″
fsm32-node-manager.bin
COM5
Work A — источникESP32-S3 SuperMini HW747 + 433 RX
fsm32-node-work-433.bin
COM4
Work B — приёмникESP32-S3 SuperMini HW747
fsm32-node-work-rgb.bin
COM6

Все ноды должны быть включены, находиться в зоне уверенного ESP-NOW и работать в mode normal. Management и Work B уже подготовлены в Tutorial 02.

Подготовьте Work A с NET OUT

Прошейте вторую HW747 готовым образом Work433. Он предназначен для платы с подключённым 433 MHz приёмником SYN480R, но основную P2P-проверку можно выполнить без пульта командой netout.

cd C:\fsm32\firmware
esptool.py --chip esp32s3 --port COM4 --baud 460800 write-flash 0x0 fsm32-node-work-433.bin
python -m serial.tools.miniterm COM4 115200

В monitor нажмите ~ и выполните:

mode normal
board
services show
node mac

Сохраните MAC Work A. В каталоге должны быть NET OUT Btn1, Btn2, Btn3. Их меняет готовая логика Work433 при событии 433 MHz либо через диагностическую команду netout.

Зарегистрируйте обе Work-ноды

Если Work B уже зарегистрирована из Tutorial 02, сохраните её MAC. Если нет, получите его через node mac на Work B. Затем в terminal Management проверьте текущий каталог:

services nodes
node peers

Зарегистрируйте отсутствующую ноду. Используйте тот же ключ регистрации, который был сохранён для Management в Tutorial 02; новый ключ нужен только если вы сознательно меняете ключ сети.

node key <32-hex-key>
node register <work-a-mac> HW747-433
node register <work-b-mac> HW747-RGB

Для уже зарегистрированной ноды повторять node register не нужно. После каждого нового приглашения дождитесь registration invite sent и проверьте на соответствующей Work командой node: ожидается registered=yes.

Индекс не постоянен. Management присваивает нодам позиции в текущем каталоге. Перед последующими командами всегда выполните services nodes; не предполагайте, что нужная нода навсегда имеет индекс 0 или 1.

Найдите сервисы и их ID

На Management определите индексы Work A и Work B из services nodes, затем посмотрите их каталоги:

services <work-a-index> show
services <work-b-index> show
node catalog

Для готовых образов ожидаются следующие сервисы: у Work A Btn1 — NET OUT с wire ID 0; у Work B CmdG — NET IN с catalog ID 5 и wire ID 4. Команды LINK принимают именно wire ID, а не номер строки в services … show.

Связь направлена только от NET OUT к NET IN. Аппаратные RgbR/G/B Work B — результат выполнения её логики: CmdR/G/B преобразуются в цвет LED.

Проверьте передачу без компьютера в цепочке

Для первой проверки сымитируйте событие источника в terminal Work A. Компьютер используется только для ввода команды; после настройки значение между Work передаётся напрямую по ESP-NOW.

netout Btn1 10

Work A публикует Btn1=10, LINK передаёт значение в CmdG Work B, а её логика устанавливает RgbG=10. LED Work B должен загореться слабым зелёным цветом.

На Management подтвердите состояние приёмника:

node state <work-b-mac>
services <work-b-index> values

Кэш состояния может обновиться не мгновенно. Если сразу видите status=no_data, подождите до 20 секунд и повторите команду. Визуальное изменение LED Work B — основной признак прохождения P2P-связи.

Граница этого образа: готовый Work433 не превращает команду Management в Btn1. Поэтому цепочка Management → Work A → Work B не входит в этот урок. Management настраивает LINK и наблюдает сеть, а событие создаёт Work A.

Проверьте связь настоящим 433 MHz пультом

Если к Work A подключён SYN480R и есть совместимый EV1527-пульт, вместо netout можно использовать физическое событие. В terminal Work A включите диагностику:

watch433 on

Готовая логика Work433 переключает Btn1 между 0 и 10 для кода 0x0C4AE2. При получении этого кода LED Work B соответственно меняет зелёный канал. Остановить вывод можно командой watch433 off.

Если LINK не передаёт значение

ПроблемаВероятная причинаКак исправить
Work A не регистрируетсяНеверный MAC, ключ или ESP-NOW параметры.Проверьте node mac, espnow и повторите регистрацию.
node link отклонёнНеверный MAC, ID сервиса или Work не зарегистрирована.Проверьте services nodes и оба каталога через services <index> show.
netout выполнен, но LED Work B не меняетсяLINK направлен неверно или Work B не в mode normal.Сверьте команду LINK: источник Work A Btn1 wire ID 0, приёмник Work B CmdG wire ID 4; на Work B выполните mode normal.
node links пустПриглашение LINK не дошло до Work A.Сверьте питание, расстояние и ESP-NOW channel, затем отправьте LINK снова.
433-пульт не даёт событияНет питания RX, неверный код пульта или отсутствует приёмник.Проверьте watch433 on; для базовой проверки используйте netout Btn1 10.