From e542ce0178fce8ab60f4437de0051bba3e46819e Mon Sep 17 00:00:00 2001 From: Christian Riggenbach Date: Sun, 3 Mar 2019 21:17:49 +0100 Subject: [PATCH] Updated Demo for changes in the API updated the gui.ino to reflect the changes in the API: * reformated/reindented, minor cleanups * instantation of ESPUI in the users application * automatic swichtover to station mode if given network is not found --- examples/gui/gui.ino | 242 +++++++++++++++++++++++++------------------ 1 file changed, 141 insertions(+), 101 deletions(-) diff --git a/examples/gui/gui.ino b/examples/gui/gui.ino index 7ae4bb6..e3df5c3 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,175 +11,215 @@ DNSServer dnsServer; #include #endif -const char *ssid = "ESPUI"; -const char *password = ""; +// true for verbose, false for quiet +ESPUIClass ESPUI( Verbosity::VerboseJSON ); + +const char* ssid = "ESPUI"; +const char* password = "espui"; +const char* hostname = "EspuiTest"; long oldTime = 0; bool switchi = false; -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.println(sender.value); } +void textCall( Control sender, int type ) { + Serial.println( sender.value ); +} -void slider(Control sender, int type) { Serial.println(sender.value); } +void slider( Control sender, int type ) { + Serial.println( sender.value ); +} -void buttonCallback(Control sender, int type) { - switch (type) { +void buttonCallback( Control sender, int type ) { + switch ( type ) { case B_DOWN: - Serial.println("Button DOWN"); + Serial.println( "Button DOWN" ); break; + case B_UP: - Serial.println("Button UP"); + Serial.println( "Button UP" ); break; } } -void buttonExample(Control sender, int type) { - switch (type) { +void buttonExample( Control sender, int type ) { + switch ( type ) { case B_DOWN: - Serial.println("Status: Start"); - ESPUI.print(0, "Status: Start"); + Serial.println( "Status: Start" ); + ESPUI.print( 0, "Status: Start" ); break; + case B_UP: - Serial.println("Status: Stop"); - ESPUI.print(0, "Status: Stop"); + Serial.println( "Status: Stop" ); + ESPUI.print( 0, "Status: Stop" ); break; } } -void padExample(Control sender, int value) { - switch (value) { +void padExample( Control sender, int value ) { + switch ( value ) { case P_LEFT_DOWN: - Serial.print("left down"); + Serial.print( "left down" ); break; + case P_LEFT_UP: - Serial.print("left up"); + Serial.print( "left up" ); break; + case P_RIGHT_DOWN: - Serial.print("right down"); + Serial.print( "right down" ); break; + case P_RIGHT_UP: - Serial.print("right up"); + Serial.print( "right up" ); break; + case P_FOR_DOWN: - Serial.print("for down"); + Serial.print( "for down" ); break; + case P_FOR_UP: - Serial.print("for up"); + Serial.print( "for up" ); break; + case P_BACK_DOWN: - Serial.print("back down"); + Serial.print( "back down" ); break; + case P_BACK_UP: - Serial.print("back up"); + Serial.print( "back up" ); break; + case P_CENTER_DOWN: - Serial.print("center down"); + Serial.print( "center down" ); break; + case P_CENTER_UP: - Serial.print("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) { +void switchExample( Control sender, int value ) { + switch ( value ) { case S_ACTIVE: - Serial.print("Active:"); + Serial.print( "Active:" ); break; + case S_INACTIVE: - Serial.print("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) { +void otherSwitchExample( Control sender, int value ) { + switch ( value ) { case S_ACTIVE: - Serial.print("Active:"); + Serial.print( "Active:" ); break; + case S_INACTIVE: - Serial.print("Inactive"); + Serial.print( "Inactive" ); break; } - Serial.print(" "); - Serial.println(sender.id); + + Serial.print( " " ); + Serial.println( sender.id ); } -void setup(void) { - Serial.begin(115200); - WiFi.mode(WIFI_AP); - WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); - /* - #if defined(ESP32) - WiFi.setHostname(ssid); - #else - WiFi.hostname(ssid); - #endif - */ +void setup( void ) { + Serial.begin( 115200 ); - WiFi.softAP(ssid); - // WiFi.softAP(ssid, password); - Serial.println(""); - Serial.print("IP address: "); - Serial.println(WiFi.softAPIP()); +#if defined(ESP32) + WiFi.setHostname( hostname ); +#else + WiFi.hostname( hostname ); +#endif + + // try 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( "." ); + timeout--; + } while ( timeout && WiFi.status() != WL_CONNECTED ); + + // not connected -> create 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 ); + + timeout = 5; + + do { + delay( 500 ); + Serial.print( "." ); + timeout--; + } while ( timeout ); + } + } + + 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() ); + + ESPUI.label( "Status:", COLOR_TURQUOISE, "Stop" ); + ESPUI.label( "Millis:", COLOR_EMERALD, "0" ); + ESPUI.button( "Push Button", &buttonCallback, COLOR_PETERRIVER ); + 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 ); - // change the beginning to this if you want to join an existing network /* - Serial.begin(115200); - WiFi.begin(ssid, password); - Serial.println(""); - // Wait for connection - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); - } - Serial.println(""); - Serial.print("IP address: "); - Serial.println(WiFi.localIP()); + * .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.label("Status:", COLOR_TURQUOISE, "Stop"); - ESPUI.label("Millis:", COLOR_EMERALD, "0"); - ESPUI.button("Push Button", &buttonCallback, COLOR_PETERRIVER); - 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); - - /* - .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) - */ - - dnsServer.start(DNS_PORT, "*", apIP); - /* * 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 - since it is transmitted in cleartext ESPUI.begin("ESPUI Control", "myuser", - "mypassword"); - */ - ESPUI.begin("ESPUI Control"); + * 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" ); } -void loop(void) { +void loop( void ) { dnsServer.processNextRequest(); - if (millis() - oldTime > 5000) { - ESPUI.print("Millis:", String(millis())); + if ( millis() - oldTime > 5000 ) { + ESPUI.print( "Millis:", String( millis() ) ); switchi = !switchi; - ESPUI.updateSwitcher("Switch one", switchi); + ESPUI.updateSwitcher( "Switch one", switchi ); oldTime = millis(); } -} \ No newline at end of file +}