Zápisník experimentátora
Hierarchy: ESP8266
V predchádzajúcom príklade sme vytvorili HTTP server s tromi stránkami. Ak si pozriete zdrojový kód servera, nájdete tam adresár html, v ktorom sú zdrojové texty HTML stránok. V tomto adresári som navrhoval dizajn každej stránky. Po navrhnutí dizajnu som musel zdrojový kód každej stránky skopírovať do zdrojového kódu v c++. Takáto činnosť je pracná a neefektívna. V tomto článku sa naučíme, ako môžeme vynechať kopírovanie do zdrojového kódu v c++ a nahradiť ho súborovým systémom SPIFFS.
Použitie súborového systému SPIFFS si vyžaduje inštaláciu pluginu, pomocou ktorého nahráte obsah adresára so súbormi do SPIFFS. Podrobnosti nájdete v článku, ktorý som na túto tému napísal. HTML súbory z predchádzajúceho príkladu sa v tomto programe nachádzajú v adresári data.
Toto je jednoduchý projekt, preto nám bude stačiť niektorá doska s mikrokontrolérom ESP8266, ktorú je možné priamo pripojiť do USB. Aby ste sa vyhli prípadnému skratu, môžete dosku zastrčiť do breadboardu.
Použitie SPIFFS veľmi zjednušilo predchádzajúci program pre ESP8266. Mohli sme sa zbaviť všetkých hlavičkových súborov so zdrojovými kódmi HTML stránok a mohli sme odstrániť aj všetky funkcie, ktoré jednotlivé stránky odosielali do prehliadača. To všetko sa dalo zjednodušiť do štyroch riadkov. SPIFFS.begin
inicializuje súborový systém a funkcia server.serveStatic
zabezpečuje odoslanie stránky do prehliadača. Nemusíte sa ani starať o nastavenie content-type, ktorý prehliadaču hovorí, aké dáta mu odosielate. Tie najbežnejšie typy súborov sú automaticky rozoznané.
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <FS.h>
#include "arduino_secret.h"
ESP8266WebServer server(80);
void setup(void){
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
SPIFFS.begin();
server.serveStatic("/", SPIFFS, "/page1.html");
server.serveStatic("/page2", SPIFFS, "/page2.html");
server.serveStatic("/page3", SPIFFS, "/page3.html");
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
Ešte si naznačme, čomu sa budeme venovať nabudúce. Ak si pozriete sieťovú komunikáciu, uvidíte, že do prehliadača dodalo obsah ESP8266, časť obsahu sa stiahol z CDN servera a že sa prehliadač pokúsil stiahnuť súbor favicon.ico z ESP8266. Žiadny taký súbor v SPIFFS ale nemáme. Preto sa nabudúce pozrieme na vytvorenie tohto súboru a budeme aj ošetrovať chyby na neexistujúcich stránkach.
Zdrojový kód sa nachádza na serveri GitHub.
12.04.2019