mostly working

AP off bug

WLAN settings work
This commit is contained in:
cschwinne 2016-09-13 23:19:02 +02:00
parent 57c42facd5
commit a58ff54d5b
3 changed files with 79 additions and 50 deletions

View File

@ -15,5 +15,6 @@ implement LED Control (NeoPixelBus?) -- vip
implement HSB slider option
implement default color on boot
Bugs:
FAILURE SOURCE?? --> non-null String
post req doesnt send checkboxes

View File

@ -13,34 +13,34 @@
if (this.readyState == 4) {
if (this.status == 200) {
if (this.responseXML != null) {
document.Settings_form.CSSID.value = this.responseXML.getElementsByTagName('cssid')[0].childNodes[0].nodeValue;
document.Settings_form.CPASS.value = this.responseXML.getElementsByTagName('cpass')[0].childNodes[0].nodeValue; //fake pass like ******
document.Settings_form.CSIP0.value = this.responseXML.getElementsByTagName('csips')[0].childNodes[0].nodeValue;
document.Settings_form.CSIP1.value = this.responseXML.getElementsByTagName('csips')[1].childNodes[0].nodeValue;
document.Settings_form.CSIP2.value = this.responseXML.getElementsByTagName('csips')[2].childNodes[0].nodeValue;
document.Settings_form.CSIP3.value = this.responseXML.getElementsByTagName('csips')[3].childNodes[0].nodeValue;
document.Settings_form.CSGW0.value = this.responseXML.getElementsByTagName('csgws')[0].childNodes[0].nodeValue;
document.Settings_form.CSGW1.value = this.responseXML.getElementsByTagName('csgws')[1].childNodes[0].nodeValue;
document.Settings_form.CSGW2.value = this.responseXML.getElementsByTagName('csgws')[2].childNodes[0].nodeValue;
document.Settings_form.CSGW3.value = this.responseXML.getElementsByTagName('csgws')[3].childNodes[0].nodeValue;
document.Settings_form.CSSN0.value = this.responseXML.getElementsByTagName('cssns')[0].childNodes[0].nodeValue;
document.Settings_form.CSSN1.value = this.responseXML.getElementsByTagName('cssns')[1].childNodes[0].nodeValue;
document.Settings_form.CSSN2.value = this.responseXML.getElementsByTagName('cssns')[2].childNodes[0].nodeValue;
document.Settings_form.CSSN3.value = this.responseXML.getElementsByTagName('cssns')[3].childNodes[0].nodeValue;
document.Settings_form.CMDNS.value = this.responseXML.getElementsByTagName('cmdns')[0].childNodes[0].nodeValue;
document.Settings_form.APSSID.value = this.responseXML.getElementsByTagName('apssid')[0].childNodes[0].nodeValue;
document.Settings_form.APHSSID.checked = (this.responseXML.getElementsByTagName('aphssid')[0].childNodes[0].nodeValue)!=0?true:false;
document.Settings_form.APPASS.value = this.responseXML.getElementsByTagName('appass')[0].childNodes[0].nodeValue; //fake pass like ******
document.Settings_form.APCHAN.value = this.responseXML.getElementsByTagName('apchan')[0].childNodes[0].nodeValue;
document.Settings_form.LEDS.value = this.responseXML.getElementsByTagName('leds')[0].childNodes[0].nodeValue;
document.Settings_form.PWRLED.checked = (this.responseXML.getElementsByTagName('pwrled')[0].childNodes[0].nodeValue)!=0?true:false;
document.Settings_form.BTNP.value = this.responseXML.getElementsByTagName('btnp')[0].childNodes[0].nodeValue;
document.Settings_form.NOOTA.checked = (this.responseXML.getElementsByTagName('noota')[0].childNodes[0].nodeValue)!=0?true:false;
document.Settings_form.NORAP.checked = (this.responseXML.getElementsByTagName('norap')[0].childNodes[0].nodeValue)!=0?true:false;
document.getElementsByClassName("sip")[0].innerHTML = this.responseXML.getElementsByTagName('sip')[0].childNodes[0].nodeValue;
document.getElementsByClassName("sip")[1].innerHTML = this.responseXML.getElementsByTagName('sip')[1].childNodes[0].nodeValue;
document.getElementsByClassName("otastat")[0].innerHTML = this.responseXML.getElementsByTagName('otastat')[0].childNodes[0].nodeValue;
document.getElementsByClassName("msg")[0].innerHTML = this.responseXML.getElementsByTagName('msg')[0].childNodes[0].nodeValue;
document.Settings_form.CSSID.value = this.responseXML.getElementsByTagName('cssid')[0].innerHTML;
document.Settings_form.CPASS.value = this.responseXML.getElementsByTagName('cpass')[0].innerHTML; //fake pass like ******
document.Settings_form.CSIP0.value = this.responseXML.getElementsByTagName('csips')[0].innerHTML;
document.Settings_form.CSIP1.value = this.responseXML.getElementsByTagName('csips')[1].innerHTML;
document.Settings_form.CSIP2.value = this.responseXML.getElementsByTagName('csips')[2].innerHTML;
document.Settings_form.CSIP3.value = this.responseXML.getElementsByTagName('csips')[3].innerHTML;
document.Settings_form.CSGW0.value = this.responseXML.getElementsByTagName('csgws')[0].innerHTML;
document.Settings_form.CSGW1.value = this.responseXML.getElementsByTagName('csgws')[1].innerHTML;
document.Settings_form.CSGW2.value = this.responseXML.getElementsByTagName('csgws')[2].innerHTML;
document.Settings_form.CSGW3.value = this.responseXML.getElementsByTagName('csgws')[3].innerHTML;
document.Settings_form.CSSN0.value = this.responseXML.getElementsByTagName('cssns')[0].innerHTML;
document.Settings_form.CSSN1.value = this.responseXML.getElementsByTagName('cssns')[1].innerHTML;
document.Settings_form.CSSN2.value = this.responseXML.getElementsByTagName('cssns')[2].innerHTML;
document.Settings_form.CSSN3.value = this.responseXML.getElementsByTagName('cssns')[3].innerHTML;
document.Settings_form.CMDNS.value = this.responseXML.getElementsByTagName('cmdns')[0].innerHTML;
document.Settings_form.APSSID.value = this.responseXML.getElementsByTagName('apssid')[0].innerHTML;
document.Settings_form.APHSSID.checked = (this.responseXML.getElementsByTagName('aphssid')[0].innerHTML)!=0?true:false;
document.Settings_form.APPASS.value = this.responseXML.getElementsByTagName('appass')[0].innerHTML; //fake pass like ******
document.Settings_form.APCHAN.value = this.responseXML.getElementsByTagName('apchan')[0].innerHTML;
document.Settings_form.LEDS.value = this.responseXML.getElementsByTagName('leds')[0].innerHTML;
document.Settings_form.PWRLED.checked = (this.responseXML.getElementsByTagName('pwrled')[0].innerHTML)!=0?true:false;
document.Settings_form.BTNP.value = this.responseXML.getElementsByTagName('btnp')[0].innerHTML;
document.Settings_form.NOOTA.checked = (this.responseXML.getElementsByTagName('noota')[0].innerHTML)!=0?true:false;
document.Settings_form.NORAP.checked = (this.responseXML.getElementsByTagName('norap')[0].innerHTML)!=0?true:false;
document.getElementsByClassName("sip")[0].innerHTML = this.responseXML.getElementsByTagName('sip')[0].innerHTML;
document.getElementsByClassName("sip")[1].innerHTML = this.responseXML.getElementsByTagName('sip')[1].innerHTML;
document.getElementsByClassName("otastat")[0].innerHTML = this.responseXML.getElementsByTagName('otastat')[0].innerHTML;
document.getElementsByClassName("msg")[0].innerHTML = this.responseXML.getElementsByTagName('msg')[0].innerHTML;
if (Settings_form.NOOTA.checked) {document.Settings_form.NOOTA.disabled="disabled";}
}
}

View File

@ -30,7 +30,7 @@ boolean ota_lock = false;
int led_amount = 16;
int nopwrled = 1;
char HTTP_req[350];
char HTTP_req[150];
ESP8266WebServer server(80);
File fsUploadFile;
@ -53,12 +53,14 @@ void clearEEPROM()
{
EEPROM.write(i, 0);
}
EEPROM.commit();
}
void saveSettingsToEEPROM()
{
if (EEPROM.read(233) != 233) //set no first boot flag
{
clearEEPROM();
EEPROM.write(233, 233);
}
for (int i = 0; i < 32; ++i)
@ -67,19 +69,19 @@ void saveSettingsToEEPROM()
}
for (int i = 32; i < 96; ++i)
{
EEPROM.write(i, clientpass.charAt(i));
EEPROM.write(i, clientpass.charAt(i-32));
}
for (int i = 96; i < 128; ++i)
{
EEPROM.write(i, cmdns.charAt(i));
EEPROM.write(i, cmdns.charAt(i-96));
}
for (int i = 128; i < 160; ++i)
{
EEPROM.write(i, apssid.charAt(i));
EEPROM.write(i, apssid.charAt(i-128));
}
for (int i = 160; i < 224; ++i)
{
EEPROM.write(i, appass.charAt(i));
EEPROM.write(i, appass.charAt(i-160));
}
EEPROM.write(228, aphide);
EEPROM.write(227, apchannel);
@ -97,6 +99,8 @@ void saveSettingsToEEPROM()
EEPROM.write(243, staticsubnet[1]);
EEPROM.write(244, staticsubnet[2]);
EEPROM.write(245, staticsubnet[3]);
EEPROM.commit();
}
void loadSettingsFromEEPROM()
@ -109,27 +113,32 @@ void loadSettingsFromEEPROM()
clientssid = "";
for (int i = 0; i < 32; ++i)
{
clientssid += char(EEPROM.read(i));
if (EEPROM.read(i) == 0) break;
clientssid += char(EEPROM.read(i));
}
clientpass = "";
for (int i = 32; i < 96; ++i)
{
clientpass += char(EEPROM.read(i));
if (EEPROM.read(i) == 0) break;
clientpass += char(EEPROM.read(i));
}
cmdns = "";
for (int i = 96; i < 128; ++i)
{
cmdns += char(EEPROM.read(i));
if (EEPROM.read(i) == 0) break;
cmdns += char(EEPROM.read(i));
}
apssid = "";
for (int i = 128; i < 160; ++i)
{
apssid += char(EEPROM.read(i));
if (EEPROM.read(i) == 0) break;
apssid += char(EEPROM.read(i));
}
appass = "";
for (int i = 160; i < 224; ++i)
{
appass += char(EEPROM.read(i));
if (EEPROM.read(i) == 0) break;
appass += char(EEPROM.read(i));
}
aphide = EEPROM.read(228);
if (aphide > 1) aphide = 1;
@ -174,6 +183,7 @@ void XML_response()
void XML_response_settings()
{
Serial.println("XML settings response");
String resp;
resp = resp + "<?xml version = \"1.0\" ?>";
resp = resp + "<vs>";
@ -264,6 +274,7 @@ void XML_response_settings()
resp = resp + "<otastat>Not implemented</otastat>";
resp = resp + "<msg>WLED 0.1c OK</msg>";
resp = resp + "</vs>";
Serial.println(resp);
server.send(200, "text/xml", resp);
}
@ -312,7 +323,20 @@ uint8_t getNumberAfterStringPos(char str[], char spos)
void handleSettingsSet()
{
if (server.hasArg("CSSID")) clientssid = server.arg("CSSID");
if (server.hasArg("CPASS"))
{
if (!server.arg("CPASS").indexOf('*') == 0)
{
Serial.println("Setting pass");
clientpass = server.arg("CPASS");
}
}
if (server.hasArg("APSSID")) apssid = server.arg("APSSID");
if (server.hasArg("APPASS"))
{
if (!server.arg("APPASS").indexOf('*') == 0) appass = server.arg("APPASS");
}
saveSettingsToEEPROM();
}
@ -320,7 +344,7 @@ boolean handleSet(String req)
{
Serial.println("handleSet:");
Serial.println(req);
req.toCharArray(HTTP_req, 350, 0);
req.toCharArray(HTTP_req, 150, 0);
if (!StrContains(HTTP_req, "ajax_in")) {
if (StrContains(HTTP_req, "get-settings"))
{
@ -485,7 +509,6 @@ void setLeds() {
void setup() {
Serial.begin(115200);
Serial.println("T123");
Serial.println();
for(uint8_t t = 4; t > 0; t--) {
@ -508,6 +531,13 @@ void setup() {
EEPROM.begin(256);
loadSettingsFromEEPROM();
Serial.print("CC: SSID: ");
Serial.print(clientssid);
Serial.print(" PASS: ");
Serial.println(clientpass);
WiFi.disconnect(); //close old connections
if (staticip[0] != 0)
{
WiFi.config(staticip, staticgateway, staticsubnet);
@ -516,8 +546,9 @@ void setup() {
WiFi.config(0U, 0U, 0U);
}
if (useap)
if (apssid.length()>0)
{
Serial.println(apssid.length());
initAP();
} else
{
@ -531,7 +562,7 @@ void setup() {
Serial.println(WiFi.localIP());
// Set up mDNS responder:
if (cmdns != NULL && !WL_CONNECTED && !MDNS.begin(cmdns.c_str())) {
if (cmdns != NULL && WL_CONNECTED && !MDNS.begin(cmdns.c_str())) {
Serial.println("Error setting up MDNS responder!");
down();
}
@ -554,7 +585,7 @@ void setup() {
server.on("/reset", HTTP_GET, reset);
server.on("/set-settings", HTTP_POST, [](){
handleSettingsSet();
server.send(200, "text/plain", "Settings saved. Please wait a minute for module to reset...");
server.send(200, "text/html", "<html><head><script>alert(Settings saved. Please power cycle module to apply changes...);</script></head></html>");
reset();
});
if (!ota_lock){
@ -573,6 +604,8 @@ void setup() {
server.on("/list", HTTP_GET, handleFileList);
//kill module
server.on("/down", HTTP_GET, down);
//clear eeprom
server.on("/cleareeprom", HTTP_GET, clearEEPROM);
}
//called when the url is not defined here, ajax-in; get-settings
server.onNotFound([](){
@ -597,10 +630,6 @@ void setup() {
void loop() {
server.handleClient();
/*if (wasConnected && !WL_CONNECTED)
{
initCon();
}*/
}
void initAP(){
@ -623,7 +652,6 @@ void initCon()
return;
}
}
//wasConnected = true;
}