Zápisník experimentátora
Hierarchy: ESP8266
V předchozím příkladu jsme vytvořili HTTP server se třemi stránkami. Pokud si prohlédnete zdrojový kód serveru, najdete tam adresář html, ve kterém jsou zdrojové texty HTML stránek. V tomto adresáři jsem navrhoval design každé stránky. Po navržení designu jsem musel zdrojový kód každé stránky zkopírovat do zdrojového kódu v C ++. Taková činnost je pracná a neefektivní. V tomto článku se naučíme, jak můžeme vynechat kopírování do zdrojového kódu v c ++ a nahradit ho souborovým systémem SPIFFS.
Použití souborového systému SPIFFS vyžaduje instalaci pluginu, pomocí kterého nahrajete obsah adresáře se soubory do SPIFFS. Podrobnosti naleznete v článku, který jsem na toto téma napsal. HTML soubory z předchozího příkladu se v tomto programu nacházejí v adresáři data.
Toto je jednoduchý projekt, proto nám bude stačit některá deska s mikrokontrolérem ESP8266, kterou lze přímo připojit do USB. Abyste se vyhnuli případnému zkratu, můžete desku zastrčit do breadboardu.
Použití SPIFFS velmi zjednušilo předchozí program pro ESP8266. Mohli jsme se zbavit všech hlavičkových souborů se zdrojovými kódy HTML stránek a mohli jsme odstranit i všechny funkce, které jednotlivé stránky odesílali do prohlížeče. To vše se dalo zjednodušit do čtyř řádků. SPIFFS.begin
inicializuje souborový systém a funkce server.serveStatic
zajišťuje odeslání stránky do prohlížeče. Nemusíte se ani starat o nastavení content-type, který prohlížeči říká, jaká data mu odesíláte. Ty nejběžnější typy souborů jsou automaticky asociovány.
#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();
}
Ještě si naznačme, čemuž se budeme věnovat příště. Pokud si prohlédnete síťovou komunikaci, uvidíte, že do prohlížeče dodalo obsah ESP8266, část obsahu se stáhl z CDN serveru a že se prohlížeč pokusil stáhnout soubor favicon.ico z ESP8266. Žádný takový soubor v SPIFFS ale nemáme. Proto se příště podíváme na vytvoření tohoto souboru a budeme i ošetřovat chyby na neexistujících stránkách.
Zdrojový kód se nachází na serveru GitHub.
21.05.2019