s00500 / ESPUI

A simple web user interface library for ESP32 and ESP8266

Home Page:https://valencia.lbsfilm.at/midterm-presentation/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How can I save changes permanently?

TA1GI opened this issue · comments

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();

}

How can I save changes permanently using littlefs? Is there a feature in the ESPUI library where I can use this?

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.

Thank you