ESP8266 двойная связь Wi-Fi - PullRequest
       5

ESP8266 двойная связь Wi-Fi

1 голос
/ 02 октября 2019

Я могу подключить модуль ESP8266 к точке доступа Wi-Fi. WiFi.begin (SSID, передача);Я также сделал модуль для работы в качестве точки доступа Wi-Fi с собственным IP-адресом, а также в качестве веб-сервера. Теперь, как я могу использовать один модуль esp8266 для подключения к внешней точке доступа Wi-Fi для периодической отправки данных датчика? В то же время он будет работать как точка доступа Wi-Fi, так что другой клиентский компьютер / ноутбук сможет подключиться к этой точке доступа и получить веб-страницу, используя ее статический IP-адрес?

1 Ответ

1 голос
/ 04 октября 2019

Чтобы отправлять данные, а также использовать их в качестве веб-сервера, вам понадобится включить MDNS.

MDNS.begin("esp8266");
server.on("/", handleRoot);
server.begin();

Теперь вам нужно будет создать функцию для handleRoot

void handleRoot() {
  int sec = millis() / 1000;
  int min = sec / 60;
  int hr = min / 60;

  snprintf(temp, 1000, 
"<html>\
  <head>\
    <title>YOUR_TITLE</title>\
    <style>\
      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
    </style>\
  </head>\
  <body>\
    <p>Uptime: %02d:%02d:%02d</p>\
  </body>\
</html>", hr, min % 60, sec % 60);
  server.send(200, "text/html", temp);
}

При каждом открытии статического IP-адреса esp8266 будет отображаться веб-страница со временем.

Определите файл заголовка, а затем включите его в свой код как

#ifndef htmlData_h
#define htmlData_h

const char* dataHTML = "MY HTML CODE";
const char* dataHTML1 = "MY 2 HTML CODE";
#endif

Пример HTML-кода

const char* dataHTML = "<html>\
  <head>\
    <title>Demo</title>\
    <style>\
      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
    </style>\
  </head>\
  <body>\
    <h1>Hello!!!</h1>\
    <p>Uptime: %02d:%02d:%02d</p>\
    <FORM METHOD=POST action='/'>\
     <textarea rows = \"5\" cols = \"60\" name=myText>Talk to me...</textarea>\
     <br>\
     <input type=submit value='Talk'>\
   </FORM>\
  </body>\
</html>";

В приведенном выше коде на странице появится текстполе, которое вы должны использовать для отправки данных в esp8266 после того, как вы нажмете кнопку ввода. Отображается сообщение.

Для печати значений используйте

<input type=text name=myssid value=\"%s\">\

и используйте

snprintf(temp, 1000, dataHTML, variable1, varriable2,.....);

здесь переменная 1, переменная 2 будут представлять все значения% s в кодированной вами последовательности.

...