Many changes - not yet "controlled" updates.
This commit is contained in:
253
Firmware/Web_APConfig.cpp
Normal file
253
Firmware/Web_APConfig.cpp
Normal file
@@ -0,0 +1,253 @@
|
||||
|
||||
#include <ESP8266WiFi.h>
|
||||
|
||||
#include "ProjGlobals.h"
|
||||
#include "Web_APConfig.h"
|
||||
|
||||
static String EncType_str(uint8_t encType) {
|
||||
switch (encType) {
|
||||
case ENC_TYPE_NONE:
|
||||
return "open";
|
||||
break;
|
||||
case ENC_TYPE_WEP:
|
||||
return "wep";
|
||||
break;
|
||||
case ENC_TYPE_TKIP:
|
||||
return "wpa psk";
|
||||
break;
|
||||
case ENC_TYPE_CCMP:
|
||||
return "wpa2 psk";
|
||||
break;
|
||||
case ENC_TYPE_AUTO:
|
||||
return "wpa wpa2 psk";
|
||||
break;
|
||||
default:
|
||||
return "unknown";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HandleAPScan() {
|
||||
// WiFi.scanNetworks will return the number of networks found
|
||||
Serial.println("Scan ...");
|
||||
int n = WiFi.scanNetworks(false, true); // blocking call and show hidden.
|
||||
Serial.println("scan done.");
|
||||
if (n == 0) {
|
||||
Serial.println("no networks found");
|
||||
} else {
|
||||
Serial.print(n);
|
||||
Serial.println(" networks found");
|
||||
server.sendContent_P("HTTP/1.1 200 OK\r\n");
|
||||
server.sendContent_P("Content-Type: text/html\r\n");
|
||||
server.sendContent_P("\r\n");
|
||||
server.sendContent_P(
|
||||
"<!DOCTYPE html>\n"
|
||||
"<html>\n"
|
||||
"<head><title>Grow Controller - Scan</title></head>\n"
|
||||
"<body>\n"
|
||||
"<h1>Grow Controller - Scan</h1>"
|
||||
);
|
||||
|
||||
server.sendContent_P(
|
||||
" <form action=\"/config\">\n"
|
||||
" <blockquote>\n"
|
||||
" <table width='800' border='0'>\n"
|
||||
" <tr bgcolor='#E0E0E0'><td colspan='2'>Net</td><td>RSSI</td><td>SSID</td><td>BSSID</td><td>Encryption</td><td>Channel</td><td>Hidden</td></tr>\n"
|
||||
);
|
||||
|
||||
for (int i = 0; i < n; ++i) {
|
||||
// Select, Network #, RSSI, SSID, BSSID, Channel, Hidden
|
||||
String bgcolor = (i & 1) ? "#E0E0E0" : "#FFFFFF";
|
||||
String record =
|
||||
" <tr bgcolor='" + bgcolor + "'><td><input type='radio' name='ssid' value='" + WiFi.SSID(i) + "'></td>\n"
|
||||
+ " <td>" + (i + 1) + "</td>\n"
|
||||
+ " <td>" + WiFi.RSSI(i) + "</td>\n"
|
||||
+ " <td>" + WiFi.SSID(i) + "<br/>"
|
||||
+ " <img src='/green1x1.png' width='" + String(5 * (100 + WiFi.RSSI(i))) + "' height='3'></td>\n"
|
||||
+ " <td>" + WiFi.BSSIDstr(i) + "</td>\n";
|
||||
|
||||
record += " <td>" + EncType_str(WiFi.encryptionType(i)) + "</td>\n";
|
||||
record += " <td>" + String(WiFi.channel(i));
|
||||
record += "</td>\n";
|
||||
record += WiFi.isHidden(i)
|
||||
? " <td>Yes</td>\n"
|
||||
: " <td>No</td>\n";
|
||||
record += " </tr>\n";
|
||||
server.sendContent(record);
|
||||
//
|
||||
Serial.print(i + 1);
|
||||
Serial.print(": ");
|
||||
Serial.print(WiFi.SSID(i));
|
||||
Serial.print(" (");
|
||||
Serial.print(WiFi.RSSI(i));
|
||||
Serial.print(")");
|
||||
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
|
||||
}
|
||||
server.sendContent_P(
|
||||
" <tr><td> </td>\n"
|
||||
" <td colspan='7'>\n"
|
||||
" <input type=\"submit\" value=\"Select\" />\n"
|
||||
" <input type=\"reset\"/>\n"
|
||||
" </td>\n"
|
||||
" </tr>\n"
|
||||
" </table>\n"
|
||||
" </blockquote>\n"
|
||||
" </form>\n"
|
||||
"NAV: "
|
||||
" <a href='/'>Home</a> | "
|
||||
" <a href='/config'>Config</a> | "
|
||||
" <a href='/scan'>Scan</a> | "
|
||||
" <a href='/rssi'>RSSI</a> | "
|
||||
" <a href='/curr'>Current</a> | "
|
||||
" <a href='/config?ssid=reset&pass=reset' onclick=\"return confirm('Are you sure?')\">Factory Reset</a> | "
|
||||
" <a href='/about'>About</a>\n"
|
||||
" <br/>\n"
|
||||
"</body>\n"
|
||||
"</html>\n"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void FactoryReset(bool forceRestart) {
|
||||
Serial.println("Factory Reset Configuration...\n");
|
||||
wifiConfig.factoryReset();
|
||||
wifiConfig.save();
|
||||
if (forceRestart) {
|
||||
Serial.println("Restart in 3 sec ...");
|
||||
delay(3000);
|
||||
ESP.restart();
|
||||
}
|
||||
}
|
||||
|
||||
void HandleAPConfigPage() {
|
||||
String name = wifiConfig.getName();
|
||||
String ssid = wifiConfig.getSSID();
|
||||
String pass = wifiConfig.getPassword();
|
||||
String url = wifiConfig.getURL();
|
||||
//String ntp = wifiConfig.getNTPServerName();
|
||||
char _onref[6], _offref[6], _autoOff[6];
|
||||
|
||||
snprintf(_onref, sizeof(_onref), "%d", wifiConfig.getOnRef());
|
||||
snprintf(_offref, sizeof(_offref), "%d", wifiConfig.getOffRef());
|
||||
snprintf(_autoOff, sizeof(_autoOff), "%d", wifiConfig.getAutoOff());
|
||||
String onref = String(_onref);
|
||||
String offref = String(_offref);
|
||||
String autooff = String(_autoOff);
|
||||
|
||||
if (server.hasArg("ssid") && server.hasArg("pass")) {
|
||||
String _ssid = server.hasArg("_ssid") ? server.arg("_ssid") : "";
|
||||
String _pass = server.hasArg("_pass") ? server.arg("_pass") : "";
|
||||
name = server.arg("name");
|
||||
ssid = server.arg("ssid");
|
||||
pass = server.arg("pass");
|
||||
url = server.hasArg("url") ? server.arg("url") : "";
|
||||
onref = server.hasArg("onref") ? server.arg("onref") : "";
|
||||
offref = server.hasArg("offref") ? server.arg("offref") : "";
|
||||
autooff = server.hasArg("autooff") ? server.arg("autooff") : "";
|
||||
//ntp = server.hasArg("ntp") ? server.arg("ntp") : "";
|
||||
if (ssid == "reset" && pass == "reset") {
|
||||
FactoryReset(true);
|
||||
}
|
||||
wifiConfig.setName(name);
|
||||
wifiConfig.setSSID(ssid);
|
||||
wifiConfig.setPassword(pass);
|
||||
wifiConfig.setURL(url);
|
||||
wifiConfig.setOnRef(onref.toInt());
|
||||
wifiConfig.setOffRef(offref.toInt());
|
||||
wifiConfig.setAutoOff(autooff.toInt());
|
||||
//wifiConfig.setNTPServerName(ntp);
|
||||
wifiConfig.save();
|
||||
Serial.println("Settings saved.");
|
||||
if (ssid != _ssid || pass != _pass) {
|
||||
// They changed stuff that requires a restart.
|
||||
server.send(200, "text/html", "Configuration Saved! Restarting in 3 sec...");
|
||||
Serial.printf("Config saved. Restarting in 3 sec . . .");
|
||||
delay(3000);
|
||||
ESP.restart();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
String modeText = (isStationMode) ? "Station mode<br/>" : "Access Point mode<br/>";
|
||||
if (server.hasArg("ssid") && !server.hasArg("pass")) {
|
||||
ssid = server.arg("ssid");
|
||||
pass = "";
|
||||
Serial.println("ssid: " + ssid + ", pass: " + pass);
|
||||
}
|
||||
if (server.hasArg("url"))
|
||||
url = server.arg("url");
|
||||
//if (server.hasArg("ntp"))
|
||||
// ntp = server.arg("ntp");
|
||||
server.send(200, "text/html",
|
||||
"<!DOCTYPE html>\n"
|
||||
"<html>\n"
|
||||
"<head><title>Grow Controller - Config</title></head>\n"
|
||||
"<body>\n"
|
||||
"<h1>Grow Controller - Configuration</h1>"
|
||||
" <form action=\"\">\n"
|
||||
" <blockquote>\n"
|
||||
" <table border='0'>\n"
|
||||
" <tr>\n"
|
||||
" <td>Node Name</td>\n"
|
||||
" <td><input type=\"text\" size=\"32\" name=\"name\" value=\"" + name + "\" /></td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <td>SSID</td>\n"
|
||||
" <td><input type=\"text\" size=\"32\" name=\"ssid\" value=\"" + ssid + "\" /> **\n"
|
||||
" <input type=\"hidden\" name=\"_ssid\" value=\"" + ssid + "\" /></td>\n"
|
||||
" </tr>\n"
|
||||
" <tr nowrap='nowrap'>\n"
|
||||
" <td>Password</td>\n"
|
||||
" <td nowrap='nowrap'><input type=\"password\" size=\"64\" name=\"pass\" value=\"" + pass + "\" /> **\n"
|
||||
" <input type=\"hidden\" name=\"_pass\" value=\"" + pass + "\" /></td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <td>Update URL</td>\n"
|
||||
" <td><input type=\"text\" size=\"64\" name=\"url\" value=\"" + url + "\" /></td>\n"
|
||||
" </tr>\n"
|
||||
// " <tr>\n"
|
||||
// " <td>NTP Server</td>\n"
|
||||
// " <td><input type=\"text\" size=\"64\" name=\"ntp\" value=\"" + ntp + "\" /></td>\n"
|
||||
// " </tr>\n"
|
||||
" <tr>\n"
|
||||
" <td>Auto-Off</td>\n"
|
||||
" <td><input type=\"text\" size=\"10\" name=\"autooff\" value=\"" + autooff + "\" /> (time in seconds when non-zero)</td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <td>On Reference</td>\n"
|
||||
" <td><input type=\"text\" size=\"10\" name=\"onref\" value=\"" + onref + "\" /> (sense above this indicates power is on)</td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <td>Off Reference</td>\n"
|
||||
" <td><input type=\"text\" size=\"10\" name=\"offref\" value=\"" + offref + "\" /> (sense below this indicates power is off)</td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <td> </td>\n"
|
||||
" <td>\n"
|
||||
" <input type=\"submit\" value=\"Save\" />\n"
|
||||
" <input type=\"reset\"/> ** Changes to these will trigger a module restart.\n"
|
||||
" </td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <td colspan='2'><hr/></td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <td> </td>\n"
|
||||
" <td><a href='/swupdatecheck'>Check for SW update (module will restart if updated)</a></td/>\n"
|
||||
" </tr>\n"
|
||||
" </table>\n"
|
||||
" </blockquote>\n"
|
||||
" </form>\n"
|
||||
"NAV: "
|
||||
" <a href='/'>Home</a> | "
|
||||
" <a href='/config'>Config</a> | "
|
||||
" <a href='/scan'>Scan</a> | "
|
||||
" <a href='/rssi'>RSSI</a> | "
|
||||
" <a href='/curr'>Current</a> | "
|
||||
" <a href='/config?ssid=reset&pass=reset' onclick=\"return confirm('Are you sure?')\">Factory Reset</a> | "
|
||||
" <a href='/about'>About</a>\n"
|
||||
" <br/>\n"
|
||||
"</body>\n"
|
||||
"</html>\n"
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user