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

Заливаем скетчи в ESP8266, управляем каналами по Wi-Fi, создаем свои сети.

Алексей.

Active member
Я уже писал про Сергея Третьякова - у него реализован механизм, если ESP при старте не находит прописанный роутер, то сам становится точкой доступа
Свет моргнул, 3 устройства перегружаясь не нашли прописанной ssid в эфире, и получили 3 самостоятельных точки доступа :)
 

gerkimuyda

New member
При включении используйте механизм компьютерных винтов, которые, дабы не дать одновременно большую нагрузку на БП, при включении каждый стартует в разное время.
Т.е. в модуле прописываете псевдослучайную задержку от 0 до 10 секунд. Потом - проверку наличия АПешки. Если нету - опять псевдослучайная задержка, и еще раз проверка.
Несколько таких проверок - и можно поднимать свою АП.

Сервер только отвечает на запросы. Каждый модуль регистрируется на сервере по ип, полученному по DHCP, но (например) по запросу "/register" и проверяет для себя команды (например "/get?id=mac"), если надо передать на другой модуль команду - передает ее по запросу "/sent?toid=tomac&id=mac" если надо сигналить о своем онлайне "/check?id=mac"

А с компа заходите на главную "/" где простой интерфейс для управлениями подключенных модулей.
---
здесь 'mac' - это мак-адрес чипа, или его chip_id
 

Paul_B

Member
Клиент.... Сервер.... Блин. Запутались в терминологии.
Короче, в первом посте я выложил скетч, который отвечает на запрос с браузера. Значит он выполняет функцию сервера. А в моем понимании - он "клиент", т.к. несет на себе функции и датчики управления. Поэтому давайте в упрощенных понятиях.
Нужно чтобы как-то и кто-то создал точку доступа. Чтобы остальны е СЕРВЕРА подключились к этой точке и организовали сеть и чтобы они все эти участники сети обменялись своими IP-адресами и могли отправлять друг другу запросы.
Короче, нужна сеть устройств в колхозе, где есть только 220 вольт.
 

kab

New member
Сервер только отвечает на запросы. Каждый модуль регистрируется на сервере по ип, полученному по DHCP, но (например) по запросу "/register" и проверяет для себя команды (например "/get?id=mac"), если надо передать на другой модуль команду - передает ее по запросу "/sent?toid=tomac&id=mac" если надо сигналить о своем онлайне "/check?id=mac"
Не понял - это про какой сервер речь? Т. е. это какие-то системные вещи? Или это функциональность, которую надо прописывать руками?
 

gerkimuyda

New member
Не понял - это про какой сервер речь? Т. е. это какие-то системные вещи? Или это функциональность, которую надо прописывать руками?
Сервер - это сервис, которые обслуживает входящие запросы (в данном случае - на АПешке).
Клиент - это сторона, которая инициализирует исходящий запрос к серверу за той или иной информацией (или передает ему информацию) (в данном случае - обычные STA, которые подключаются к AP)
 

Paul_B

Member
Т.е. в модуле прописываете псевдослучайную задержку от 0 до 10 секунд. Потом - проверку наличия АПешки. Если нету - опять псевдослучайная задержка, и еще раз проверка.
Несколько таких проверок - и можно поднимать свою АП.

Сервер только отвечает на запросы. Каждый модуль регистрируется на сервере по ип, полученному по DHCP, но (например) по запросу "/register" и проверяет для себя команды (например "/get?id=mac"), если надо передать на другой модуль команду - передает ее по запросу "/sent?toid=tomac&id=mac" если надо сигналить о своем онлайне "/check?id=mac"
Это понятно. Только думаю AP поднимается только на одной ESP, которую впоследствии буду опрашивать с компьютера. А можно сделать, чтобы все ESP общались в своей сетке, поднятой одной через AP, а она могла еще выходить в домашнюю WiFi-сеть?
 

kab

New member
Клиент.... Сервер.... Блин. Запутались в терминологии.
Короче, в первом посте я выложил скетч, который отвечает на запрос с браузера. Значит он выполняет функцию сервера. А в моем понимании - он "клиент", т.к. несет на себе функции и датчики управления. Поэтому давайте в упрощенных понятиях.
Нужно чтобы как-то и кто-то создал точку доступа. Чтобы остальны е СЕРВЕРА подключились к этой точке и организовали сеть и чтобы они все эти участники сети обменялись своими IP-адресами и могли отправлять друг другу запросы.
Короче, нужна сеть устройств в колхозе, где есть только 220 вольт.
Ну, в таком случае, начнём с того, что в небольшой отдельной локальной сети автоматически назначать ип не надо. Завести руками по порядку - и не надо на каких обменов ип. Сразу в настройках надо учесть какой ип какому устройству соответствует. Или даже обойтись без явных ип, использовав какой-то там (из примеров) DNS
 

gerkimuyda

New member
Это понятно. Только думаю AP поднимается только на одной ESP, которую впоследствии буду опрашивать с компьютера. А можно сделать, чтобы все ESP общались в своей сетке, поднятой одной через AP, а она могла еще выходить в домашнюю WiFi-сеть?
Можно.
Только давайте все-таки оперировать правильными понятиями значений слов Сервер и Клиент.
Нужно чтобы как-то и кто-то создал точку доступа. Чтобы остальны е СЕРВЕРА подключились к этой точке
Это не сервера, а клиенты. Сервер - один. Он-же АПешка.
Но у нас роль сервера может выполнять любой модуль.

Т.е. алгоритм такой:
1.Старт по включению, поиск нашей сети. Если есть - регистрируемся в ней, получаем по DHCP ип и адрес сервера. Обращаемся к нему, что мы онлайн (потом каждую минуту или 10 будем ему напоминать, что мы онлайн). Периодически шлем собранные данные (если прицеплен датчик), и спрашиваем про команды нам, которые выполняем, если поступили)
2.Если сеть не нашли - таймаут на псевдослучайное число, чтобы кто-то проворнее из таких-же модулей занял роль АП и сервера, а мы ему не мешали. Таких проверок через псевдослучайное время - несколько.
3.Если за это время никто не стал АПешкой - значит пришла наша пора. Переходим в режим АП, поднимаем DHCP, и запускаем у себя сервер. В режиме сервера будем принимать входящие регистрации от других модулей, собирать от них данные, напоминания, передавать им команды. А по запросу главной страницы - отдаем страницу для пользователя (управление собой и другими модулями).
4.Пробуем подключится в режиме STA к домашней сети, если не удачно - повторяем попытку через каждые 10 мин или 30 мин.
5. При поступлении команды для какого-то модуля - пробуем ее передать напрямую, и если не получилось - ложим ее в очередь (он сам подключится через некоторое время и заберет ее).
6.Напрямую передать команду модулю может попробовать и браузер (пользователь) с главной страницы управления (путем прямого обращения javascript-ом по ип нужного модуля.

Все ип модулей у нас зареганы на сервере, и сами модули периодически обновляют свой статус. Если время вышло, а модуль не "отметился" - значит модуль отвалился и его выкидываем из активных.

Доступ к странице управления можно получить как подключившись к нашей АП, так и из домашней сети, куда сама АП подключится (тогда прямое управление модулями не возможно, только через сервер, т.к. наш модуль в режиме маршрутизатора работать не может, чтобы пробрасывать пакеты между двумя интерфейсами)
 
Последнее редактирование:

kab

New member
Сервер - это сервис, которые обслуживает входящие запросы (в данном случае - на АПешке).
Клиент - это сторона, которая инициализирует исходящий запрос к серверу за той или иной информацией (или передает ему информацию) (в данном случае - обычные STA, которые подключаются к AP)
Не , я не то процитировал
Вопрос был про команды:
"/register" и проверяет для себя команды (например "/get?id=mac"), если надо передать на другой модуль команду - передает ее по запросу "/sent?toid=tomac&id=mac" если надо сигналить о своем онлайне "/check?id=mac"
повторяюсь:)
Т. е. это какие-то системные вещи? Или это функциональность, которую надо прописывать руками?
 

kab

New member
kab, Зачем весь этот огород ип и ограничением клиентов ви-фи, Вы же сами считали что мэш в этом случае эффективнее.
Тут на форуме примеров с использованием мэш - во-первых - еще не родилось
Во-вторых - условия по постоянному наращению числа узлов - ТС не ставил...
 

gerkimuyda

New member
Не , я не то процитировал Вопрос был про команды:
Ессно этот функционал надо самому прописывать, как и взаимодействие модулей между собой через центральный (АП/сервер)
Хотите универсальное устройство? Готовьте памяти побольше и проц помощнее :D - тогда можно будет раскатать какой-то radius, mpd, mysql, apache, php, laravel, git, gcc и т.д. ))
 
Последнее редактирование:

tretyakov_sa

Moderator
Команда форума
Теперь о том что хочется. Все эти манипуляции с управлениями я могу производить в своей домашней сети, при этом знать IP-адрес устройства, соответственно, чтобы внести любые изменения - надо опять заливать скетч, что не очень удобно. Хотелось бы, чтобы был один сервер на ESP8266, который бы создавал свою точку доступа со своим именем. На нем бы крутилась программа, скажем управления обогревом на основании показаний датчиков температуры, которые раскиданы по комнатам, а вот эти датчики, которые также реализованы на базе ESP8266 автоматически подключались к этой сети. Просто заложить в скетч просто SSID сети проще, чем прописывать IP-адреса для каждого датчика в своей домашней сети, особенно, если это сделать для кого-то.
Как всегда начали от середины задачи.
Если Вам нужна сеть устройств в поле и это датчики. То забудьте об IP адресах и включите mesh сеть.
Хотя на форуме информации об этой теме, нет и в сети толком ничего не найдете на русском, но вам это и не нужно.
Достаточно взять минимум три устройства и залить, пример basic, во все устройства из этой библиотеки: GitHub - gmag11/painlessMesh: ESP8266 based mesh. This is a mirror copy of https://gitlab.com/BlackEdder/painlessMesh PLEASE ADD COMMENTS AND ISSUES ON GITLAB so that all information is centralized.
Библиотека даст возможность собрать в сеть множество устройств и слать данные от одного к другому не заботится о роутерах паролях IP адресах и маршрутах.
 

kab

New member
Как всегда начали от середины задачи.
Если Вам нужна сеть устройств в поле и это датчики. То забудьте об IP адресах и включите mesh сеть.
Хотя на форуме информации об этой теме, нет и в сети толком ничего не найдете на русском, но вам это и не нужно.
Достаточно взять минимум три устройства и залить, пример basic, во все устройства из этой библиотеки: GitHub - gmag11/painlessMesh: ESP8266 based mesh. This is a mirror copy of https://gitlab.com/BlackEdder/painlessMesh PLEASE ADD COMMENTS AND ISSUES ON GITLAB so that all information is centralized.
Библиотека даст возможность собрать в сеть множество устройств и слать данные от одного к другому не заботится о роутерах паролях IP адресах и маршрутах.
О! Отлично! Сергей подставился!!! Теперь, ежели что не выйдет, Сергей, как честный человек, просто обязан жениться :),т. е. я хотел сказать, довести этот вопрос до логического завершения.
 

gerkimuyda

New member
ОК, а то я подумал, что что-то упустил в жизни... недопонял смысл поста...
Как всегда бывает, мы задаем направление, чтобы человек дальше сам копал ("отсюда и до обеда"(с)анекдот), но людям не это надо! Им надо сразу готовый код! И чтобы даже пароли уже были подставлены от их сети... :D

зы: mesh ведь вроде не позволит параллельно держать связь с домашней сеткой (домашним вайфаем)
 
Сверху Снизу