Buona Sera a tutti, come sempre sono a chiedere il Vostro aiuto:
Sto cercando di creare una pagina web che utilizza un foglio stile e un file js esterni.
In locale la pagina web funziona correttamente, ma quando la lancio dalla esp8266 questo non funziona, infatti non carica ne i css ne lo script java.
Il software è sempre un test, perché il Mio obiettivo è quello di creare una pagina web che possa consentire all'utente di selezionare la wifi a cui si dovrà connettere la scheda. Questo per ora è un test, per cui chiedo scusa se il codice non è scritto in maniera pulita e normalizzata.
index_config.html:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>config WiFi</title>
<link rel="icon" href="data:,">
<link rel="stylesheet" type="text/css" href="style.css" media="screen"/>
</head>
<body>
<div class="box">
<h1>CONFIGURAZIONE RETE WIFI</h1>
<div class="form-input-material">
<select class="seletWifi" id="listaWifi" size="10"></select>
</div>
<br>
<br>
<div class="form-input-material">
<label>SSID: </label><input type="text" name="SSID" id="SSID" placeholder=" " autocomplete="off" class="input-form" required /> <label>Password:</label>
<input type="password" name="password" id="password" placeholder=" " autocomplete="off" class="input-form" required />
</div>
<br>
<br>
<div class="form-stati-ip" >
<br>
<label class="form-stati-ip-elem">IP statico: </label> <input id="ipStatico" type="checkbox" />
<br>
<div class="containerConfigBox" id="formInputStaticIp" contenteditable="false">
<div class="configBox">
<label>IP: </label><input type="text" name="IP" id="txtIp" placeholder=" " autocomplete="off" class="input-form2" required disabled/>
<br>
<label>MASK: </label><input type="text" name="MASK" id="txtMask" placeholder=" " autocomplete="off" class="input-form2" required disabled/>
</div>
<div class="configBox">
<label>GATEWAY: </label><input type="text" name="GATEWAY" id="txtGateway" placeholder=" " autocomplete="off" class="input-form2" required disabled />
<br>
<label>DNS: </label><input type="text" name="DNS" id="txtDns" placeholder=" " autocomplete="off" class="input-form2" required disabled />
</div>
</div>
</div>
<br>
<br>
<div class="buttonDiv">
<button id="scann">Scan</button>
<button id="send">Invia</button>
<button id="reset">Annulla</button>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
style.css:
@charset "utf-8";
/* CSS Document */
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #eceffc;
font-family:Arial;
}
.configBox{
display:flex;
flex-direction: column;
width: 50%;
}
.containerConfigBox{
display: flex;
display: -webkit-flex;
flex-flow: row nowrap;
align-items: stretch;
justify-content: space-between;
margin-top: 10px;
margin-left: 10px;
margin-right: 10px;
}
.box {
width: 500px;
display: flex;
flex-direction: column;
align-items: center;
padding: 50px 40px;
color: white;
background: rgba(0, 0, 0, 0.8);
border-radius: 10px;
box-shadow: 0 0.4px 0.4px rgba(128, 128, 128, 0.109),
0 1px 1px rgba(128, 128, 128, 0.155),
0 2.1px 2.1px rgba(128, 128, 128, 0.195),
0 4.4px 4.4px rgba(128, 128, 128, 0.241),
0 12px 12px rgba(128, 128, 128, 0.35);
}
h1 {
margin: 0 0 24px 0;
}
.form-stati-ip{
background-color: rgba(96,96,96,1.00);
width: 500px;
height: 180px;
align-items: flex-start;
border-radius: 10px;padding: inherit,10px;
}
.form-stati-ip-elem{
margin: 10px;
}
.form-input-material {
border-color: white;
border-bottom-color: white;
color: white;
text-decoration-color: white;
}
.input-form{
border: 0;
background-color: rgba(96,96,96,1.00);
border-radius: 10px;
padding: 5px,7px;
color: white;
}
.input-form2{
border: 0;
background-color: rgba(23,23,23,1.00);
border-radius: 10px;
padding: 5px,7px;
color: white;
cursor: auto;
}
.seletWifi{
border: 0;
width: 500px;
background-color: rgba(96,96,96,1.00);
border-radius: 10px;
padding: 5px,7px;
color: white;
}
.input-form2:disabled{
background-color: #262626;
cursor: no-drop;
}
button{
outline: none;
cursor: pointer;
text-align: center;
text-decoration: none;
font: bold 12px Arial, Helvetica, sans-serif;
color: #fff;
padding: 10px 20px;
border: solid 2px rgba(255,255,255,1.00);
background: rgba(63,63,63,1.00);
border-radius: 20px;
}
button:focus{
outline: none;
cursor: pointer;
text-align: center;
text-decoration: none;
font: bold 12px Arial, Helvetica, sans-serif;
color: #fff;
padding: 10px 20px;
border: solid 2px rgba(255,255,255,1.00);
background: rgba(77,77,77,1.00);
border-radius: 20px;
box-shadow: 0px 0px 10px 5px rgba(110,110,110,0.73);
}
button:hover{
outline: none;
cursor: pointer;
text-align: center;
text-decoration: none;
font: bold 12px Arial, Helvetica, sans-serif;
color: #fff;
padding: 10px 20px;
border: solid 2px rgba(255,255,255,1.00);
background: rgba(77,77,77,1.00);
border-radius: 20px;
box-shadow: 0px 0px 10px 5px rgba(144,144,144,0.65);
}
button:active{
outline: none;
cursor: pointer;
text-align: center;
text-decoration: none;
font: bold 12px Arial, Helvetica, sans-serif;
color: #000000;
padding: 10px 20px;
border: solid 2px rgba(255,255,255,1.00);
background: rgba(255,255,255,1.00);
border-radius: 20px;
box-shadow: 0px 0px 10px 5px rgba(144,144,144,0.65);
}
.buttonDiv{
align-items:flex-end;
}
label{
color: white;
}
Esp2866:
#include <ESP8266WebServer.h>
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <FS.h>
ESP8266WebServer server (80);
File WEB;
void setup() {
SPIFFS.begin();
Serial.begin(115200);
WiFi.softAPdisconnect(true);
WiFi.disconnect();
WiFi.mode(WIFI_STA);
WiFi.begin(//SSID,//pw);
while(WiFi.status()!=WL_CONNECTED){
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println(WiFi.localIP());
Dir dir = SPIFFS.openDir("/");
Serial.println("Elenco File presenti in EEPROM:");
while (dir.next()) {
Serial.println(dir.fileName());
}
server.on("/", handleRoot);
server.on("/scann",HTTP_POST,scanzione);
server.on("/data",HTTP_POST,ricezione);
server.onNotFound(handleNotFound);
server.begin();
/*server.on("/",[](){server.send_P(200,"text/html", web);});
server.on("/scann",HTTP_GET,scanzione);
server.begin();*/
}
void handleRoot() {
loadFromSPIFFS("/index_config.html");
}
bool loadFromSPIFFS(String path) {
String dataType = "text/html";
Serial.print("Requested page -> ");
Serial.println(path);
if (SPIFFS.exists(path)){
File dataFile = SPIFFS.open(path, "r");
if (!dataFile) {
handleNotFound();
return false;
}
if (server.streamFile(dataFile, dataType) != dataFile.size()) {
Serial.println("Sent less data than expected!");
}else{
Serial.println("Page served!");
}
dataFile.close();
}else{
Serial.println("File non trovato");
handleNotFound();
return false;
}
return true;
}
void handleNotFound() {
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}
void loop() {
server.handleClient();
}
void scanzione(){
Serial.println("Invio Wifi");
const size_t dimensioni = JSON_ARRAY_SIZE(5);
DynamicJsonDocument doc (dimensioni);
JsonArray list = doc.createNestedArray("SSID");
list.add("Wifi_1");
list.add("Wifi_2");
list.add("Wifi_3");
list.add("Wifi_4");
String message = "";
serializeJson(doc,message);
Serial.println(message);
server.send(200,"application/json",message);
delay(500);
}
void ricezione(){
}
Questa schermata la ho se lancio la pagina web da locale
mentre cosi se la lancio dall'ESP:
Che errore commetto?

