Subversion Repositories ESP32_P1_Meter

Rev

Rev 1 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1 Rev 2
Line 8... Line 8...
8
bool captiveRun = false;
8
bool captiveRun = false;
9
 
9
 
10
// AsyncFsWebServer server(80, FILESYSTEM, "esphost");
10
// AsyncFsWebServer server(80, FILESYSTEM, "esphost");
11
AsyncFsWebServer server(80, FILESYSTEM);
11
AsyncFsWebServer server(80, FILESYSTEM);
12
 
12
 
13
#ifndef LED_BUILTIN
13
#ifndef Default_MQTT_Port
14
#define LED_BUILTIN 2
14
#define Default_MQTT_Port 1883
15
#endif
15
#endif
16
 
16
 
17
#define BTN_SAVE  5
17
#define BTN_SAVE  5
18
 
18
 
19
// Test "options" values
19
// Test "options" values
20
uint8_t ledPin = LED_BUILTIN;
20
uint16_t MQTT_Port = Default_MQTT_Port;
21
bool boolVar = true;
21
bool MQTT_Enabled = false;
22
uint32_t longVar = 1234567890;
22
String MQTT_Server = "";
23
float floatVar = 15.5F;
23
String MQTT_User = "";
24
String stringVar = "Test option String";
24
String MQTT_Password = "";
25
 
-
 
26
// In order to show a dropdown list box in /setup page
-
 
27
// we need a list of values and a variable to store the selected option
-
 
28
#define LIST_SIZE  7
-
 
29
const char* dropdownList[LIST_SIZE] =
-
 
30
{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
-
 
31
String dropdownSelected;
25
String MQTT_Prefix = "";
32
 
26
 
33
// Var labels (in /setup webpage)
27
// Var labels (in /setup webpage)
34
#define LED_LABEL "The LED pin number"
28
#define MQTT_ENABLED_LABEL "MQTT Enabled"
35
#define BOOL_LABEL "A bool variable"
29
#define MQTT_SERVER_LABEL "MQTT Server"
36
#define LONG_LABEL "A long variable"
30
#define MQTT_PORT_LABEL "MQTT Server Port"
37
#define FLOAT_LABEL "A float variable"
31
#define MQTT_USER_LABEL "MQTT User"
38
#define STRING_LABEL "A String variable"
32
#define MQTT_PASSWORD_LABEL "MQTT Password"
39
#define DROPDOWN_LABEL "A dropdown listbox"
33
#define MQTT_PREFIX_LABEL "MQTT Prefix"
40
 
34
 
41
// Timezone definition to get properly time from NTP server
35
// Timezone definition to get properly time from NTP server
42
#define MYTZ "CET-1CEST,M3.5.0,M10.5.0/3"
36
#define MYTZ "CET-1CEST,M3.5.0,M10.5.0/3"
43
struct tm Time;
37
struct tm Time;
44
 
38
 
Line 92... Line 86...
92
	fsInfo->totalBytes = LittleFS.totalBytes();
86
	fsInfo->totalBytes = LittleFS.totalBytes();
93
	fsInfo->usedBytes = LittleFS.usedBytes();
87
	fsInfo->usedBytes = LittleFS.usedBytes();
94
}
88
}
95
#endif
89
#endif
96
 
90
 
97
 
-
 
98
////////////////////  Load application options from filesystem  ////////////////////
91
////////////////////  Load application options from filesystem  ////////////////////
99
bool loadOptions() {
92
bool loadOptions() {
100
  if (FILESYSTEM.exists(server.getConfiFileName())) {
93
  if (FILESYSTEM.exists(server.getConfiFileName())) {
101
    server.getOptionValue(LED_LABEL, ledPin);
94
    server.getOptionValue(MQTT_ENABLED_LABEL, MQTT_Enabled);
102
    server.getOptionValue(BOOL_LABEL, boolVar);
95
    server.getOptionValue(MQTT_SERVER_LABEL, MQTT_Server);
103
    server.getOptionValue(LONG_LABEL, longVar);
96
    server.getOptionValue(MQTT_PORT_LABEL, MQTT_Port);
104
    server.getOptionValue(FLOAT_LABEL, floatVar);
97
    server.getOptionValue(MQTT_USER_LABEL, MQTT_User);
105
    server.getOptionValue(STRING_LABEL, stringVar);
98
    server.getOptionValue(MQTT_PASSWORD_LABEL, MQTT_Password);
106
    server.getOptionValue(DROPDOWN_LABEL, dropdownSelected);
99
    server.getOptionValue(MQTT_PREFIX_LABEL, MQTT_Prefix);
107
 
100
 
108
    Serial.println("\nThis are the current values stored: \n");
101
    Serial.println("\nThis are the current values stored: \n");
109
    Serial.printf("LED pin value: %d\n", ledPin);
102
    Serial.printf("MQTT Enabled: %s\n", MQTT_Enabled ? "true" : "false");
110
    Serial.printf("Bool value: %s\n", boolVar ? "true" : "false");
103
    Serial.printf("MQTT Server: %s\n", MQTT_Server.c_str());
111
    Serial.printf("Long value: %u\n", longVar);
104
    Serial.printf("MQTT Server Port: %d\n", MQTT_Port);
112
    Serial.printf("Float value: %d.%d\n", (int)floatVar, (int)(floatVar*1000)%1000);
105
    Serial.printf("MQTT User: %s\n", MQTT_User.c_str());
113
    Serial.printf("String value: %s\n", stringVar.c_str());
106
    Serial.printf("MQTT password: %s\n", MQTT_Password.c_str());
114
    Serial.printf("Dropdown selected value: %s\n\n", dropdownSelected.c_str());
107
    Serial.printf("MQTT Prefix: %s\n", MQTT_Prefix.c_str());
115
    return true;
108
    return true;
116
  }
109
  }
117
  else
110
  else
118
    Serial.println(F("Config file not exist"));
111
    Serial.println(F("Config file not exist"));
119
  return false;
112
  return false;
Line 161... Line 154...
161
 
154
 
162
  // Add custom page handlers to webserver
155
  // Add custom page handlers to webserver
163
  server.on("/reload", HTTP_GET, handleLoadOptions);
156
  server.on("/reload", HTTP_GET, handleLoadOptions);
164
 
157
 
165
  // Configure /setup page and start Web Server
158
  // Configure /setup page and start Web Server
166
  server.addOptionBox("My Options");
159
  server.addOptionBox("MQTT");
167
 
160
 
168
  server.addOption(BOOL_LABEL, boolVar);
161
  server.addOption(MQTT_ENABLED_LABEL, MQTT_Enabled);
169
  server.addOption(LED_LABEL, ledPin);
162
  server.addOption(MQTT_SERVER_LABEL, MQTT_Server);
170
  server.addOption(LONG_LABEL, longVar);
163
  server.addOption(MQTT_PORT_LABEL, MQTT_Port);
171
  server.addOption(FLOAT_LABEL, floatVar, 1.0, 100.0, 0.01);
164
  server.addOption(MQTT_USER_LABEL, MQTT_User);
172
  server.addOption(STRING_LABEL, stringVar);
165
  server.addOption(MQTT_PASSWORD_LABEL, MQTT_Password);
173
  server.addDropdownList(DROPDOWN_LABEL, dropdownList, LIST_SIZE);
166
  server.addOption(MQTT_PREFIX_LABEL, MQTT_Prefix);
-
 
167
  server.addOptionBox(const char *title);
174
 
168
 
175
  server.addHTML(save_btn_htm, "buttons", /*overwrite*/ false);
169
  server.addHTML(save_btn_htm, "buttons", /*overwrite*/ false);
176
  server.addJavascript(button_script, "js", /*overwrite*/ false);
170
  server.addJavascript(button_script, "js", /*overwrite*/ false);
177
 
171
 
178
  // Enable ACE FS file web editor and add FS info callback function
172
  // Enable ACE FS file web editor and add FS info callback function