1
0
mirror of https://github.com/s00500/ESPUI.git synced 2024-06-29 09:34:14 +00:00

More ducumentation

This commit is contained in:
Lukas Bachschwell 2019-12-29 14:35:54 +01:00
parent 2b4141fed3
commit 71576d7686
Signed by: lbsadmin
GPG Key ID: CCC6AA87CC8DF425
9 changed files with 67 additions and 38 deletions

View File

@ -1,4 +1,4 @@
* Cleanup and extend Documentation - Cleanup and extend Documentation
- Number field ✅ - Number field ✅
- Text field ✅ - Text field ✅
- Data directory ✅ - Data directory ✅
@ -6,15 +6,14 @@
- Graph Usage - Graph Usage
- Number min and max value to docs - Number min and max value to docs
- Slider - Slider
- OptionList - OptionList ✅
- Tab usage - Tab usage ✅
- prepare filesystem things ?
- Generic creation and updates - Generic creation and updates
- additionsl parameters sliderContinuous - additionsl parameters sliderContinuous
- jsonUpdateDocumentSize = 2000; - jsonUpdateDocumentSize = 2000;
jsonInitialDocumentSize = 8000; jsonInitialDocumentSize = 8000;
# ESPUI 2.0 # ESPUI (v2.X)
![ESPUI](https://github.com/s00500/ESPUI/blob/master/docs/ui_complete.png) // ![ESPUI](https://github.com/s00500/ESPUI/blob/master/docs/ui_complete.png) //
TODO: Update Logo TODO: Update Logo
@ -43,13 +42,18 @@ The Library runs fine on any kind of **ESP8266** and **ESP32** (NodeMCU Boards,
### Added features ### Added features
- Tabs by @eringerli ISSUE #45 - Tabs by @eringerli #45
- Generic API by @eringerli - Generic API by @eringerli
- Min Max on slider by @eringerli - Min Max on slider by @eringerli
- OptionList by @eringerli - OptionList by @eringerli
- Public Access to ESPAsyncServer - Public Access to ESPAsyncServer
- Graph Widget (Persist save graph in local storage #10) - Graph Widget (Persist save graph in local storage #10)
## Further Roadmap
- Slider css issues
- implement Gauge
- File upload ?
## Dependencies ## Dependencies
@ -71,7 +75,10 @@ Make sure all the dependencies are installed, then install like so:
Just include this library as a dependency on lib_deps like so: Just include this library as a dependency on lib_deps like so:
``` ```
lib_deps = ESPUI lib_deps =
ESPUI
ESPAsyncWebserver
ESPAsyncTCP # or AsyncTCP on ESP32
``` ```
#### Directly Through Arduino IDE (_recommended_) #### Directly Through Arduino IDE (_recommended_)
@ -129,6 +136,8 @@ more program memory to work with.
- Slider - Slider
- Text Input - Text Input
- Numberinput - Numberinput
- Graph
- Option select
Checkout the example for the usage or see the detailed info below Checkout the example for the usage or see the detailed info below
@ -175,9 +184,8 @@ of the UI library:
Buttons have a name and a callback value. They have one event for press (`B_DOWN`) and one Buttons have a name and a callback value. They have one event for press (`B_DOWN`) and one
for release (`B_UP`). for release (`B_UP`).
* B_DOWN - B_DOWN
* B_UP - B_UP
#### Switch #### Switch
@ -188,8 +196,8 @@ their value they change visibly on all tablets or computers that currently
display the interface. They also have two types of events: one when turning on (`S_ACTIVE`) display the interface. They also have two types of events: one when turning on (`S_ACTIVE`)
and one when turning off (`S_INACTIVE`). and one when turning off (`S_INACTIVE`).
* S_ACTIVE - S_ACTIVE
* S_INACTIVE - S_INACTIVE
#### Buttonpad #### Buttonpad
@ -200,17 +208,16 @@ useful for con-trolling all kinds of movements of vehicles or also of course our
walking robots. They use a single callback per pad and have 8 or 10 different walking robots. They use a single callback per pad and have 8 or 10 different
event types to differentiate the button actions. event types to differentiate the button actions.
* P_LEFT_DOWN - P_LEFT_DOWN
* P_LEFT_UP - P_LEFT_UP
* P_RIGHT_DOWN - P_RIGHT_DOWN
* P_RIGHT_UP - P_RIGHT_UP
* P_FOR_DOWN - P_FOR_DOWN
* P_FOR_UP - P_FOR_UP
* P_BACK_DOWN - P_BACK_DOWN
* P_BACK_UP - P_BACK_UP
* P_CENTER_DOWN - P_CENTER_DOWN
* P_CENTER_UP - P_CENTER_UP
#### Labels #### Labels
@ -237,7 +244,7 @@ Use the .toInt
#### Number Input #### Number Input
TODO: Add image ![labels](https://github.com/s00500/ESPUI/blob/master/docs/ui_number.png)
The numberinput can be used to directly input numbers to your program. You can The numberinput can be used to directly input numbers to your program. You can
enter a Value into it and when you are done with your change it is sent to the enter a Value into it and when you are done with your change it is sent to the
@ -245,7 +252,7 @@ ESP.
#### Text Input #### Text Input
TODO: Add image ![labels](https://github.com/s00500/ESPUI/blob/master/docs/ui_text.png)
The textinput works very similar like the number input but with a string. You The textinput works very similar like the number input but with a string. You
can enter a String into it and when you are done with your change it is sent to can enter a String into it and when you are done with your change it is sent to
@ -253,17 +260,42 @@ the ESP.
#### Graph #### Graph
TODO: Add image ![labels](https://github.com/s00500/ESPUI/blob/master/docs/ui_graph.png)
// TODO: add docs The graph widget can display graph points with timestamp at wich they arrive
#### Using Tabs #### Option select
TODO: Add image ![labels](https://github.com/s00500/ESPUI/blob/master/docs/ui_select1.png)
![labels](https://github.com/s00500/ESPUI/blob/master/docs/ui_select2.png)
// TODO: add Text for tabs The option select works by first creating a select widget like so
#### Initialisation of the UI `uint16_t select1 = ESPUI.addControl( ControlType::Select, "Select:", "", ControlColor::Alizarin, tab1, &selectExample );`
And then adding Options to it like seperate widgets, specifying the select as the parent:
```
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 );
```
Check the **tabbedGui** example for a working demo
### Using Tabs
![labels](https://github.com/s00500/ESPUI/blob/master/docs/ui_tabs.png)
Tabs can be used to organize your widgets in pages. Check the tabbedGui example.
Tabs can be created using the generic functions like so:
`ESPUI.addControl( ControlType::Tab, "Settings 1", "Settings 1" );`
Then all widgets for the tab need to be added to it by specifying the tab as the parrent (widgets not added to a tab will be shown above the tab selctor)
`ESPUI.addControl( ControlType::Text, "Text Title:", "a Text Field", ControlColor::Alizarin, tab1, &textCall );`
### Initialisation of the UI
After all the elements are configured you can use `ESPUI.begin("Some Title");` After all the elements are configured you can use `ESPUI.begin("Some Title");`
to start the UI interface. (Or `ESPUI.beginSPIFFS("Some Title");` respectively) to start the UI interface. (Or `ESPUI.beginSPIFFS("Some Title");` respectively)
@ -271,7 +303,7 @@ Make sure you setup a working network connection or AccesPoint **before** (See
gui.ino example). The web interface can then be used from multiple devices at once and gui.ino example). The web interface can then be used from multiple devices at once and
also shows an connection status in the top bar. also shows an connection status in the top bar.
#### Log output ### Log output
ESPUI has several different log levels. You can set them using the ESPUI has several different log levels. You can set them using the
`ESPUI.setVerbosity(Verbosity::VerboseJSON)` function. `ESPUI.setVerbosity(Verbosity::VerboseJSON)` function.
@ -286,7 +318,7 @@ VerboseJSON outputs the most debug information.
# Notes for Development # Notes for Development
If you want to work on the HTML/CSS/JS files, do make changes in the *data* If you want to work on the HTML/CSS/JS files, do make changes in the _data_
directory. When you need to transfer that code to the ESP, run directory. When you need to transfer that code to the ESP, run
`tools/prepare_static_ui_sources.py -a` (this script needs **python3** with the `tools/prepare_static_ui_sources.py -a` (this script needs **python3** with the
modules **htmlmin**, **jsmin** and **csscompressor**). This will generate a) minified files modules **htmlmin**, **jsmin** and **csscompressor**). This will generate a) minified files

BIN
docs/ui_graph.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
docs/ui_number.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
docs/ui_select1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/ui_select2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
docs/ui_tabs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/ui_text.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -207,7 +207,6 @@ void setup(void) {
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);
ESPUI.gauge("Gauge Test", ControlColor::Wetasphalt, 58, 0, 100); // Gauge has
/* /*
* .begin loads and serves all files from PROGMEM directly. * .begin loads and serves all files from PROGMEM directly.

View File

@ -18,7 +18,6 @@ const char* hostname = "espui";
uint16_t button1; uint16_t button1;
uint16_t switchOne; uint16_t switchOne;
uint16_t status; uint16_t status;
uint16_t millisLabelId;
void numberCall( Control* sender, int type ) { void numberCall( Control* sender, int type ) {
Serial.println( sender->value ); Serial.println( sender->value );
@ -255,7 +254,6 @@ void loop( void ) {
static bool switchi = false; static bool switchi = false;
if ( millis() - oldTime > 5000 ) { if ( millis() - oldTime > 5000 ) {
ESPUI.updateControlValue( millisLabelId, String( millis() ) );
switchi = !switchi; switchi = !switchi;
ESPUI.updateControlValue( switchOne, switchi ? "1" : "0" ); ESPUI.updateControlValue( switchOne, switchi ? "1" : "0" );