How can I save changes permanently?
TA1GI opened this issue · comments
Abdullah YILMAZ commented
How can I permanently save my changes from the UI? Currently the changes I make are retained until the card is rebooted. All changes are reset when the card is restarted.
#include <DNSServer.h>
#include <ESPUI.h>
const byte DNS_PORT = 53;
IPAddress apIP(192, 168, 4, 1);
DNSServer dnsServer;
#if defined(ESP32)
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
const char* ssid = "SSID";
const char* password = "password";
const char* hostname = "ESPUI";
uint16_t switchOne;
uint16_t switchTwo;
uint16_t switchThree;
uint16_t status;
void textCall(Control* sender, int type)
{
Serial.print("Text: ID: ");
Serial.print(sender->id);
Serial.print(", Value: ");
Serial.println(sender->value);
}
void switchSystem(Control* sender, int value)
{
switch (value)
{
case S_ACTIVE:
Serial.println("Durum: Aktif");
ESPUI.updateControlValue(status, "Aktif");
break;
case S_INACTIVE:
Serial.println("Durum: Pasif");
ESPUI.updateControlValue(status, "Pasif");
break;
}
Serial.print(" ");
Serial.println(sender->id);
}
void telegramSwitch(Control* sender, int value)
{
switch (value)
{
case S_ACTIVE:
Serial.print("Active:");
ESPUI.updateVisibility(10, true);
ESPUI.updateVisibility(11, true);
break;
case S_INACTIVE:
Serial.print("Inactive");
ESPUI.updateVisibility(10, false);
ESPUI.updateVisibility(11, false);
break;
}
Serial.print(" ");
Serial.println(sender->id);
}
void smsSwitch(Control* sender, int value)
{
switch (value)
{
case S_ACTIVE:
Serial.print("Active:");
ESPUI.updateVisibility(14, true);
break;
case S_INACTIVE:
Serial.print("Inactive");
ESPUI.updateVisibility(14, false);
break;
}
Serial.print(" ");
Serial.println(sender->id);
}
void setup(void)
{
Serial.begin(115200);
#if defined(ESP32)
WiFi.setHostname(hostname);
#else
WiFi.hostname(hostname);
#endif
// try to connect to existing network
WiFi.begin(ssid, password);
Serial.print("\n\nTry to connect to existing network");
{
uint8_t timeout = 10;
// Wait for connection, 5s timeout
do
{
delay(500);
Serial.print(".");
timeout--;
} while (timeout && WiFi.status() != WL_CONNECTED);
// not connected -> create hotspot
if (WiFi.status() != WL_CONNECTED)
{
Serial.print("\n\nCreating hotspot");
WiFi.mode(WIFI_AP);
delay(100);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
#if defined(ESP32)
uint32_t chipid = 0;
for (int i = 0; i < 17; i = i + 8)
{
chipid |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
}
#else
uint32_t chipid = ESP.getChipId();
#endif
char ap_ssid[25];
snprintf(ap_ssid, 26, "ESPUI-%08X", chipid);
WiFi.softAP(ap_ssid);
timeout = 5;
do
{
delay(500);
Serial.print(".");
timeout--;
} while (timeout);
}
}
dnsServer.start(DNS_PORT, "*", apIP);
Serial.println("\n\nWiFi parameters:");
Serial.print("Mode: ");
Serial.println(WiFi.getMode() == WIFI_AP ? "Station" : "Client");
Serial.print("IP address: ");
Serial.println(WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP());
uint16_t tab1 = ESPUI.addControl(ControlType::Tab, "Ayarlar", "Ayarlar");
uint16_t tab2 = ESPUI.addControl(ControlType::Tab, "Cihazlar", "Cihazlar");
uint16_t tab3 = ESPUI.addControl(ControlType::Tab, "Wifi", "Wifi");
// shown above all tabs
status =
ESPUI.addControl(ControlType::Label, "Sistem Durumu:", "Aktif", ControlColor::Turquoise);
// tabbed controls
ESPUI.addControl(ControlType::Separator, "Sistem", "", ControlColor::None, tab1);
switchOne =
ESPUI.addControl(ControlType::Switcher, "Sistem", "", ControlColor::Alizarin, tab1, &switchSystem);
ESPUI.addControl(ControlType::Text, "Siren çalma süresi(ms)", "", ControlColor::None, tab1, textCall);
static bool switchOneState = true;
ESPUI.updateSwitcher(switchOne, switchOneState);
ESPUI.addControl(ControlType::Separator, "Telegram Bildirimi", "", ControlColor::None, tab1);
switchTwo =
ESPUI.addControl(ControlType::Switcher, "Telegram Bildirimi", "", ControlColor::Turquoise, tab1, telegramSwitch);
static bool switchTwoState = true;
ESPUI.updateSwitcher(switchTwo, switchTwoState);
ESPUI.addControl(ControlType::Text, "Telegram Token", "", ControlColor::None, tab1, textCall);
ESPUI.addControl(ControlType::Text, "Telegram User ID", "", ControlColor::None, tab1, textCall);
ESPUI.addControl(ControlType::Separator, "SMS Bildirimi", "", ControlColor::None, tab1);
switchThree =
ESPUI.addControl(ControlType::Switcher, "SMS Bildirimi", "", ControlColor::None, tab1, &smsSwitch);
static bool switchThreeState = true;
ESPUI.updateSwitcher(switchThree, switchThreeState);
ESPUI.addControl(ControlType::Text, "Sms Gönderilecek No", "", ControlColor::Alizarin, tab1, &textCall);
ESPUI.addControl(ControlType::Text, "Text Test:", "a Text Field", ControlColor::Alizarin, tab2, &textCall);
ESPUI.addControl(ControlType::Text, "SSID:", "", ControlColor::Alizarin, tab3, &textCall);
ESPUI.addControl(ControlType::Text, "Şifre:", "", ControlColor::Alizarin, tab3, &textCall);
ESPUI.beginLITTLEFS("ESPUI");
}
void loop(void)
{
dnsServer.processNextRequest();
}
Ian Gray commented
Abdullah YILMAZ commented
How can I save changes permanently using littlefs? Is there a feature in the ESPUI library where I can use this?
Ian Gray commented
LitteFS is completely separate to ESPUI, so consult the LittleFS documentation if you are interested in that.
It is far easier to just use the EEPROM libraries though if you are just saving some values.
Abdullah YILMAZ commented
Thank you