Reformat examples

Signed-off-by: Lukas Bachschwell <lukas@lbsfilm.at>
This commit is contained in:
Lukas Bachschwell 2022-01-04 11:20:04 +01:00
parent 232ca3ead4
commit 3cbae2ff1b
Signed by: lbsadmin
GPG Key ID: CCC6AA87CC8DF425
4 changed files with 597 additions and 528 deletions

View File

@ -11,252 +11,278 @@ DNSServer dnsServer;
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>
#endif #endif
const char *ssid = "ESPUI"; const char* ssid = "ESPUI";
const char *password = "espui"; const char* password = "espui";
const char *hostname = "espui"; const char* hostname = "espui";
uint16_t status; uint16_t status;
uint16_t button1; uint16_t button1;
uint16_t millisLabelId; uint16_t millisLabelId;
uint16_t switchOne; uint16_t switchOne;
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(sender->id); Serial.print("Text: ID: ");
Serial.print(", Value: "); Serial.print(sender->id);
Serial.println(sender->value); Serial.print(", 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("Slider: ID: ");
Serial.print(", Value: "); Serial.print(sender->id);
Serial.println(sender->value); Serial.print(", Value: ");
Serial.println(sender->value);
} }
void buttonCallback(Control *sender, int type) { void buttonCallback(Control* sender, int type)
switch (type) { {
case B_DOWN: switch (type)
Serial.println("Button DOWN"); {
break; case B_DOWN:
Serial.println("Button DOWN");
break;
case B_UP: case B_UP:
Serial.println("Button UP"); Serial.println("Button UP");
break; break;
} }
} }
void buttonExample(Control *sender, int type) { void buttonExample(Control* sender, int type)
switch (type) { {
case B_DOWN: switch (type)
Serial.println("Status: Start"); {
ESPUI.updateControlValue(status, "Start"); case B_DOWN:
Serial.println("Status: Start");
ESPUI.updateControlValue(status, "Start");
ESPUI.getControl(button1)->color = ControlColor::Carrot; ESPUI.getControl(button1)->color = ControlColor::Carrot;
ESPUI.updateControl(button1); ESPUI.updateControl(button1);
break; break;
case B_UP: case B_UP:
Serial.println("Status: Stop"); Serial.println("Status: Stop");
ESPUI.updateControlValue(status, "Stop"); ESPUI.updateControlValue(status, "Stop");
ESPUI.getControl(button1)->color = ControlColor::Peterriver; ESPUI.getControl(button1)->color = ControlColor::Peterriver;
ESPUI.updateControl(button1); ESPUI.updateControl(button1);
break; break;
} }
} }
void padExample(Control *sender, int value) { void padExample(Control* sender, int value)
switch (value) { {
case P_LEFT_DOWN: switch (value)
Serial.print("left down"); {
break; case P_LEFT_DOWN:
Serial.print("left down");
break;
case P_LEFT_UP: case P_LEFT_UP:
Serial.print("left up"); Serial.print("left up");
break; break;
case P_RIGHT_DOWN: case P_RIGHT_DOWN:
Serial.print("right down"); Serial.print("right down");
break; break;
case P_RIGHT_UP: case P_RIGHT_UP:
Serial.print("right up"); Serial.print("right up");
break; break;
case P_FOR_DOWN: case P_FOR_DOWN:
Serial.print("for down"); Serial.print("for down");
break; break;
case P_FOR_UP: case P_FOR_UP:
Serial.print("for up"); Serial.print("for up");
break; break;
case P_BACK_DOWN: case P_BACK_DOWN:
Serial.print("back down"); Serial.print("back down");
break; break;
case P_BACK_UP: case P_BACK_UP:
Serial.print("back up"); Serial.print("back up");
break; break;
case P_CENTER_DOWN: case P_CENTER_DOWN:
Serial.print("center down"); Serial.print("center down");
break; break;
case P_CENTER_UP: case P_CENTER_UP:
Serial.print("center up"); Serial.print("center up");
break; break;
} }
Serial.print(" "); Serial.print(" ");
Serial.println(sender->id); Serial.println(sender->id);
} }
void switchExample(Control *sender, int value) { void switchExample(Control* sender, int value)
switch (value) { {
case S_ACTIVE: switch (value)
Serial.print("Active:"); {
break; case S_ACTIVE:
Serial.print("Active:");
break;
case S_INACTIVE: case S_INACTIVE:
Serial.print("Inactive"); Serial.print("Inactive");
break; break;
} }
Serial.print(" "); Serial.print(" ");
Serial.println(sender->id); 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("Select: ID: ");
Serial.print(", Value: "); Serial.print(sender->id);
Serial.println(sender->value); Serial.print(", Value: ");
Serial.println(sender->value);
} }
void otherSwitchExample(Control *sender, int value) { void otherSwitchExample(Control* sender, int value)
switch (value) { {
case S_ACTIVE: switch (value)
Serial.print("Active:"); {
break; case S_ACTIVE:
Serial.print("Active:");
break;
case S_INACTIVE: case S_INACTIVE:
Serial.print("Inactive"); Serial.print("Inactive");
break; break;
} }
Serial.print(" "); Serial.print(" ");
Serial.println(sender->id); Serial.println(sender->id);
} }
void setup(void) { void setup(void)
ESPUI.setVerbosity(Verbosity::VerboseJSON); {
Serial.begin(115200); ESPUI.setVerbosity(Verbosity::VerboseJSON);
Serial.begin(115200);
#if defined(ESP32) #if defined(ESP32)
WiFi.setHostname(hostname); WiFi.setHostname(hostname);
#else #else
WiFi.hostname(hostname); WiFi.hostname(hostname);
#endif #endif
// try to connect to existing network // try to connect to existing network
WiFi.begin(ssid, password); WiFi.begin(ssid, password);
Serial.print("\n\nTry to connect to existing network"); Serial.print("\n\nTry to connect to existing network");
{ {
uint8_t timeout = 10; uint8_t timeout = 10;
// Wait for connection, 5s timeout // Wait for connection, 5s timeout
do { do
delay(500); {
Serial.print("."); delay(500);
timeout--; Serial.print(".");
} while (timeout && WiFi.status() != WL_CONNECTED); timeout--;
} while (timeout && WiFi.status() != WL_CONNECTED);
// not connected -> create hotspot // not connected -> create hotspot
if (WiFi.status() != WL_CONNECTED) { if (WiFi.status() != WL_CONNECTED)
Serial.print("\n\nCreating hotspot"); {
Serial.print("\n\nCreating hotspot");
WiFi.mode(WIFI_AP); WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP(ssid); WiFi.softAP(ssid);
timeout = 5; timeout = 5;
do { do
delay(500); {
Serial.print("."); delay(500);
timeout--; Serial.print(".");
} while (timeout); timeout--;
} while (timeout);
}
} }
}
dnsServer.start(DNS_PORT, "*", apIP); dnsServer.start(DNS_PORT, "*", apIP);
Serial.println("\n\nWiFi parameters:"); Serial.println("\n\nWiFi parameters:");
Serial.print("Mode: "); Serial.print("Mode: ");
Serial.println(WiFi.getMode() == WIFI_AP ? "Station" : "Client"); Serial.println(WiFi.getMode() == WIFI_AP ? "Station" : "Client");
Serial.print("IP address: "); Serial.print("IP address: ");
Serial.println(WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP()); Serial.println(WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP());
status = ESPUI.addControl(ControlType::Label, "Status:", "Stop", ControlColor::Turquoise); status = 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);
ESPUI.addControl(ControlType::Text, "Text Test:", "a Text Field", ControlColor::Alizarin, Control::noParent, &textCall); ESPUI.addControl(
ControlType::Text, "Text Test:", "a Text Field", ControlColor::Alizarin, Control::noParent, &textCall);
millisLabelId = ESPUI.addControl(ControlType::Label, "Millis:", "0", ControlColor::Emerald, Control::noParent); millisLabelId = ESPUI.addControl(ControlType::Label, "Millis:", "0", ControlColor::Emerald, Control::noParent);
button1 = ESPUI.addControl(ControlType::Button, "Push Button", "Press", ControlColor::Peterriver, Control::noParent, &buttonCallback); button1 = ESPUI.addControl(
ESPUI.addControl(ControlType::Button, "Other Button", "Press", ControlColor::Wetasphalt, Control::noParent, &buttonExample); ControlType::Button, "Push Button", "Press", ControlColor::Peterriver, Control::noParent, &buttonCallback);
ESPUI.addControl(ControlType::PadWithCenter, "Pad with center", "", ControlColor::Sunflower, Control::noParent, &padExample); ESPUI.addControl(
ESPUI.addControl(ControlType::Pad, "Pad without center", "", ControlColor::Carrot, Control::noParent, &padExample); ControlType::Button, "Other Button", "Press", ControlColor::Wetasphalt, Control::noParent, &buttonExample);
switchOne = ESPUI.addControl(ControlType::Switcher, "Switch one", "", ControlColor::Alizarin, Control::noParent, &switchExample); ESPUI.addControl(
ESPUI.addControl(ControlType::Switcher, "Switch two", "", ControlColor::None, Control::noParent, &otherSwitchExample); ControlType::PadWithCenter, "Pad with center", "", ControlColor::Sunflower, Control::noParent, &padExample);
ESPUI.addControl(ControlType::Slider, "Slider one", "30", ControlColor::Alizarin, Control::noParent, &slider); ESPUI.addControl(ControlType::Pad, "Pad without center", "", ControlColor::Carrot, Control::noParent, &padExample);
ESPUI.addControl(ControlType::Slider, "Slider two", "100", ControlColor::Alizarin, Control::noParent, &slider); switchOne = ESPUI.addControl(
ESPUI.addControl(ControlType::Number, "Number:", "50", ControlColor::Alizarin, Control::noParent, &numberCall); 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. * .begin loads and serves all files from PROGMEM directly.
* If you want to serve the files from SPIFFS use ESPUI.beginSPIFFS * If you want to serve the files from LITTLEFS use ESPUI.beginLITTLEFS
* (.prepareFileSystem has to be run in an empty sketch before) * (.prepareFileSystem has to be run in an empty sketch before)
*/ */
// Enable this option if you want sliders to be continuous (update during move) and not discrete (update on stop) // Enable this option if you want sliders to be continuous (update during move) and not discrete (update on stop)
// ESPUI.sliderContinuous = true; // ESPUI.sliderContinuous = true;
/* /*
* 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 * since it is transmitted in cleartext. Just add a string as username and
* password, for example begin("ESPUI Control", "username", "password") * password, for example begin("ESPUI Control", "username", "password")
*/ */
ESPUI.begin("ESPUI Control");
ESPUI.begin("ESPUI Control");
} }
void loop(void) { void loop(void)
dnsServer.processNextRequest(); {
dnsServer.processNextRequest();
static long oldTime = 0; static long oldTime = 0;
static bool testSwitchState = false; static bool testSwitchState = false;
if (millis() - oldTime > 5000) { if (millis() - oldTime > 5000)
ESPUI.updateControlValue(millisLabelId, String(millis())); {
testSwitchState = !testSwitchState; ESPUI.updateControlValue(millisLabelId, String(millis()));
ESPUI.updateControlValue(switchOne, testSwitchState ? "1" : "0"); testSwitchState = !testSwitchState;
ESPUI.updateControlValue(switchOne, testSwitchState ? "1" : "0");
oldTime = millis(); oldTime = millis();
} }
} }

View File

@ -11,238 +11,258 @@ DNSServer dnsServer;
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>
#endif #endif
const char *ssid = "ESPUI"; const char* ssid = "ESPUI";
const char *password = "espui"; const char* password = "espui";
const char *hostname = "espui"; const char* hostname = "espui";
int statusLabelId; int statusLabelId;
int graphId; int graphId;
int millisLabelId; int millisLabelId;
int testSwitchId; int testSwitchId;
void numberCall(Control *sender, int type) { Serial.println(sender->value); } void numberCall(Control* sender, int type)
{
void textCall(Control *sender, int type) { Serial.println(sender->value);
Serial.print("Text: ID: ");
Serial.print(sender->id);
Serial.print(", Value: ");
Serial.println(sender->value);
} }
void slider(Control *sender, int type) { void textCall(Control* sender, int type)
Serial.print("Slider: ID: "); {
Serial.print(sender->id); Serial.print("Text: ID: ");
Serial.print(", Value: "); Serial.print(sender->id);
Serial.println(sender->value); Serial.print(", Value: ");
// Like all Control Values in ESPUI slider values are Strings. To use them as int simply do this: Serial.println(sender->value);
int sliderValueWithOffset = sender->value.toInt() + 100;
Serial.print("SliderValue with offset");
Serial.println(sliderValueWithOffset);
} }
void buttonCallback(Control *sender, int type) { void slider(Control* sender, int type)
switch (type) { {
case B_DOWN: Serial.print("Slider: ID: ");
Serial.println("Button DOWN"); Serial.print(sender->id);
break; Serial.print(", Value: ");
Serial.println(sender->value);
case B_UP: // Like all Control Values in ESPUI slider values are Strings. To use them as int simply do this:
Serial.println("Button UP"); int sliderValueWithOffset = sender->value.toInt() + 100;
break; Serial.print("SliderValue with offset");
} Serial.println(sliderValueWithOffset);
} }
void buttonExample(Control *sender, int type) { void buttonCallback(Control* sender, int type)
switch (type) { {
case B_DOWN: switch (type)
Serial.println("Status: Start"); {
ESPUI.print(statusLabelId, "Start"); case B_DOWN:
break; Serial.println("Button DOWN");
break;
case B_UP: case B_UP:
Serial.println("Status: Stop"); Serial.println("Button UP");
ESPUI.print(statusLabelId, "Stop"); break;
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_RIGHT_DOWN:
Serial.print("right down");
break;
case P_RIGHT_UP:
Serial.print("right up");
break;
case P_FOR_DOWN:
Serial.print("for down");
break;
case P_FOR_UP:
Serial.print("for up");
break;
case P_BACK_DOWN:
Serial.print("back down");
break;
case P_BACK_UP:
Serial.print("back up");
break;
case P_CENTER_DOWN:
Serial.print("center down");
break;
case P_CENTER_UP:
Serial.print("center up");
break;
}
Serial.print(" ");
Serial.println(sender->id);
} }
void switchExample(Control *sender, int value) { void buttonExample(Control* sender, int type)
switch (value) { {
case S_ACTIVE: switch (type)
Serial.print("Active:"); {
break; case B_DOWN:
Serial.println("Status: Start");
ESPUI.print(statusLabelId, "Start");
break;
case S_INACTIVE: case B_UP:
Serial.print("Inactive"); Serial.println("Status: Stop");
break; ESPUI.print(statusLabelId, "Stop");
} break;
}
}
void padExample(Control* sender, int value)
{
switch (value)
{
case P_LEFT_DOWN:
Serial.print("left down");
break;
Serial.print(" "); case P_LEFT_UP:
Serial.println(sender->id); Serial.print("left up");
break;
case P_RIGHT_DOWN:
Serial.print("right down");
break;
case P_RIGHT_UP:
Serial.print("right up");
break;
case P_FOR_DOWN:
Serial.print("for down");
break;
case P_FOR_UP:
Serial.print("for up");
break;
case P_BACK_DOWN:
Serial.print("back down");
break;
case P_BACK_UP:
Serial.print("back up");
break;
case P_CENTER_DOWN:
Serial.print("center down");
break;
case P_CENTER_UP:
Serial.print("center up");
break;
}
Serial.print(" ");
Serial.println(sender->id);
} }
void otherSwitchExample(Control *sender, int value) { void switchExample(Control* sender, int value)
switch (value) { {
case S_ACTIVE: switch (value)
Serial.print("Active:"); {
break; case S_ACTIVE:
Serial.print("Active:");
break;
case S_INACTIVE: case S_INACTIVE:
Serial.print("Inactive"); Serial.print("Inactive");
break; break;
} }
Serial.print(" "); Serial.print(" ");
Serial.println(sender->id); Serial.println(sender->id);
} }
void setup(void) { void otherSwitchExample(Control* sender, int value)
ESPUI.setVerbosity(Verbosity::VerboseJSON); {
Serial.begin(115200); switch (value)
{
case S_ACTIVE:
Serial.print("Active:");
break;
case S_INACTIVE:
Serial.print("Inactive");
break;
}
Serial.print(" ");
Serial.println(sender->id);
}
void setup(void)
{
ESPUI.setVerbosity(Verbosity::VerboseJSON);
Serial.begin(115200);
#if defined(ESP32) #if defined(ESP32)
WiFi.setHostname(hostname); WiFi.setHostname(hostname);
#else #else
WiFi.hostname(hostname); WiFi.hostname(hostname);
#endif #endif
// try to connect to existing network // try to connect to existing network
WiFi.begin(ssid, password); WiFi.begin(ssid, password);
Serial.print("\n\nTry to connect to existing network"); Serial.print("\n\nTry to connect to existing network");
{ {
uint8_t timeout = 10; uint8_t timeout = 10;
// Wait for connection, 5s timeout // Wait for connection, 5s timeout
do { do
delay(500); {
Serial.print("."); delay(500);
timeout--; Serial.print(".");
} while (timeout && WiFi.status() != WL_CONNECTED); timeout--;
} while (timeout && WiFi.status() != WL_CONNECTED);
// not connected -> create hotspot // not connected -> create hotspot
if (WiFi.status() != WL_CONNECTED) { if (WiFi.status() != WL_CONNECTED)
Serial.print("\n\nCreating hotspot"); {
Serial.print("\n\nCreating hotspot");
WiFi.mode(WIFI_AP); WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP(ssid); WiFi.softAP(ssid);
timeout = 5; timeout = 5;
do { do
delay(500); {
Serial.print("."); delay(500);
timeout--; Serial.print(".");
} while (timeout); timeout--;
} while (timeout);
}
} }
}
dnsServer.start(DNS_PORT, "*", apIP); dnsServer.start(DNS_PORT, "*", apIP);
Serial.println("\n\nWiFi parameters:"); Serial.println("\n\nWiFi parameters:");
Serial.print("Mode: "); Serial.print("Mode: ");
Serial.println(WiFi.getMode() == WIFI_AP ? "Station" : "Client"); Serial.println(WiFi.getMode() == WIFI_AP ? "Station" : "Client");
Serial.print("IP address: "); Serial.print("IP address: ");
Serial.println(WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP()); Serial.println(WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP());
statusLabelId = ESPUI.label("Status:", ControlColor::Turquoise, "Stop"); statusLabelId = ESPUI.label("Status:", ControlColor::Turquoise, "Stop");
millisLabelId = ESPUI.label("Millis:", ControlColor::Emerald, "0"); millisLabelId = ESPUI.label("Millis:", ControlColor::Emerald, "0");
ESPUI.button("Push Button", &buttonCallback, ControlColor::Peterriver, "Press"); ESPUI.button("Push Button", &buttonCallback, ControlColor::Peterriver, "Press");
ESPUI.button("Other Button", &buttonExample, ControlColor::Wetasphalt, "Press"); ESPUI.button("Other Button", &buttonExample, ControlColor::Wetasphalt, "Press");
ESPUI.padWithCenter("Pad with center", &padExample, ControlColor::Sunflower); ESPUI.padWithCenter("Pad with center", &padExample, ControlColor::Sunflower);
ESPUI.pad("Pad without center", &padExample, ControlColor::Carrot); ESPUI.pad("Pad without center", &padExample, ControlColor::Carrot);
testSwitchId = ESPUI.switcher("Switch one", &switchExample, ControlColor::Alizarin, false); testSwitchId = ESPUI.switcher("Switch one", &switchExample, ControlColor::Alizarin, false);
ESPUI.switcher("Switch two", &otherSwitchExample, ControlColor::None, true); ESPUI.switcher("Switch two", &otherSwitchExample, ControlColor::None, true);
ESPUI.slider("Slider one", &slider, ControlColor::Alizarin, 30); ESPUI.slider("Slider one", &slider, ControlColor::Alizarin, 30);
ESPUI.slider("Slider two", &slider, ControlColor::None, 100); ESPUI.slider("Slider two", &slider, ControlColor::None, 100);
ESPUI.text("Text Test:", &textCall, ControlColor::Alizarin, "a Text Field"); ESPUI.text("Text Test:", &textCall, ControlColor::Alizarin, "a Text Field");
ESPUI.number("Numbertest", &numberCall, ControlColor::Alizarin, 5, 0, 10); ESPUI.number("Numbertest", &numberCall, ControlColor::Alizarin, 5, 0, 10);
graphId = ESPUI.graph("Graph Test", ControlColor::Wetasphalt); graphId = ESPUI.graph("Graph Test", ControlColor::Wetasphalt);
/* /*
* .begin loads and serves all files from PROGMEM directly. * .begin loads and serves all files from PROGMEM directly.
* If you want to serve the files from SPIFFS use ESPUI.beginSPIFFS * If you want to serve the files from LITTLEFS use ESPUI.beginLITTLEFS
* (.prepareFileSystem has to be run in an empty sketch before) * (.prepareFileSystem has to be run in an empty sketch before)
*/ */
// Enable this option if you want sliders to be continuous (update during move) and not discrete (update on stop)
// ESPUI.sliderContinuous = true;
/* // Enable this option if you want sliders to be continuous (update during move) and not discrete (update on stop)
* Optionally you can use HTTP BasicAuth. Keep in mind that this is NOT a // ESPUI.sliderContinuous = true;
* 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")
*/
/*
* 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")
*/
ESPUI.begin("ESPUI Control"); ESPUI.begin("ESPUI Control");
} }
void loop(void) { void loop(void)
dnsServer.processNextRequest(); {
dnsServer.processNextRequest();
static long oldTime = 0; static long oldTime = 0;
static bool testSwitchState = false; static bool testSwitchState = false;
if (millis() - oldTime > 5000) { if (millis() - oldTime > 5000)
ESPUI.print(millisLabelId, String(millis())); {
ESPUI.print(millisLabelId, String(millis()));
ESPUI.addGraphPoint(graphId, random(1, 50)); ESPUI.addGraphPoint(graphId, random(1, 50));
testSwitchState = !testSwitchState; testSwitchState = !testSwitchState;
ESPUI.updateSwitcher(testSwitchId, testSwitchState); ESPUI.updateSwitcher(testSwitchId, testSwitchState);
oldTime = millis(); oldTime = millis();
} }
} }

View File

@ -2,7 +2,7 @@
#include <ESPUI.h> #include <ESPUI.h>
const byte DNS_PORT = 53; const byte DNS_PORT = 53;
IPAddress apIP( 192, 168, 1, 1 ); IPAddress apIP(192, 168, 1, 1);
DNSServer dnsServer; DNSServer dnsServer;
#if defined(ESP32) #if defined(ESP32)
@ -19,244 +19,267 @@ uint16_t button1;
uint16_t switchOne; uint16_t switchOne;
uint16_t status; uint16_t status;
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(sender->id); Serial.print("Text: ID: ");
Serial.print(", Value: "); Serial.print(sender->id);
Serial.println( sender->value );} Serial.print(", 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("Slider: ID: ");
Serial.print(", Value: "); Serial.print(sender->id);
Serial.println( sender->value );} Serial.print(", Value: ");
Serial.println(sender->value);
}
void buttonCallback( Control* sender, int type ) { void buttonCallback(Control* sender, int type)
switch ( type ) { {
switch (type)
{
case B_DOWN: case B_DOWN:
Serial.println( "Button DOWN" ); Serial.println("Button DOWN");
break; break;
case B_UP: case B_UP:
Serial.println( "Button UP" ); Serial.println("Button UP");
break; break;
} }
} }
void buttonExample( Control* sender, int type ) { 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.updateControlValue( status, "Start" ); ESPUI.updateControlValue(status, "Start");
ESPUI.getControl( button1 )->color = ControlColor::Carrot; ESPUI.getControl(button1)->color = ControlColor::Carrot;
ESPUI.updateControl( button1 ); ESPUI.updateControl(button1);
break; break;
case B_UP: case B_UP:
Serial.println( "Status: Stop" ); Serial.println("Status: Stop");
ESPUI.updateControlValue( status, "Stop" ); ESPUI.updateControlValue(status, "Stop");
ESPUI.getControl( button1 )->color = ControlColor::Peterriver; ESPUI.getControl(button1)->color = ControlColor::Peterriver;
ESPUI.updateControl( button1 ); ESPUI.updateControl(button1);
break; break;
} }
} }
void padExample( Control* sender, int value ) { void padExample(Control* sender, int value)
switch ( value ) { {
switch (value)
{
case P_LEFT_DOWN: case P_LEFT_DOWN:
Serial.print( "left down" ); Serial.print("left down");
break; break;
case P_LEFT_UP: case P_LEFT_UP:
Serial.print( "left up" ); Serial.print("left up");
break; break;
case P_RIGHT_DOWN: case P_RIGHT_DOWN:
Serial.print( "right down" ); Serial.print("right down");
break; break;
case P_RIGHT_UP: case P_RIGHT_UP:
Serial.print( "right up" ); Serial.print("right up");
break; break;
case P_FOR_DOWN: case P_FOR_DOWN:
Serial.print( "for down" ); Serial.print("for down");
break; break;
case P_FOR_UP: case P_FOR_UP:
Serial.print( "for up" ); Serial.print("for up");
break; break;
case P_BACK_DOWN: case P_BACK_DOWN:
Serial.print( "back down" ); Serial.print("back down");
break; break;
case P_BACK_UP: case P_BACK_UP:
Serial.print( "back up" ); Serial.print("back up");
break; break;
case P_CENTER_DOWN: case P_CENTER_DOWN:
Serial.print( "center down" ); Serial.print("center down");
break; break;
case P_CENTER_UP: case P_CENTER_UP:
Serial.print( "center up" ); Serial.print("center up");
break; break;
} }
Serial.print( " " ); Serial.print(" ");
Serial.println( sender->id ); Serial.println(sender->id);
} }
void switchExample( Control* sender, int value ) { void switchExample(Control* sender, int value)
switch ( value ) { {
switch (value)
{
case S_ACTIVE: case S_ACTIVE:
Serial.print( "Active:" ); Serial.print("Active:");
break; break;
case S_INACTIVE: case S_INACTIVE:
Serial.print( "Inactive" ); Serial.print("Inactive");
break; break;
} }
Serial.print( " " ); Serial.print(" ");
Serial.println( sender->id ); 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("Select: ID: ");
Serial.print(", Value: "); Serial.print(sender->id);
Serial.println( sender->value ); Serial.print(", Value: ");
Serial.println(sender->value);
} }
void otherSwitchExample( Control* sender, int value ) { void otherSwitchExample(Control* sender, int value)
switch ( value ) { {
switch (value)
{
case S_ACTIVE: case S_ACTIVE:
Serial.print( "Active:" ); Serial.print("Active:");
break; break;
case S_INACTIVE: case S_INACTIVE:
Serial.print( "Inactive" ); Serial.print("Inactive");
break; break;
} }
Serial.print( " " ); Serial.print(" ");
Serial.println( sender->id ); Serial.println(sender->id);
} }
void setup( void ) { void setup(void)
Serial.begin( 115200 ); {
Serial.begin(115200);
#if defined(ESP32) #if defined(ESP32)
WiFi.setHostname( hostname ); WiFi.setHostname(hostname);
#else #else
WiFi.hostname( hostname ); WiFi.hostname(hostname);
#endif #endif
// try to connect to existing network // try to connect to existing network
WiFi.begin( ssid, password ); WiFi.begin(ssid, password);
Serial.print( "\n\nTry to connect to existing network" ); Serial.print("\n\nTry to connect to existing network");
{ {
uint8_t timeout = 10; uint8_t timeout = 10;
// Wait for connection, 5s timeout // Wait for connection, 5s timeout
do { do
delay( 500 ); {
Serial.print( "." ); delay(500);
timeout--; Serial.print(".");
} while ( timeout && WiFi.status() != WL_CONNECTED ); timeout--;
} while (timeout && WiFi.status() != WL_CONNECTED);
// not connected -> create hotspot // not connected -> create hotspot
if ( WiFi.status() != WL_CONNECTED ) { if (WiFi.status() != WL_CONNECTED)
Serial.print( "\n\nCreating hotspot" ); {
Serial.print("\n\nCreating hotspot");
WiFi.mode( WIFI_AP ); WiFi.mode(WIFI_AP);
WiFi.softAPConfig( apIP, apIP, IPAddress( 255, 255, 255, 0 ) ); WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP( ssid ); WiFi.softAP(ssid);
timeout = 5; timeout = 5;
do { do
delay( 500 ); {
Serial.print( "." ); delay(500);
timeout--; Serial.print(".");
} while ( timeout ); timeout--;
} while (timeout);
}
} }
}
dnsServer.start( DNS_PORT, "*", apIP ); dnsServer.start(DNS_PORT, "*", apIP);
Serial.println( "\n\nWiFi parameters:" ); Serial.println("\n\nWiFi parameters:");
Serial.print( "Mode: " ); Serial.print("Mode: ");
Serial.println( WiFi.getMode() == WIFI_AP ? "Station" : "Client" ); Serial.println(WiFi.getMode() == WIFI_AP ? "Station" : "Client");
Serial.print( "IP address: " ); Serial.print("IP address: ");
Serial.println( WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP() ); Serial.println(WiFi.getMode() == WIFI_AP ? WiFi.softAPIP() : WiFi.localIP());
uint16_t tab1 = ESPUI.addControl( ControlType::Tab, "Settings 1", "Settings 1" ); uint16_t tab1 = ESPUI.addControl(ControlType::Tab, "Settings 1", "Settings 1");
uint16_t tab2 = ESPUI.addControl( ControlType::Tab, "Settings 2", "Settings 2" ); uint16_t tab2 = ESPUI.addControl(ControlType::Tab, "Settings 2", "Settings 2");
uint16_t tab3 = ESPUI.addControl( ControlType::Tab, "Settings 3", "Settings 3" ); uint16_t tab3 = ESPUI.addControl(ControlType::Tab, "Settings 3", "Settings 3");
// shown above all tabs // shown above all tabs
status = ESPUI.addControl( ControlType::Label, "Status:", "Stop", ControlColor::Turquoise ); status = ESPUI.addControl(ControlType::Label, "Status:", "Stop", ControlColor::Turquoise);
uint16_t select1 = ESPUI.addControl( ControlType::Select, "Select:", "", ControlColor::Alizarin, tab1, &selectExample ); uint16_t select1
ESPUI.addControl( ControlType::Option, "Option1", "Opt1", ControlColor::Alizarin, select1 ); = ESPUI.addControl(ControlType::Select, "Select:", "", ControlColor::Alizarin, tab1, &selectExample);
ESPUI.addControl( ControlType::Option, "Option2", "Opt2", ControlColor::Alizarin, select1 ); ESPUI.addControl(ControlType::Option, "Option1", "Opt1", ControlColor::Alizarin, select1);
ESPUI.addControl( ControlType::Option, "Option3", "Opt3", 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, tab1, &textCall );
// tabbed controls ESPUI.addControl(ControlType::Text, "Text Test:", "a Text Field", ControlColor::Alizarin, tab1, &textCall);
ESPUI.addControl( ControlType::Label, "Millis:", "0", ControlColor::Emerald, tab1 );
button1 = ESPUI.addControl( ControlType::Button, "Push Button", "Press", ControlColor::Peterriver, tab1, &buttonCallback );
ESPUI.addControl( ControlType::Button, "Other Button", "Press", ControlColor::Wetasphalt, tab1, &buttonExample );
ESPUI.addControl( ControlType::PadWithCenter, "Pad with center", "", ControlColor::Sunflower, tab2, &padExample );
ESPUI.addControl( ControlType::Pad, "Pad without center", "", ControlColor::Carrot, tab3, &padExample );
switchOne = ESPUI.addControl( ControlType::Switcher, "Switch one", "", ControlColor::Alizarin, tab3, &switchExample );
ESPUI.addControl( ControlType::Switcher, "Switch two", "", ControlColor::None, tab3, &otherSwitchExample );
ESPUI.addControl( ControlType::Slider, "Slider one", "30", ControlColor::Alizarin, tab1, &slider );
ESPUI.addControl( ControlType::Slider, "Slider two", "100", ControlColor::Alizarin, tab3, &slider );
ESPUI.addControl( ControlType::Number, "Number:", "50", ControlColor::Alizarin, tab3, &numberCall );
/* // tabbed controls
* .begin loads and serves all files from PROGMEM directly. ESPUI.addControl(ControlType::Label, "Millis:", "0", ControlColor::Emerald, tab1);
* If you want to serve the files from SPIFFS use ESPUI.beginSPIFFS button1 = ESPUI.addControl(
* (.prepareFileSystem has to be run in an empty sketch before) ControlType::Button, "Push Button", "Press", ControlColor::Peterriver, tab1, &buttonCallback);
*/ ESPUI.addControl(ControlType::Button, "Other Button", "Press", ControlColor::Wetasphalt, tab1, &buttonExample);
ESPUI.addControl(ControlType::PadWithCenter, "Pad with center", "", ControlColor::Sunflower, tab2, &padExample);
ESPUI.addControl(ControlType::Pad, "Pad without center", "", ControlColor::Carrot, tab3, &padExample);
switchOne = ESPUI.addControl(ControlType::Switcher, "Switch one", "", ControlColor::Alizarin, tab3, &switchExample);
ESPUI.addControl(ControlType::Switcher, "Switch two", "", ControlColor::None, tab3, &otherSwitchExample);
ESPUI.addControl(ControlType::Slider, "Slider one", "30", ControlColor::Alizarin, tab1, &slider);
ESPUI.addControl(ControlType::Slider, "Slider two", "100", ControlColor::Alizarin, tab3, &slider);
ESPUI.addControl(ControlType::Number, "Number:", "50", ControlColor::Alizarin, tab3, &numberCall);
// Enable this option if you want sliders to be continuous (update during move) and not discrete (update on stop) /*
// ESPUI.sliderContinuous = true; * .begin loads and serves all files from PROGMEM directly.
* If you want to serve the files from LITTLEFS use ESPUI.beginLITTLEFS
* (.prepareFileSystem has to be run in an empty sketch before)
*/
/* // Enable this option if you want sliders to be continuous (update during move) and not discrete (update on stop)
* Optionally you can use HTTP BasicAuth. Keep in mind that this is NOT a // ESPUI.sliderContinuous = true;
* 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")
*/
/*
* 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")
*/
ESPUI.begin("ESPUI Control"); 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 switchi = false;
if ( millis() - oldTime > 5000 ) { if (millis() - oldTime > 5000)
switchi = !switchi; {
ESPUI.updateControlValue( switchOne, switchi ? "1" : "0" ); switchi = !switchi;
ESPUI.updateControlValue(switchOne, switchi ? "1" : "0");
oldTime = millis(); oldTime = millis();
} }
} }

View File

@ -220,7 +220,7 @@ void setup(void)
ESPUI.pad("Pad without center", &padExample, ControlColor::Carrot); ESPUI.pad("Pad without center", &padExample, ControlColor::Carrot);
testSwitchId = ESPUI.switcher("Switch one", &switchExample, ControlColor::Alizarin, false); testSwitchId = ESPUI.switcher("Switch one", &switchExample, ControlColor::Alizarin, false);
ESPUI.switcher("Switch two", &otherSwitchExample, ControlColor::None, true); ESPUI.switcher("Switch two", &otherSwitchExample, ControlColor::None, true);
ESPUI.slider("Slider one", &slider, ControlColor::Alizarin, 30); ESPUI.slider("Slider one", &slider, ControlColor::Alizarin, 30, 0, 30);
ESPUI.slider("Slider two", &slider, ControlColor::None, 100); ESPUI.slider("Slider two", &slider, ControlColor::None, 100);
ESPUI.text("Text Test:", &textCall, ControlColor::Alizarin, "a Text Field"); ESPUI.text("Text Test:", &textCall, ControlColor::Alizarin, "a Text Field");
ESPUI.number("Numbertest", &numberCall, ControlColor::Alizarin, 5, 0, 10); ESPUI.number("Numbertest", &numberCall, ControlColor::Alizarin, 5, 0, 10);
@ -229,7 +229,7 @@ void setup(void)
/* /*
* .begin loads and serves all files from PROGMEM directly. * .begin loads and serves all files from PROGMEM directly.
* If you want to serve the files from SPIFFS use ESPUI.beginSPIFFS * If you want to serve the files from LITTLEFS use ESPUI.beginLITTLEFS
* (.prepareFileSystem has to be run in an empty sketch before) * (.prepareFileSystem has to be run in an empty sketch before)
*/ */