Browse Source

add littleFS web project

master
Jakub Škrabánek 2 months ago
parent
commit
7780ddf15c
  1. 5
      10_littlefs_web2led/.gitignore
  2. 10
      10_littlefs_web2led/.vscode/extensions.json
  3. 22
      10_littlefs_web2led/data/index.html
  4. 16
      10_littlefs_web2led/platformio.ini
  5. 102
      10_littlefs_web2led/src/main.cpp
  6. 11
      10_littlefs_web2led/test/README

5
10_littlefs_web2led/.gitignore

@ -0,0 +1,5 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch

10
10_littlefs_web2led/.vscode/extensions.json

@ -0,0 +1,10 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}

22
10_littlefs_web2led/data/index.html

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="5">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1> Ovládání LED</h1>
<h2>LED 1</h2>
<a href="/led1?state=on">ZAPNOUT</a>
<a href="/led1?state=off">VYPNOUT</a>
<div>stav: <span>STAVLED1</span></div>
<h2>LED 2</h2>
<a href="/led2?state=on">ZAPNOUT</a>
<a href="/led2?state=off">VYPNOUT</a>
<div>stav: <span>STAVLED2</span></div>
</body>
</html>

16
10_littlefs_web2led/platformio.ini

@ -0,0 +1,16 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
board_build.filesystem = littlefs

102
10_littlefs_web2led/src/main.cpp

@ -0,0 +1,102 @@
#include <Arduino.h>
#include <LittleFS.h>
#include <WiFi.h>
#include <WebServer.h>
const char* ssid = "tksteti";
const char* password = "ProsimTeNevim";
WebServer server(80);
const int ledPin1 = 2;
const int ledPin2 = 4;
bool ledState1 = false;
bool ledState2 = false;
String loadHtml() {
File file = LittleFS.open("/index.html","r");
if(!file) {
Serial.println("Chyba při otevírání /index.html");
return "soubor nenalezen";
}
String html = file.readString();
file.close();
//String(ledState1) převede bool na String)
html.replace("STAVLED1", String(ledState1));
html.replace("STAVLED2", ledState2 ? "ON" : "OFF");
return html;
}
void handleRoot(){
server.send(200,"text/html",loadHtml());
}
void handleLED1() {
if(server.hasArg("state")) {
String state = server.arg("state");
if(state == "on") {
ledState1 = true;
digitalWrite(ledPin1,HIGH);
} else {
ledState1 = false;
digitalWrite(ledPin1,LOW);
}
server.sendHeader("Location","/");
server.send(302,"text/plain","");
} else {
server.send(400,"BAD REQUEST");
}
}
void handleLED2() {
if(server.hasArg("state")) {
String state = server.arg("state");
if(state == "on") {
ledState2 = true;
digitalWrite(ledPin2,HIGH);
} else {
ledState2 = false;
digitalWrite(ledPin2,LOW);
}
server.sendHeader("Location","/");
server.send(302,"text/plain","");
} else {
server.send(400,"BAD REQUEST");
}
}
void setup() {
Serial.begin(115200);
pinMode(ledPin1,OUTPUT);
pinMode(ledPin2,OUTPUT);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
WiFi.setHostname("ESP-Prijmeni");
WiFi.begin(ssid,password);
while(WiFi.status() != WL_CONNECTED){
delay(200);
Serial.print(".");
}
Serial.println("WiFi připojeno");
Serial.print("IP adresa: ");
Serial.print(WiFi.localIP());
if(!LittleFS.begin()){
Serial.println("Chyba při zavádění (mounting) LittleFS");
return;
}
server.on("/",handleRoot);
server.on("/led1",handleLED1);
server.on("/led2",handleLED2);
server.onNotFound([](){
server.send(404,"text/plain","Stranka nenalezena");
});
server.begin();
Serial.println("HTTP Server spuštěn");
}
void loop() {
server.handleClient();
}

11
10_littlefs_web2led/test/README

@ -0,0 +1,11 @@
This directory is intended for PlatformIO Test Runner and project tests.
Unit Testing is a software testing method by which individual units of
source code, sets of one or more MCU program modules together with associated
control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early
in the development cycle.
More information about PlatformIO Unit Testing:
- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html
Loading…
Cancel
Save