mirror of
https://github.com/alexhopeoconnor/WiFiManager.git
synced 2026-10-13 14:51:21 +10:00
fix menu and param save
This commit is contained in:
+59
-27
@@ -347,6 +347,7 @@ void WiFiManager::setupConfigPortal() {
|
||||
server->on((String)F("/wifisave"), std::bind(&WiFiManager::handleWifiSave, this));
|
||||
server->on((String)F("/info"), std::bind(&WiFiManager::handleInfo, this));
|
||||
server->on((String)F("/param"), std::bind(&WiFiManager::handleParam, this));
|
||||
server->on((String)F("/paramsave"), std::bind(&WiFiManager::handleParamSave, this));
|
||||
server->on((String)F("/restart"), std::bind(&WiFiManager::handleReset, this));
|
||||
server->on((String)F("/exit"), std::bind(&WiFiManager::handleExit, this));
|
||||
server->on((String)F("/close"), std::bind(&WiFiManager::stopCaptivePortal, this));
|
||||
@@ -694,12 +695,21 @@ void WiFiManager::handleWifi(boolean scan) {
|
||||
if (scan) {
|
||||
page += getScanItemOut();
|
||||
}
|
||||
String pitem = FPSTR(HTTP_FORM_START);
|
||||
String pitem = "";
|
||||
|
||||
pitem = FPSTR(HTTP_FORM_START);
|
||||
pitem.replace(FPSTR(T_v), F("wifisave"));
|
||||
page += pitem;
|
||||
|
||||
pitem = FPSTR(HTTP_FORM_WIFI);
|
||||
pitem.replace(FPSTR(T_v), WiFi_SSID());
|
||||
page += pitem;
|
||||
|
||||
page += getStaticOut();
|
||||
if(_paramsInWifi) page += getParamOut();
|
||||
if(_paramsInWifi){
|
||||
page += getParamOut();
|
||||
page += FPSTR(HTTP_FORM_WIFI_END);
|
||||
}
|
||||
page += FPSTR(HTTP_FORM_END);
|
||||
page += FPSTR(HTTP_SCAN_LINK);
|
||||
reportStatus(page);
|
||||
@@ -722,6 +732,12 @@ void WiFiManager::handleParam(){
|
||||
handleRequest();
|
||||
String page = getHTTPHead(FPSTR(S_titleparam)); // @token titlewifi
|
||||
|
||||
String pitem = "";
|
||||
|
||||
pitem = FPSTR(HTTP_FORM_START);
|
||||
pitem.replace(FPSTR(T_v), F("paramsave"));
|
||||
page += pitem;
|
||||
|
||||
page += getParamOut();
|
||||
page += FPSTR(HTTP_FORM_END);
|
||||
reportStatus(page);
|
||||
@@ -890,8 +906,6 @@ String WiFiManager::getParamOut(){
|
||||
bool tok_v = HTTP_PARAM_temp.indexOf(FPSTR(T_v)) > 0;
|
||||
bool tok_c = HTTP_PARAM_temp.indexOf(FPSTR(T_c)) > 0;
|
||||
|
||||
page += FPSTR(HTTP_FORM_PARAM_START);
|
||||
|
||||
char parLength[5];
|
||||
// add the extra parameters to the form
|
||||
for (int i = 0; i < _paramsCount; i++) {
|
||||
@@ -933,9 +947,6 @@ String WiFiManager::getParamOut(){
|
||||
|
||||
page += pitem;
|
||||
}
|
||||
if (_params[0] != NULL) {
|
||||
page += FPSTR(HTTP_FORM_PARAM_END);
|
||||
}
|
||||
}
|
||||
|
||||
return page;
|
||||
@@ -965,25 +976,7 @@ void WiFiManager::handleWifiSave() {
|
||||
_ssid = server->arg(F("s")).c_str();
|
||||
_pass = server->arg(F("p")).c_str();
|
||||
|
||||
//parameters
|
||||
if(_paramsCount > 0){
|
||||
DEBUG_WM(F("Parameters"));
|
||||
DEBUG_WM(FPSTR(D_HR));
|
||||
for (int i = 0; i < _paramsCount; i++) {
|
||||
if (_params[i] == NULL) {
|
||||
break;
|
||||
}
|
||||
//read parameter from server
|
||||
String value;
|
||||
if(server->arg((String)FPSTR(S_parampre)+(String)i) != NULL) value = server->arg((String)FPSTR(S_parampre)+(String)i).c_str();
|
||||
else value = server->arg(_params[i]->getID()).c_str();
|
||||
|
||||
//store it in array
|
||||
value.toCharArray(_params[i]->_value, _params[i]->_length+1); // length+1 null terminated
|
||||
DEBUG_WM((String)_params[i]->getID() + ":",value);
|
||||
}
|
||||
DEBUG_WM(FPSTR(D_HR));
|
||||
}
|
||||
if(_paramsInWifi) doParamSave();
|
||||
|
||||
if (server->arg(FPSTR(S_ip)) != "") {
|
||||
//_sta_static_ip.fromString(server->arg(FPSTR(S_ip));
|
||||
@@ -1014,6 +1007,45 @@ void WiFiManager::handleWifiSave() {
|
||||
connect = true; //signal ready to connect/reset
|
||||
}
|
||||
|
||||
void WiFiManager::handleParamSave() {
|
||||
|
||||
DEBUG_WM(F("<- HTTP WiFi save "));
|
||||
DEBUG_WM(F("Method:"),server->method() == HTTP_GET ? (String)FPSTR(S_GET) : (String)FPSTR(S_POST));
|
||||
handleRequest();
|
||||
doParamSave();
|
||||
|
||||
String page = getHTTPHead(FPSTR(S_titleparamsaved)); // @token titleparamsaved
|
||||
page += FPSTR(HTTP_PARAMSAVED);
|
||||
page += FPSTR(HTTP_END);
|
||||
|
||||
server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length()));
|
||||
server->send(200, FPSTR(HTTP_HEAD_CT), page);
|
||||
|
||||
DEBUG_WM(F("Sent param save page"));
|
||||
}
|
||||
|
||||
void WiFiManager::doParamSave(){
|
||||
//parameters
|
||||
if(_paramsCount > 0){
|
||||
DEBUG_WM(F("Parameters"));
|
||||
DEBUG_WM(FPSTR(D_HR));
|
||||
for (int i = 0; i < _paramsCount; i++) {
|
||||
if (_params[i] == NULL) {
|
||||
break;
|
||||
}
|
||||
//read parameter from server
|
||||
String value;
|
||||
if(server->arg((String)FPSTR(S_parampre)+(String)i) != NULL) value = server->arg((String)FPSTR(S_parampre)+(String)i).c_str();
|
||||
else value = server->arg(_params[i]->getID()).c_str();
|
||||
|
||||
//store it in params array
|
||||
value.toCharArray(_params[i]->_value, _params[i]->_length+1); // length+1 null terminated
|
||||
DEBUG_WM((String)_params[i]->getID() + ":",value);
|
||||
}
|
||||
DEBUG_WM(FPSTR(D_HR));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* HTTPD CALLBACK info page
|
||||
*/
|
||||
@@ -1703,7 +1735,7 @@ void WiFiManager::setMenu(uint8_t menu[]){
|
||||
int i;
|
||||
int n = sizeof(menu);
|
||||
for(i=0;i<sizeof(_menuIds);i++){
|
||||
if(_menuIds[i] == MENU_PARAM) _paramsInWifi = false; // param auto flag
|
||||
if(menu[i] == MENU_PARAM) _paramsInWifi = false; // param auto flag
|
||||
_menuIds[i] = i<n ? menu[i] : 255;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -210,7 +210,7 @@ class WiFiManager
|
||||
std::unique_ptr<WM_WebServer> server;
|
||||
|
||||
// std:vector<uint8_t> _menuids;
|
||||
uint8_t _menuIds[3] = {MENU_WIFI,MENU_INFO,MENU_EXIT};
|
||||
uint8_t _menuIds[10] = {MENU_WIFI,MENU_INFO,MENU_EXIT};
|
||||
|
||||
// ip configs
|
||||
IPAddress _ap_static_ip;
|
||||
@@ -282,6 +282,8 @@ class WiFiManager
|
||||
void handleParam();
|
||||
void handleWiFiStatus();
|
||||
void handleRequest();
|
||||
void handleParamSave();
|
||||
void doParamSave();
|
||||
|
||||
boolean captivePortal();
|
||||
boolean configPortalHasTimeout();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include <FS.h> // this needs to be first, or it all crashes and burns...
|
||||
#include <WiFiManager.h> // https://github.com/tzapu/WiFiManager
|
||||
#include <ArduinoJson.h> // https://github.com/bblanchon/ArduinoJson
|
||||
#include <spiffs.h>
|
||||
// #include <spiffs.h>
|
||||
|
||||
//define your default values here, if there are different values in config.json, they are overwritten.
|
||||
char mqtt_server[40];
|
||||
@@ -69,15 +69,15 @@ void setup() {
|
||||
// id/name placeholder/prompt default length
|
||||
WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
|
||||
WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6);
|
||||
// WiFiManagerParameter custom_blynk_token("blynk", "blynk token", "", 0);
|
||||
|
||||
WiFiManagerParameter custom_blynk_token("blynk", "blynk token");
|
||||
custom_blynk_token.setValue("setvalue override",32);
|
||||
WiFiManagerParameter custom_blynk_token("blynk", "blynk token", "", 0);
|
||||
|
||||
//WiFiManager
|
||||
//Local intialization. Once its business is done, there is no need to keep it around
|
||||
WiFiManager wifiManager;
|
||||
|
||||
uint8_t menu[] = {wifiManager.MENU_WIFI,wifiManager.MENU_INFO,wifiManager.MENU_PARAM,wifiManager.MENU_CLOSE};
|
||||
wifiManager.setMenu(menu);
|
||||
|
||||
//set config save notify callback
|
||||
wifiManager.setSaveConfigCallback(saveConfigCallback);
|
||||
|
||||
|
||||
+5
-4
@@ -41,16 +41,16 @@ const char HTTP_ITEM_QP[] PROGMEM = "<div class='q {h}'>{r}%</div>"; //
|
||||
const char HTTP_ITEM[] PROGMEM = "<div><a href='#p' onclick='c(this)'>{v}</a>{qi}{qp}</div>"; // {q} = HTTP_ITEM_QI, {r} = HTTP_ITEM_QP
|
||||
// const char HTTP_ITEM[] PROGMEM = "<div><a href='#p' onclick='c(this)'>{v}</a> {R} {r}% {q} {e}</div>"; // test all tokens
|
||||
|
||||
const char HTTP_FORM_START[] PROGMEM = "<form method='POST' action='wifisave'><label for='s'>SSID</label><input id='s' name='s' maxlength=32 placeholder='{v}'><br/><label for='p'>Password</label><input id='p' name='p' maxlength='64' type='password' placeholder=''><br/>";
|
||||
const char HTTP_FORM_START[] PROGMEM = "<form method='POST' action='{v}'>";
|
||||
const char HTTP_FORM_WIFI[] PROGMEM = "<label for='s'>SSID</label><input id='s' name='s' maxlength=32 placeholder='{v}'><br/><label for='p'>Password</label><input id='p' name='p' maxlength='64' type='password' placeholder=''>";
|
||||
const char HTTP_FORM_WIFI_END[] PROGMEM = "<hr><br>";
|
||||
const char HTTP_FORM_END[] PROGMEM = "<br/><button type='submit'>Save</button></form>";
|
||||
const char HTTP_FORM_LABEL[] PROGMEM = "<label for='{i}'>{t}</label>";
|
||||
|
||||
const char HTTP_FORM_PARAM_START[] PROGMEM = "<hr>";
|
||||
const char HTTP_FORM_PARAM[] PROGMEM = "<br/><input id='{i}' name='{n}' maxlength={l} placeholder='' value='{v}' {c}>";
|
||||
const char HTTP_FORM_PARAM_END[] PROGMEM = "<br/>";
|
||||
|
||||
const char HTTP_SCAN_LINK[] PROGMEM = "<br/><form action='/wifi' method='get'><button>Refresh</button></form>";
|
||||
const char HTTP_SAVED[] PROGMEM = "<div class='msg'>Saving Credentials<br/>Trying to connect ESP to network.<br />If it fails reconnect to AP to try again</div>";
|
||||
const char HTTP_PARAMSAVED[] PROGMEM = "<div class='msg'>Saved<br/></div>";
|
||||
const char HTTP_END[] PROGMEM = "</div></body></html>";
|
||||
const char HTTP_ERASEBTN[] PROGMEM = "<br/><form action='/erase' method='get'><button class='D'>Erase WiFi Config</button></form>";
|
||||
|
||||
@@ -178,6 +178,7 @@ const char S_titlewifisaved[] PROGMEM = "Credentials Saved";
|
||||
const char S_titlewifi[] PROGMEM = "Config ESP";
|
||||
const char S_titleinfo[] PROGMEM = "Info";
|
||||
const char S_titleparam[] PROGMEM = "Setup";
|
||||
const char S_titleparamsaved[] PROGMEM = "Setup Saved";
|
||||
const char S_titleexit[] PROGMEM = "Exit";
|
||||
const char S_titlereset[] PROGMEM = "Reset";
|
||||
const char S_titleerase[] PROGMEM = "Erase";
|
||||
|
||||
Reference in New Issue
Block a user