CanGrow Firmware WIP
This commit is contained in:
parent
0d97eacd76
commit
9577788dfa
1 changed files with 90 additions and 22 deletions
|
@ -38,13 +38,17 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// When D4 is HIGH at start, WIPE is true and EEPROM get cleared
|
// When D4 is LOW at start, WIPE is true and EEPROM get cleared
|
||||||
|
// D4 hast to be shorted to GND withing the 2 sec delay in setup();
|
||||||
|
// DO NOT PULL D4 DOWN AT START/POWER ON !!! BOOT WILL FAIL
|
||||||
bool WIPE;
|
bool WIPE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* EEPROM variables
|
* EEPROM variables
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Size of EEPROM
|
||||||
|
const uint8_t EEPROMsize = 512;
|
||||||
bool configured;
|
bool configured;
|
||||||
char WIFIssid[32];
|
char WIFIssid[32];
|
||||||
char WIFIpassword[64];
|
char WIFIpassword[64];
|
||||||
|
@ -64,9 +68,9 @@ char WIFIpassword[64];
|
||||||
const char *APssid = "CanGrow-unconfigured";
|
const char *APssid = "CanGrow-unconfigured";
|
||||||
const char *APpass = "CanGrow";
|
const char *APpass = "CanGrow";
|
||||||
|
|
||||||
IPAddress ip(192,168,4,20);
|
IPAddress WIFIip(192,168,4,20);
|
||||||
IPAddress netmask(255,255,255,0);
|
IPAddress WIFInetmask(255,255,255,0);
|
||||||
IPAddress gateway(192,168,4,254);
|
IPAddress WIFIgateway(192,168,4,254);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -335,6 +339,15 @@ int getLightchirp() {
|
||||||
return lightchirp;
|
return lightchirp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wipeEEPROM() {
|
||||||
|
// write a 0 to all 512 bytes of the EEPROM
|
||||||
|
Serial.print("wiping EEPROM... ");
|
||||||
|
for (int i = 0; i < EEPROMsize; i++) { EEPROM.write(i, 0); }
|
||||||
|
Serial.println("DONE");
|
||||||
|
pinMode(PIN_WIPE, OUTPUT);
|
||||||
|
digitalWrite(PIN_WIPE, LOW);
|
||||||
|
delay(5000);
|
||||||
|
}
|
||||||
|
|
||||||
bool loadEEPROM() {
|
bool loadEEPROM() {
|
||||||
// read var configured from Byte 0
|
// read var configured from Byte 0
|
||||||
|
@ -344,11 +357,11 @@ bool loadEEPROM() {
|
||||||
// read var WIFIpassword, 64 byte long
|
// read var WIFIpassword, 64 byte long
|
||||||
EEPROM.get(33, WIFIpassword);
|
EEPROM.get(33, WIFIpassword);
|
||||||
// read var ip, 16 byte long
|
// read var ip, 16 byte long
|
||||||
EEPROM.get(113, ip);
|
EEPROM.get(113, WIFIip);
|
||||||
// read var netmask, 16 byte long
|
// read var netmask, 16 byte long
|
||||||
EEPROM.get(129, netmask);
|
EEPROM.get(129, WIFInetmask);
|
||||||
// read var gateway, 16 byte long
|
// read var gateway, 16 byte long
|
||||||
EEPROM.get(145, gateway);
|
EEPROM.get(145, WIFIgateway);
|
||||||
|
|
||||||
Serial.print("EEPROM loaded, CanGrow configured is: ");
|
Serial.print("EEPROM loaded, CanGrow configured is: ");
|
||||||
Serial.println(configured);
|
Serial.println(configured);
|
||||||
|
@ -378,14 +391,11 @@ void setup() {
|
||||||
digitalWrite(PINled, LOW);
|
digitalWrite(PINled, LOW);
|
||||||
digitalWrite(PINpump, LOW);
|
digitalWrite(PINpump, LOW);
|
||||||
|
|
||||||
// read status from PIN_WIPE to WIPE
|
|
||||||
WIPE = digitalRead(PIN_WIPE);
|
|
||||||
|
|
||||||
// Start Serial
|
// Start Serial
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
// Start EEPROM
|
// Start EEPROM
|
||||||
EEPROM.begin(512);
|
EEPROM.begin(EEPROMsize);
|
||||||
|
|
||||||
// initialise Wire for I2C
|
// initialise Wire for I2C
|
||||||
Wire.begin();
|
Wire.begin();
|
||||||
|
@ -409,23 +419,52 @@ void setup() {
|
||||||
// initialise DHT11
|
// initialise DHT11
|
||||||
dht.begin(); //TODO: Do only, when configured
|
dht.begin(); //TODO: Do only, when configured
|
||||||
|
|
||||||
WiFi.softAPConfig(ip, gateway, netmask);
|
WiFi.softAPConfig(WIFIip, WIFIgateway, WIFInetmask);
|
||||||
WiFi.softAP(APssid);
|
WiFi.softAP(APssid);
|
||||||
Serial.print("AP IP address: ");
|
Serial.print("AP IP address: ");
|
||||||
Serial.println(WiFi.softAPIP());
|
Serial.println(WiFi.softAPIP());
|
||||||
|
|
||||||
|
// load stored values from EEPROM
|
||||||
|
loadEEPROM();
|
||||||
|
|
||||||
|
// wait a few seconds to let the user pull D4 down to wipe EEPROM
|
||||||
|
// and we can enjoy the boot screen meanwhile :p
|
||||||
|
delay(2000);
|
||||||
|
|
||||||
|
// read status from PIN_WIPE to WIPE
|
||||||
|
WIPE = digitalRead(PIN_WIPE);
|
||||||
|
Serial.print("WIPE is ");
|
||||||
|
Serial.println(WIPE);
|
||||||
|
if( WIPE == 0 ) {
|
||||||
|
wipeEEPROM();
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Webserver handlers
|
// Webserver handlers
|
||||||
//
|
//
|
||||||
webserver.on("/", HTTP_GET, webRoot);
|
|
||||||
// server.onNotFound(handleNotFound);
|
// when not configured, webroot is WEBrootAP
|
||||||
// webserver.on("/save", HTTP_POST, handleSave);
|
// nothing else configured
|
||||||
// webserver.on("/control", HTTP_GET, handleControl);
|
if(configured == true) {
|
||||||
|
webserver.on("/", HTTP_GET, WEBroot);
|
||||||
|
} else {
|
||||||
|
webserver.on("/", HTTP_GET, WEBrootAP);
|
||||||
|
}
|
||||||
|
|
||||||
|
// generic handler
|
||||||
|
webserver.on("/wifiConfig/save", HTTP_POST, POSTwifiConfig);
|
||||||
|
// 404 handling
|
||||||
|
//webserver.onNotFound(handleNotFound);
|
||||||
|
|
||||||
|
/*
|
||||||
|
webserver.on("/", HTTP_GET, WEBroot);
|
||||||
|
|
||||||
|
webserver.on("/control", HTTP_GET, handleControl);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
webserver.begin();
|
webserver.begin();
|
||||||
loadEEPROM();
|
|
||||||
Serial.print("WIPE is ");
|
|
||||||
Serial.println(WIPE);
|
|
||||||
delay(2000); //TODO: replace with millis()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -447,7 +486,7 @@ void loop() {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void webRoot() {
|
void WEBroot() {
|
||||||
|
|
||||||
String body = FPSTR(HTMLheader);
|
String body = FPSTR(HTMLheader);
|
||||||
body += "<h1>configured!</h1>";
|
body += "<h1>configured!</h1>";
|
||||||
|
@ -456,19 +495,48 @@ void webRoot() {
|
||||||
webserver.send(200, "text/html", body);
|
webserver.send(200, "text/html", body);
|
||||||
}
|
}
|
||||||
|
|
||||||
void webRootAP() {
|
void WEBrootAP() {
|
||||||
|
|
||||||
String body = FPSTR(HTMLheader);
|
String body = FPSTR(HTMLheader);
|
||||||
body += "<h1>unconfigured!</h1>";
|
body += "<h1>unconfigured!</h1>";
|
||||||
|
body += "<h1>WiFi config</h1>";
|
||||||
|
body += "<form method='post' action='/wifiConfig/save'>";
|
||||||
|
body += "SSID: <input type='text' name='WIFIssid'><br>";
|
||||||
|
body += "Password: <input type='password' name='WIFIpassword'><br>";
|
||||||
|
body += "IP: <input type='text' name='WIFIip'><br>";
|
||||||
|
body += "Subnet mask: <input type='text' name='WIFInetmask'><br>";
|
||||||
|
body += "gateway: <input type='text' name='WIFIgateway'><br>";
|
||||||
|
body += "<input type='submit' value='Save'>";
|
||||||
|
body += "</form>";
|
||||||
body += FPSTR(HTMLfooter);
|
body += FPSTR(HTMLfooter);
|
||||||
|
|
||||||
webserver.send(200, "text/html", body);
|
webserver.send(200, "text/html", body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* POSTs
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
void POSTwifiConfig() {
|
||||||
|
String WIFIssid_new = webserver.arg("WIFIssid");
|
||||||
|
String WIFIpassword_new = webserver.arg("WIFIpassword");
|
||||||
|
String WIFIip_new = webserver.arg("WIFIip");
|
||||||
|
String WIFInetmask_new = webserver.arg("WIFInetmask");
|
||||||
|
String WIFIgateway_new = webserver.arg("WIFIgateway");
|
||||||
|
|
||||||
|
WIFIssid_new.toCharArray(WIFIssid, 32);
|
||||||
|
WIFIpassword_new.toCharArray(WIFIpassword, 64);
|
||||||
|
|
||||||
|
WIFIip.fromString(WIFIip_new);
|
||||||
|
WIFInetmask.fromString(WIFInetmask_new);
|
||||||
|
WIFIgateway.fromString(WIFIgateway_new);
|
||||||
|
EEPROM.put(0, 1);
|
||||||
|
EEPROM.commit();
|
||||||
|
webserver.send(200, "text/html", "wifiConfig saved, please restart");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue