Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Web-сервер на базе ESP

Пн дек 09, 2019 23:32:55

Всем привет!
В сети существует огромное количество примеров как создать HTML страничку на базе ESP8266/ESP32 и сделать ее доступной в своей локальной сети. Все это пафосно называют "Веб-сервер" или "управление ESP через интернет"... хотя интернетом здесь и не пахнет. Достаточно включить роутер (без подключения к интернету) и все будет работать...
Меня интересует другое: именно создание "сайта"-страницы на базе ESP8266/ESP32, который будет доступен через интернет с любой точки мира (как и любой нормальный сайт).
Все мои поиски в сети ничего не дали. Находит только примеры создания страниц, доступных только в локальной сети.
Может есть готовое решение? Ткните ссылкой.
Спасибо!

Re: Web-сервер на базе ESP

Пн дек 09, 2019 23:59:00

Находит только примеры создания страниц, доступных только в локальной сети.
И после этого, следующим шагом, в роутере открываете доступ к этой странице (к её IP) снаружи. Т.е. - пробрасываете TCP-порт 80 (можно и какой-нить другой) с внешнего IP роутера на любой порт на вашем сервере. Всё - ваша страница в Интернете.

Re: Web-сервер на базе ESP

Вт дек 10, 2019 00:08:06

Для меня это темный лес. С роутерами связывался только 1 раз в жизни, когда обновлял прошивку...
У меня роутер DIR-615

Добавлено after 1 minute 42 seconds:
Могу скинуть форки "Веб морды" моего роутера.

Добавлено after 3 minutes:
В настройках роутера есть Мастер настройки виртуального сервера. Это не оно?
Изображение

Re: Web-сервер на базе ESP

Вт дек 10, 2019 00:14:23

В настройках роутера есть Мастер настройки виртуального сервера. Это не оно?
Не знаю. Вполне возможно. Попробуйте. Это же элементарно проверяется. На компе открываете в пассивном режиме любой TCP-порт (чем угодно, хоть терминалкой типа putty хоть NetView или etc.). Пробрасываете порт извне внутрь на комп, на открытый в терминалке TCP-порт. А потом снаружи другой терминалкой коннектитесь на внешний порт. Файрволлы только нужно отключить заблаговременно или сделать в них разрешение для входящих коннектов на этот порт.

У меня роутер DIR-615
А у меня Mikrotik RB951G-2HnD :)

Re: Web-сервер на базе ESP

Вт дек 10, 2019 07:25:24

а ещё нужно найти свой "сайт" в интернете... это или при каждом новом подключении узнавать, какой ip выдали роутеру или выпросить у провайдера белый ip (постоянный) или использовать службу dindns...

Re: Web-сервер на базе ESP

Вт дек 10, 2019 07:31:59

и если у вас ip не прямой\белый а из внутренней сетки провайдера то ничего у вас не выйдет.. :) проверено..

Re: Web-сервер на базе ESP

Вт дек 10, 2019 07:39:24

это да за нат прова вам не светит...
обычно мобилные оперы не дают белый айпи
ам кабелные напротиф за доплату дают

Re: Web-сервер на базе ESP

Вт дек 10, 2019 08:52:17

Привет!
Все мои поиски в сети ничего не дали. Находит только примеры создания страниц, доступных только в локальной сети.
Отличие локальной сети от Internet только в IP-адресе. Ну, и в связности, т.е. в маршрутах прохождения пакетов, конечно. С точки зрения программирования микроконтроллера разницы никакой.
Если у Вас нет возможности получить IP-адрес в Internet для своего устройства, или организовать "маскарад", чтобы трафик на один из портов компьютера (роутера), имеющего адрес в Internet, переадресовывался Вашему устройству, можно сделать вот как:
Сделать страницу, которую будут видеть люди. Разместить её на каком-нибудь "хостинге", т.е. в специальном месте, где у компьютеров точно есть IP адреса в Internet. Действия посетителей страницы сохранять в файл в каком-то виде. Ну, типа, пользователь на этой странице нажал кнопку "включить светодиод" - в файл записывается текущая дата/время, и "1". Нажал кнопку "выключить светодиод" - записывается дата/время, и "0". Дальше Ваша ESP-шка раз в пять секунд (или в пять миллисекунд. или раз в час...) обращается на этот же сервер, и читает файл. Ну, и выполняет актуальные действия. Когда ESP успешно считала файл - на сервере его содержимое можно "обнулить", чтобы много информации на ESP не читать каждый раз.
Это называется polling. Чтобы не тратить ресурсы на установление соединения каждый раз, можно воспользоваться т.н. websockets. Я не использовал этой технологии на ESP32, не знаю, насколько хорошо она будет работать. Смысл в том, что микроконтроллер создаёт соединение к удалённому серверу (где лежит страничка, доступная всем), и это соединение "висит" открытым. Когда кто-то совершает действия на страничке, информация сразу (без записи в файл) отправляется через это открытое соединение на ESP. И микроконтроллер сразу выполняет нужные действия. Тут, наверное, нужно заметить, что "сразу" - это в промежуток от нескольких микросекунд до 30 секунд. Ну, а если ESP не подключена к серверу - действия можно записывать в файл. А можно просто показывать посетителям странички табличку "ушла на базу". С точки зрения безопасности решение с "отдельным" сервером для WEB единственное приемлемое. Если отдать веб-сервер на ESP "на растерзание" пользователям интернет, многие из которых не сильно обременены моральными принципами и желанием творить добро ближнему, этот веб-сервер очень скоро перестанет работать. А страничка на "большом" компьютере, специально настроенном на работу WEB-server-ом, имеет намного больше шансов выжить.
Перечитал написанное, вспомнился мем про троллейбус из буханки хлеба ;)

Re: Web-сервер на базе ESP

Вт дек 10, 2019 10:28:01

ам кабелные напротиф за доплату дают
Некоторые и бесплатно дают. По дефолту.

Re: Web-сервер на базе ESP

Вт дек 10, 2019 12:23:19

Обратился я к своему провайдеру по поводу белого IP. Ответили что не предоставляют такой услуги.
Так что остается только вариант описанный AAX , или что-то похожее сделать.
Всем спасибо за помощь!

Re: Web-сервер на базе ESP

Вт дек 10, 2019 20:58:17

Вариант, как пишет AAX даже лучше - на хостинге быстрее открываться будет, работать будет с любым провайдером, безопаснее и т.д.
Времена "проброса портов" и динамического DNS уже прошли. Уже большинство домашних провайдеров и все мобильные не дают даже динамического IP. Дают "серые" за NAT - облом.
У меня так именно и реализовано. Я вот такую страничку делал для управления девайсом на ESP8266 - удаленная управлялка кондиционером (по ИК) + датчик T+H. На AngularJS + Bootstrap писал. Она при изменении значений каких-либо отправляет на сервер новые параметры. На сервере они сохраняются. Сервер - хостинг. А ESP оттуда уже забирает новые параметры. Т.е. веб-сервер не на самой ESP. Потому что дома у провайдера за натом всё-равно через инет не подключиться. Городить VPN и т.п. - органичения. А тут с любого места с инетом можно кондиционером управлять.
PS: Страничка выше - демка, к девайсу реальному не подключена, кликать можно ) Реальная страничка с девайсом в другом месте запаролена )

Re: Web-сервер на базе ESP

Вт дек 10, 2019 22:56:03

NStorm, мне примерно это и нужно.
Можете подробно описать как вы это сделали?

Re: Web-сервер на базе ESP

Ср дек 11, 2019 05:33:17

при таком подходе BLYNK самое оптимальнее и велосипед изобретать не нужно..

Re: Web-сервер на базе ESP

Ср дек 11, 2019 07:23:08

forfrends, весь исходник HTML доступен по ссылке. Кратко - при загрузке страничка читает один JSON файлик с сервера, где хранятся данные пришедшие ОТ ESP. ESP посылает их в скрипт PHP, который и обновляет этот JSON файлик. При изменении эл-ов управления на странице, он постит их в скрипт .PHP. Который просто делает проверку и сохраняет их в другой JSON файлик. Который периодически запрашивает ESP на предмет изменений.
Т.е. два скрипта PHP для изменения файлов JSON на веб-сервере просто. В JSON хранятся все параметры. Разделение на 2 - один данные от ESP, другой данные К ESP. Вместо PHP вариантов куча, но выбран пхп, т.к. он везде. Его на любой хостинг пихнуть можно без доп софта.

AndyGU70, с ПК blynk хрен рулится. Нужно приложение на смартфон. Это не всегда удобно. "Велосипед" имеет преимущества - не нужно ничего кроме браузера.

Re: Web-сервер на базе ESP

Ср дек 11, 2019 09:38:49

Времена "проброса портов" и динамического DNS уже прошли. Уже большинство домашних провайдеров и все мобильные не дают даже динамического IP. Дают "серые" за NAT - облом.
Не надо говорить за всех. То что есть в РФ, не обязательно справедливо для другой страны. А у ТС не РФ вроде как. Пока я жил в РФ, пользовался DynDNS (внешний IP был белый). Сейчас живу в другой стране - здесь провайдер сразу, по дефолту даёт белый статический IP. Причём насколько я видел - все здешние провайдеры так делают. О DynDNS уже забыл давно. Понятно, что здесь страна маленькая - видимо пул IP-адресов больше, но всё-же всё-же...

PS: В РФ вообще в последнее время всё больше и больше всего закрывается - постепенно снова опускается железный занавес.... :dont_know:

Re: Web-сервер на базе ESP

Ср дек 11, 2019 10:12:46

Простейший вариант - арендовать дешевый хостинг и настроить там переадресацию портов на свое соединение. На крайний случай - написать простенького сетевого демона, который будет ждать коннекта по какому-нибудь порту 12345 от вашей железяки, как коннект установлен, все внешние подсоединения к 80-му порту напрямую будут перебрасываться вам. Т.е. эдакий прокси получается, причем к обоим его концам надо подключаться...

Re: Web-сервер на базе ESP

Ср дек 11, 2019 10:51:39

jcxz, дело не в занавесах, а в нехватке IPv4 адресов. Это давно известный факт. Рекомендации всяких "развивающих Интернет" организаций давно уже рекомендуют не давать конечных юзерам статику. Зачем среднестатистической "домохозяйке" это, если у неё и без белого IP всё что ей нужно будет работать? Да 99% пользователей Интернета нафиг не нужен сейчас белый IP. Разве что для торрентов, чтобы больше пиров доступно было. Да и безопаснее это для "домохозяйки", когда до её устройство из "внешнего мира" не достучаться. Часто вон раньше роутеры домашние ломали и подвешивали на них спам всякий, когда они белым IP в интернете светились. Поэтому и фильтровать провайдеры начали. См PS.

В любом случае вешать хилую железку "жопой в интернет" во времена гигабитных DDoSов за копейки? Да её тупо боты всякие, сканирующие порты привалят. Нормальная практика разделять бэкэенд и фронтэнд нынче. И нет смысла поэтому сразу ESP вешать в инет.

"Прокси" по тем же причинам менее корректный способ. Уж если есть хостинг - выгрузите обработку работы с пользователем на него? Нахрена проксировать трафик на дохленький МК, когда есть целый ПК для обработки? Пусть ESP занимается своими МКшными делами, а веб-сервером пусть уже хостинг будет. Да даже бесплатный хостинг с PHP можно использовать для этих дел.

PS: Лично перешивал роутер у друга, который "ломанули". Обычный роутер с заводской прошивкой. Бот в сети знал уязвимость к нему. Поставили туда хитрожопый скрипт. Который во всех загружаемых HTML файлах дописывал своё скрипт с рекламой. Это было еще до массового перехода крупных сайтов на HTTPS, в основном HTTP был кругом. В итоге на всех нормальных с виду сайтах всплывала навязчивая реклама. И хрен догадаешься еще, что это не сайт сам такую рекламу себе поставил. Вот такая хитрожопая штука была. А могли и похуже чего сделать.

Re: Web-сервер на базе ESP

Ср дек 11, 2019 10:59:07

Можно и так. Только пыхпых - для обезьян, извиняюсь! Вы еще nodejs бы предложили.
Ужас какой!

Re: Web-сервер на базе ESP

Ср дек 11, 2019 11:01:38

Eddy_Em, php есть везде. На любом копеечном и даже бесплатном хостинге. Поэтому и он предложен. Похер на чем писать обработчик JSON, PHP тут легкий и простой способ. Хочешь красноглазить - пиши на сях. Только вот хрен куда свой бинарник потом впихнешь, кроме VPS. А его еще настраивать надо. Любителям геморроя ради красноглазия рекомендуется.

Re: Web-сервер на базе ESP

Ср дек 11, 2019 14:42:31

Eddy_Em, давайте угадаю: для людей, наверное, пайтон или руби, Господи спаси? ;) Там ещё Go в последние пару лет добавился. Да?
Ответить