mirror of
https://github.com/s00500/ESPUI.git
synced 2024-11-21 17:40:54 +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:
parent
650411bac4
commit
3c69f013fc
10
README.md
10
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.
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include <ESPUI.h>
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include <ESPUI.h>
|
||||
|
||||
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 <ESP8266WiFi.h>
|
||||
#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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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));
|
||||
|
21
src/ESPUI.h
21
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);
|
||||
|
Loading…
Reference in New Issue
Block a user