• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Управление через веб страницу

Arthur

Active member
Нету. Но и без них работает.
А вот как добавить чтобы с помощью кнопки отправлялся сигнал
Рекомендую ознакомиться Вам со стандартами HTML, а так же с его возможностями. Можно управлять и по ссылке, и с помощью POST запросов, например. А если уж копнуть в сторону AJAX, JQuery, то там уж есть где развернуццо.
И всё это будет "по кнопке".
P.S. Скетч ваш не глядел, но хотел бы отметить, что отсутствие тега <body /> не есть как хорошо.
 

vadim.ssaa

New member
Рекомендую ознакомиться Вам со стандартами HTML, а так же с его возможностями. Можно управлять и по ссылке, и с помощью POST запросов, например. А если уж копнуть в сторону AJAX, JQuery, то там уж есть где развернуццо.
И всё это будет "по кнопке".
P.S. Скетч ваш не глядел, но хотел бы отметить, что отсутствие тега <body /> не есть как хорошо.
Все исправил! подскажите чтобы по нажатию на веб странице отправлялась определенная команда ИК
 

Arthur

Active member
ИК сигнал NEC(0xC40BF, 32)
Шта?
Пишите, пожалуйста, понятнее. Что это? Посредством чего отправить? С помощью какой шины? Каким протоколом?

Хрустальные гадальные шарики не успели закупить ещё - кризис, а хрусталь ныне дорог
 

vadim.ssaa

New member
Шта?
Пишите, пожалуйста, понятнее. Что это? Посредством чего отправить? С помощью какой шины? Каким протоколом?

Хрустальные гадальные шарики не успели закупить ещё - кризис, а хрусталь ныне дорог
Я хочу добавить в свой код который вначале прикрепил. Чтобы при открытие веб страницы можно нажать кнопку, и команда отправилась
 

Arthur

Active member
Я хочу добавить в свой код который вначале прикрепил. Чтобы при открытие веб страницы можно нажать кнопку, и команда отправилась
Не совсем ясно, так как ваш файлик не могу открыть Я - политика безопасности запрещает это мне...
Могли бы вы написать, что именно Вы хотите сделать? Или запостить сам текст скетча, а не файл его?..
 

vadim.ssaa

New member
Не совсем ясно, так как ваш файлик не могу открыть Я - политика безопасности запрещает это мне...
Могли бы вы написать, что именно Вы хотите сделать? Или запостить сам текст скетча, а не файл его?..
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <IRremoteESP8266.h>

MDNSResponder mdns;
const char* ssid = "Ne Wi-Fi";
const char* password = "aaaaaaaa8";

ESP8266WebServer server(80);

int D0_pin = 16;
int D1_pin = 2;
int D2_pin = 5;
IRsend irsend(0); //an IR led is connected to GPIO pin 0

void setup(void){
// preparing GPIOs
pinMode(D0_pin, OUTPUT);
digitalWrite(D0_pin, LOW);
pinMode(D1_pin, OUTPUT);
digitalWrite(D1_pin, LOW);
pinMode(D2_pin, OUTPUT);
digitalWrite(D2_pin, LOW);


delay(100);
Serial.begin(115200);
WiFi.begin(ssid, password);

Это Я тут пытался
//+++++++++++++++++++++++ START LED-IR ++++++++++++++++++++
server.on("/", [](){
server.send(200, "text/html", webPage());
});
server.on("/socket6On", [](){
Serial.println("NEC");
irsend.sendNEC(0x00FFE01F, 36);
server.send(200, "text/html", webPage());
delay(100);

});
server.on("/socket6Off", [](){
Serial.println("NEC");
irsend.sendNEC(0x00FFE01F, 36);
server.send(200, "text/html", webPage());
delay(100);
//+++++++++++++++++++++++ END LED-IR ++++++++++++++++++++



//+++++++++++++++++++++++ START LED-1 ++++++++++++++++++++
});
server.on("/", [](){
server.send(200, "text/html", webPage());
});
server.on("/socket1On", [](){
digitalWrite(D0_pin, HIGH);
digitalWrite(D1_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);

});
server.on("/socket1Off", [](){
digitalWrite(D0_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
//+++++++++++++++++++++++ END LED-1 ++++++++++++++++++++

//+++++++++++++++++++++++ START LED-2 ++++++++++++++++++++
});
server.on("/socket2On", [](){
digitalWrite(D1_pin, HIGH);
digitalWrite(D0_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket2Off", [](){
digitalWrite(D1_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);

// +++++++++++++++++++++++ END LED-2 ++++++++++++++++++++

//+++++++++++++++++++++++ START LED-3 ++++++++++++++++++++
});
server.on("/socket3On", [](){
digitalWrite(D2_pin, HIGH);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket3Off", [](){
digitalWrite(D2_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);

// +++++++++++++++++++++++ END LED-3 ++++++++++++++++++++


});
server.begin();
Serial.println("HTTP server started");
}

void loop(void){
server.handleClient();
}

String webPage()
{
String web;
web += "<html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"utf-8\"><title>Web control.3218</title><style>button{color:red;padding: 10px 27px;}</style></head>";
web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">Web control.3218</h1><div>";

И тут тоже
//++++++++++ LED-IR +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Проектор----</p>";
if (digitalRead(0) == 1)
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket6Off\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</button></div></a>";
}
else
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket6On\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</button></div></a>";
}
// ++++++++ LED-IR +++++++++++++


//++++++++++ LED-1 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Вверх----</p>";
if (digitalRead(D0_pin) == 1)
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket1Off\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</button></div></a>";
}
else
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket1On\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</button></div></a>";
}
// ++++++++ LED-1 +++++++++++++
//++++++++++ LED-2 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Вниз----</p>";
if (digitalRead(D1_pin) == 1)
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket2Off\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</button></div></a>";
}
else
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket2On\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</button></div></a>";
}
// ++++++++ LED-2 +++++++++++++
//++++++++++ LED-3 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Усилитель----</p>";
if (digitalRead(D2_pin) == 1)
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket3Off\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</button></div></a>";
}
else
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket3On\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</button></div></a>";
}
// ++++++++ LED-3 +++++++++++++
// ========REFRESH=============
web += "<div style=\"text-align:center;margin-top: 20px;\"><a href=\"/\"><button style=\"width:158px;\">REFRESH</button></a></div>";
// ========REFRESH=============
web += "</div></body></html>";
return(web);
}
 

vadim.ssaa

New member
Не совсем ясно, так как ваш файлик не могу открыть Я - политика безопасности запрещает это мне...
Могли бы вы написать, что именно Вы хотите сделать? Или запостить сам текст скетча, а не файл его?..
хочу чтобы по нажатию кнопки на веб странице отправлялся ИК сигнал

#include <IRremoteESP8266.h>

IRsend irsend(0); //an IR led is connected to GPIO pin 0

void setup()
{
irsend.begin();
Serial.begin(9600);
}

void loop() {
Serial.println("NEC");
irsend.sendNEC(0x00FFE01F, 36);
delay(2000);
Serial.println("Sony");
irsend.sendSony(0xa90, 12);
delay(2000);
}
 

Arthur

Active member
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <IRremoteESP8266.h>

MDNSResponder mdns;
const char* ssid = "Ne Wi-Fi";
const char* password = "aaaaaaaa8";

ESP8266WebServer server(80);

int D0_pin = 16;
int D1_pin = 2;
int D2_pin = 5;
IRsend irsend(0); //an IR led is connected to GPIO pin 0

void setup(void){
// preparing GPIOs
pinMode(D0_pin, OUTPUT);
digitalWrite(D0_pin, LOW);
pinMode(D1_pin, OUTPUT);
digitalWrite(D1_pin, LOW);
pinMode(D2_pin, OUTPUT);
digitalWrite(D2_pin, LOW);


delay(100);
Serial.begin(115200);
WiFi.begin(ssid, password);

Это Я тут пытался
//+++++++++++++++++++++++ START LED-IR ++++++++++++++++++++
server.on("/", [](){
server.send(200, "text/html", webPage());
});
server.on("/socket6On", [](){
Serial.println("NEC");
irsend.sendNEC(0x00FFE01F, 36);
server.send(200, "text/html", webPage());
delay(100);

});
server.on("/socket6Off", [](){
Serial.println("NEC");
irsend.sendNEC(0x00FFE01F, 36);
server.send(200, "text/html", webPage());
delay(100);
//+++++++++++++++++++++++ END LED-IR ++++++++++++++++++++



//+++++++++++++++++++++++ START LED-1 ++++++++++++++++++++
});
server.on("/", [](){
server.send(200, "text/html", webPage());
});
server.on("/socket1On", [](){
digitalWrite(D0_pin, HIGH);
digitalWrite(D1_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);

});
server.on("/socket1Off", [](){
digitalWrite(D0_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
//+++++++++++++++++++++++ END LED-1 ++++++++++++++++++++

//+++++++++++++++++++++++ START LED-2 ++++++++++++++++++++
});
server.on("/socket2On", [](){
digitalWrite(D1_pin, HIGH);
digitalWrite(D0_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket2Off", [](){
digitalWrite(D1_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);

// +++++++++++++++++++++++ END LED-2 ++++++++++++++++++++

//+++++++++++++++++++++++ START LED-3 ++++++++++++++++++++
});
server.on("/socket3On", [](){
digitalWrite(D2_pin, HIGH);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket3Off", [](){
digitalWrite(D2_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);

// +++++++++++++++++++++++ END LED-3 ++++++++++++++++++++


});
server.begin();
Serial.println("HTTP server started");
}

void loop(void){
server.handleClient();
}

String webPage()
{
String web;
web += "<html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"utf-8\"><title>Web control.3218</title><style>button{color:red;padding: 10px 27px;}</style></head>";
web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">Web control.3218</h1><div>";

И тут тоже
//++++++++++ LED-IR +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Проектор----</p>";
if (digitalRead(0) == 1)
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket6Off\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</button></div></a>";
}
else
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket6On\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</button></div></a>";
}
// ++++++++ LED-IR +++++++++++++


//++++++++++ LED-1 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Вверх----</p>";
if (digitalRead(D0_pin) == 1)
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket1Off\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</button></div></a>";
}
else
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket1On\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</button></div></a>";
}
// ++++++++ LED-1 +++++++++++++
//++++++++++ LED-2 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Вниз----</p>";
if (digitalRead(D1_pin) == 1)
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket2Off\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</button></div></a>";
}
else
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket2On\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</button></div></a>";
}
// ++++++++ LED-2 +++++++++++++
//++++++++++ LED-3 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Усилитель----</p>";
if (digitalRead(D2_pin) == 1)
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket3Off\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</button></div></a>";
}
else
{
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket3On\"><button><div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</button></div></a>";
}
// ++++++++ LED-3 +++++++++++++
// ========REFRESH=============
web += "<div style=\"text-align:center;margin-top: 20px;\"><a href=\"/\"><button style=\"width:158px;\">REFRESH</button></a></div>";
// ========REFRESH=============
web += "</div></body></html>";
return(web);
}
Вырвиглазный, аццкий писец просто, а не код, Я не буду ломать свой мозг и глаза об это... Почему бы просто не написать *.html файлик, не положить его на флэху еспшки и не вычитывать его с флэхи в переменную при инициализации модуля?

Так как читать сиий говнокод желания нет, просто объясню на пальцах. Поставьте на странице кнопку Button, у неё укажите onclick="location.href='http://blahblahblah/yourcommand';" . После чего в коде поставьте обработчик URL /yourcommand, который при вызове будет выполнять команду, при этом будет возвращать код страницы, как и обработчик для основной страницы (полагаю, что '/')...
 

vadim.ssaa

New member
Вырвиглазный, аццкий писец просто, а не код, Я не буду ломать свой мозг и глаза об это... Почему бы просто не написать *.html файлик, не положить его на флэху еспшки и не вычитывать его с флэхи в переменную при инициализации модуля?

Так как читать сиий говнокод желания нет, просто объясню на пальцах. Поставьте на странице кнопку Button, у неё укажите onclick="location.href='http://blahblahblah/yourcommand';" . После чего в коде поставьте обработчик URL /yourcommand, который при вызове будет выполнять команду, при этом будет возвращать код страницы, как и обработчик для основной страницы (полагаю, что '/')...
не подскажите как это сделать? есть пример как это сделать? я не особо понимаю
 

Сергей_Ф

Moderator
Команда форума
@vadim.ssaa а что Вы хотите сделать? Опишите словами в общем. Не отправить код, а что в результате? Может Вам что то готовое подойдет? Например ESPEasy?
 

vadim.ssaa

New member
@vadim.ssaa а что Вы хотите сделать? Опишите словами в общем. Не отправить код, а что в результате? Может Вам что то готовое подойдет? Например ESPEasy?
хочу управлять нагрузкой. а также отправлять одну команду на телевизор
 

Arthur

Active member
Я не вижу смысла предлагать человеку готовое решение... Я бы предложил человеку разобраться в устройстве памяти еспшки, использования внутренней памяти, что было бы полезнее для человека, более познавательно...
В общем, Вадим - решайте сами, что Вам интереснее - опыт и знания или готовое решение...
 
Сверху Снизу