Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

SISTEM EMBEDDED

MENU KENDALI ON OFF SPIFFS PADA ESP32

Oleh:
NAMA : INA RAHMAWATI PUTRI
KELAS / NO ABSEN : D4 TEKNIK ELEKTRONIKA 3E / 12
NIM : 1841170053
MENU KENDALI ON OFF SPIFFS PADA ESP32
➢ Listing Program
#include <WiFi.h>
#include <SPIFFS.h>
#include <ESPAsyncWebServer.h>

#include "myadc.h"
#include "mygpio.h"

AsyncWebServer server(80);

const char* ssid = "Lucu";


const char* password = "luculucu";

const char* http_username = "esp32";


const char* http_password = "pass";

const char* PARAM_SETPOINT = "setpoint";


const char* PARAM_TS = "ts";
const char* PARAM_HISTERISIS = "histerisis";

float aktual = 36;

void notFound(AsyncWebServerRequest *request) {


request->send(404, "text/plain", "Not found");
}

String readFile(fs::FS &fs, const char * path) {


Serial.printf("Reading file: %s\r\n", path);
File file = fs.open(path, "r");
if (!file || file.isDirectory()) {
Serial.println("- empty file or failed to open file");
return String();
}
Serial.println("- read from file:");
String fileContent;
while (file.available()) {
fileContent += String((char)file.read());
}
Serial.println(fileContent);
return fileContent;
}

void writeFile(fs::FS &fs, const char * path, const char * message) {


Serial.printf("Writing file: %s\r\n", path);
File file = fs.open(path, "w");
if (!file) {
Serial.println("- failed to open file for writing");
return;
}
if (file.print(message)) {
Serial.println("- file written");
} else {
Serial.println("- write failed");
}
}

String processor(const String& var) {


//Serial.println(var);
if (var == "setpoint") {
return readFile(SPIFFS, "/inputSetpoint.txt");
}
else if (var == "ts") {
return readFile(SPIFFS, "/inputTs.txt");
}
else if (var == "aktual") {
return String(aktual);
}
else if (var == "histerisis") {
return readFile(SPIFFS, "/inputHisterisis.txt");
}
return String();
}

void setup() {
Serial.begin(115200);
// Initialize SPIFFS
if(!SPIFFS.begin(true)){
Serial.println("An Error has occurred while mounting SPIFFS");
ESP.restart();
}

// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}

// Print ESP32 Local IP Address


Serial.println(WiFi.localIP());
Serial.println();

// Route for root / web page


server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
if(!request->authenticate(http_username, http_password))
return request->requestAuthentication();
request->send(SPIFFS, "/index.html", String(), false, processor);
});

server.on("/setpoint", HTTP_GET, [](AsyncWebServerRequest *request){


readFile(SPIFFS, "/inputSetpoint.txt").toFloat();
request->send(SPIFFS, "/index.html", String(), false, processor);
});

server.on("/aktual", HTTP_GET, [](AsyncWebServerRequest *request){


String(aktual);
request->send(SPIFFS, "/index.html", String(), false, processor);
});

server.on("/ts", HTTP_GET, [](AsyncWebServerRequest *request){


readFile(SPIFFS, "/inputTs.txt").toInt();
request->send(SPIFFS, "/index.html", String(), false, processor);
});

server.on("/histerisis", HTTP_GET, [](AsyncWebServerRequest *request){


readFile(SPIFFS, "/inputHisterisis.txt").toFloat();
request->send(SPIFFS, "/index.html", String(), false, processor);
});
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest * request) {
String inputMessage;
if (request->hasParam(PARAM_SETPOINT)) {
inputMessage = request->getParam(PARAM_SETPOINT)->value();
writeFile(SPIFFS, "/inputSetpoint.txt", inputMessage.c_str());
}
else if (request->hasParam(PARAM_TS)) {
inputMessage = request->getParam(PARAM_TS)->value();
writeFile(SPIFFS, "/inputTs.txt", inputMessage.c_str());
}
else if (request->hasParam(PARAM_HISTERISIS)) {
inputMessage = request->getParam(PARAM_HISTERISIS)->value();
writeFile(SPIFFS, "/inputHisterisis.txt", inputMessage.c_str());
}
else {
inputMessage = "No message sent";
}
Serial.println(inputMessage);
request->send(200, "text/text", inputMessage);
});

server.on("/logout", HTTP_GET, [](AsyncWebServerRequest *request){


request->send(401);
});

server.on("/logged-out", HTTP_GET, [](AsyncWebServerRequest *request){


request->send(SPIFFS, "/logout.html", String(), false, processor);
});

server.onNotFound(notFound);
server.begin();
}

void loop() {
float setpoint= readFile(SPIFFS, "/inputSetpoint.txt").toFloat();
Serial.print("*** Setpoint : ");
Serial.println(setpoint);

int ts = readFile(SPIFFS, "/inputTs.txt").toInt();


Serial.print("*** Ts : ");
Serial.println(ts);

Serial.print("*** Aktual : ");


Serial.println(aktual);

float histerisis = readFile(SPIFFS, "/inputHisterisis.txt").toFloat();


Serial.print("*** Histeris: ");
Serial.println(histerisis);

Serial.println();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
delay(5000);
}
Deskripsi program:
Isi dari ssid dan password merupakan password dan nama Wifi yang akan
digunakan.

http_username dan http_password digunakan untuk login masuk pada webserver

Parameter dibawah ini merupakan masukan yang akan dimunculkan pada browser

Fungsi not found digunakan untuk menampilkan saat webserver 404


Fungsi dari readFile yaitu untuk membaca file txt

Fungsi dari writeFile yaitu untuk menyimpan ke dalam file txt


Processor berfungsi untuk menampilkan fungsi yang akan diupdate yang terdiri
dari setpoint, ts, aktual, histerisis.

Pada void setup terdapat Serial.begin untuk memulai serial monitor

Di bawah ini merupakan inisial untuk memulai SPIFFS

Terdapat WiFi.begin untuk connection ESP32 ke WiFi

Dibawah ini untuk mengetahui lokal IP pada perangkat yang digunakan


Dibawah ini merupakan route dari web page
Void loop

Cara pengoperasian :
• Buka “WiFi-KontrolOnOff”
• Lalu Upload

• Kemudian klik “ESP32 Sketch Data Upload


• Klik serial monitor, setelah itu restart untuk mengetahui IP lalu copy IP dan
paste pada browser.

• Setelah IP di paste pada browser, akan muncul seperti gambar dibawah ini.
Lalu isi Nama Pengguna dan Sandi sesuai yang ada di program
• Untuk mengubah Time Sampling, Setpoint, Histerisis yaitu dengan
mengisikan nilai pada kolom di bawah ini

Lalu klik simpan


Maka pada Setpoint, Histerisis, Time Sampling akan berubah

• Ketika menu Logout di klik maka akan muncul gambar seperti di bawah ini

You might also like