diff --git a/README.md b/README.md index 41cd6eb..330dcfe 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ THIS IS THE 2.0.0 DEVELOPMENT BRANCH, NOT GUARANTIED TO WORK - Tabs by @eringerli ISSUE #45 ✅ - remove black line without tabs ✅ - API changes by @eringerli - - less updateCotrol functions + - less updateControl functions ✅ - proper wrappers for all create/update actions - OptionList by @eringerli - Better return values @@ -45,6 +45,14 @@ THIS IS THE 2.0.0 DEVELOPMENT BRANCH, NOT GUARANTIED TO WORK - Tab usage - 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 This library is dependent on the following libraries to function properly. diff --git a/examples/gui-newAPI/gui-newAPI.ino b/examples/gui-newAPI/gui-newAPI.ino index 15d098e..5fec72b 100644 --- a/examples/gui-newAPI/gui-newAPI.ino +++ b/examples/gui-newAPI/gui-newAPI.ino @@ -2,7 +2,7 @@ #include const byte DNS_PORT = 53; -IPAddress apIP( 192, 168, 1, 1 ); +IPAddress apIP(192, 168, 1, 1); DNSServer dnsServer; #if defined(ESP32) @@ -12,221 +12,222 @@ DNSServer dnsServer; #endif // true for verbose, false for quiet -ESPUIClass ESPUI( Verbosity::VerboseJSON ); +ESPUIClass ESPUI(Verbosity::VerboseJSON); -const char* ssid = "ESPUI"; -const char* password = "espui"; -const char* hostname = "EspuiTest"; +const char *ssid = "ESPUI"; +const char *password = "espui"; +const char *hostname = "EspuiTest"; uint16_t button1; -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(sender->id); 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(sender->id); Serial.print(", Value: "); - Serial.println( sender->value );} + Serial.println(sender->value); +} -void buttonCallback( Control* sender, int type ) { - switch ( type ) { - case B_DOWN: - Serial.println( "Button DOWN" ); - break; +void buttonCallback(Control *sender, int type) { + switch (type) { + case B_DOWN: + Serial.println("Button DOWN"); + break; - case B_UP: - Serial.println( "Button UP" ); - break; + case B_UP: + Serial.println("Button UP"); + break; } } -void buttonExample( Control* sender, int type ) { - switch ( type ) { - case B_DOWN: - Serial.println( "Status: Start" ); - ESPUI.updateControl( "Status:", "Start" ); - - ESPUI.getControl( button1 )->color = ControlColor::Carrot; - ESPUI.updateControl( button1 ); - break; +void buttonExample(Control *sender, int type) { + switch (type) { + case B_DOWN: + Serial.println("Status: Start"); + ESPUI.updateControl("Status:", "Start"); - case B_UP: - Serial.println( "Status: Stop" ); - ESPUI.updateControl( "Status:", "Stop" ); - - ESPUI.getControl( button1 )->color = ControlColor::Peterriver; - ESPUI.updateControl( button1 ); - break; + ESPUI.getControl(button1)->color = ControlColor::Carrot; + ESPUI.updateControl(button1); + break; + + case B_UP: + Serial.println("Status: Stop"); + ESPUI.updateControl("Status:", "Stop"); + + ESPUI.getControl(button1)->color = ControlColor::Peterriver; + ESPUI.updateControl(button1); + break; } } -void padExample( Control* sender, int value ) { - switch ( value ) { - case P_LEFT_DOWN: - Serial.print( "left down" ); - break; +void padExample(Control *sender, int value) { + switch (value) { + case P_LEFT_DOWN: + Serial.print("left down"); + break; - case P_LEFT_UP: - Serial.print( "left up" ); - break; + case P_LEFT_UP: + Serial.print("left up"); + break; - case P_RIGHT_DOWN: - Serial.print( "right down" ); - break; + case P_RIGHT_DOWN: + Serial.print("right down"); + break; - case P_RIGHT_UP: - Serial.print( "right up" ); - break; + case P_RIGHT_UP: + Serial.print("right up"); + break; - case P_FOR_DOWN: - Serial.print( "for down" ); - break; + case P_FOR_DOWN: + Serial.print("for down"); + break; - case P_FOR_UP: - Serial.print( "for up" ); - break; + case P_FOR_UP: + Serial.print("for up"); + break; - case P_BACK_DOWN: - Serial.print( "back down" ); - break; + case P_BACK_DOWN: + Serial.print("back down"); + break; - case P_BACK_UP: - Serial.print( "back up" ); - break; + case P_BACK_UP: + Serial.print("back up"); + break; - case P_CENTER_DOWN: - Serial.print( "center down" ); - break; + case P_CENTER_DOWN: + Serial.print("center down"); + break; - case P_CENTER_UP: - Serial.print( "center up" ); - break; + case P_CENTER_UP: + Serial.print("center up"); + break; } - Serial.print( " " ); - Serial.println( sender->id ); + Serial.print(" "); + Serial.println(sender->id); } -void switchExample( Control* sender, int value ) { - switch ( value ) { - case S_ACTIVE: - Serial.print( "Active:" ); - break; +void switchExample(Control *sender, int value) { + switch (value) { + case S_ACTIVE: + Serial.print("Active:"); + break; - case S_INACTIVE: - Serial.print( "Inactive" ); - break; + case S_INACTIVE: + Serial.print("Inactive"); + break; } - Serial.print( " " ); - Serial.println( sender->id ); + Serial.print(" "); + Serial.println(sender->id); } -void selectExample( Control* sender, int value ) { +void selectExample(Control *sender, int value) { Serial.print("Select: ID: "); Serial.print(sender->id); Serial.print(", Value: "); - Serial.println( sender->value ); + Serial.println(sender->value); } -void otherSwitchExample( Control* sender, int value ) { - switch ( value ) { - case S_ACTIVE: - Serial.print( "Active:" ); - break; +void otherSwitchExample(Control *sender, int value) { + switch (value) { + case S_ACTIVE: + Serial.print("Active:"); + break; - case S_INACTIVE: - Serial.print( "Inactive" ); - break; + case S_INACTIVE: + Serial.print("Inactive"); + break; } - Serial.print( " " ); - Serial.println( sender->id ); + Serial.print(" "); + Serial.println(sender->id); } -void setup( void ) { - Serial.begin( 115200 ); +void setup(void) { + Serial.begin(115200); #if defined(ESP32) - WiFi.setHostname( hostname ); + WiFi.setHostname(hostname); #else - WiFi.hostname( hostname ); + WiFi.hostname(hostname); #endif // try to connect to existing network - WiFi.begin( ssid, password ); - Serial.print( "\n\nTry to connect to existing network" ); + WiFi.begin(ssid, password); + Serial.print("\n\nTry to connect to existing network"); { uint8_t timeout = 5; // Wait for connection, 2.5s timeout do { - delay( 500 ); - Serial.print( "." ); + delay(500); + Serial.print("."); timeout--; - } while ( timeout && WiFi.status() != WL_CONNECTED ); + } while (timeout && WiFi.status() != WL_CONNECTED); // not connected -> create hotspot - if ( WiFi.status() != WL_CONNECTED ) { - Serial.print( "\n\nCreating hotspot" ); + if (WiFi.status() != WL_CONNECTED) { + Serial.print("\n\nCreating hotspot"); - WiFi.mode( WIFI_AP ); - WiFi.softAPConfig( apIP, apIP, IPAddress( 255, 255, 255, 0 ) ); - WiFi.softAP( ssid ); + WiFi.mode(WIFI_AP); + WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); + WiFi.softAP(ssid); timeout = 5; do { - delay( 500 ); - Serial.print( "." ); + delay(500); + Serial.print("."); timeout--; - } while ( timeout ); + } while (timeout); } } - dnsServer.start( DNS_PORT, "*", apIP ); + 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() ); + 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()); - 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 ); - ESPUI.addControl( ControlType::Option, "Option1", "Opt1", ControlColor::Alizarin, select1 ); - ESPUI.addControl( ControlType::Option, "Option2", "Opt2", ControlColor::Alizarin, select1 ); - ESPUI.addControl( ControlType::Option, "Option3", "Opt3", ControlColor::Alizarin, select1 ); - - ESPUI.addControl( ControlType::Text, "Text Test:", "a Text Field", ControlColor::Alizarin, Control::noParent, &textCall ); + uint16_t select1 = ESPUI.addControl(ControlType::Select, "Select:", "", ControlColor::Alizarin, Control::noParent, &selectExample); - ESPUI.addControl( ControlType::Label, "Millis:", "0", ControlColor::Emerald, Control::noParent ); - button1 = ESPUI.addControl( ControlType::Button, "Push Button", "Press", ControlColor::Peterriver, Control::noParent, &buttonCallback ); - ESPUI.addControl( ControlType::Button, "Other Button", "Press", ControlColor::Wetasphalt, Control::noParent, &buttonExample ); - ESPUI.addControl( ControlType::PadWithCenter, "Pad with center", "", ControlColor::Sunflower, Control::noParent, &padExample ); - ESPUI.addControl( ControlType::Pad, "Pad without center", "", ControlColor::Carrot, Control::noParent, &padExample ); - ESPUI.addControl( ControlType::Switcher, "Switch one", "", ControlColor::Alizarin, Control::noParent, &switchExample ); - ESPUI.addControl( ControlType::Switcher, "Switch two", "", ControlColor::None, Control::noParent, &otherSwitchExample ); - ESPUI.addControl( ControlType::Slider, "Slider one", "30", ControlColor::Alizarin, Control::noParent, &slider ); - ESPUI.addControl( ControlType::Slider, "Slider two", "100", ControlColor::Alizarin, Control::noParent, &slider ); - ESPUI.addControl( ControlType::Number, "Number:", "50", ControlColor::Alizarin, Control::noParent, &numberCall ); + ESPUI.addControl(ControlType::Option, "Option1", "Opt1", ControlColor::Alizarin, select1); + ESPUI.addControl(ControlType::Option, "Option2", "Opt2", ControlColor::Alizarin, select1); + ESPUI.addControl(ControlType::Option, "Option3", "Opt3", ControlColor::Alizarin, select1); + + ESPUI.addControl(ControlType::Text, "Text Test:", "a Text Field", ControlColor::Alizarin, Control::noParent, &textCall); + + ESPUI.addControl(ControlType::Label, "Millis:", "0", ControlColor::Emerald, Control::noParent); + button1 = ESPUI.addControl(ControlType::Button, "Push Button", "Press", ControlColor::Peterriver, Control::noParent, &buttonCallback); + ESPUI.addControl(ControlType::Button, "Other Button", "Press", ControlColor::Wetasphalt, Control::noParent, &buttonExample); + ESPUI.addControl(ControlType::PadWithCenter, "Pad with center", "", ControlColor::Sunflower, Control::noParent, &padExample); + ESPUI.addControl(ControlType::Pad, "Pad without center", "", ControlColor::Carrot, Control::noParent, &padExample); + ESPUI.addControl(ControlType::Switcher, "Switch one", "", ControlColor::Alizarin, Control::noParent, &switchExample); + ESPUI.addControl(ControlType::Switcher, "Switch two", "", ControlColor::None, Control::noParent, &otherSwitchExample); + ESPUI.addControl(ControlType::Slider, "Slider one", "30", ControlColor::Alizarin, Control::noParent, &slider); + ESPUI.addControl(ControlType::Slider, "Slider two", "100", ControlColor::Alizarin, Control::noParent, &slider); + ESPUI.addControl(ControlType::Number, "Number:", "50", ControlColor::Alizarin, Control::noParent, &numberCall); /* * .begin loads and serves all files from PROGMEM directly. * If you want to serve the files from SPIFFS use ESPUI.beginSPIFFS * (.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 * SECURE way of limiting access. @@ -234,21 +235,18 @@ void setup( void ) { * since it is transmitted in cleartext. Just add a username and password, * for example begin("ESPUI Control", "username", "password") */ - ESPUI.begin( "ESPUI Control" ); } -void loop( void ) { +void loop(void) { dnsServer.processNextRequest(); static long oldTime = 0; - static bool switchi = false; + static bool testSwitchState = false; - if ( millis() - oldTime > 5000 ) { - ESPUI.updateControl( "Millis:", String( millis() ) ); - switchi = !switchi; - ESPUI.updateControl( "Switch one", switchi ? "1" : "0" ); + if (millis() - oldTime > 5000) { + ESPUI.updateControl("Millis:", String(millis())); + testSwitchState = !testSwitchState; + ESPUI.updateControlValue("Switch one", testSwitchState ? "1" : "0"); oldTime = millis(); } } - - diff --git a/examples/gui/gui.ino b/examples/gui/gui.ino index 8f25348..d630942 100644 --- a/examples/gui/gui.ino +++ b/examples/gui/gui.ino @@ -2,7 +2,7 @@ #include const byte DNS_PORT = 53; -IPAddress apIP( 192, 168, 1, 1 ); +IPAddress apIP(192, 168, 1, 1); DNSServer dnsServer; #if defined(ESP32) @@ -11,198 +11,195 @@ DNSServer dnsServer; #include #endif -// true for verbose, false for quiet -ESPUIClass ESPUI( Verbosity::VerboseJSON ); - -const char* ssid = "ESPUI"; -const char* password = "espui"; -const char* hostname = "EspuiTest"; +const char *ssid = "ESPUI"; +const char *password = "espui"; +const char *hostname = "EspuiTest"; 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) { + Serial.print("Text: ID: "); + Serial.print(sender->id); + Serial.print(", Value: "); + Serial.println(sender->value); } -void textCall( Control* sender, int type ) { - Serial.print( "Text: ID: " ); - Serial.print( sender->id ); - Serial.print( ", Value: " ); - Serial.println( sender->value ); +void slider(Control *sender, int type) { + Serial.print("Slider: ID: "); + Serial.print(sender->id); + Serial.print(", Value: "); + Serial.println(sender->value); } -void slider( Control* sender, int type ) { - Serial.print( "Slider: ID: " ); - Serial.print( sender->id ); - Serial.print( ", Value: " ); - Serial.println( sender->value ); -} +void buttonCallback(Control *sender, int type) { + switch (type) { + case B_DOWN: + Serial.println("Button DOWN"); + break; -void buttonCallback( Control* sender, int type ) { - switch ( type ) { - case B_DOWN: - Serial.println( "Button DOWN" ); - break; - - case B_UP: - Serial.println( "Button UP" ); - break; + case B_UP: + Serial.println("Button UP"); + break; } } -void buttonExample( Control* sender, int type ) { - switch ( type ) { - case B_DOWN: - Serial.println( "Status: Start" ); - ESPUI.updateControl( "Status:", "Start" ); - break; +void buttonExample(Control *sender, int type) { + switch (type) { + case B_DOWN: + Serial.println("Status: Start"); + // ESPUI.updateControl( "Status:", "Start" ); + break; - case B_UP: - Serial.println( "Status: Stop" ); - ESPUI.updateControl( "Status:", "Stop" ); - break; + case B_UP: + Serial.println("Status: Stop"); + // ESPUI.updateControl( "Status:", "Stop" ); + break; } } -void padExample( Control* sender, int value ) { - switch ( value ) { - case P_LEFT_DOWN: - Serial.print( "left down" ); - break; +void padExample(Control *sender, int value) { + switch (value) { + case P_LEFT_DOWN: + Serial.print("left down"); + break; - case P_LEFT_UP: - Serial.print( "left up" ); - break; + case P_LEFT_UP: + Serial.print("left up"); + break; - case P_RIGHT_DOWN: - Serial.print( "right down" ); - break; + case P_RIGHT_DOWN: + Serial.print("right down"); + break; - case P_RIGHT_UP: - Serial.print( "right up" ); - break; + case P_RIGHT_UP: + Serial.print("right up"); + break; - case P_FOR_DOWN: - Serial.print( "for down" ); - break; + case P_FOR_DOWN: + Serial.print("for down"); + break; - case P_FOR_UP: - Serial.print( "for up" ); - break; + case P_FOR_UP: + Serial.print("for up"); + break; - case P_BACK_DOWN: - Serial.print( "back down" ); - break; + case P_BACK_DOWN: + Serial.print("back down"); + break; - case P_BACK_UP: - Serial.print( "back up" ); - break; + case P_BACK_UP: + Serial.print("back up"); + break; - case P_CENTER_DOWN: - Serial.print( "center down" ); - break; + case P_CENTER_DOWN: + Serial.print("center down"); + break; - case P_CENTER_UP: - Serial.print( "center up" ); - break; + case P_CENTER_UP: + Serial.print("center up"); + break; } - Serial.print( " " ); - Serial.println( sender->id ); + Serial.print(" "); + Serial.println(sender->id); } -void switchExample( Control* sender, int value ) { - switch ( value ) { - case S_ACTIVE: - Serial.print( "Active:" ); - break; +void switchExample(Control *sender, int value) { + switch (value) { + case S_ACTIVE: + Serial.print("Active:"); + break; - case S_INACTIVE: - Serial.print( "Inactive" ); - break; + case S_INACTIVE: + Serial.print("Inactive"); + break; } - Serial.print( " " ); - Serial.println( sender->id ); + Serial.print(" "); + Serial.println(sender->id); } -void otherSwitchExample( Control* sender, int value ) { - switch ( value ) { - case S_ACTIVE: - Serial.print( "Active:" ); - break; +void otherSwitchExample(Control *sender, int value) { + switch (value) { + case S_ACTIVE: + Serial.print("Active:"); + break; - case S_INACTIVE: - Serial.print( "Inactive" ); - break; + case S_INACTIVE: + Serial.print("Inactive"); + break; } - Serial.print( " " ); - Serial.println( sender->id ); + Serial.print(" "); + Serial.println(sender->id); } -void setup( void ) { - Serial.begin( 115200 ); +void setup(void) { + ESPUI.setVerbosity(Verbosity::VerboseJSON); + Serial.begin(115200); #if defined(ESP32) - WiFi.setHostname( hostname ); + WiFi.setHostname(hostname); #else - WiFi.hostname( hostname ); + WiFi.hostname(hostname); #endif // try to connect to existing network - WiFi.begin( ssid, password ); - Serial.print( "\n\nTry to connect to existing network" ); + WiFi.begin(ssid, password); + Serial.print("\n\nTry to connect to existing network"); { uint8_t timeout = 5; // Wait for connection, 2.5s timeout do { - delay( 500 ); - Serial.print( "." ); + delay(500); + Serial.print("."); timeout--; - } while ( timeout && WiFi.status() != WL_CONNECTED ); + } while (timeout && WiFi.status() != WL_CONNECTED); // not connected -> create hotspot - if ( WiFi.status() != WL_CONNECTED ) { - Serial.print( "\n\nCreating hotspot" ); + if (WiFi.status() != WL_CONNECTED) { + Serial.print("\n\nCreating hotspot"); - WiFi.mode( WIFI_AP ); - WiFi.softAPConfig( apIP, apIP, IPAddress( 255, 255, 255, 0 ) ); - WiFi.softAP( ssid ); + WiFi.mode(WIFI_AP); + WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); + WiFi.softAP(ssid); timeout = 5; do { - delay( 500 ); - Serial.print( "." ); + delay(500); + Serial.print("."); timeout--; - } while ( timeout ); + } while (timeout); } } - dnsServer.start( DNS_PORT, "*", apIP ); + 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() ); + 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()); - ESPUI.label( "Status:", COLOR_TURQUOISE, "Stop" ); - ESPUI.label( "Millis:", COLOR_EMERALD, "0" ); - ESPUI.button( "Push Button", &buttonCallback, COLOR_PETERRIVER, "Press" ); - ESPUI.button( "Other Button", &buttonExample, COLOR_WETASPHALT, "Press" ); - ESPUI.pad( "Pad with center", true, &padExample, COLOR_SUNFLOWER ); - ESPUI.pad( "Pad without center", false, &padExample, COLOR_CARROT ); - ESPUI.switcher( "Switch one", false, &switchExample, COLOR_ALIZARIN ); - ESPUI.switcher( "Switch two", true, &otherSwitchExample, COLOR_NONE ); - ESPUI.slider( "Slider one", &slider, COLOR_ALIZARIN, "30" ); - ESPUI.slider( "Slider two", &slider, COLOR_NONE, "100" ); - ESPUI.text( "Text Test:", &textCall, COLOR_ALIZARIN, "a Text Field" ); - ESPUI.number( "Numbertest", &numberCall, COLOR_ALIZARIN, 5, 0, 10 ); + ESPUI.label("Status:", COLOR_TURQUOISE, "Stop"); + millisLabelId = ESPUI.label("Millis:", COLOR_EMERALD, "0"); + ESPUI.button("Push Button", &buttonCallback, COLOR_PETERRIVER, "Press"); + ESPUI.button("Other Button", &buttonExample, COLOR_WETASPHALT, "Press"); + ESPUI.padWithCenter("Pad with center", &padExample, COLOR_SUNFLOWER); + ESPUI.pad("Pad without center", &padExample, COLOR_CARROT); + testSwitchId = ESPUI.switcher("Switch one", &switchExample, COLOR_ALIZARIN, false); + ESPUI.switcher("Switch two", &otherSwitchExample, COLOR_NONE, true); + ESPUI.slider("Slider one", &slider, COLOR_ALIZARIN, 30); + ESPUI.slider("Slider two", &slider, COLOR_NONE, 100); + ESPUI.text("Text Test:", &textCall, COLOR_ALIZARIN, "a Text Field"); + ESPUI.number("Numbertest", &numberCall, COLOR_ALIZARIN, 5, 0, 10); /* * .begin loads and serves all files from PROGMEM directly. @@ -214,19 +211,19 @@ void setup( void ) { * Optionally you can use HTTP BasicAuth. Keep in mind that this is NOT a * SECURE way of limiting access. * 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, - * for example begin("ESPUI Control", "username", "password") + * since it is transmitted in cleartext. Just add a string as username and + * password, for example begin("ESPUI Control", "username", "password") */ - ESPUI.begin( "ESPUI Control" ); + ESPUI.begin("ESPUI Control"); } -void loop( void ) { +void loop(void) { dnsServer.processNextRequest(); - if ( millis() - oldTime > 5000 ) { - ESPUI.print( "Millis:", String( millis() ) ); - switchi = !switchi; - ESPUI.updateSwitcher( "Switch one", switchi ); + if (millis() - oldTime > 5000) { + ESPUI.print(millisLabelId, String(millis())); + testSwitchState = !testSwitchState; + ESPUI.updateSwitcher(testSwitchId, testSwitchState); oldTime = millis(); } -} +} \ No newline at end of file diff --git a/src/ESPUI.cpp b/src/ESPUI.cpp index b9ad932..4c9bb1c 100644 --- a/src/ESPUI.cpp +++ b/src/ESPUI.cpp @@ -407,35 +407,41 @@ uint16_t ESPUIClass::addControl(ControlType type, const char *label, String valu 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) { - return addControl(ControlType::Slider, label, "", color, Control::noParent, callback); +uint16_t ESPUIClass::slider(const char *label, void (*callback)(Control *, int), ControlColor color, int value, int min, int max) { + 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); } -int ESPUIClass::switcher(const char *label, bool startState, void (*callback)(Control *, int), ControlColor color) { - return addControl(ControlType::Switcher, label, "", color, Control::noParent, callback); +uint16_t ESPUIClass::switcher(const char *label, void (*callback)(Control *, int), ControlColor color, bool startState) { + 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) { - if (center) { - return addControl(ControlType::PadWithCenter, label, "", color, Control::noParent, callback); - } else { - return addControl(ControlType::Pad, label, "", color, Control::noParent, callback); - } +uint16_t ESPUIClass::pad(const char *label, void (*callback)(Control *, int), ControlColor color) { + 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) { - return addControl(ControlType::Number, label, String(number), color, Control::noParent, callback); +uint16_t ESPUIClass::number(const char *label, void (*callback)(Control *, int), ControlColor color, int number, int min, int max) { + 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); } @@ -522,7 +528,7 @@ void ESPUIClass::updateControlValue(uint16_t id, String value, int clientId) { Control *control = getControl(id); if (control) { - updateControl(control, value, clientId); + updateControlValue(control, value, clientId); } else { if (this->verbosity) { Serial.println(String("Error: There is no control with ID ") + String(id)); diff --git a/src/ESPUI.h b/src/ESPUI.h index 46dcc03..33a4c27 100644 --- a/src/ESPUI.h +++ b/src/ESPUI.h @@ -174,16 +174,20 @@ public: uint16_t parentControl = Control::noParent, void (*callback)(Control *, int) = nullptr); // create Elements - int 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 - int pad(const char *label, bool centerButton, 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 - 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 button(const char *label, void (*callback)(Control *, int), ControlColor color, String value = ""); // Create Event Button + uint16_t switcher(const char *label, void (*callback)(Control *, int), ControlColor color, bool startState = false); // Create Toggle Button + uint16_t pad(const char *label, void (*callback)(Control *, int), ControlColor color); // Create Pad Control + uint16_t padWithCenter(const char *label, void (*callback)(Control *, int), ControlColor color); // Create Pad Control with Centerbutton + + 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 - int label(const char *label, ControlColor color, String value = ""); // Create Label - int graph(const char *label, ControlColor color); // Create Graph display + uint16_t label(const char *label, ControlColor color, String value = ""); // Create Label + uint16_t graph(const char *label, ControlColor color); // Create Graph display // Update Elements @@ -191,7 +195,6 @@ public: // Update Elements 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 updateControl(uint16_t id, int clientId = -1);