mirror of
https://github.com/NEBULAIR/esponics.git
synced 2026-03-10 08:51:19 +00:00
Add check of parameters on web every minute, overwrite inside parameters if different
This commit is contained in:
@@ -116,6 +116,16 @@ void serialStack();
|
|||||||
String inputString = ""; // a string to hold incoming data
|
String inputString = ""; // a string to hold incoming data
|
||||||
boolean stringComplete = false; // whether the string is complete
|
boolean stringComplete = false; // whether the string is complete
|
||||||
|
|
||||||
|
|
||||||
|
//Web parameters Function declarations
|
||||||
|
void checkWebValues(void);
|
||||||
|
void getConfFromWeb(void);
|
||||||
|
//Web parameters Variables
|
||||||
|
byte webDayStart = 0; // Hour of the day that the lamp starts
|
||||||
|
byte webDayTime = 0; // Number of hours of daylight (LAMP ON)
|
||||||
|
byte webPumpFreq = 0; // Time between 2 pump cycles
|
||||||
|
byte webFloodedTime = 0; // Time of water at high level
|
||||||
|
|
||||||
/* void setup(void)
|
/* void setup(void)
|
||||||
* Setup software run only once
|
* Setup software run only once
|
||||||
*
|
*
|
||||||
@@ -139,7 +149,6 @@ void setup() {
|
|||||||
minutesCounter = 1;
|
minutesCounter = 1;
|
||||||
digitalWrite(LAMP, HIGH);
|
digitalWrite(LAMP, HIGH);
|
||||||
|
|
||||||
printInfo();
|
|
||||||
Serial.println("------");
|
Serial.println("------");
|
||||||
|
|
||||||
//Init wifi and web server
|
//Init wifi and web server
|
||||||
@@ -178,6 +187,10 @@ void loop() {
|
|||||||
if (tick2Occured == true){
|
if (tick2Occured == true){
|
||||||
tick2Occured = false;
|
tick2Occured = false;
|
||||||
minutesCounter ++; //Increment the minutes counter
|
minutesCounter ++; //Increment the minutes counter
|
||||||
|
|
||||||
|
//check the config values on web
|
||||||
|
checkWebValues();
|
||||||
|
|
||||||
// Every 60min increment the hours counter
|
// Every 60min increment the hours counter
|
||||||
if (0 == minutesCounter % 60)
|
if (0 == minutesCounter % 60)
|
||||||
{
|
{
|
||||||
@@ -816,3 +829,98 @@ unsigned long getMacAddress() {
|
|||||||
}
|
}
|
||||||
return intMac;
|
return intMac;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* void getConfFromWeb(void)
|
||||||
|
* Download config file from webserver
|
||||||
|
*
|
||||||
|
* TODO: improve the seach pattern
|
||||||
|
* TODO Make it not stoping the app (dedicated timer app?)
|
||||||
|
*/
|
||||||
|
void getConfFromWeb(void) {
|
||||||
|
const char* host = "nebulair.co";
|
||||||
|
String parametersString;
|
||||||
|
char parameters[32];
|
||||||
|
//Serial.print("connecting to ");
|
||||||
|
//Serial.println(host);
|
||||||
|
|
||||||
|
// Use WiFiClient class to create TCP connections
|
||||||
|
WiFiClient client;
|
||||||
|
const int httpPort = 80;
|
||||||
|
if (!client.connect(host, httpPort)) {
|
||||||
|
Serial.print("connecting to ");
|
||||||
|
Serial.print(host);
|
||||||
|
Serial.println(" failed");
|
||||||
|
webDayStart = 0;
|
||||||
|
webDayTime = 0;
|
||||||
|
webPumpFreq = 0;
|
||||||
|
webFloodedTime = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We now create a URI for the request
|
||||||
|
String url = "/config-files/conf.310366044.txt";
|
||||||
|
//Serial.print("Requesting URL: ");
|
||||||
|
//Serial.println(url);
|
||||||
|
|
||||||
|
// This will send the request to the server
|
||||||
|
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
|
||||||
|
"Host: " + host + "\r\n" +
|
||||||
|
"Connection: close\r\n\r\n");
|
||||||
|
delay(500);
|
||||||
|
|
||||||
|
// Read all the lines of the reply from server and print them to Serial
|
||||||
|
while(client.available()){
|
||||||
|
String line = client.readStringUntil('\r');
|
||||||
|
if (-1 != line.indexOf('>')){
|
||||||
|
parametersString = line.substring(line.indexOf('>')+1, line.indexOf('<'));
|
||||||
|
parametersString.toCharArray(parameters, parametersString.length()+1);
|
||||||
|
//Convert values
|
||||||
|
webDayStart = atoi(strtok(parameters, ";"));
|
||||||
|
webDayTime = atoi(strtok(NULL, ";"));
|
||||||
|
webPumpFreq = atoi(strtok(NULL, ";"));
|
||||||
|
webFloodedTime = atoi(strtok(NULL, ";"));
|
||||||
|
|
||||||
|
//Serial.println(parameters);
|
||||||
|
//Serial.println(webDayStart);
|
||||||
|
//Serial.println(webDayTime);
|
||||||
|
//Serial.println(webPumpFreq);
|
||||||
|
//Serial.println(webFloodedTime);
|
||||||
|
//Stop looking
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Serial.println();
|
||||||
|
//Serial.println("closing connection");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* void checkWebValues(void)
|
||||||
|
* Chack and update config from web
|
||||||
|
*
|
||||||
|
* TODO Make it not stoping the app
|
||||||
|
*/
|
||||||
|
void checkWebValues(void)
|
||||||
|
{
|
||||||
|
getConfFromWeb();
|
||||||
|
|
||||||
|
//Check if parameters need to be adjusted
|
||||||
|
if( webDayStart != 0 & webDayTime != 0&
|
||||||
|
webPumpFreq != 0 & webFloodedTime != 0)
|
||||||
|
{
|
||||||
|
//Paremeters are valid, check if they are new
|
||||||
|
if( webDayStart != conf.dayStart| webDayTime != conf.dayTime|
|
||||||
|
webPumpFreq != conf.pumpFreq| webFloodedTime != conf.floodedTime)
|
||||||
|
{
|
||||||
|
//New parameters, Update values
|
||||||
|
conf.dayStart = webDayStart;
|
||||||
|
conf.dayTime = webDayTime;
|
||||||
|
conf.pumpFreq = webPumpFreq;
|
||||||
|
conf.floodedTime = webFloodedTime;
|
||||||
|
eepromWrite();
|
||||||
|
|
||||||
|
Serial.println("Config Updated from web");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user