• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Esp8266 записывание значения введённого пользователем с веб страницы.

lnikfroll

New member
Добра!
Возникла проблема с созданием input. То есть как должно все быть
В веб интерфейсе есть поле ввода времени
Пользователь вводит время и нажимает на кнопку. Код сохраняет введённое пользователем значение в переменную и отправляет в консоль.
Подскажите дурачку, как можно это сделать

C++:
// подключаем библиотеку «ESP8266WiFi»:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ESP8266HTTPClient.h>

// вписываем здесь SSID и пароль для вашей WiFi-сети:
const char* ssid = "INGENERING";
const char* password = "Sakh@Lin";
IPAddress subnet(255,255,255,0);
IPAddress ip_dns1(8, 8, 8, 8);
IPAddress ip_dns2(8, 8, 4, 4);
// задаем контакт и начальное состояние для реле:
String relay1Stat = "Off";
String relay2Stat = "Off";
String relay3Stat = "Off";
String relay4Stat = "Off";
//Номера контактов модулей реле
int relay1 = 1;
int relay2 = 3;
int relay3 = 15;
int relay4 = 13;

char linebuf[80];
int charcount=0;

WiFiServer server(80);
ESP8266WiFiMulti WiFiMulti;
// блок setup() запускается только один раз – при загрузке:
void setup() {
  // инициализируем последовательный порт (для отладочных целей):
  Serial.begin(115200);
  delay(10);
  //Режим работы с портами
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
  //ПО умолчанию все реле на 0
  digitalWrite(relay1, LOW);
  digitalWrite(relay2, LOW);
  digitalWrite(relay3, LOW);
  digitalWrite(relay4, LOW);
                      
   // подключаемся к WiFi-сети:
  Serial.println();
  Serial.print("Connecting to "); // "Подключаемся к "
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.config(subnet,ip_dns1, ip_dns2);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected"); // "Подключение к WiFi выполнено"
  // запускаем веб-сервер:
  server.begin();
  Serial.println("Web server running. Waiting for the ESP IP...");
              // "Веб-сервер запущен. Ожидание IP-адреса ESP..."
      
  delay(10000);
  // печатаем IP-адрес ESP:
  Serial.println(WiFi.localIP());
 
// Здесь настройки ВАШЕГО WIFI
   while (WiFi.status() != WL_CONNECTED) {
    delay(500);
     Serial.print(".");}
     Serial.println(WiFi.localIP());
      // выводим мощность принимаемого сигнала:
  long rssi = WiFi.RSSI();
  Serial.print("RSSI:");
  Serial.println(rssi);
 
}
// Показываем веб-страницу с кнопкой «вкл/выкл» для реле:
void dashboardPage(WiFiClient &client) {
  client.println("<!DOCTYPE HTML><html><head>");
  client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head><body>");                                                         
  client.println("<h1>ESP 8266 <a href=\"/\">Refresh</a></h1>");

 //============================= реле 1 =========================//
  // генерируем кнопку для управления реле:
  client.println("<h3>Relay: " + relay1Stat + "</h3>");
  // если реле выключено, показываем кнопку «вкл»:       
  if(relay1Stat == "Off"){
    client.println("<a href=\"/relay1on\"><button>ON</button></a>");
    client.println ("<input type='time' name='date_hh' id='date_hh' size=2 autofocus> ");
    client.println ("<button id=\"save_button\">Save</button> ");


    
  }
  // если реле включено, показываем кнопку «выкл»:
  else if(relay1Stat == "On"){
    client.println("<a href=\"/relay1off\"><button>OFF</button></a>");                                                                 
  }
 
  //============================= реле 2 =========================//
// генерируем кнопку для управления реле 2:
  client.println("<h3>Relay: " + relay2Stat + "</h3>");
  // если реле выключено, показываем кнопку «вкл»:       
  if(relay2Stat == "Off"){
    client.println("<a href=\"/relay2on\"><button>ON</button></a>");
  }
  // если реле включено, показываем кнопку «выкл»:
  else if(relay2Stat == "On"){
    client.println("<a href=\"/relay2off\"><button>OFF</button></a>");                                                                 
  }
//============================= реле 3 =========================//
  // генерируем кнопку для управления реле 2:
  client.println("<h3>Relay: " + relay3Stat + "</h3>");
  // если реле выключено, показываем кнопку «вкл»:       
  if(relay3Stat == "Off"){
    client.println("<a href=\"/relay3on\"><button>ON</button></a>");
  }
  // если реле включено, показываем кнопку «выкл»:
  else if(relay3Stat == "On"){
    client.println("<a href=\"/relay3off\"><button>OFF</button></a>");                                                                 
  }

  //============================= реле 4 =========================//
// генерируем кнопку для управления реле 2:
  client.println("<h3>Relay: " + relay4Stat + "</h3>");
  // если реле выключено, показываем кнопку «вкл»:       
  if(relay4Stat == "Off"){
    client.println("<a href=\"/relay4on\"><button>ON</button></a>");
  }
  // если реле включено, показываем кнопку «выкл»:
  else if(relay4Stat == "On"){
    client.println("<a href=\"/relay4off\"><button>OFF</button></a>");                                                                 
  }

    //============================= Конец =========================//
  client.println("</body></html>");
     client.println ("   <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js\"></script> ");
    client.println ("<script>");
    client.println (" var hh; ");
    client.println ("console.log(hh)");
    client.println ("    $('#save_button').click(function(e){ ");
    client.println ("   e.preventDefault(); ");
    client.println ("   hh = $('#date_hh').val(); ");
    client.println ("    $.get('/save?hh=' + hh, function(data){ ");
    client.println ("      console.log(data);");
    client.println ("    }); ");
    client.println ("  });      ");
    client.println ("console.log('started')");
    client.println (" </script>");
}
void handleSave() {

}
void loop()
{



 
WiFiClient client = server.available();                // Получаем данные, посылаемые клиентом
 
if (client){
   Serial.println("new client");  //  "новый клиент"
    memset(linebuf,0,sizeof(linebuf));
    charcount=0;
    // HTTP-запрос заканчивается пустой строкой:
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
       char c = client.read();
     // считываем HTTP-запрос, символ за символом:
        linebuf[charcount]=c;
        if (charcount<sizeof(linebuf)-1) charcount++;
        // если вы дошли до конца строки (т.е. если получили
        // символ новой строки), это значит,
        // что HTTP-запрос завершен, и вы можете отправить ответ:
        if (c == '\n' && currentLineIsBlank) {
          dashboardPage(client);
          break;
        }
        if (c == '\n') {
          //============================= реле 1 =========================//
          if (strstr(linebuf,"GET /relay1off") > 0){
            digitalWrite(relay1, LOW);
            relay1Stat = "Off";
            Serial.println("Relay1 OFF");
          }
          else if (strstr(linebuf,"GET /relay1on") > 0){
            digitalWrite(relay1, HIGH);
            relay1Stat = "On";
            Serial.println("Relay1 ON");
          }

          //============================= реле 2 =========================//
           else if (strstr(linebuf,"GET /relay2on") > 0){
            digitalWrite(relay2, HIGH);
            relay2Stat = "On";
            Serial.println("Relay2 ON");
          }
          else if (strstr(linebuf,"GET /relay2off") > 0){
            digitalWrite(relay2, LOW);
            relay2Stat = "Off";
            Serial.println("Relay2 OFF");
          }

          //============================= реле 3 =========================//

           else if (strstr(linebuf,"GET /relay3on") > 0){
            digitalWrite(relay3, HIGH);
            relay3Stat = "On";
            Serial.println("Relay3 ON");
          }
          else if (strstr(linebuf,"GET /relay3off") > 0){
            digitalWrite(relay3, LOW);
            relay3Stat = "Off";
            Serial.println("Relay3 OFF");
          }
          //============================= реле 4 =========================//
           else if (strstr(linebuf,"GET /relay4on") > 0){
            digitalWrite(relay4, HIGH);
            relay4Stat = "On";
            Serial.println("Relay4 ON");
          }
          else if (strstr(linebuf,"GET /relay4off") > 0){
            digitalWrite(relay4, LOW);
            relay4Stat = "Off";
            Serial.println("Relay4 OFF");
          }


          
          
          // если получили символ новой строки...
          currentLineIsBlank = true;
          memset(linebuf,0,sizeof(linebuf));
          charcount=0;       
        }
        else if (c != '\r') {
          // если получили какой-то другой символ...
          currentLineIsBlank = false;
        }
      }
    }
    // даем веб-браузеру время на получение данных:
    delay(1);
    // закрываем соединение:
    client.stop();
    Serial.println("client disonnected");  //  "Клиент отключен"
}}
 
Сверху Снизу