Snorktracker
 All Data Structures Files Functions Variables Macros Pages
Public Member Functions | Static Public Member Functions | Data Fields | Static Public Attributes | Static Protected Member Functions
MyWebServer Class Reference

#include <WebServer.h>

Public Member Functions

 MyWebServer (MyOptions &options, MyData &data)
 
bool begin ()
 
void handleClient ()
 

Static Public Member Functions

static void handleRoot ()
 
static void loadMain ()
 
static void handleLoadMainInfo ()
 
static void loadUpdate ()
 
static void loadSettings ()
 
static void handleLoadSettingsInfo ()
 
static void handleSaveSettings ()
 
static void handleLoadInfoInfo ()
 
static void loadConsole ()
 
static void handleLoadConsoleInfo ()
 
static void loadRestart ()
 
static void handleLoadRestartInfo ()
 
static void handleNotFound ()
 
static void handleWebRequests ()
 

Data Fields

bool isWebServerActive
 Is the webserver currently active.
 

Static Public Attributes

static MyESPWebServer server
 Webserver helper class.
 
static IPAddress ip
 Soft AP ip Address.
 
static DNSServer dnsServer
 Dns server.
 
static MyOptionsmyOptions = NULL
 Reference to the options.
 
static MyDatamyData = NULL
 Reference to the data.
 

Static Protected Member Functions

static bool loadFromSpiffs (String path)
 
static void AddTableBegin (String &info)
 
static void AddTableTr (String &info)
 
static void AddTableTr (String &info, String name, String value)
 
static void AddTableEnd (String &info)
 
static bool GetOption (String id, String &option)
 
static bool GetOption (String id, long &option)
 
static bool GetOption (String id, double &option)
 
static bool GetOption (String id, bool &option)
 
static void AddBr (String &info)
 
static void AddOption (String &info, String id, String name, bool value, bool addBr=true)
 
static void AddOption (String &info, String id, String name, String value, bool addBr=true, bool isPassword=false)
 
static void AddIntervalInfo (String &info)
 

Detailed Description

My Webserver interface. Works together with .html, .css and .js files from the SPIFFS. Works mostly with static functions because of the server callback functions.

Definition at line 47 of file WebServer.h.

Constructor & Destructor Documentation

MyWebServer::MyWebServer ( MyOptions options,
MyData data 
)

Constructor/Destructor

Definition at line 108 of file WebServer.h.

References myData, and myOptions.

109  : isWebServerActive(false)
110 {
111  myOptions = &options;
112  myData = &data;
113 }
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
bool isWebServerActive
Is the webserver currently active.
Definition: WebServer.h:88

Member Function Documentation

void MyWebServer::AddBr ( String &  info)
staticprotected

Add a HTML br element.

Definition at line 276 of file WebServer.h.

Referenced by handleLoadSettingsInfo().

277 {
278  info += F("<br />");
279 }
void MyWebServer::AddIntervalInfo ( String &  info)
staticprotected

Add the format information of the intervall in 'dd hh:mm:ss'

Definition at line 317 of file WebServer.h.

References TextToXml().

Referenced by handleLoadSettingsInfo().

318 {
319  info += (String) F("<p>") + TextToXml(F("Interval in '[days] hours:minutes:seconds' or just 'seconds'")) + F("</p>");
320  info += F("<br />");
321 }
String TextToXml(String data)
Definition: Utils.h:156
void MyWebServer::AddOption ( String &  info,
String  id,
String  name,
bool  value,
bool  addBr = true 
)
staticprotected

Add one bool input option field to the HTML source.

Definition at line 300 of file WebServer.h.

References TextToXml().

Referenced by handleLoadSettingsInfo().

301 {
302  info += F("<input style='width:auto;' id='");
303  info += id;
304  info += F("' name='");
305  info += id;
306  info += F("' type='checkbox' ");
307  info += value ? F(" checked") : F("");
308  info += F("><b>");
309  info += TextToXml(name);
310  info += F("</b>");
311  if (addBr) {
312  info += F("<br />");
313  }
314 }
String TextToXml(String data)
Definition: Utils.h:156
void MyWebServer::AddOption ( String &  info,
String  id,
String  name,
String  value,
bool  addBr = true,
bool  isPassword = false 
)
staticprotected

Add one string input option field to the HTML source.

Definition at line 282 of file WebServer.h.

References TextToXml().

283 {
284  info += (String) F("<b>") + TextToXml(name) + F("</b>");
285  info += (String) F("<input id='") + id + F("' name='") + id + F("' ");
286  /*
287  * Autocomplete overwrites our password if the type is password :(
288  * So we show it actually in clear text.
289  if (isPassword) {
290  info += " type='password' autocomplete='new-password' ";
291  }
292  */
293  info += (String) F("value='") + TextToXml(value) + F("'>");
294  if (addBr) {
295  info += F("<br />");
296  }
297 }
String TextToXml(String data)
Definition: Utils.h:156
void MyWebServer::AddTableBegin ( String &  info)
staticprotected

Helper function to start a HTML table.

Definition at line 193 of file WebServer.h.

Referenced by handleLoadInfoInfo(), and handleLoadMainInfo().

194 {
195  info += F("<table style='width:100%'>");
196 }
void MyWebServer::AddTableEnd ( String &  info)
staticprotected

Helper function to add one HTML table end element.

Definition at line 216 of file WebServer.h.

Referenced by handleLoadInfoInfo(), and handleLoadMainInfo().

217 {
218  info += F("</table>");
219 }
void MyWebServer::AddTableTr ( String &  info)
staticprotected

Helper function to write one HTML row with no data.

Definition at line 199 of file WebServer.h.

Referenced by handleLoadInfoInfo(), and handleLoadMainInfo().

200 {
201  info += F("<tr><th></th><td>&nbsp;</td></tr>");
202 }
void MyWebServer::AddTableTr ( String &  info,
String  name,
String  value 
)
staticprotected

Helper function to add one HTML table row line with data.

Definition at line 205 of file WebServer.h.

References TextToXml().

206 {
207  if (value != "") {
208  info += F("<tr>");
209  info += (String) F("<th>") + TextToXml(name) + F("</th>");
210  info += (String) F("<td>") + TextToXml(value) + F("</td>");
211  info += F("</tr>");
212  }
213 }
String TextToXml(String data)
Definition: Utils.h:156
bool MyWebServer::begin ( )

Starts the Webserver in station and/or ap mode and sets all the callback functions for the specific urls. If you use rtc yourself you have to switch off the automatic Wifi configuration with WiFi.persistent(false) (because it uses also the RTC memory) otherwise the WIFI won't start after a Deep Sleep.

Definition at line 124 of file WebServer.h.

References MyOptions::connectWifiAP, dnsServer, handleLoadConsoleInfo(), handleLoadInfoInfo(), handleLoadMainInfo(), handleLoadRestartInfo(), handleLoadSettingsInfo(), handleRoot(), handleSaveSettings(), handleWebRequests(), ip, isWebServerActive, loadConsole(), loadMain(), loadRestart(), loadSettings(), loadUpdate(), myData, MyDbg(), MyDelay(), myOptions, server, SOFT_AP_NAME, SOFT_AP_PW, MyData::softAPIP, MyData::softAPmacAddress, MyData::stationIP, MyOptions::wifiAP, WifiGetRssiAsQuality(), and MyOptions::wifiPassword.

Referenced by setup().

125 {
126  if (!myOptions || !myData) {
127  return false;
128  }
129 
130  MyDbg(F("MyWebServer::begin"));
131  WiFi.persistent(false);
132  WiFi.mode(WIFI_AP_STA);
133  WiFi.softAP(SOFT_AP_NAME, SOFT_AP_PW);
134  WiFi.softAPConfig(ip, ip, IPAddress(255, 255, 255, 0));
135  dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
136  dnsServer.start(53, F("*"), ip);
137  myData->softAPIP = WiFi.softAPIP().toString();
138  myData->softAPmacAddress = WiFi.softAPmacAddress();
139  MyDbg((String) F("SoftAPIP address: ") + myData->softAPIP, true);
140  MyDbg((String) F("SoftAPIP mac address: ") + myData->softAPmacAddress, true);
141 
142  if (myOptions->connectWifiAP) {
143  WiFi.begin(myOptions->wifiAP.c_str(), myOptions->wifiPassword.c_str());
144  for (int i = 0; i < 30 && WiFi.status() != WL_CONNECTED; i++) { // 30 Sec versuchen
145  MyDbg(F("."), true, false);
146  MyDelay(1000);
147  }
148  }
149  if (WiFi.status() == WL_CONNECTED) {
150  myData->stationIP = WiFi.localIP().toString();
151  MyDbg((String) F("Connected to ") + myOptions->wifiAP, true);
152  MyDbg((String) F("Station IP address: ") + myData->stationIP, true);
153  MyDbg((String) F("AP1 SSID (RSSI): ") + String(myOptions->wifiAP + F(" (") + WifiGetRssiAsQuality(WiFi.RSSI()) + F("%)")));
154  } else { // switch to AP Mode only
155  if (myOptions->connectWifiAP) {
156  MyDbg((String) F("No connection to ") + myOptions->wifiAP, true);
157  }
158  WiFi.disconnect();
159  WiFi.mode(WIFI_AP);
160  }
161 
162  server.on(F("/"), handleRoot);
163  server.on(F("/Main.html"), loadMain);
164  server.on(F("/MainInfo"), handleLoadMainInfo);
165  server.on(F("/Update.html"), loadUpdate);
166  server.on(F("/Settings.html"), loadSettings);
167  server.on(F("/SettingsInfo"), handleLoadSettingsInfo);
168  server.on(F("/SaveSettings"), handleSaveSettings);
169  server.on(F("/InfoInfo"), handleLoadInfoInfo);
170  server.on(F("/Console.html"), loadConsole);
171  server.on(F("/ConsoleInfo"), handleLoadConsoleInfo);
172  server.on(F("/Restart.html"), loadRestart);
173  server.on(F("/RestartInfo"), handleLoadRestartInfo);
174  server.onNotFound(handleWebRequests);
175 
176  server.begin();
177  MyDbg(F("Server listening"), true);
178 
179  isWebServerActive = true;
180  return true;
181 }
static DNSServer dnsServer
Dns server.
Definition: WebServer.h:52
static void handleLoadRestartInfo()
Definition: WebServer.h:768
static void handleLoadConsoleInfo()
Definition: WebServer.h:719
bool connectWifiAP
Should we connect to wifi.
Definition: Options.h:36
static void loadSettings()
Definition: WebServer.h:469
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
static void handleLoadInfoInfo()
Definition: WebServer.h:633
String wifiAP
WiFi AP name.
Definition: Options.h:37
static void handleRoot()
Definition: WebServer.h:358
static void handleLoadMainInfo()
Definition: WebServer.h:374
static void loadMain()
Definition: WebServer.h:365
void MyDbg(String info, bool fromWebServer=false, bool newline=true)
Definition: Utils.h:94
String softAPIP
registered ip of the access point
Definition: Data.h:79
#define SOFT_AP_NAME
Soft access point name.
Definition: Config.h:26
static void loadUpdate()
Definition: WebServer.h:451
String WifiGetRssiAsQuality(int rssi)
Definition: Utils.h:119
void MyDelay(long millisDelay)
Definition: Utils.h:104
static void loadRestart()
Definition: WebServer.h:755
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
String wifiPassword
WiFi AP password.
Definition: Options.h:38
bool isWebServerActive
Is the webserver currently active.
Definition: WebServer.h:88
static void handleLoadSettingsInfo()
Definition: WebServer.h:478
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
static IPAddress ip
Soft AP ip Address.
Definition: WebServer.h:51
static void handleWebRequests()
Definition: WebServer.h:803
String stationIP
registered station ip
Definition: Data.h:81
#define SOFT_AP_PW
Soft access point password.
Definition: Config.h:27
String softAPmacAddress
module mac address
Definition: Data.h:80
static void handleSaveSettings()
Definition: WebServer.h:583
static void loadConsole()
Definition: WebServer.h:707
bool MyWebServer::GetOption ( String  id,
String &  option 
)
staticprotected

Reads one string option from the url args.

Definition at line 222 of file WebServer.h.

References server.

Referenced by handleSaveSettings().

223 {
224  if (server.hasArg(id)) {
225  option = server.arg(id);
226  return true;
227  }
228  return false;
229 }
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
bool MyWebServer::GetOption ( String  id,
long &  option 
)
staticprotected

Reads one long option from the URL args.

Definition at line 232 of file WebServer.h.

References scanInterval(), and server.

233 {
234  bool ret = false;
235  String opt = server.arg(id);
236 
237  if (opt != "") {
238  if (opt.indexOf(F(":")) != -1) {
239  ret = scanInterval(opt, option);
240  } else {
241  option = atoi(opt.c_str());
242  ret = true;
243  }
244  }
245  return ret;
246 }
bool scanInterval(String interval, long &secs)
Definition: Utils.h:210
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
bool MyWebServer::GetOption ( String  id,
double &  option 
)
staticprotected

Reads one double option from the URL args.

Definition at line 249 of file WebServer.h.

References server.

250 {
251  String opt = server.arg(id);
252 
253  if (opt != "") {
254  option = atof(opt.c_str());
255  return true;
256  }
257  return false;
258 }
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
bool MyWebServer::GetOption ( String  id,
bool &  option 
)
staticprotected

Reads one bool option from the URL args.

Definition at line 261 of file WebServer.h.

References server.

262 {
263  String opt = server.arg(id);
264 
265  option = false;
266  if (opt != "") {
267  if (opt == F("on")) {
268  option = true;
269  }
270  return true;
271  }
272  return false;
273 }
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
void MyWebServer::handleClient ( )

Handle the http requests.

Definition at line 184 of file WebServer.h.

References dnsServer, isWebServerActive, and server.

Referenced by loop(), myDebugInfo(), and myDelayLoop().

185 {
186  if (isWebServerActive) {
187  server.handleClient();
188  dnsServer.processNextRequest();
189  }
190 }
static DNSServer dnsServer
Dns server.
Definition: WebServer.h:52
bool isWebServerActive
Is the webserver currently active.
Definition: WebServer.h:88
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
void MyWebServer::handleLoadConsoleInfo ( )
static

Handle the Console ajax calls to get AT commands and show the result of the calls or debug informations.

Definition at line 719 of file WebServer.h.

References StringList::addTail(), MyData::consoleCmds, StringList::count(), StringList::getAt(), MyData::logInfos, myData, MyDbg(), myOptions, StringList::rolledOut(), server, and TextToUrl().

Referenced by begin().

720 {
721  if (!myOptions || !myData) {
722  return;
723  }
724 
725  String sendData;
726  String cmd = server.arg(F("c1"));
727  String startIdx = server.arg(F("c2"));
728 
729  if (server.hasArg(F("c1"))) {
730  MyDbg(cmd, true);
731  myData->consoleCmds.addTail(cmd);
732  }
733 
734  int indexFrom = atoi(startIdx.c_str()) - myData->logInfos.rolledOut();
735 
736  sendData = (String)
737  F("<r>"
738  "<i>") + String(myData->logInfos.count() + myData->logInfos.rolledOut()) + F("</i>"
739  "<j>1</j>"
740  "<l>");
741  for (int i = indexFrom; i < myData->logInfos.count(); i++) {
742  if (i >= 0 && i < myData->logInfos.count()) {
743  sendData += TextToUrl(myData->logInfos.getAt(i));
744  sendData += '\n';
745  }
746  }
747  sendData += (String)
748  F("</l>"
749  "</r>");
750 
751  server.send(200, F("text/xml"), sendData.c_str());
752 }
int rolledOut()
Definition: StringList.h:78
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
StringList consoleCmds
open commands to send to the sim808 module
Definition: Data.h:97
StringList logInfos
received sim808 answers or other logs
Definition: Data.h:98
String TextToUrl(String data)
Definition: Utils.h:137
void MyDbg(String info, bool fromWebServer=false, bool newline=true)
Definition: Utils.h:94
int count()
Definition: StringList.h:72
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
String getAt(int idx)
Definition: StringList.h:92
void addTail(String newInfo)
Definition: StringList.h:112
void MyWebServer::handleLoadInfoInfo ( )
static

Load the detail info part via ajax call.

Definition at line 633 of file WebServer.h.

References AddTableBegin(), AddTableEnd(), AddTableTr(), MyGps::altitudeString(), MyData::batteryLevel, MyData::batteryVolt, MyData::cop, MyGps::courseString(), MyGps::date, MyDate::dateString(), MyData::RtcData::deepSleepTimeSec, MyGps::fixStatus, formatInterval(), MyData::getActiveTimeSec(), MyData::getLowPowerPowerConsumption(), MyData::getPowerConsumption(), MyData::getPowerOnTimeSec(), MyData::imei, MyData::isMoving, MyData::isOtaActive, MyGps::kmphString(), MyData::RtcData::lastGps, MyGps::latitudeString(), MyGps::longitudeString(), MyData::modemInfo, MyData::modemIP, MyData::movingDistance, myData, myOptions, MyData::rtcData, MyGps::satellitesString(), server, MyData::signalQuality, MyData::softAPIP, MyData::softAPmacAddress, MyData::stationIP, MyData::status, MyGps::time, MyTime::timeString(), MyOptions::wifiAP, and WifiGetRssiAsQuality().

Referenced by begin().

634 {
635  if (!myOptions || !myData) {
636  return;
637  }
638 
639  String info;
640  String ssidRssi = (String) myOptions->wifiAP + F(" (") + WifiGetRssiAsQuality(WiFi.RSSI()) + F("%)");
641 
642  AddTableBegin(info);
643  if (myData->status != "") {
644  AddTableTr(info, F("Status"), myData->status);
645  AddTableTr(info);
646  }
647  if (myData->isOtaActive) {
648  AddTableTr(info, F("OTA"), F("Active"));
649  AddTableTr(info);
650  }
651  if (ssidRssi != "" || myData->softAPIP || myData->softAPmacAddress != "" || myData->stationIP != "") {
652  AddTableTr(info, F("AP1 SSID (RSSI)"), ssidRssi);
653  AddTableTr(info, F("AP IP"), myData->softAPIP);
654  AddTableTr(info, F("Locale IP"), myData->stationIP);
655  AddTableTr(info, F("MAC Address"), myData->softAPmacAddress);
656  AddTableTr(info);
657  }
658 #ifdef SIM808_CONNECTED
659  if (myData->modemInfo != "" || myData->modemIP != "" || myData->imei != "" || myData->cop != "" ||
660  myData->signalQuality != "" || myData->batteryLevel != "" || myData->batteryVolt != "") {
661  AddTableTr(info, F("Modem Info"), myData->modemInfo);
662  AddTableTr(info, F("Modem IP"), myData->modemIP);
663  AddTableTr(info, F("IMEI"), myData->imei);
664  AddTableTr(info, F("COP"), myData->cop);
665  AddTableTr(info, F("Signal Quality"), myData->signalQuality);
666  AddTableTr(info, F("Battery Level"), myData->batteryLevel);
667  AddTableTr(info, F("Battery Volt"), myData->batteryVolt);
668  AddTableTr(info);
669  }
671  AddTableTr(info, F("Longitude"), myData->rtcData.lastGps.longitudeString());
672  AddTableTr(info, F("Latitude"), myData->rtcData.lastGps.latitudeString());
673  AddTableTr(info, F("Altitude"), myData->rtcData.lastGps.altitudeString());
674  AddTableTr(info, F("Km/h"), myData->rtcData.lastGps.kmphString());
675  AddTableTr(info, F("Satellite"), myData->rtcData.lastGps.satellitesString());
676  AddTableTr(info, F("Course"), myData->rtcData.lastGps.courseString());
677  AddTableTr(info, F("GPS Date"), myData->rtcData.lastGps.date.dateString());
678  AddTableTr(info, F("GPS Time"), myData->rtcData.lastGps.time.timeString());
679  AddTableTr(info);
680  }
681  if (myData->isMoving || myData->movingDistance != 0.0) {
682  AddTableTr(info, F("Moving"), myData->isMoving ? F("Yes") : F("No"));
683  AddTableTr(info, F("Distance (m)"), String(myData->movingDistance, 2));
684  AddTableTr(info);
685  }
686  AddTableTr(info, F("Active Time"), formatInterval(myData->getActiveTimeSec()));
687  AddTableTr(info, F("PowerUpTime"), formatInterval(myData->getPowerOnTimeSec()));
688  AddTableTr(info, F("DeepSleepTime"), formatInterval(myData->rtcData.deepSleepTimeSec));
689  AddTableTr(info, F("mAh"), String(myData->getPowerConsumption(), 2));
690  AddTableTr(info, F("Low power mAh"), String(myData->getLowPowerPowerConsumption(), 2));
691  AddTableTr(info);
692 #endif
693  AddTableTr(info, F("ESP Chip ID"), String(ESP.getChipId()));
694  AddTableTr(info, F("Flash Chip ID"), String(ESP.getFlashChipId()));
695  AddTableTr(info, F("Real Flash Memory"), String(ESP.getFlashChipRealSize()) + F(" Byte"));
696  AddTableTr(info, F("Total Flash Memory"), String(ESP.getFlashChipSize()) + F(" Byte"));
697  AddTableTr(info, F("Used Flash Memory"), String(ESP.getSketchSize()) + F(" Byte"));
698  AddTableTr(info, F("Free Sketch Memory"), String(ESP.getFreeSketchSpace()) + F(" Byte"));
699  AddTableTr(info, F("Free Heap Memory"), String(ESP.getFreeHeap()) + F(" Byte"));
700 
701  AddTableEnd(info);
702 
703  server.send(200, F("text/html"), info);
704 }
String formatInterval(long secs)
Definition: Utils.h:191
static void AddTableBegin(String &info)
Definition: WebServer.h:193
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
String status
Status information.
Definition: Data.h:63
class MyData::RtcData rtcData
Data to store in the RTC memory.
double getLowPowerPowerConsumption()
Definition: Data.h:241
String wifiAP
WiFi AP name.
Definition: Options.h:37
String softAPIP
registered ip of the access point
Definition: Data.h:79
String imei
IMEI of the sim card.
Definition: Data.h:85
MyGps lastGps
Last known gps location without timeout.
Definition: Data.h:35
String altitudeString()
Definition: Gps.h:552
double getPowerConsumption()
Definition: Data.h:231
String WifiGetRssiAsQuality(int rssi)
Definition: Utils.h:119
String satellitesString()
Definition: Gps.h:564
static void AddTableTr(String &info)
Definition: WebServer.h:199
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
String dateString()
Definition: Gps.h:355
String signalQuality
Quality of the signal.
Definition: Data.h:87
String courseString()
Definition: Gps.h:570
String longitudeString()
Definition: Gps.h:540
String kmphString()
Definition: Gps.h:558
String batteryVolt
Battery volt of the sim808 module.
Definition: Data.h:89
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
String cop
Operator selection.
Definition: Data.h:86
long getPowerOnTimeSec()
Definition: Data.h:209
String stationIP
registered station ip
Definition: Data.h:81
bool isMoving
Is moving recognized.
Definition: Data.h:94
String batteryLevel
Battery level of the sim808 module.
Definition: Data.h:88
MyDate date
The received gps utc date.
Definition: Gps.h:134
static void AddTableEnd(String &info)
Definition: WebServer.h:216
String modemInfo
Information from SIM808.
Definition: Data.h:83
String softAPmacAddress
module mac address
Definition: Data.h:80
String latitudeString()
Definition: Gps.h:546
String modemIP
registered modem ip
Definition: Data.h:84
long deepSleepTimeSec
Time in deep sleep mode.
Definition: Data.h:39
MyTime time
The received gps utc time.
Definition: Gps.h:135
bool fixStatus
Are the gps is valid received?
Definition: Gps.h:133
bool isOtaActive
Is OverTheAir update active?
Definition: Data.h:65
String timeString()
Definition: Gps.h:385
long getActiveTimeSec()
Definition: Data.h:193
double movingDistance
Minimum distance for moving flag.
Definition: Data.h:95
void MyWebServer::handleLoadMainInfo ( )
static

Handle the ajax call of the Main.html detail information.

Definition at line 374 of file WebServer.h.

References AddTableBegin(), AddTableEnd(), AddTableTr(), MyGps::altitudeString(), MyData::RtcData::deepSleepTimeSec, MyGps::fixStatus, formatInterval(), MyData::getActiveTimeSec(), MyData::getLowPowerPowerConsumption(), MyData::getPowerConsumption(), MyData::getPowerOnTimeSec(), MyData::humidity, MyOptions::isMqttEnabled, MyGps::kmphString(), MyData::RtcData::lastGps, MyGps::latitudeString(), MyGps::longitudeString(), MyData::modemInfo, MyData::RtcData::mqttLastSentTime, MyData::RtcData::mqttSendCount, myData, myOptions, MyOptions::powerOn, MyData::pressure, MyData::rtcData, MyGps::satellitesString(), MyOptions::save(), MyData::secondsToDeepSleep, server, SOFT_AP_NAME, MyData::status, MyData::temperature, MyTime::timeString(), MyData::voltage, MyOptions::wifiAP, and WifiGetRssiAsQuality().

Referenced by begin().

375 {
376  if (!myOptions || !myData) {
377  return;
378  }
379 
380  String info;
381  String onOff = server.arg(F("o"));
382 
383  if (onOff == F("1")) {
385  myOptions->save();
386  }
387 
388  AddTableBegin(info);
389  if (myData->status != "") {
390  AddTableTr(info, F("Status"), myData->status);
391  }
392 #ifdef SIM808_CONNECTED
393  AddTableTr(info, F("Modem Info"), myData->modemInfo);
394 #else
395  if (WiFi.status() != WL_CONNECTED) {
396  AddTableTr(info, F("AP SSID"), String(SOFT_AP_NAME));
397  } else {
398  AddTableTr(info, F("AP SSID (RSSI)"), String(myOptions->wifiAP + F(" (") + WifiGetRssiAsQuality(WiFi.RSSI()) + F("%)")));
399  }
400  AddTableTr(info);
401 #endif
402 
403  AddTableTr(info, F("Battery"), String(myData->voltage, 2) + F(" V"));
404  AddTableTr(info, F("Temperature"), String(myData->temperature, 1) + F(" °C"));
405  AddTableTr(info, F("Humidity"), String(myData->humidity, 1) + F(" %"));
406  AddTableTr(info, F("Pressure"), String(myData->pressure, 1) + F(" hPa"));
407 #ifndef SIM808_CONNECTED
408  AddTableTr(info, F("Active Time"), formatInterval(myData->getActiveTimeSec()));
409  AddTableTr(info, F("PowerUpTime"), formatInterval(myData->getPowerOnTimeSec()));
410  AddTableTr(info, F("DeepSleepTime"), formatInterval(myData->rtcData.deepSleepTimeSec));
411  AddTableTr(info, F("mAh"), String(myData->getPowerConsumption(), 2));
412  AddTableTr(info, F("Low power mAh"), String(myData->getLowPowerPowerConsumption(), 2));
413 #endif
415  AddTableTr(info, F("Longitude"), myData->rtcData.lastGps.longitudeString());
416  AddTableTr(info, F("Latitude"), myData->rtcData.lastGps.latitudeString());
417  AddTableTr(info, F("Altitude"), myData->rtcData.lastGps.altitudeString() + F(" m"));
418  AddTableTr(info, F("Speed"), myData->rtcData.lastGps.kmphString() + F(" kmph"));
419  AddTableTr(info, F("Satellites"), myData->rtcData.lastGps.satellitesString());
420  }
421 
422  if (myOptions->isMqttEnabled) {
423  MyTime mqttLastSentTime(myData->rtcData.mqttLastSentTime);
424 
425  AddTableTr(info, F("MQTT sent"), String(myData->rtcData.mqttSendCount));
426 #ifdef SIM808_CONNECTED
427  AddTableTr(info, F("MQTT last"), mqttLastSentTime.timeString());
428 #endif
429  }
430 
431  if (myData->secondsToDeepSleep >= 0) {
432  AddTableTr(info, F("Power saving in "), String(myData->secondsToDeepSleep) + F(" Seconds"));
433  }
434  AddTableEnd(info);
435 
436  info += (String)
437  F("<table style='width:100%'>"
438  "<tr>"
439  "<td style='width:100%'>"
440  "<div style='text-align:center;font-weight:bold;font-size:62px'>") +
441  + (myOptions->powerOn ? F("ON") : F("OFF")) +
442  F("</div>"
443  "</td>"
444  "</tr>"
445  "</table>");
446 
447  server.send(200, F("text/html"), info);
448 }
String formatInterval(long secs)
Definition: Utils.h:191
static void AddTableBegin(String &info)
Definition: WebServer.h:193
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
String status
Status information.
Definition: Data.h:63
class MyData::RtcData rtcData
Data to store in the RTC memory.
double getLowPowerPowerConsumption()
Definition: Data.h:241
String wifiAP
WiFi AP name.
Definition: Options.h:37
#define SOFT_AP_NAME
Soft access point name.
Definition: Config.h:26
long mqttLastSentTime
Last mqtt sent timestamp.
Definition: Data.h:51
bool powerOn
Is the GSM power from the DC-DC modul switched on?
Definition: Options.h:41
double temperature
Current BME280 temperature.
Definition: Data.h:75
MyGps lastGps
Last known gps location without timeout.
Definition: Data.h:35
String altitudeString()
Definition: Gps.h:552
double getPowerConsumption()
Definition: Data.h:231
String WifiGetRssiAsQuality(int rssi)
Definition: Utils.h:119
String satellitesString()
Definition: Gps.h:564
static void AddTableTr(String &info)
Definition: WebServer.h:199
double pressure
Current BME280 pressure.
Definition: Data.h:77
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
String longitudeString()
Definition: Gps.h:540
String kmphString()
Definition: Gps.h:558
long mqttSendCount
How many time the mqtt data successfully sent.
Definition: Data.h:50
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
long getPowerOnTimeSec()
Definition: Data.h:209
double voltage
Current supply voltage.
Definition: Data.h:74
static void AddTableEnd(String &info)
Definition: WebServer.h:216
String modemInfo
Information from SIM808.
Definition: Data.h:83
bool save()
Definition: Options.h:209
String latitudeString()
Definition: Gps.h:546
long secondsToDeepSleep
Time until next deepsleep. -1 = disabled.
Definition: Data.h:71
bool isMqttEnabled
Should the system connect to a MQTT server?
Definition: Options.h:54
Definition: Gps.h:97
long deepSleepTimeSec
Time in deep sleep mode.
Definition: Data.h:39
bool fixStatus
Are the gps is valid received?
Definition: Gps.h:133
double humidity
Current BME280 humidity.
Definition: Data.h:76
long getActiveTimeSec()
Definition: Data.h:193
void MyWebServer::handleLoadRestartInfo ( )
static

Handle the restart ajax call of the restart reason.

Definition at line 768 of file WebServer.h.

References myData, myOptions, MyData::restartInfo, and server.

Referenced by begin().

769 {
770  if (!myOptions || !myData) {
771  return;
772  }
773 
774  server.send(200, F("text/html"), myData->restartInfo);
775  myData->restartInfo = "";
776 }
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
String restartInfo
Information on restart.
Definition: Data.h:64
void MyWebServer::handleLoadSettingsInfo ( )
static

Sends the ajax settings detail information to the client.

Definition at line 478 of file WebServer.h.

References MyOptions::activeTimeSec, AddBr(), AddIntervalInfo(), AddOption(), MyOptions::bme280CheckIntervalSec, MyOptions::connectWifiAP, MyOptions::deepSleepTimeSec, formatInterval(), MyOptions::gprsAP, MyOptions::gprsPassword, MyOptions::gprsUser, MyOptions::gpsCheckIntervalSec, MyOptions::gpsTimeoutSec, MyOptions::isDebugActive, MyOptions::isDeepSleepEnabled, MyOptions::isGpsEnabled, MyOptions::isMqttEnabled, MyOptions::isSmsEnabled, MyOptions::minMovingDistance, MyOptions::mqttId, MyOptions::mqttName, MyOptions::mqttPassword, MyOptions::mqttPort, MyOptions::mqttSendOnMoveEverySec, MyOptions::mqttSendOnNonMoveEverySec, MyOptions::mqttServer, MyOptions::mqttUser, myData, MyDbg(), myOptions, MyOptions::phoneNumber, MyOptions::powerCheckIntervalSec, MyOptions::powerSaveModeVoltage, server, MyOptions::smsCheckIntervalSec, MyOptions::wifiAP, and MyOptions::wifiPassword.

Referenced by begin().

479 {
480  if (!myOptions || !myData) {
481  return;
482  }
483 
484  String info;
485 
486  MyDbg(F("LoadSettings"), true);
487 
488  AddOption(info, F("isDebugActive"), F("Debug Active"), myOptions->isDebugActive);
489 
490  AddOption(info, F("bme280CheckIntervalSec"), F("Temperature check every (Interval)"), formatInterval(myOptions->bme280CheckIntervalSec));
491 
492 #ifdef SIM808_CONNECTED
493  AddOption(info, F("gprsAP"), F("GPRS AP"), myOptions->gprsAP);
494  AddOption(info, F("gprsUser"), F("GPRS User"), myOptions->gprsUser);
495  AddOption(info, F("gprsPassword"), F("GPRS Password"), myOptions->gprsPassword);
496 #endif
497 
498  AddBr(info);
499  {
500  HtmlTag fieldset(info, F("fieldset"));
501  {
502  HtmlTag legend(info, F("legend"));
503 
504  AddOption(info, F("connectWifiAP"), F("WiFi connect"), myOptions->connectWifiAP, false);
505  }
506 
507  AddOption(info, F("wifiAP"), F("WiFi SSID"), myOptions->wifiAP, false);
508  AddOption(info, F("wifiPassword"), F("WiFi Password"), myOptions->wifiPassword, false, true);
509  }
510 
511 #ifdef SIM808_CONNECTED
512  AddBr(info);
513  {
514  HtmlTag fieldset(info, F("fieldset"));
515  {
516  HtmlTag legend(info, F("legend"));
517 
518  AddOption(info, F("isSmsEnabled"), F("SMS Enabled"), myOptions->isSmsEnabled, false);
519  }
520 
521  AddOption(info, F("smsCheckIntervalSec"), F("SMS check every (Interval)"), formatInterval(myOptions->smsCheckIntervalSec));
522  AddOption(info, F("phoneNumber"), F("Information send to"), myOptions->phoneNumber, false);
523  }
524  AddBr(info);
525  {
526  HtmlTag fieldset(info, F("fieldset"));
527  {
528  HtmlTag legend(info, F("legend"));
529 
530  AddOption(info, F("isGpsEnabled"), F("GPS Enabled"), myOptions->isGpsEnabled, false);
531  }
532  AddOption(info, F("gpsCheckIntervalSec"), F("GPS check every (Interval)"), formatInterval(myOptions->gpsCheckIntervalSec));
533  AddOption(info, F("gpsTimeoutSec"), F("GPS timeout"), formatInterval(myOptions->gpsTimeoutSec));
534  AddOption(info, F("minMovingDistance"), F("GPS is moving if more than (meter)"), String(myOptions->minMovingDistance), false);
535  }
536 #endif
537 
538  AddBr(info);
539  {
540  HtmlTag fieldset(info, F("fieldset"));
541  {
542  HtmlTag legend(info, F("legend"));
543 
544  AddOption(info, F("isMqttEnabled"), F("MQTT Active"), myOptions->isMqttEnabled, false);
545  }
546 
547  AddOption(info, F("mqttName"), F("MQTT Name"), myOptions->mqttName);
548  AddOption(info, F("mqttId"), F("MQTT Id"), myOptions->mqttId);
549 
550  AddOption(info, F("mqttServer"), F("MQTT Server"), myOptions->mqttServer);
551  AddOption(info, F("mqttPort"), F("MQTT Port"), String(myOptions->mqttPort));
552  AddOption(info, F("mqttUser"), F("MQTT User"), myOptions->mqttUser);
553  AddOption(info, F("mqttPassword"), F("MQTT Password"), myOptions->mqttPassword, true, true);
554 #ifdef SIM808_CONNECTED
555  AddOption(info, F("mqttSendOnMoveEverySec"), F("MQTT Send on moving every (Interval)"), formatInterval(myOptions->mqttSendOnMoveEverySec));
556  AddOption(info, F("mqttSendOnNonMoveEverySec"), F("MQTT Send on standing every (Interval)"), formatInterval(myOptions->mqttSendOnNonMoveEverySec), false);
557 #else
558  AddOption(info, F("mqttSendOnNonMoveEverySec"), F("MQTT Send every (Interval)"), formatInterval(myOptions->mqttSendOnNonMoveEverySec), false);
559 #endif
560  }
561 
562  AddBr(info);
563  {
564  HtmlTag fieldset(info, F("fieldset"));
565  {
566  HtmlTag legend(info, F("legend"));
567 
568  AddOption(info, F("isDeepSleepEnabled"), F("Power saving mode active"), myOptions->isDeepSleepEnabled, false);
569  }
570  AddOption(info, F("powerSaveModeVoltage"), F("Power saving mode below (Volt)"), String(myOptions->powerSaveModeVoltage, 2));
571  AddOption(info, F("powerCheckIntervalSec"), F("Check power every (Interval)"), formatInterval(myOptions->powerCheckIntervalSec));
572 
573  AddOption(info, F("activeTimeSec"), F("Active time (Interval)"), formatInterval(myOptions->activeTimeSec));
574  AddOption(info, F("deepSleepTimeSec"), F("DeepSleep time (Interval)"), formatInterval(myOptions->deepSleepTimeSec), false);
575  }
576 
577  AddIntervalInfo(info);
578 
579  server.send(200, F("text/html"), info);
580 }
String formatInterval(long secs)
Definition: Utils.h:191
long deepSleepTimeSec
Time to stay in deep sleep (without check interrupts)
Definition: Options.h:53
String phoneNumber
Pone number for sms answers.
Definition: Options.h:47
bool isGpsEnabled
Is the gps part of the sim808 active?
Definition: Options.h:43
double powerSaveModeVoltage
Minimum voltage to stay always alive.
Definition: Options.h:50
long smsCheckIntervalSec
SMS check intervall.
Definition: Options.h:48
bool connectWifiAP
Should we connect to wifi.
Definition: Options.h:36
String mqttUser
MQTT user.
Definition: Options.h:59
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
String wifiAP
WiFi AP name.
Definition: Options.h:37
long gpsCheckIntervalSec
Time interval to check the gps position.
Definition: Options.h:45
void MyDbg(String info, bool fromWebServer=false, bool newline=true)
Definition: Utils.h:94
String mqttId
MQTT ID.
Definition: Options.h:56
long gpsTimeoutSec
Timeout for waiting for gps position.
Definition: Options.h:44
String mqttPassword
MQTT password.
Definition: Options.h:60
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
long powerCheckIntervalSec
Time interval to check the power supply.
Definition: Options.h:51
static void AddBr(String &info)
Definition: WebServer.h:276
String wifiPassword
WiFi AP password.
Definition: Options.h:38
String gprsUser
GRPS access point User.
Definition: Options.h:34
String mqttServer
MQTT server url.
Definition: Options.h:57
static void AddIntervalInfo(String &info)
Definition: WebServer.h:317
bool isDebugActive
Is detailed debugging enabled?
Definition: Options.h:39
long mqttPort
MQTT server port.
Definition: Options.h:58
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
long activeTimeSec
Maximum alive time after deepsleep.
Definition: Options.h:52
long bme280CheckIntervalSec
Time interval to read the temp, hum and pressure.
Definition: Options.h:40
String gprsPassword
GRPS access point Password.
Definition: Options.h:35
bool isSmsEnabled
Is the sms check functionality active?
Definition: Options.h:42
String gprsAP
GRPS access point of the sim card supplier.
Definition: Options.h:33
String mqttName
MQTT server name.
Definition: Options.h:55
bool isMqttEnabled
Should the system connect to a MQTT server?
Definition: Options.h:54
static void AddOption(String &info, String id, String name, bool value, bool addBr=true)
Definition: WebServer.h:300
long mqttSendOnNonMoveEverySec
Send data interval to MQTT server on non moving.
Definition: Options.h:62
bool isDeepSleepEnabled
Should the system go into deepsleep if needed.
Definition: Options.h:49
long mqttSendOnMoveEverySec
Send data interval to MQTT server on moving.
Definition: Options.h:61
long minMovingDistance
Minimum distance to accept as moving or not.
Definition: Options.h:46
void MyWebServer::handleNotFound ( )
static

Handle if the url could not be found.

Definition at line 779 of file WebServer.h.

References myData, MyDbg(), myOptions, and server.

Referenced by handleWebRequests(), loadConsole(), loadMain(), loadRestart(), loadSettings(), and loadUpdate().

780 {
781  if (!myOptions || !myData) {
782  return;
783  }
784 
785  String message = F("File Not Found\n");
786 
787  message += F("URI: ");
788  message += server.uri();
789  message += F("\nMethod: ");
790  message += (server.method() == HTTP_GET) ? F("GET") : F("POST");
791  message += F("\nArguments: ");
792  message += server.args();
793  message += F("\n");
794  // Better no debuggin of browser args
795  // for (uint8_t i=0; i<server.args(); i++){
796  // message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
797  // }
798  server.send(404, F("text/plain"), message);
799  MyDbg(message, true);
800 }
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
void MyDbg(String info, bool fromWebServer=false, bool newline=true)
Definition: Utils.h:94
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
void MyWebServer::handleRoot ( )
static

Redirect a root call to the Main.html site.

Definition at line 358 of file WebServer.h.

References server.

Referenced by begin().

359 {
360  server.sendHeader(F("Location"), F("Main.html"), true);
361  server.send(302, F("text/plain"), "");
362 }
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
void MyWebServer::handleSaveSettings ( )
static

Reads all the options from the url and save them to the SPIFFS.

Definition at line 583 of file WebServer.h.

References MyOptions::activeTimeSec, MyData::awakeTimeOffsetSec, MyOptions::bme280CheckIntervalSec, MyOptions::connectWifiAP, MyOptions::deepSleepTimeSec, GetOption(), MyOptions::gprsAP, MyOptions::gprsPassword, MyOptions::gprsUser, MyOptions::gpsCheckIntervalSec, MyOptions::gpsTimeoutSec, MyOptions::isDebugActive, MyOptions::isDeepSleepEnabled, MyOptions::isGpsEnabled, MyOptions::isMqttEnabled, MyOptions::isSmsEnabled, loadMain(), loadRestart(), MyOptions::minMovingDistance, MyOptions::mqttId, MyOptions::mqttName, MyOptions::mqttPassword, MyOptions::mqttPort, MyOptions::mqttSendOnMoveEverySec, MyOptions::mqttSendOnNonMoveEverySec, MyOptions::mqttServer, MyOptions::mqttUser, myData, MyDbg(), myOptions, MyOptions::phoneNumber, MyOptions::powerCheckIntervalSec, MyOptions::powerSaveModeVoltage, MyData::restartInfo, MyOptions::save(), MyOptions::smsCheckIntervalSec, MyOptions::wifiAP, and MyOptions::wifiPassword.

Referenced by begin().

584 {
585  if (!myOptions || !myData) {
586  return;
587  }
588 
589  MyDbg(F("SaveSettings"), true);
590  GetOption(F("gprsAP"), myOptions->gprsAP);
591  GetOption(F("gprsUser"), myOptions->gprsUser);
592  GetOption(F("gprsPassword"), myOptions->gprsPassword);
593  GetOption(F("connectWifiAP"), myOptions->connectWifiAP);
594  GetOption(F("wifiAP"), myOptions->wifiAP);
595  GetOption(F("wifiPassword"), myOptions->wifiPassword);
596  GetOption(F("isDebugActive"), myOptions->isDebugActive);
597  GetOption(F("bme280CheckIntervalSec"), myOptions->bme280CheckIntervalSec);
598  GetOption(F("isSmsEnabled"), myOptions->isSmsEnabled);
599  GetOption(F("phoneNumber"), myOptions->phoneNumber);
600  GetOption(F("smsCheckIntervalSec"), myOptions->smsCheckIntervalSec);
601  GetOption(F("isGpsEnabled"), myOptions->isGpsEnabled);
602  GetOption(F("gpsTimeoutSec"), myOptions->gpsTimeoutSec);
603  GetOption(F("gpsCheckIntervalSec"), myOptions->gpsCheckIntervalSec);
604  GetOption(F("minMovingDistance"), myOptions->minMovingDistance);
605  GetOption(F("isDeepSleepEnabled"), myOptions->isDeepSleepEnabled);
606  GetOption(F("powerSaveModeVoltage"), myOptions->powerSaveModeVoltage);
607  GetOption(F("powerCheckIntervalSec"), myOptions->powerCheckIntervalSec);
608  GetOption(F("activeTimeSec"), myOptions->activeTimeSec);
609  GetOption(F("deepSleepTimeSec"), myOptions->deepSleepTimeSec);
610  GetOption(F("isMqttEnabled"), myOptions->isMqttEnabled);
611  GetOption(F("mqttName"), myOptions->mqttName);
612  GetOption(F("mqttId"), myOptions->mqttId);
613  GetOption(F("mqttServer"), myOptions->mqttServer);
614  GetOption(F("mqttPort"), myOptions->mqttPort);
615  GetOption(F("mqttUser"), myOptions->mqttUser);
616  GetOption(F("mqttPassword"), myOptions->mqttPassword);
617  GetOption(F("mqttSendOnMoveEverySec"), myOptions->mqttSendOnMoveEverySec);
618  GetOption(F("mqttSendOnNonMoveEverySec"), myOptions->mqttSendOnNonMoveEverySec);
619 
620  // Reset the rtc data if something has changed.
621  myData->awakeTimeOffsetSec = millis() / 1000;
622  myOptions->save();
623 
624  if (false /* reboot */) {
625  myData->restartInfo =
626  F("<b>Settings saved</b>");
627  loadRestart();
628  }
629  loadMain();
630 }
long deepSleepTimeSec
Time to stay in deep sleep (without check interrupts)
Definition: Options.h:53
String phoneNumber
Pone number for sms answers.
Definition: Options.h:47
bool isGpsEnabled
Is the gps part of the sim808 active?
Definition: Options.h:43
double powerSaveModeVoltage
Minimum voltage to stay always alive.
Definition: Options.h:50
long smsCheckIntervalSec
SMS check intervall.
Definition: Options.h:48
bool connectWifiAP
Should we connect to wifi.
Definition: Options.h:36
long awakeTimeOffsetSec
Awake time offset for SaveSettings.
Definition: Data.h:72
String mqttUser
MQTT user.
Definition: Options.h:59
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
String wifiAP
WiFi AP name.
Definition: Options.h:37
long gpsCheckIntervalSec
Time interval to check the gps position.
Definition: Options.h:45
static void loadMain()
Definition: WebServer.h:365
void MyDbg(String info, bool fromWebServer=false, bool newline=true)
Definition: Utils.h:94
String mqttId
MQTT ID.
Definition: Options.h:56
long gpsTimeoutSec
Timeout for waiting for gps position.
Definition: Options.h:44
String mqttPassword
MQTT password.
Definition: Options.h:60
static void loadRestart()
Definition: WebServer.h:755
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
long powerCheckIntervalSec
Time interval to check the power supply.
Definition: Options.h:51
String wifiPassword
WiFi AP password.
Definition: Options.h:38
String gprsUser
GRPS access point User.
Definition: Options.h:34
String mqttServer
MQTT server url.
Definition: Options.h:57
bool isDebugActive
Is detailed debugging enabled?
Definition: Options.h:39
long mqttPort
MQTT server port.
Definition: Options.h:58
static bool GetOption(String id, String &option)
Definition: WebServer.h:222
String restartInfo
Information on restart.
Definition: Data.h:64
long activeTimeSec
Maximum alive time after deepsleep.
Definition: Options.h:52
long bme280CheckIntervalSec
Time interval to read the temp, hum and pressure.
Definition: Options.h:40
String gprsPassword
GRPS access point Password.
Definition: Options.h:35
bool isSmsEnabled
Is the sms check functionality active?
Definition: Options.h:42
bool save()
Definition: Options.h:209
String gprsAP
GRPS access point of the sim card supplier.
Definition: Options.h:33
String mqttName
MQTT server name.
Definition: Options.h:55
bool isMqttEnabled
Should the system connect to a MQTT server?
Definition: Options.h:54
long mqttSendOnNonMoveEverySec
Send data interval to MQTT server on non moving.
Definition: Options.h:62
bool isDeepSleepEnabled
Should the system go into deepsleep if needed.
Definition: Options.h:49
long mqttSendOnMoveEverySec
Send data interval to MQTT server on moving.
Definition: Options.h:61
long minMovingDistance
Minimum distance to accept as moving or not.
Definition: Options.h:46
void MyWebServer::handleWebRequests ( )
static

Default for an unknown web request on not found.

Definition at line 803 of file WebServer.h.

References handleNotFound(), loadFromSpiffs(), and server.

Referenced by begin().

804 {
805  if (loadFromSpiffs(server.uri())) {
806  return;
807  }
808  handleNotFound();
809 }
static void handleNotFound()
Definition: WebServer.h:779
static bool loadFromSpiffs(String path)
Definition: WebServer.h:324
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
void MyWebServer::loadConsole ( )
static

Load the console page

Definition at line 707 of file WebServer.h.

References handleNotFound(), loadFromSpiffs(), MyData::logInfos, myData, StringList::removeAll(), and server.

Referenced by begin().

708 {
709  if (loadFromSpiffs(F("/Console.html"))) {
710  if (server.hasArg(F("clear"))) {
712  }
713  return;
714  }
715  handleNotFound();
716 }
static void handleNotFound()
Definition: WebServer.h:779
static bool loadFromSpiffs(String path)
Definition: WebServer.h:324
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
StringList logInfos
received sim808 answers or other logs
Definition: Data.h:98
void removeAll()
Definition: StringList.h:84
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
bool MyWebServer::loadFromSpiffs ( String  path)
staticprotected

Helper function to load a file from the SPIFFS.

Definition at line 324 of file WebServer.h.

References server.

Referenced by handleWebRequests(), loadConsole(), loadMain(), loadRestart(), loadSettings(), and loadUpdate().

325 {
326  bool ret = false;
327 
328  String dataType = F("text/plain");
329  if(path.endsWith("/")) path += F("index.htm");
330 
331  if(path.endsWith(F(".src"))) path = path.substring(0, path.lastIndexOf("."));
332  else if(path.endsWith(F(".html"))) dataType = F("text/html");
333  else if(path.endsWith(F(".htm"))) dataType = F("text/html");
334  else if(path.endsWith(F(".css"))) dataType = F("text/css");
335  else if(path.endsWith(F(".js"))) dataType = F("application/javascript");
336  else if(path.endsWith(F(".png"))) dataType = F("image/png");
337  else if(path.endsWith(F(".gif"))) dataType = F("image/gif");
338  else if(path.endsWith(F(".jpg"))) dataType = F("image/jpeg");
339  else if(path.endsWith(F(".ico"))) dataType = F("image/x-icon");
340  else if(path.endsWith(F(".xml"))) dataType = F("text/xml");
341  else if(path.endsWith(F(".pdf"))) dataType = F("application/pdf");
342  else if(path.endsWith(F(".zip"))) dataType = F("application/zip");
343 
344  File dataFile = SPIFFS.open(path.c_str(), "r");
345  if (dataFile) {
346  if (server.hasArg(F("download"))) {
347  dataType = F("application/octet-stream");
348  }
349  if (server.streamFile(dataFile, dataType) == dataFile.size()) {
350  ret = true;
351  }
352  dataFile.close();
353  }
354  return ret;
355 }
static MyESPWebServer server
Webserver helper class.
Definition: WebServer.h:50
void MyWebServer::loadMain ( )
static

Sends the Main.html to the client.

Definition at line 365 of file WebServer.h.

References handleNotFound(), and loadFromSpiffs().

Referenced by begin(), and handleSaveSettings().

366 {
367  if (loadFromSpiffs(F("/Main.html"))) {
368  return;
369  }
370  handleNotFound();
371 }
static void handleNotFound()
Definition: WebServer.h:779
static bool loadFromSpiffs(String path)
Definition: WebServer.h:324
void MyWebServer::loadRestart ( )
static

Load the restart page.

Definition at line 755 of file WebServer.h.

References handleNotFound(), loadFromSpiffs(), MyDbg(), and MyDelay().

Referenced by begin(), and handleSaveSettings().

756 {
757  if (loadFromSpiffs(F("/Restart.html"))) {
758  MyDbg(F("Load File /Restart.html"), true);
759  MyDelay(2000);
760  MyDbg(F("Restart"), true);
761  ESP.restart();
762  return;
763  }
764  handleNotFound();
765 }
static void handleNotFound()
Definition: WebServer.h:779
static bool loadFromSpiffs(String path)
Definition: WebServer.h:324
void MyDbg(String info, bool fromWebServer=false, bool newline=true)
Definition: Utils.h:94
void MyDelay(long millisDelay)
Definition: Utils.h:104
void MyWebServer::loadSettings ( )
static

Load the Settings page.

Definition at line 469 of file WebServer.h.

References handleNotFound(), and loadFromSpiffs().

Referenced by begin().

470 {
471  if (loadFromSpiffs(F("/Settings.html"))) {
472  return;
473  }
474  handleNotFound();
475 }
static void handleNotFound()
Definition: WebServer.h:779
static bool loadFromSpiffs(String path)
Definition: WebServer.h:324
void MyWebServer::loadUpdate ( )
static

Load the firmware update page after starting OTA.

Definition at line 451 of file WebServer.h.

References handleNotFound(), MyData::isOtaActive, loadFromSpiffs(), myData, myOptions, and SetupOTA().

Referenced by begin().

452 {
453  if (!myOptions || !myData) {
454  return;
455  }
456  if (!myData->isOtaActive) {
457  SetupOTA();
458  ArduinoOTA.begin();
459  myData->isOtaActive = true;
460  }
461 
462  if (loadFromSpiffs(F("/Update.html"))) {
463  return;
464  }
465  handleNotFound();
466 }
static void handleNotFound()
Definition: WebServer.h:779
static bool loadFromSpiffs(String path)
Definition: WebServer.h:324
static MyData * myData
Reference to the data.
Definition: WebServer.h:54
void SetupOTA()
Definition: Utils.h:264
static MyOptions * myOptions
Reference to the options.
Definition: WebServer.h:53
bool isOtaActive
Is OverTheAir update active?
Definition: Data.h:65

The documentation for this class was generated from the following file: