• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Сеть из нескольких esp8266 01-01s (3 шт к примеру)

$Hunter$

Member
Здраствуйте, у меня просто звездец с ими выходит. Вот задумка: главная esp (точка доступа) имеет список из возможных клиентов (есп-релешки, есп-датчик дыма, есп-датчик температуры и влажности (нужно как-то сделать их как-то так названными), вот подключилась к главной есп-температуры, и та знает, что этот клиент будет слать периодически данные (к примеру каждую минуту), потом подключилась есп-реле1, и главная должна это понять, и знать, что вот первый в очереди за кусочком торта в виде команды включения будет эта и так далее 2, 3... Могу скинуть скетч того, что уже написал, думал реализовать по ip, но ничего так и не вышло, так как айпи главной вообще не видно, а посылаю на типа её айпи, а приходит на клиента, жесть какая-то
 

CodeNameHawk

Moderator
Команда форума
AP при создании получает постоянный адрес.
По этому адресу подключаются остальные и шлют туда данные.
 

$Hunter$

Member
AP при создании получает постоянный адрес.
По этому адресу подключаются остальные и шлют туда данные.
так а я хочу сделать его статичным навсегда и чтобы не было конфликтов при отправке пакетов на АР, если знаете как такое сделать, то можете пж написать скетч или что да как подсказать
 

nikolz

Well-known member
Здраствуйте, у меня просто звездец с ими выходит. Вот задумка: главная esp (точка доступа) имеет список из возможных клиентов (есп-релешки, есп-датчик дыма, есп-датчик температуры и влажности (нужно как-то сделать их как-то так названными), вот подключилась к главной есп-температуры, и та знает, что этот клиент будет слать периодически данные (к примеру каждую минуту), потом подключилась есп-реле1, и главная должна это понять, и знать, что вот первый в очереди за кусочком торта в виде команды включения будет эта и так далее 2, 3... Могу скинуть скетч того, что уже написал, думал реализовать по ip, но ничего так и не вышло, так как айпи главной вообще не видно, а посылаю на типа её айпи, а приходит на клиента, жесть какая-то
Можно делать так (я так делаю)
Все ESP посылают сообщения по Протоколу UDP в режиме бродкаст.
В самом сообщении можете ставить метку, которая может означать все, что пожелаете.
Если сообщение принимаете с подтверждением, то в подтверждении можете передать ESP все что хотите.
Если надо разделить ESP по группам то используете различные порты для групп.
 

CodeNameHawk

Moderator
Команда форума
чтобы не было конфликтов при отправке пакетов на АР
А с чего вдруг им взяться?

Если запустили AP, то ее адрес будет 192.168.4.1
https://arduino-esp8266.readthedocs...t-class.html?highlight=AP mode#set-up-network

Если вдруг надо с AP обратиться к другой есп, то проще всего и остальным есп назначить постоянные адреса
н.п. вторая 192.168.4.2, третья 192.168.4.3 и.т.д.
Делайте как в примере
https://arduino-esp8266.readthedocs.../station-class.html?highlight=staticIP#config

например для второй должно быть так
IPAddress staticIP(192.168.4.2);
IPAddress gateway(192.168.4.1);
 

nikolz

Well-known member
А с чего вдруг им взяться?

Если запустили AP, то ее адрес будет 192.168.4.1
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-class.html?highlight=AP mode#set-up-network

Если вдруг надо с AP обратиться к другой есп, то проще всего и остальным есп назначить постоянные адреса
н.п. вторая 192.168.4.2, третья 192.168.4.3 и.т.д.
Делайте как в примере
https://arduino-esp8266.readthedocs.../station-class.html?highlight=staticIP#config

например для второй должно быть так
IPAddress staticIP(192.168.4.2);
IPAddress gateway(192.168.4.1);
В моем варианте IP адреса ESP датчиков серверу знать не надо и они могут быть динамическими.
И вообще IP адреса всем в этом случае пофигу.
 

enjoynering

Well-known member
я вот одного не понимаю. зачем использовать UDP и потом прикручивать к нему подтверждение? не проще было бы использовать сразу TCP с гарантированной доставкой? в чем выгода велосипеда UDP + подтвеждения, почему не TCP? заранее спасибо.
 

CodeNameHawk

Moderator
Команда форума
Есп с постоянным ип и заданным номером канала быстрее подключается к роутеру. ( И думаю к точке доступа тоже, не проверял. )
Полезно если есп работает от автономного питания.
зачем использовать UDP и потом прикручивать к нему подтверждение?
ТС про UDP и не спрашивал.
 

enjoynering

Well-known member
Но как бы про UDP разговор был. Вот и интересуюсь зачем? В чем выгода?
 

nikolz

Well-known member
я вот одного не понимаю. зачем использовать UDP и потом прикручивать к нему подтверждение? не проще было бы использовать сразу TCP с гарантированной доставкой? в чем выгода велосипеда UDP + подтвеждения, почему не TCP? заранее спасибо.
1) трафик UDP в два раза меньше.

2) требуемое время связи меньше.

3) если датчик не требует управления, то подтверждения ему не надо . Т е датчик по UDP- проснулся измерил отправил и уснул. А по TCP будет пытаться установить соединение.
В этом случае получаем нечто подобное BT рекламе.

4) потенциально по UDP может быть любое число датчиков. По TCP ограничено числом одновременно поддерживаемых ESP соединений.

Да и TCP придумали не от хорошей жизни, а если надо восстанавливать пропущенные пакеты и синхронизировать пакеты по времени, пришедшие разными путями.
В задачах с датчиками пакеты короткие.

Более того, как оказалось, UDP не только более эффективно чем TCP решает задачу передачи коротких сообщений, но и гигантских файлов в сотни гигабайт, которые TCP просто никогда не передаст по плохим сетям.

Но Вы можете использовать TCP, и тратить на это ресурсы сети и батарейки.
 

$Hunter$

Member
я вот одного не понимаю. зачем использовать UDP и потом прикручивать к нему подтверждение? не проще было бы использовать сразу TCP с гарантированной доставкой? в чем выгода велосипеда UDP + подтвеждения, почему не TCP? заранее спасибо.
готов выслушать-вычитать ваш вариант)
 

$Hunter$

Member
с
А с чего вдруг им взяться?

Если запустили AP, то ее адрес будет 192.168.4.1
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-class.html?highlight=AP mode#set-up-network

Если вдруг надо с AP обратиться к другой есп, то проще всего и остальным есп назначить постоянные адреса
н.п. вторая 192.168.4.2, третья 192.168.4.3 и.т.д.
Делайте как в примере
https://arduino-esp8266.readthedocs.../station-class.html?highlight=staticIP#config

например для второй должно быть так
IPAddress staticIP(192.168.4.2);
IPAddress gateway(192.168.4.1);
пасиииб))))))))))))))))))
 

enjoynering

Well-known member
Спасибо nikolz, тепрь все понятно. Согласен смысл есть. На ваш взгляд, можно ли использовать udp для передачи файлов с esp8266 через плохой интернет? Или лучше TCP?
 

$Hunter$

Member
Спасибо nikolz, тепрь все понятно. Согласен смысл есть. На ваш взгляд, можно ли использовать udp для передачи файлов с esp8266 через плохой интернет? Или лучше TCP?
я считаю что для такой сети идеально подойдёт именно udp, да, tcp надежнее и точнее, но имеет свои минусы, а тут они сильно мозолят, как минимум вес, а это важно
 
Сверху Снизу