• Система автоматизации с открытым исходным кодом на базе 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");  //  "Клиент отключен"
}}
 
Сверху Снизу