Я первым делом это сделал! Тут согласен, это пока лучшее из всего, что мне попадалось.Ради предотвращения флуда ознакомьтесь на GitHub с моими наработками по ESP-NOW. В части ESP-NOW Mesh сети особенно. Лучшего за 5 лет никто не предложил (вернее я не видел ничего кроме Paintless mesh для Arduino)...
Поясню свою идею.К сожалению слова отдельно понимаю, но общий смысл не улавливаю. Если Вы напишите код, который сможет в "автомате" менять канал для всех ESP-NOW устройств в сети, когда меняется основной канал WiFi, то Вам поставят памятник! Сообщество ESP-NOW бьется над этим годами... Но всегда есть место гению...
А вот ещё такое решение, описанное тут: https://randomnerdtutorials.com/esp-now-auto-pairing-esp32-esp8266/Решений в сети существует 3 ( за 6 лет работы с ESP-NOW больше не нашел).
ещё если отправитель в зоне доступа роутера или у принимающего активна точка доступа, можно ориентируясь на одного из них и определить канал через WiFi.scanNetworks.К нему подключаются датчики по esp-now на 1 канале, если не успешно - тогда шлют запросы на всех каналах поочередно и ждут ответа, на каком канале главный ответил, тот устанавливают у себя.
Пробовал, это много по времени, потребление от аккумулятора прям очень сильно больше. Если от розетки, тогда да, проще.определить канал через WiFi.scanNetworks
так не надо каждый раз сканировать, а только тогда, когда пакета перестали доходить до адресата. Лично у меня роутер особо не меняет канал, кажется, он вообще это делает только по ежесуточной перезагрузки по расписанию.Пробовал, это много по времени, потребление от аккумулятора прям очень сильно больше. Если от розетки, тогда да, проще.
Ну понятно это, когда тестировал считал это всё, там потребление очень сильно отличается, если раз в неделю даже так сканировать, время жизни от батареи в общем снижается в несколько раз.так не надо каждый раз сканировать, а только тогда, когда пакета перестали доходить до адресата
я решил считать ошибки, если набралось столько то, увеличиваем тайминг отправки.А если вдруг свет отключили и датчики не могут найти роутер и главное устройство, которые оба от розетки работают, несколько часов, тогда совсем высадит аккумулятор.
Это наверное в esp8266 такое ограничение? Потому что между esp32c3 всё отправляется в режиме STA.esp8266 и esp32 не хотят работать, если esp32 в режиме STA, только точка доступа или комбинированный, а это лишние затраты.
Если использовать датчик на батарейках AAA, такое решение не подходит. Быстро садятся. Как пример у меня есть есть датчик двери/окна на герконе. Сработал, "плюнул в эфир на канале по умолчанию", уснул. Статистически от 2х ААА примерно 1000 срабатываний. Если бы он сканировал эфир перед отправкой он бы "умер" через неделю.А вот ещё такое решение, описанное тут: https://randomnerdtutorials.com/esp-now-auto-pairing-esp32-esp8266/
Есть главное устройство, подключённое к интернету через wifi, шлёт данные с датчиков по mqtt. К нему подключаются датчики по esp-now на 1 канале, если не успешно - тогда шлют запросы на всех каналах поочередно и ждут ответа, на каком канале главный ответил, тот устанавливают у себя. Так и связываются. У меня так датчики протечки работают 2 года уже(на аккумуляторах из старой батареи от ноута, ещё не заряжал за это время, это для pvvx), канал на роутере автоматически меняется, датчики ищут новый канал и переподключаются, проблем ещё не было.
Это не ограничения, это некоторая "непрямота" рук...Это наверное в esp8266 такое ограничение? Потому что между esp32c3 всё отправляется в режиме STA.
Даже в API это написано:
You can send ESP-NOW data via both the Station and the SoftAP interface. Make sure that the interface is enabled before sending ESP-NOW data.
А с 8266 там если не ошибаюсь с MACами какая то заморочка была, в режиме STA и AP они разные вроде, чтобы в STA работало надо от последнего поля MAC при отправке отнимать или добавлять единицу. Кажется так.
Если питание от сети, то такое возможно. При батарейном не получится.Поясню свою идею.
Есть головное устройство, которое использует и ESP-NOW для связи с выносными датчиками, и имеет свой WEB-сервер для настроек и отображения текущих параметров. Подключается к WiFi-роутеру для "сношений" с внешним миром.
Есть выносные устройства двух типов: чисто датчик без органов управления и выносной пульт управления с LCD-экраном и кнопками (частично дублирует функции WEB-сервера головного устройства). Связи с внешним миром не имеют, только с головным устройством по ESP-NOW.
Мои измышления (а-ля фантазии) таковы:
1. Головное устройство подключается к роутеру WiFi, получает IP-адрес, знает канал. Инициализирует связь по ESP-NOW с выносными устройствами на полученном канале.
2. Выносные устройства при включении сканируют сеть, находят нужный SSID, узнают его канал, инициируют связь с головным устройством с полученным каналом.
Если смена канала произошла в процессе работы устройств, то тут два варианта:
1. Отлавливать событие DISCONNECT на головном устройстве, послать всем выносным устройством команду, что связь оборвалась. Если роутер просто поменял канал, то при установленном признаке AutoReconnect головное получит новый канал, а выносные отработают сценарий включения с пересканом сетей и получением нового канала.
2. Время от времени проводить повторное сканирование сетей. Но, мне этот вариант не очень нравится.
ну покажи рабочее решение отправки с esp8266 до esp32 по esp now, раз такой умный.Это не ограничения, это некоторая "непрямота" рук...
Ну как то мало кажется совсем?Статистически от 2х ААА примерно 1000 срабатываний.
Не поверите, но именно это у меня и реализовано.Есть головное устройство, которое использует и ESP-NOW для связи с выносными датчиками, и имеет свой WEB-сервер для настроек и отображения текущих параметров. Подключается к WiFi-роутеру для "сношений" с внешним миром.
Есть выносные устройства двух типов: чисто датчик без органов управления и выносной пульт управления с LCD-экраном и кнопками (частично дублирует функции WEB-сервера головного устройства). Связи с внешним миром не имеют, только с головным устройством по ESP-NOW.