1
0
mirror of https://github.com/s00500/ESPUI.git synced 2024-11-22 04:00:55 +00:00

Proper wrappers

- update order of params of create functions to be simillar
- changed all numbers to be numbers
- split pad creation function
- updated examples
This commit is contained in:
Lukas Bachschwell 2019-03-24 19:18:53 +01:00
parent 650411bac4
commit 3c69f013fc
5 changed files with 319 additions and 307 deletions

View File

@ -27,7 +27,7 @@ THIS IS THE 2.0.0 DEVELOPMENT BRANCH, NOT GUARANTIED TO WORK
- Tabs by @eringerli ISSUE #45 - Tabs by @eringerli ISSUE #45
- remove black line without tabs ✅ - remove black line without tabs ✅
- API changes by @eringerli - API changes by @eringerli
- less updateCotrol functions - less updateControl functions
- proper wrappers for all create/update actions - proper wrappers for all create/update actions
- OptionList by @eringerli - OptionList by @eringerli
- Better return values - Better return values
@ -45,6 +45,14 @@ THIS IS THE 2.0.0 DEVELOPMENT BRANCH, NOT GUARANTIED TO WORK
- Tab usage - Tab usage
- Verbosity setting - Verbosity setting
## Changelog for functions:
- split pad into pad and padWithCenter
- Cleaned order or parameters on switch
- cleaned order of parameters on pad
- Changes all numbers to actually be numbers (slider value, number value, min
and max)
## Dependencies ## Dependencies
This library is dependent on the following libraries to function properly. This library is dependent on the following libraries to function properly.

View File

@ -20,21 +20,21 @@ const char* hostname = "EspuiTest";
uint16_t button1; uint16_t button1;
void numberCall( Control* sender, int type ) { void numberCall(Control *sender, int type) { Serial.println(sender->value); }
Serial.println( sender->value );
}
void textCall(Control *sender, int type) { void textCall(Control *sender, int type) {
Serial.print("Text: ID: "); Serial.print("Text: ID: ");
Serial.print(sender->id); Serial.print(sender->id);
Serial.print(", Value: "); Serial.print(", Value: ");
Serial.println( sender->value );} Serial.println(sender->value);
}
void slider(Control *sender, int type) { void slider(Control *sender, int type) {
Serial.print("Slider: ID: "); Serial.print("Slider: ID: ");
Serial.print(sender->id); Serial.print(sender->id);
Serial.print(", Value: "); Serial.print(", Value: ");
Serial.println( sender->value );} Serial.println(sender->value);
}
void buttonCallback(Control *sender, int type) { void buttonCallback(Control *sender, int type) {
switch (type) { switch (type) {
@ -204,6 +204,7 @@ void setup( void ) {
ESPUI.addControl(ControlType::Label, "Status:", "Stop", ControlColor::Turquoise); ESPUI.addControl(ControlType::Label, "Status:", "Stop", ControlColor::Turquoise);
uint16_t select1 = ESPUI.addControl(ControlType::Select, "Select:", "", ControlColor::Alizarin, Control::noParent, &selectExample); uint16_t select1 = ESPUI.addControl(ControlType::Select, "Select:", "", ControlColor::Alizarin, Control::noParent, &selectExample);
ESPUI.addControl(ControlType::Option, "Option1", "Opt1", ControlColor::Alizarin, select1); ESPUI.addControl(ControlType::Option, "Option1", "Opt1", ControlColor::Alizarin, select1);
ESPUI.addControl(ControlType::Option, "Option2", "Opt2", ControlColor::Alizarin, select1); ESPUI.addControl(ControlType::Option, "Option2", "Opt2", ControlColor::Alizarin, select1);
ESPUI.addControl(ControlType::Option, "Option3", "Opt3", ControlColor::Alizarin, select1); ESPUI.addControl(ControlType::Option, "Option3", "Opt3", ControlColor::Alizarin, select1);
@ -226,7 +227,7 @@ void setup( void ) {
* If you want to serve the files from SPIFFS use ESPUI.beginSPIFFS * If you want to serve the files from SPIFFS use ESPUI.beginSPIFFS
* (.prepareFileSystem has to be run in an empty sketch before) * (.prepareFileSystem has to be run in an empty sketch before)
*/ */
ESPUI.begin("ESPUI Control");
/* /*
* Optionally you can use HTTP BasicAuth. Keep in mind that this is NOT a * Optionally you can use HTTP BasicAuth. Keep in mind that this is NOT a
* SECURE way of limiting access. * SECURE way of limiting access.
@ -234,21 +235,18 @@ void setup( void ) {
* since it is transmitted in cleartext. Just add a username and password, * since it is transmitted in cleartext. Just add a username and password,
* for example begin("ESPUI Control", "username", "password") * for example begin("ESPUI Control", "username", "password")
*/ */
ESPUI.begin( "ESPUI Control" );
} }
void loop(void) { void loop(void) {
dnsServer.processNextRequest(); dnsServer.processNextRequest();
static long oldTime = 0; static long oldTime = 0;
static bool switchi = false; static bool testSwitchState = false;
if (millis() - oldTime > 5000) { if (millis() - oldTime > 5000) {
ESPUI.updateControl("Millis:", String(millis())); ESPUI.updateControl("Millis:", String(millis()));
switchi = !switchi; testSwitchState = !testSwitchState;
ESPUI.updateControl( "Switch one", switchi ? "1" : "0" ); ESPUI.updateControlValue("Switch one", testSwitchState ? "1" : "0");
oldTime = millis(); oldTime = millis();
} }
} }

View File

@ -11,20 +11,16 @@ DNSServer dnsServer;
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>
#endif #endif
// true for verbose, false for quiet
ESPUIClass ESPUI( Verbosity::VerboseJSON );
const char *ssid = "ESPUI"; const char *ssid = "ESPUI";
const char *password = "espui"; const char *password = "espui";
const char *hostname = "EspuiTest"; const char *hostname = "EspuiTest";
long oldTime = 0; long oldTime = 0;
bool switchi = false; bool testSwitchState = false;
int millisLabelId;
int testSwitchId;
void numberCall(Control *sender, int type) { Serial.println(sender->value); }
void numberCall( Control* sender, int type ) {
Serial.println( sender->value );
}
void textCall(Control *sender, int type) { void textCall(Control *sender, int type) {
Serial.print("Text: ID: "); Serial.print("Text: ID: ");
@ -56,12 +52,12 @@ void buttonExample( Control* sender, int type ) {
switch (type) { switch (type) {
case B_DOWN: case B_DOWN:
Serial.println("Status: Start"); Serial.println("Status: Start");
ESPUI.updateControl( "Status:", "Start" ); // ESPUI.updateControl( "Status:", "Start" );
break; break;
case B_UP: case B_UP:
Serial.println("Status: Stop"); Serial.println("Status: Stop");
ESPUI.updateControl( "Status:", "Stop" ); // ESPUI.updateControl( "Status:", "Stop" );
break; break;
} }
} }
@ -143,6 +139,7 @@ void otherSwitchExample( Control* sender, int value ) {
} }
void setup(void) { void setup(void) {
ESPUI.setVerbosity(Verbosity::VerboseJSON);
Serial.begin(115200); Serial.begin(115200);
#if defined(ESP32) #if defined(ESP32)
@ -192,15 +189,15 @@ void setup( void ) {
Serial.println(WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP()); Serial.println(WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP());
ESPUI.label("Status:", COLOR_TURQUOISE, "Stop"); ESPUI.label("Status:", COLOR_TURQUOISE, "Stop");
ESPUI.label( "Millis:", COLOR_EMERALD, "0" ); millisLabelId = ESPUI.label("Millis:", COLOR_EMERALD, "0");
ESPUI.button("Push Button", &buttonCallback, COLOR_PETERRIVER, "Press"); ESPUI.button("Push Button", &buttonCallback, COLOR_PETERRIVER, "Press");
ESPUI.button("Other Button", &buttonExample, COLOR_WETASPHALT, "Press"); ESPUI.button("Other Button", &buttonExample, COLOR_WETASPHALT, "Press");
ESPUI.pad( "Pad with center", true, &padExample, COLOR_SUNFLOWER ); ESPUI.padWithCenter("Pad with center", &padExample, COLOR_SUNFLOWER);
ESPUI.pad( "Pad without center", false, &padExample, COLOR_CARROT ); ESPUI.pad("Pad without center", &padExample, COLOR_CARROT);
ESPUI.switcher( "Switch one", false, &switchExample, COLOR_ALIZARIN ); testSwitchId = ESPUI.switcher("Switch one", &switchExample, COLOR_ALIZARIN, false);
ESPUI.switcher( "Switch two", true, &otherSwitchExample, COLOR_NONE ); ESPUI.switcher("Switch two", &otherSwitchExample, COLOR_NONE, true);
ESPUI.slider( "Slider one", &slider, COLOR_ALIZARIN, "30" ); ESPUI.slider("Slider one", &slider, COLOR_ALIZARIN, 30);
ESPUI.slider( "Slider two", &slider, COLOR_NONE, "100" ); ESPUI.slider("Slider two", &slider, COLOR_NONE, 100);
ESPUI.text("Text Test:", &textCall, COLOR_ALIZARIN, "a Text Field"); ESPUI.text("Text Test:", &textCall, COLOR_ALIZARIN, "a Text Field");
ESPUI.number("Numbertest", &numberCall, COLOR_ALIZARIN, 5, 0, 10); ESPUI.number("Numbertest", &numberCall, COLOR_ALIZARIN, 5, 0, 10);
@ -214,8 +211,8 @@ void setup( void ) {
* Optionally you can use HTTP BasicAuth. Keep in mind that this is NOT a * Optionally you can use HTTP BasicAuth. Keep in mind that this is NOT a
* SECURE way of limiting access. * SECURE way of limiting access.
* Anyone who is able to sniff traffic will be able to intercept your password * Anyone who is able to sniff traffic will be able to intercept your password
* since it is transmitted in cleartext. Just add a string as username and password, * since it is transmitted in cleartext. Just add a string as username and
* for example begin("ESPUI Control", "username", "password") * password, for example begin("ESPUI Control", "username", "password")
*/ */
ESPUI.begin("ESPUI Control"); ESPUI.begin("ESPUI Control");
} }
@ -224,9 +221,9 @@ void loop( void ) {
dnsServer.processNextRequest(); dnsServer.processNextRequest();
if (millis() - oldTime > 5000) { if (millis() - oldTime > 5000) {
ESPUI.print( "Millis:", String( millis() ) ); ESPUI.print(millisLabelId, String(millis()));
switchi = !switchi; testSwitchState = !testSwitchState;
ESPUI.updateSwitcher( "Switch one", switchi ); ESPUI.updateSwitcher(testSwitchId, testSwitchState);
oldTime = millis(); oldTime = millis();
} }
} }

View File

@ -407,35 +407,41 @@ uint16_t ESPUIClass::addControl(ControlType type, const char *label, String valu
return control->id; return control->id;
} }
int ESPUIClass::label(const char *label, ControlColor color, String value) { return addControl(ControlType::Label, label, value, color); } uint16_t ESPUIClass::label(const char *label, ControlColor color, String value) { return addControl(ControlType::Label, label, value, color); }
int ESPUIClass::graph(const char *label, ControlColor color) { return addControl(ControlType::Graph, label, "", color); } uint16_t ESPUIClass::graph(const char *label, ControlColor color) { return addControl(ControlType::Graph, label, "", color); }
int ESPUIClass::slider(const char *label, void (*callback)(Control *, int), ControlColor color, String value) { uint16_t ESPUIClass::slider(const char *label, void (*callback)(Control *, int), ControlColor color, int value, int min, int max) {
return addControl(ControlType::Slider, label, "", color, Control::noParent, callback); uint16_t sliderId = addControl(ControlType::Slider, label, String(value), color, Control::noParent, callback);
addControl(ControlType::Min, label, String(min), ControlColor::None, sliderId);
addControl(ControlType::Max, label, String(max), ControlColor::None, sliderId);
return sliderId;
} }
int ESPUIClass::button(const char *label, void (*callback)(Control *, int), ControlColor color, String value) { uint16_t ESPUIClass::button(const char *label, void (*callback)(Control *, int), ControlColor color, String value) {
return addControl(ControlType::Button, label, value, color, Control::noParent, callback); return addControl(ControlType::Button, label, value, color, Control::noParent, callback);
} }
int ESPUIClass::switcher(const char *label, bool startState, void (*callback)(Control *, int), ControlColor color) { uint16_t ESPUIClass::switcher(const char *label, void (*callback)(Control *, int), ControlColor color, bool startState) {
return addControl(ControlType::Switcher, label, "", color, Control::noParent, callback); return addControl(ControlType::Switcher, label, startState ? "1" : "0", color, Control::noParent, callback);
} }
int ESPUIClass::pad(const char *label, bool center, void (*callback)(Control *, int), ControlColor color) { uint16_t ESPUIClass::pad(const char *label, void (*callback)(Control *, int), ControlColor color) {
if (center) {
return addControl(ControlType::PadWithCenter, label, "", color, Control::noParent, callback);
} else {
return addControl(ControlType::Pad, label, "", color, Control::noParent, callback); return addControl(ControlType::Pad, label, "", color, Control::noParent, callback);
} }
uint16_t ESPUIClass::padWithCenter(const char *label, void (*callback)(Control *, int), ControlColor color) {
return addControl(ControlType::PadWithCenter, label, "", color, Control::noParent, callback);
} }
int ESPUIClass::number(const char *label, void (*callback)(Control *, int), ControlColor color, int number, int min, int max) { uint16_t ESPUIClass::number(const char *label, void (*callback)(Control *, int), ControlColor color, int number, int min, int max) {
return addControl(ControlType::Number, label, String(number), color, Control::noParent, callback); uint16_t numberId = addControl(ControlType::Number, label, String(number), color, Control::noParent, callback);
addControl(ControlType::Min, label, String(min), ControlColor::None, numberId);
addControl(ControlType::Max, label, String(max), ControlColor::None, numberId);
return numberId;
} }
int ESPUIClass::text(const char *label, void (*callback)(Control *, int), ControlColor color, String value) { uint16_t ESPUIClass::text(const char *label, void (*callback)(Control *, int), ControlColor color, String value) {
return addControl(ControlType::Text, label, value, color, Control::noParent, callback); return addControl(ControlType::Text, label, value, color, Control::noParent, callback);
} }
@ -522,7 +528,7 @@ void ESPUIClass::updateControlValue(uint16_t id, String value, int clientId) {
Control *control = getControl(id); Control *control = getControl(id);
if (control) { if (control) {
updateControl(control, value, clientId); updateControlValue(control, value, clientId);
} else { } else {
if (this->verbosity) { if (this->verbosity) {
Serial.println(String("Error: There is no control with ID ") + String(id)); Serial.println(String("Error: There is no control with ID ") + String(id));

View File

@ -174,16 +174,20 @@ public:
uint16_t parentControl = Control::noParent, void (*callback)(Control *, int) = nullptr); uint16_t parentControl = Control::noParent, void (*callback)(Control *, int) = nullptr);
// create Elements // create Elements
int button(const char *label, void (*callback)(Control *, int), ControlColor color, String value = ""); // Create Event Button uint16_t button(const char *label, void (*callback)(Control *, int), ControlColor color, String value = ""); // Create Event Button
int switcher(const char *label, bool startState, void (*callback)(Control *, int), ControlColor color); // Create Toggle Button uint16_t switcher(const char *label, void (*callback)(Control *, int), ControlColor color, bool startState = false); // Create Toggle Button
int pad(const char *label, bool centerButton, void (*callback)(Control *, int), ControlColor color); // Create Pad Control uint16_t pad(const char *label, void (*callback)(Control *, int), ControlColor color); // Create Pad Control
int slider(const char *label, void (*callback)(Control *, int), ControlColor color, String value); // Create Slider Control uint16_t padWithCenter(const char *label, void (*callback)(Control *, int), ControlColor color); // Create Pad Control with Centerbutton
int number(const char *label, void (*callback)(Control *, int), ControlColor color, int number, int min, int max); // Create a Number Input Control
int text(const char *label, void (*callback)(Control *, int), ControlColor color, String value = ""); // Create a Text Input Control uint16_t slider(const char *label, void (*callback)(Control *, int), ControlColor color, int value, int min = 0,
int max = 100); // Create Slider Control
uint16_t number(const char *label, void (*callback)(Control *, int), ControlColor color, int value, int min = 0,
int max = 100); // Create a Number Input Control
uint16_t text(const char *label, void (*callback)(Control *, int), ControlColor color, String value = ""); // Create a Text Input Control
// Output only // Output only
int label(const char *label, ControlColor color, String value = ""); // Create Label uint16_t label(const char *label, ControlColor color, String value = ""); // Create Label
int graph(const char *label, ControlColor color); // Create Graph display uint16_t graph(const char *label, ControlColor color); // Create Graph display
// Update Elements // Update Elements
@ -191,7 +195,6 @@ public:
// Update Elements // Update Elements
void updateControlValue(uint16_t id, String value, int clientId = -1); void updateControlValue(uint16_t id, String value, int clientId = -1);
void updateControlValue(uint16_t id, String value, int clientId = -1);
void updateControlValue(Control *control, String value, int clientId = -1); void updateControlValue(Control *control, String value, int clientId = -1);
void updateControl(uint16_t id, int clientId = -1); void updateControl(uint16_t id, int clientId = -1);