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

Вопрос Прикрутить EspFS

sav-13

Member
Всем доброго времени суток

Никто не озадачивался прикручиванием поддержки espFS ?
Чтобы можно было отдельно генерить странички для WEB-сервера и зашивать их прямо на флэшку ESP по свободному от прошивки адресу?
 

tretyakov_sa

Moderator
Команда форума
Всем доброго времени суток

Никто не озадачивался прикручиванием поддержки espFS ?
Чтобы можно было отдельно генерить странички для WEB-сервера и зашивать их прямо на флэшку ESP по свободному от прошивки адресу?
 

ave

New member
Ajax туда-сюда.
Повторил, причесал, все работает.

Источники:
1. ESP8266 AJAX [SOLVED] - Everything ESP8266
2. AJAX — технология обращения к серверу без перезагрузки страницы. | Программирование ESP8266 в среде Arduino IDE

Код:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

ESP8266WebServer server(80);

const int led = 13;
const char *ssid = "****";
const char *password = "****";
int ledStatus;

String javaScript = "<script>\n"
"var xmlHttp=createXmlHttpObject();\n"
"function createXmlHttpObject(){\n"
" if (window.XMLHttpRequest) xmlHttp=new XMLHttpRequest(); else xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');\n"
" return xmlHttp;\n"
"}\n"
"function handleServerResponse(){\n"
" if(xmlHttp.readyState==4 && xmlHttp.status==200){\n"
"   xmlResponse = xmlHttp.responseXML;\n"
"   xmldoc = xmlResponse.getElementsByTagName('led');\n"
"   message = xmldoc[0].firstChild.nodeValue;\n"
"   if (message == '1') document.getElementById('led').innerHTML='Led ON'; else document.getElementById('led').innerHTML='Led OFF';\n"
"   xmldoc = xmlResponse.getElementsByTagName('time');\n"
"   message = xmldoc[0].firstChild.nodeValue;\n"
"   document.getElementById('runtime').innerHTML=message;\n"
" }\n"
"}\n"
"function process(){\n"
" if(xmlHttp.readyState==0 || xmlHttp.readyState==4){\n"
"   xmlHttp.open('PUT','xml',true);\n"
"   xmlHttp.onreadystatechange=handleServerResponse;  //без скобок!\n"
"   xmlHttp.send(null);\n"
" }\n"
" setTimeout('process()',1000);\n"
"}\n"
"function led(set){\n"
" if(xmlHttp.readyState==0 || xmlHttp.readyState==4){\n"
"   xmlHttp.open('PUT','led?set='+set,true);\n"
"   xmlHttp.onreadystatechange=handleServerResponse;  //без скобок!\n"
"   xmlHttp.send(null);\n"
" }\n"
"}\n"
"function led2(set){\n"
" //var set = document.getElementById('set').value;\n"
" server = 'led?set='+set;\n"
" request = new XMLHttpRequest();\n"
" request.open('GET',server,true);\n"
" request.send();\n"
"}\n"
"</script>\n";

String millis2time(){
  String Time = "";
  unsigned long ss;
  byte mm,hh;
  ss=millis()/1000;
  hh=ss/3600;
  mm=(ss-hh*3600)/60;
  ss=(ss-hh*3600)-mm*60;
  if(hh<10)Time+="0";
  Time+=(String)hh+":";
  if(mm<10)Time+="0";
  Time+=(String)mm+":";
  if(ss<10)Time+="0";
  Time+=(String)ss;
  return Time;
}

void handleWebsite(){
  String webSite = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/><title>ESP8266</title></head><body onload='process()'><span id='runtime'></span><br/><br/><span id='led'></span><br/><br/><input type='button' value='Led ON' onclick='led(1)'/><br/><br/><input type='button' value='Led OFF' onclick='led(0)'/>"+javaScript+"</body></html>";
  server.send(200,"text/html",webSite);
}

void handleXML(){
  String xml = "<?xml version='1.0'?><response><led>"+(String)ledStatus+"</led><time>"+millis2time()+"</time></response>";
  server.send(200,"text/xml",xml);
}

void handleLed(){
  ledStatus = server.arg("set").toInt();
  Serial.print("Led ");
  Serial.println(ledStatus);
  digitalWrite(led,ledStatus);
  String xml = "<?xml version='1.0'?><response><led>"+(String)ledStatus+"</led><time>"+millis2time()+"</time></response>";
  server.send(200,"text/xml",xml);
}

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();
  pinMode(led,OUTPUT);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid,password);
  while (WiFi.status() != WL_CONNECTED) {Serial.print("."); delay(500);}
  Serial.println();
  Serial.print("Connected to ");
  Serial.print(ssid);
  Serial.print(", station IP address: ");
  Serial.println(WiFi.localIP());
  server.on("/",handleWebsite);
  server.on("/xml",handleXML);
  server.on("/led",handleLed);
  server.begin();
}

void loop() {
  server.handleClient();
  delay(1);
}
 
Последнее редактирование:

Pilnikov

Active member
Ajax туда-сюда.
Повторил, причесал, все работает.

Источники:
1. ESP8266 AJAX [SOLVED] - Everything ESP8266
2. AJAX — технология обращения к серверу без перезагрузки страницы. | Программирование ESP8266 в среде Arduino IDE

Код:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

ESP8266WebServer server(80);

const int led = 13;
const char *ssid = "****";
const char *password = "****";
int ledStatus;

String javaScript = "<script>\n"
"var xmlHttp=createXmlHttpObject();\n"
"function createXmlHttpObject(){\n"
" if (window.XMLHttpRequest) xmlHttp=new XMLHttpRequest(); else xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');\n"
" return xmlHttp;\n"
"}\n"
"function handleServerResponse(){\n"
" if(xmlHttp.readyState==4 && xmlHttp.status==200){\n"
"   xmlResponse = xmlHttp.responseXML;\n"
"   xmldoc = xmlResponse.getElementsByTagName('led');\n"
"   message = xmldoc[0].firstChild.nodeValue;\n"
"   if (message == '1') document.getElementById('led').innerHTML='Led ON'; else document.getElementById('led').innerHTML='Led OFF';\n"
"   xmldoc = xmlResponse.getElementsByTagName('time');\n"
"   message = xmldoc[0].firstChild.nodeValue;\n"
"   document.getElementById('runtime').innerHTML=message;\n"
" }\n"
"}\n"
"function process(){\n"
" if(xmlHttp.readyState==0 || xmlHttp.readyState==4){\n"
"   xmlHttp.open('PUT','xml',true);\n"
"   xmlHttp.onreadystatechange=handleServerResponse;  //без скобок!\n"
"   xmlHttp.send(null);\n"
" }\n"
" setTimeout('process()',1000);\n"
"}\n"
"function led(set){\n"
" if(xmlHttp.readyState==0 || xmlHttp.readyState==4){\n"
"   xmlHttp.open('PUT','led?set='+set,true);\n"
"   xmlHttp.onreadystatechange=handleServerResponse;  //без скобок!\n"
"   xmlHttp.send(null);\n"
" }\n"
"}\n"
"function led2(set){\n"
" //var set = document.getElementById('set').value;\n"
" server = 'led?set='+set;\n"
" request = new XMLHttpRequest();\n"
" request.open('GET',server,true);\n"
" request.send();\n"
"}\n"
"</script>\n";

String millis2time(){
  String Time = "";
  unsigned long ss;
  byte mm,hh;
  ss=millis()/1000;
  hh=ss/3600;
  mm=(ss-hh*3600)/60;
  ss=(ss-hh*3600)-mm*60;
  if(hh<10)Time+="0";
  Time+=(String)hh+":";
  if(mm<10)Time+="0";
  Time+=(String)mm+":";
  if(ss<10)Time+="0";
  Time+=(String)ss;
  return Time;
}

void handleWebsite(){
  String webSite = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/><title>ESP8266</title></head><body onload='process()'><span id='runtime'></span><br/><br/><span id='led'></span><br/><br/><input type='button' value='Led ON' onclick='led(1)'/><br/><br/><input type='button' value='Led OFF' onclick='led(0)'/>"+javaScript+"</body></html>";
  server.send(200,"text/html",webSite);
}

void handleXML(){
  String xml = "<?xml version='1.0'?><response><led>"+(String)ledStatus+"</led><time>"+millis2time()+"</time></response>";
  server.send(200,"text/xml",xml);
}

void handleLed(){
  ledStatus = server.arg("set").toInt();
  Serial.print("Led ");
  Serial.println(ledStatus);
  digitalWrite(led,ledStatus);
  String xml = "<?xml version='1.0'?><response><led>"+(String)ledStatus+"</led><time>"+millis2time()+"</time></response>";
  server.send(200,"text/xml",xml);
}

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();
  pinMode(led,OUTPUT);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid,password);
  while (WiFi.status() != WL_CONNECTED) {Serial.print("."); delay(500);}
  Serial.println();
  Serial.print("Connected to ");
  Serial.print(ssid);
  Serial.print(", station IP address: ");
  Serial.println(WiFi.localIP());
  server.on("/",handleWebsite);
  server.on("/xml",handleXML);
  server.on("/led",handleLed);
  server.begin();
}

void loop() {
  server.handleClient();
  delay(1);
}
А вот подскажите новичку как кусок этого кода от сих (String javaScript = "<script>\n") до сих (void setup()) оформить в виде отдельного файлика, кинуть этот файлик на SPIFFS (как кинуть я знаю), и запустить из void loop().
Буду премного благодарен если в ответе будет кусочек кода.
 

ave

New member
А вот подскажите новичку как кусок этого кода от сих (String javaScript = "<script>\n") до сих (void setup()) оформить в виде отдельного файлика, кинуть этот файлик на SPIFFS (как кинуть я знаю), и запустить из void loop().
Буду премного благодарен если в ответе будет кусочек кода.
Это есть в выше выложенных примерах tretyakov_sa.
 
Сверху Снизу