Добра!
Возникла проблема с созданием input. То есть как должно все быть
В веб интерфейсе есть поле ввода времени
Пользователь вводит время и нажимает на кнопку. Код сохраняет введённое пользователем значение в переменную и отправляет в консоль.
Подскажите дурачку, как можно это сделать
Возникла проблема с созданием 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"); // "Клиент отключен"
}}