Ну, это понятно, но как?написать свою прошивку.
Насколько я помню (уроки не пересматривал довольно давно) - у Сергея Третьякова основная концепция - сервер на ESP, а вход к нему с компа, либо смартфона. Но, пока ТС освоит сервер на ESP, к тому времени, надеюсь, попадется и пример для клиента на ESP. На форуме это было. Если будут затруднения - поможем.@Cuper, не совсем понятно что вызывает трудности? Вы же задачу полностью сформулировали. Берете знакомый язык программирования и пишете. Если Lua или Arduino IDE то примеров в сети полно. Если языками не владеете, то сначала надо их выучить. В качестве старта вполне подойдут уроки Сергея Третьякова.
СпасибоЕсли будут затруднения - поможем.
void HTTP_init(void) {
HTTP.on("192.168.1.7", handle_Set_Ssdp); // Как тут указать запрос?
}
void handle_Set_Ssdp() {
v = HTTP.arg("192.168.1.7/"); // А тут как?
HTTP.send(200, "text/plain", "OK");
}
А других вариантов нету? Возможно, там ведь есть запрос "192.168.1.7"? И в нем записана эта единица@Cuper, ищите примеры как парсить страницу сайта.
Каких, например?@Cuper, в смысле других? Вы же сами хотели достать единицу со страницы сайта.
Есть много других вариантов передачи данных без сайта и без http.
У меня сложилось впечатление, что Вы нечетко представляете взаимодействие клиент-сервер. Сервер ничего не делает автоматически. Это пассивная сторона (не подумайте чего плохого ). Клиент посылает запрос - сервер в ответ посылает ответ. Простейший запрос, это когда в адресной строке интернет браузера указывается просто адрес сервера. В стандартном обмене подразумевается, что сервер, получив такой запрос, выполнит у себя файл index.html (формирование страницы сайта по умолчанию) - и сформированный ответ-страницу вернёт клиенту. Если стандартному серверу отправите запрос состоящий из адреса сервера плюс что-то типа page1 - сервер у себя будет искать страницу page1.html и запускать её для формирования ответа клиенту.кнопку отправлялись данные. Но у меня это должно происходить автоматически
Т.к. это ip-адрес сервера и присутствует в каждой строке, то здесь это означает, что функция handle_Set_Ssdp будет вызываться на каждое обращение клиента.HTTP.on("192.168.1.7", handle_Set_Ssdp);
Вы так считаете? Сервер "выполняет файлы"???Простейший запрос, это когда в адресной строке интернет браузера указывается просто адрес сервера. В стандартном обмене подразумевается, что сервер, получив такой запрос, выполнит у себя файл index.html (формирование страницы сайта по умолчанию) - и сформированный ответ-страницу вернёт клиенту.
kab, У Вас действительно так работает?ЗЫ1.
Т.к. это ip-адрес сервера и присутствует в каждой строке, то здесь это означает, что функция handle_Set_Ssdp будет вызываться на каждое обращение клиента.HTTP.on("192.168.1.7", handle_Set_Ssdp);
void ESP8266WebServer::on(const String &uri, ESP8266WebServer::THandlerFunction handler) {
on(uri, HTTP_ANY, handler);
}
void ESP8266WebServer::on(const String &uri, HTTPMethod method, ESP8266WebServer::THandlerFunction fn) {
on(uri, method, fn, _fileUploadHandler);
}
void ESP8266WebServer::on(const String &uri, HTTPMethod method, ESP8266WebServer::THandlerFunction fn, ESP8266WebServer::THandlerFunction ufn) {
_addRequestHandler(new FunctionRequestHandler(fn, ufn, uri, method));
}
class FunctionRequestHandler : public RequestHandler {
public:
FunctionRequestHandler(ESP8266WebServer::THandlerFunction fn, ESP8266WebServer::THandlerFunction ufn, const String &uri, HTTPMethod method)
: _fn(fn)
, _ufn(ufn)
, _uri(uri)
, _method(method)
{
}
protected:
String _uri;
bool canHandle(HTTPMethod requestMethod, String requestUri) override {
if (_method != HTTP_ANY && _method != requestMethod)
return false;
if (requestUri != _uri)
return false;
return true;
}
bool handle(ESP8266WebServer& server, HTTPMethod requestMethod, String requestUri) override {
(void) server;
if (!canHandle(requestMethod, requestUri))
return false;
_fn();
return true;
}
- пытался более простым языком изложить то, что я и представляю весьма примерно. Но вроде бы такого понимания пока хватало для моих целей.Сервер "выполняет файлы"???
Какая я страница, о чем Вы? Самое простое что нужно ТС, это простой rest без каких либо html, ничего больше не нужно, один модуль (клиент) выполняет запрос, другой (сервер) отвечает, обмениваются простым плайн-текстом или джейсоном если хотите, библиотека клиента и сервера уже есть.ЗЫ. А кстати, разве я был не прав, утверждая, что отправляя с браузера(клиента) на сервер чисто адрес сервера, мы на клиенте в ответе получим html-страницу, сформированную на основе index.html? По сути, не придираясь к точности формулировок...
Похоже, ТС понимает тему еще хуже меня - я пытался дотянуть его хотя бы до своего уровня (типа популярного введения во взаимодействие клиент-сервер). Жалко, что допустил фактические ошибки - на которые Вами было указано...kab, А зачем Вам всё это? типо поржать?
Грузить я вовсе не собирался, просто сказал почему не будет работать HTTP.on("192.168.1.7", handle_Set_Ssdp), извините я забыл что разбираться как оно работает, здесь не принято.Его привел просто для примера, т.к. сразу грузить ТС особенностями реализации сервера ESP8266WebServer - человека жалко
Б'ольшая часть человечества (разумного ) начинает знакомиться с интернет-программированием, всё-таки с броузера, и простейшей html-страницы. Поэтому я и пытался построить аналогию. Поскольку реакции ТС не было и нет - значит я зря потратил время. Не считая, что вот с Вами пообщались. Мне нравиться Ваша черта характера - разбирать досконально заинтересовавший вопрос вплоть до "глубин" текстов библиотек. Я слишком ленив для этого. Что-то похватал по верхушкам - теперь пытаюсь помочь совсем уж нулевым "энтузиастам"...Грузить я вовсе не собирался, просто сказал почему не будет работать HTTP.on("192.168.1.7", handle_Set_Ssdp), извините я забыл что разбираться как оно работает, здесь не принято.
TC в первом посте про html даже и не упомянул, сказал что на одном модуле должен быть http сервер, а другой модуль с этого сервера должен получать состояние датчика, а Вы туману с броузером, страницами и html-ами всякими напустили.