mirror of
				https://github.com/s00500/ESPUI.git
				synced 2025-11-04 14:33:22 +00:00 
			
		
		
		
	#9 adding control id as return value
This commit is contained in:
		@@ -51,7 +51,7 @@ Download the [Repository](https://github.com/s00500/ESPUI/archive/master.zip), G
 | 
				
			|||||||
ESPUI **NEEDS** its files burnt on the SPIFFS filesystem on the ESP. **Without this ESPUI will NOT work at all**
 | 
					ESPUI **NEEDS** its files burnt on the SPIFFS filesystem on the ESP. **Without this ESPUI will NOT work at all**
 | 
				
			||||||
There are now two ways to do this: you can either use the upload tool or you use the library function `ESPUI.prepareFileSystem()`
 | 
					There are now two ways to do this: you can either use the upload tool or you use the library function `ESPUI.prepareFileSystem()`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Simple filesystem preparation (recomended)
 | 
					#### Simple filesystem preparation (recomended, but currently not working well on esp32, see issues)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Just open the example sketch **prepareFileSystem** and run it on the ESP, (give it 5 - 10 seconds),
 | 
					Just open the example sketch **prepareFileSystem** and run it on the ESP, (give it 5 - 10 seconds),
 | 
				
			||||||
The library will create all needed files.
 | 
					The library will create all needed files.
 | 
				
			||||||
@@ -81,10 +81,13 @@ Now you are set to go and use any code you want to with this library
 | 
				
			|||||||
- ~~Setup SPIFFS using values in program memory~~
 | 
					- ~~Setup SPIFFS using values in program memory~~
 | 
				
			||||||
- ~~ESP8266 support~~
 | 
					- ~~ESP8266 support~~
 | 
				
			||||||
- Document slider
 | 
					- Document slider
 | 
				
			||||||
 | 
					- New images in docu
 | 
				
			||||||
- proper return value (as int and not as string) for slider
 | 
					- proper return value (as int and not as string) for slider
 | 
				
			||||||
- Maybe a slider range setting, meanwhile please use map()
 | 
					- Maybe a slider range setting, meanwhile please use map()
 | 
				
			||||||
- Improve slider stability
 | 
					- Improve slider stability
 | 
				
			||||||
- Improve general stability
 | 
					- Improve general stability
 | 
				
			||||||
 | 
					- Multiline Labels
 | 
				
			||||||
 | 
					- PlattformIO Integration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Documentation
 | 
					## Documentation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -108,11 +108,19 @@ void writeFile(const char *path, const char *data) {
 | 
				
			|||||||
    Serial.println("Failed to open file for writing");
 | 
					    Serial.println("Failed to open file for writing");
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  #if defined(ESP32)
 | 
				
			||||||
 | 
					  if (file.print(data)) {
 | 
				
			||||||
 | 
					    Serial.println("File written");
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    Serial.println("Write failed");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
  if (file.print(FPSTR(data))) {
 | 
					  if (file.print(FPSTR(data))) {
 | 
				
			||||||
    Serial.println("File written");
 | 
					    Serial.println("File written");
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    Serial.println("Write failed");
 | 
					    Serial.println("Write failed");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
  file.close();
 | 
					  file.close();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -244,7 +252,7 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client,
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ESPUIClass::label(const char *label, int color, String value) {
 | 
					int ESPUIClass::label(const char *label, int color, String value) {
 | 
				
			||||||
  if (labelExists(label)) {
 | 
					  if (labelExists(label)) {
 | 
				
			||||||
    if (debug)
 | 
					    if (debug)
 | 
				
			||||||
      Serial.println("UI ERROR: Element " + String(label) +
 | 
					      Serial.println("UI ERROR: Element " + String(label) +
 | 
				
			||||||
@@ -264,10 +272,11 @@ void ESPUIClass::label(const char *label, int color, String value) {
 | 
				
			|||||||
  newL->id = cIndex;
 | 
					  newL->id = cIndex;
 | 
				
			||||||
  controls[cIndex] = newL;
 | 
					  controls[cIndex] = newL;
 | 
				
			||||||
  cIndex++;
 | 
					  cIndex++;
 | 
				
			||||||
 | 
					  return cIndex - 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: this still needs a range setting
 | 
					// TODO: this still needs a range setting
 | 
				
			||||||
void ESPUIClass::slider(const char *label, void (*callBack)(Control, int),
 | 
					int ESPUIClass::slider(const char *label, void (*callBack)(Control, int),
 | 
				
			||||||
                       int color, String value) {
 | 
					                       int color, String value) {
 | 
				
			||||||
  if (labelExists(label)) {
 | 
					  if (labelExists(label)) {
 | 
				
			||||||
    if (debug)
 | 
					    if (debug)
 | 
				
			||||||
@@ -288,9 +297,10 @@ void ESPUIClass::slider(const char *label, void (*callBack)(Control, int),
 | 
				
			|||||||
  newSL->id = cIndex;
 | 
					  newSL->id = cIndex;
 | 
				
			||||||
  controls[cIndex] = newSL;
 | 
					  controls[cIndex] = newSL;
 | 
				
			||||||
  cIndex++;
 | 
					  cIndex++;
 | 
				
			||||||
 | 
					  return cIndex - 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ESPUIClass::button(const char *label, void (*callBack)(Control, int),
 | 
					int ESPUIClass::button(const char *label, void (*callBack)(Control, int),
 | 
				
			||||||
                       int color, String value) {
 | 
					                       int color, String value) {
 | 
				
			||||||
  if (labelExists(label)) {
 | 
					  if (labelExists(label)) {
 | 
				
			||||||
    if (debug)
 | 
					    if (debug)
 | 
				
			||||||
@@ -313,9 +323,10 @@ void ESPUIClass::button(const char *label, void (*callBack)(Control, int),
 | 
				
			|||||||
  newB->id = cIndex;
 | 
					  newB->id = cIndex;
 | 
				
			||||||
  controls[cIndex] = newB;
 | 
					  controls[cIndex] = newB;
 | 
				
			||||||
  cIndex++;
 | 
					  cIndex++;
 | 
				
			||||||
 | 
					  return cIndex - 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ESPUIClass::switcher(const char *label, bool startState,
 | 
					int ESPUIClass::switcher(const char *label, bool startState,
 | 
				
			||||||
                         void (*callBack)(Control, int), int color) {
 | 
					                         void (*callBack)(Control, int), int color) {
 | 
				
			||||||
  if (labelExists(label)) {
 | 
					  if (labelExists(label)) {
 | 
				
			||||||
    if (debug)
 | 
					    if (debug)
 | 
				
			||||||
@@ -333,9 +344,10 @@ void ESPUIClass::switcher(const char *label, bool startState,
 | 
				
			|||||||
  newS->id = cIndex;
 | 
					  newS->id = cIndex;
 | 
				
			||||||
  controls[cIndex] = newS;
 | 
					  controls[cIndex] = newS;
 | 
				
			||||||
  cIndex++;
 | 
					  cIndex++;
 | 
				
			||||||
 | 
					  return cIndex - 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ESPUIClass::pad(const char *label, bool center,
 | 
					int ESPUIClass::pad(const char *label, bool center,
 | 
				
			||||||
                    void (*callBack)(Control, int), int color) {
 | 
					                    void (*callBack)(Control, int), int color) {
 | 
				
			||||||
  if (labelExists(label)) {
 | 
					  if (labelExists(label)) {
 | 
				
			||||||
    if (debug)
 | 
					    if (debug)
 | 
				
			||||||
@@ -355,6 +367,7 @@ void ESPUIClass::pad(const char *label, bool center,
 | 
				
			|||||||
  newP->id = cIndex;
 | 
					  newP->id = cIndex;
 | 
				
			||||||
  controls[cIndex] = newP;
 | 
					  controls[cIndex] = newP;
 | 
				
			||||||
  cIndex++;
 | 
					  cIndex++;
 | 
				
			||||||
 | 
					  return cIndex - 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ESPUIClass::print(int id, String value) {
 | 
					void ESPUIClass::print(int id, String value) {
 | 
				
			||||||
@@ -510,7 +523,9 @@ void ESPUIClass::begin(const char *_title) {
 | 
				
			|||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  server->onNotFound(
 | 
					  server->onNotFound(
 | 
				
			||||||
      [](AsyncWebServerRequest *request) { request->send(404); });
 | 
					    [](AsyncWebServerRequest *request) {
 | 
				
			||||||
 | 
					    request->send(404);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  server->begin();
 | 
					  server->begin();
 | 
				
			||||||
  if (debug)
 | 
					  if (debug)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										50
									
								
								src/ESPUI.h
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								src/ESPUI.h
									
									
									
									
									
								
							@@ -86,44 +86,44 @@ typedef struct Control {
 | 
				
			|||||||
class ESPUIClass {
 | 
					class ESPUIClass {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  void begin(const char *_title); // Setup servers and page
 | 
					void begin(const char *_title);   // Setup servers and page
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void prepareFileSystem(); // Initially preps the filesystem and loads a lot of stuff into SPIFFS
 | 
					void prepareFileSystem();   // Initially preps the filesystem and loads a lot of stuff into SPIFFS
 | 
				
			||||||
void list();
 | 
					void list();
 | 
				
			||||||
  // Creating Elements
 | 
					// Creating Elements
 | 
				
			||||||
  void label(const char *label, int color, String value = ""); // Create Label
 | 
					int label(const char *label, int color, String value = "");   // Create Label
 | 
				
			||||||
  void button(const char *label, void (*callBack)(Control, int), int color,
 | 
					int button(const char *label, void (*callBack)(Control, int), int color,
 | 
				
			||||||
           String value = "");    // Create Event Button
 | 
					           String value = "");    // Create Event Button
 | 
				
			||||||
  void switcher(const char *label, bool startState,
 | 
					int switcher(const char *label, bool startState,
 | 
				
			||||||
             void (*callBack)(Control, int),
 | 
					             void (*callBack)(Control, int),
 | 
				
			||||||
             int color);    // Create Toggle Button
 | 
					             int color);    // Create Toggle Button
 | 
				
			||||||
  void pad(const char *label, bool centerButton, void (*callBack)(Control, int),
 | 
					int pad(const char *label, bool centerButton, void (*callBack)(Control, int),
 | 
				
			||||||
        int color);    // Create Pad Control
 | 
					        int color);    // Create Pad Control
 | 
				
			||||||
  void slider(const char *label, void (*callBack)(Control, int), int color, String value); // Create Slider Control
 | 
					int slider(const char *label, void (*callBack)(Control, int), int color, String value);   // Create Slider Control
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Update Elements
 | 
					// Update Elements
 | 
				
			||||||
  void print(int id, String value);
 | 
					void print(int id, String value);
 | 
				
			||||||
  void print(String label, String value);
 | 
					void print(String label, String value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void updateSwitcher(int id, bool nValue, int clientId = -1);
 | 
					void updateSwitcher(int id, bool nValue, int clientId = -1);
 | 
				
			||||||
  void updateSwitcher(String label, bool nValue, int clientId = -1);
 | 
					void updateSwitcher(String label, bool nValue, int clientId = -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void updateSlider(int id, int nValue, int clientId = -1);
 | 
					void updateSlider(int id, int nValue, int clientId = -1);
 | 
				
			||||||
  void updateSlider(String label, int nValue, int clientId = -1);
 | 
					void updateSlider(String label, int nValue, int clientId = -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void textThem(String text, int clientId);
 | 
					void textThem(String text, int clientId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Variables ---
 | 
					// Variables ---
 | 
				
			||||||
  const char *ui_title = "ESPUI"; // Store UI Title and Header Name
 | 
					const char *ui_title = "ESPUI";   // Store UI Title and Header Name
 | 
				
			||||||
  int cIndex = 0;                 // Control index
 | 
					int cIndex = 0;                   // Control index
 | 
				
			||||||
  Control *controls[25];
 | 
					Control *controls[25];
 | 
				
			||||||
  void jsonDom(AsyncWebSocketClient *client);
 | 
					void jsonDom(AsyncWebSocketClient *client);
 | 
				
			||||||
  int getIdByLabel(String label);
 | 
					int getIdByLabel(String label);
 | 
				
			||||||
  bool labelExists(String label);
 | 
					bool labelExists(String label);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
  AsyncWebServer *server;
 | 
					AsyncWebServer *server;
 | 
				
			||||||
  AsyncWebSocket *ws;
 | 
					AsyncWebSocket *ws;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern ESPUIClass ESPUI;
 | 
					extern ESPUIClass ESPUI;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user