Minor fixes + changed wifi and drd libraries
This commit is contained in:
File diff suppressed because one or more lines are too long
@ -14,4 +14,4 @@
|
|||||||
<button type="button" class="btn btn-warning" id="wifi-reset-btn">Factory default settings</button>
|
<button type="button" class="btn btn-warning" id="wifi-reset-btn">Factory default settings</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
--><hr class="my-4"></div><script type="text/javascript">function getConfig(){var n="/api/device";$("#spinner").show(),$.getJSON(n,function(n){console.log(n),$("#app-ver").text(n["app-ver"]+" (html 0.2.1)"),$("#mdns").text(n.mdns),$("#id").text(n.id)}).fail(function(){showError("Unable to get data from the device.")}).always(function(){$("#spinner").hide()})}window.onload=getConfig</script><!-- START FOOTER --><div class="container-fluid themed-container bg-primary text-light">(C) Copyright 2021 Magnus Persson</div></body></html>
|
--><hr class="my-4"></div><script type="text/javascript">function getConfig(){var n="/api/device";$("#spinner").show(),$.getJSON(n,function(n){console.log(n),$("#app-ver").text(n["app-ver"]+" (html 0.2.2)"),$("#mdns").text(n.mdns),$("#id").text(n.id)}).fail(function(){showError("Unable to get data from the device.")}).always(function(){$("#spinner").hide()})}window.onload=getConfig</script><!-- START FOOTER --><div class="container-fluid themed-container bg-primary text-light">(C) Copyright 2021 Magnus Persson</div></body></html>
|
Binary file not shown.
BIN
bin/firmware.bin
BIN
bin/firmware.bin
Binary file not shown.
@ -1 +1 @@
|
|||||||
{ "project":"gravmon", "version":"0.2.1", "html": [ "index.min.htm", "device.min.htm", "config.min.htm", "about.min.htm" ] }
|
{ "project":"gravmon", "version":"0.2.2", "html": [ "index.min.htm", "device.min.htm", "config.min.htm", "about.min.htm" ] }
|
@ -138,19 +138,19 @@
|
|||||||
<form action="/api/config/push" method="post">
|
<form action="/api/config/push" method="post">
|
||||||
<input type="text" name="id" id="id2" hidden>
|
<input type="text" name="id" id="id2" hidden>
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="http-push" class="col-sm-4 col-form-label">Http 1:</label>
|
<label for="http-push" class="col-sm-4 col-form-label">Http URL 1:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="url" maxlength="90" class="form-control" name="http-push" id="http-push">
|
<input type="url" maxlength="90" class="form-control" name="http-push" id="http-push">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="http-push2" class="col-sm-4 col-form-label">Http 2:</label>
|
<label for="http-push2" class="col-sm-4 col-form-label">Http URL 2:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="url" maxlength="90" class="form-control" name="http-push2" id="http-push2">
|
<input type="url" maxlength="90" class="form-control" name="http-push2" id="http-push2">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="inputBrewfatherPush" class="col-sm-4 col-form-label">Brewfather:</label>
|
<label for="inputBrewfatherPush" class="col-sm-4 col-form-label">Brewfather URL:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="url" maxlength="90" class="form-control" name="brewfather-push" id="brewfather-push">
|
<input type="url" maxlength="90" class="form-control" name="brewfather-push" id="brewfather-push">
|
||||||
</div>
|
</div>
|
||||||
@ -235,7 +235,7 @@
|
|||||||
<input type="number" step=".1" class="form-control" name="temp-adjustment-value" id="temp-adjustment-value">
|
<input type="number" step=".1" class="form-control" name="temp-adjustment-value" id="temp-adjustment-value">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group row" hidden>
|
<div class="form-group row">
|
||||||
<label for="ota-url" class="col-sm-4 col-form-label">OTA base URL:</label>
|
<label for="ota-url" class="col-sm-4 col-form-label">OTA base URL:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="url" maxlength="90" class="form-control" name="ota-url" id="ota-url">
|
<input type="url" maxlength="90" class="form-control" name="ota-url" id="ota-url">
|
||||||
|
File diff suppressed because one or more lines are too long
@ -118,7 +118,7 @@
|
|||||||
$('#spinner').show();
|
$('#spinner').show();
|
||||||
$.getJSON(url, function (cfg) {
|
$.getJSON(url, function (cfg) {
|
||||||
console.log( cfg );
|
console.log( cfg );
|
||||||
$("#app-ver").text(cfg["app-ver"] + " (html 0.2.1)");
|
$("#app-ver").text(cfg["app-ver"] + " (html 0.2.2)");
|
||||||
$("#mdns").text(cfg["mdns"]);
|
$("#mdns").text(cfg["mdns"]);
|
||||||
$("#id").text(cfg["id"]);
|
$("#id").text(cfg["id"]);
|
||||||
})
|
})
|
||||||
|
@ -14,4 +14,4 @@
|
|||||||
<button type="button" class="btn btn-warning" id="wifi-reset-btn">Factory default settings</button>
|
<button type="button" class="btn btn-warning" id="wifi-reset-btn">Factory default settings</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
--><hr class="my-4"></div><script type="text/javascript">function getConfig(){var n="/api/device";$("#spinner").show(),$.getJSON(n,function(n){console.log(n),$("#app-ver").text(n["app-ver"]+" (html 0.2.1)"),$("#mdns").text(n.mdns),$("#id").text(n.id)}).fail(function(){showError("Unable to get data from the device.")}).always(function(){$("#spinner").hide()})}window.onload=getConfig</script><!-- START FOOTER --><div class="container-fluid themed-container bg-primary text-light">(C) Copyright 2021 Magnus Persson</div></body></html>
|
--><hr class="my-4"></div><script type="text/javascript">function getConfig(){var n="/api/device";$("#spinner").show(),$.getJSON(n,function(n){console.log(n),$("#app-ver").text(n["app-ver"]+" (html 0.2.2)"),$("#mdns").text(n.mdns),$("#id").text(n.id)}).fail(function(){showError("Unable to get data from the device.")}).always(function(){$("#spinner").hide()})}window.onload=getConfig</script><!-- START FOOTER --><div class="container-fluid themed-container bg-primary text-light">(C) Copyright 2021 Magnus Persson</div></body></html>
|
@ -26,16 +26,16 @@ build_flags = #-O0 -Wl,-Map,output.map
|
|||||||
#-D SKIP_SLEEPMODE
|
#-D SKIP_SLEEPMODE
|
||||||
-D USE_LITTLEFS=true
|
-D USE_LITTLEFS=true
|
||||||
#-D EMBED_HTML
|
#-D EMBED_HTML
|
||||||
-D CFG_APPVER="\"0.2.1\""
|
-D CFG_APPVER="\"0.2.2\""
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# https://github.com/jrowberg/i2cdevlib.git # Using local copy of this library
|
# https://github.com/jrowberg/i2cdevlib.git # Using local copy of this library
|
||||||
https://github.com/codeplea/tinyexpr
|
https://github.com/codeplea/tinyexpr
|
||||||
https://github.com/graphitemaster/incbin
|
https://github.com/graphitemaster/incbin
|
||||||
https://github.com/khoih-prog/ESP_MultiResetDetector
|
https://github.com/khoih-prog/ESP_DoubleResetDetector
|
||||||
|
https://github.com/khoih-prog/ESP_WiFiManager
|
||||||
https://github.com/thijse/Arduino-Log
|
https://github.com/thijse/Arduino-Log
|
||||||
https://github.com/bblanchon/ArduinoJson
|
https://github.com/bblanchon/ArduinoJson
|
||||||
https://github.com/PaulStoffregen/OneWire
|
https://github.com/PaulStoffregen/OneWire
|
||||||
https://github.com/tzapu/WiFiManager
|
|
||||||
https://github.com/milesburton/Arduino-Temperature-Control-Library
|
https://github.com/milesburton/Arduino-Temperature-Control-Library
|
||||||
|
|
||||||
[env:gravity-debug]
|
[env:gravity-debug]
|
||||||
|
@ -46,5 +46,5 @@ def after_build(source, target, env):
|
|||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
print( "Adding custom build step: (create json)")
|
print( "Adding custom build step (create json):")
|
||||||
env.AddPreAction("buildprog", after_build)
|
env.AddPreAction("buildprog", after_build)
|
||||||
|
38
src/main.cpp
38
src/main.cpp
@ -32,27 +32,27 @@ SOFTWARE.
|
|||||||
#include <LittleFS.h>
|
#include <LittleFS.h>
|
||||||
|
|
||||||
// Settings for double reset detector.
|
// Settings for double reset detector.
|
||||||
#define ESP_MRD_USE_LITTLEFS true
|
//#define USE_LITTLEFS true
|
||||||
#define ESP_MRD_USE_SPIFFS false
|
//#define ESP_DRD_USE_LITTLEFS true
|
||||||
#define ESP_MRD_USE_EEPROM false
|
#define ESP8266_DRD_USE_RTC true
|
||||||
#define MRD_TIMES 3
|
#define DRD_TIMEOUT 1
|
||||||
#define MRD_TIMEOUT 10
|
#define DRD_ADDRESS 0
|
||||||
#define MRD_ADDRESS 0
|
#define DOUBLERESETDETECTOR_DEBUG true
|
||||||
//#define MULTIRESETDETECTOR_DEBUG true
|
#include <ESP_DoubleResetDetector.h>
|
||||||
#include <ESP_MultiResetDetector.h>
|
DoubleResetDetector *drd;
|
||||||
MultiResetDetector *mrd;
|
|
||||||
|
|
||||||
// Define constats for this program
|
// Define constats for this program
|
||||||
#if LOG_LEVEL==6
|
#if LOG_LEVEL==6
|
||||||
const int interval = 1000; // ms, time to wait between changes to output
|
const int interval = 1000; // ms, time to wait between changes to output
|
||||||
bool sleepModeAlwaysSkip = true; // Web interface can override normal behaviour
|
bool sleepModeAlwaysSkip = true; // Web interface can override normal behaviour
|
||||||
#else
|
#else
|
||||||
const int interval = 100; // ms, time to wait between changes to output
|
const int interval = 200; // ms, time to wait between changes to output
|
||||||
bool sleepModeAlwaysSkip = false; // Web interface can override normal behaviour
|
bool sleepModeAlwaysSkip = false; // Web interface can override normal behaviour
|
||||||
#endif
|
#endif
|
||||||
unsigned long lastMillis = 0;
|
unsigned long lastMillis = 0;
|
||||||
unsigned long startMillis;
|
unsigned long startMillis;
|
||||||
bool sleepModeActive = false;
|
bool sleepModeActive = false;
|
||||||
|
int loopCounter = 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check if we should be in sleep mode
|
// Check if we should be in sleep mode
|
||||||
@ -94,8 +94,6 @@ void checkSleepMode( float angle, float volt ) {
|
|||||||
//
|
//
|
||||||
void setup() {
|
void setup() {
|
||||||
startMillis = millis();
|
startMillis = millis();
|
||||||
mrd = new MultiResetDetector(MRD_TIMEOUT, MRD_ADDRESS);
|
|
||||||
bool dt = mrd->detectMultiReset();
|
|
||||||
|
|
||||||
#if LOG_LEVEL==6
|
#if LOG_LEVEL==6
|
||||||
Log.verbose(F("Main: Reset reason %s." CR), ESP.getResetInfo().c_str() );
|
Log.verbose(F("Main: Reset reason %s." CR), ESP.getResetInfo().c_str() );
|
||||||
@ -118,13 +116,14 @@ void setup() {
|
|||||||
if( !myGyro.setup() )
|
if( !myGyro.setup() )
|
||||||
Log.error(F("Main: Failed to initialize the gyro." CR));
|
Log.error(F("Main: Failed to initialize the gyro." CR));
|
||||||
|
|
||||||
|
drd = new DoubleResetDetector(DRD_TIMEOUT, DRD_ADDRESS);
|
||||||
|
bool dt = drd->detectDoubleReset();
|
||||||
|
|
||||||
if( dt )
|
if( dt )
|
||||||
Log.notice(F("Main: Detected doubletap on reset." CR));
|
Log.notice(F("Main: Detected doubletap on reset." CR));
|
||||||
|
|
||||||
Log.notice(F("Main: Connecting to wifi." CR));
|
Log.notice(F("Main: Connecting to wifi." CR));
|
||||||
myWifi.connect( dt );
|
myWifi.connect( dt );
|
||||||
Log.notice(F("Main: WIFI connected." CR));
|
|
||||||
|
|
||||||
myGyro.read();
|
myGyro.read();
|
||||||
myBatteryVoltage.read();
|
myBatteryVoltage.read();
|
||||||
checkSleepMode( myGyro.getAngle(), myBatteryVoltage.getVoltage() );
|
checkSleepMode( myGyro.getAngle(), myBatteryVoltage.getVoltage() );
|
||||||
@ -147,11 +146,12 @@ void setup() {
|
|||||||
// Main loops
|
// Main loops
|
||||||
//
|
//
|
||||||
void loop() {
|
void loop() {
|
||||||
mrd->loop();
|
drd->loop();
|
||||||
|
|
||||||
if( sleepModeActive || abs(millis() - lastMillis) > interval ) {
|
if( sleepModeActive || abs(millis() - lastMillis) > interval ) {
|
||||||
float angle = 90;
|
float angle = 90;
|
||||||
float volt = myBatteryVoltage.getVoltage();
|
float volt = myBatteryVoltage.getVoltage();
|
||||||
|
loopCounter++;
|
||||||
#if LOG_LEVEL==6
|
#if LOG_LEVEL==6
|
||||||
Log.verbose(F("Main: Entering main loop." CR) );
|
Log.verbose(F("Main: Entering main loop." CR) );
|
||||||
#endif
|
#endif
|
||||||
@ -170,7 +170,9 @@ void loop() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.notice(F("Main: Gyro angle=%F, temp=%F, gravity=%F, batt=%F." CR), angle, temp, gravity, volt );
|
// Limit the printout when sleep mode is not active.
|
||||||
|
if( loopCounter%10 == 0 || sleepModeActive )
|
||||||
|
Log.notice(F("Main: Gyro angle=%F, temp=%F, gravity=%F, batt=%F." CR), angle, temp, gravity, volt );
|
||||||
|
|
||||||
#if defined( ACTIVATE_PUSH )
|
#if defined( ACTIVATE_PUSH )
|
||||||
unsigned long runTime = millis() - startMillis;
|
unsigned long runTime = millis() - startMillis;
|
||||||
@ -185,10 +187,10 @@ void loop() {
|
|||||||
unsigned long runTime = millis() - startMillis;
|
unsigned long runTime = millis() - startMillis;
|
||||||
|
|
||||||
// Enter sleep mode...
|
// Enter sleep mode...
|
||||||
Log.notice(F("MAIN: Entering deep sleep, run time %l s." CR), runTime/1000 );
|
Log.notice(F("MAIN: Entering deep sleep for %d s, run time %l s, battery=%F V." CR), myConfig.getPushInterval(), runTime/1000, volt );
|
||||||
LittleFS.end();
|
LittleFS.end();
|
||||||
myGyro.enterSleep();
|
myGyro.enterSleep();
|
||||||
mrd->stop();
|
drd->stop();
|
||||||
delay(100);
|
delay(100);
|
||||||
deepSleep( myConfig.getPushInterval() );
|
deepSleep( myConfig.getPushInterval() );
|
||||||
}
|
}
|
||||||
|
@ -131,15 +131,19 @@ void PushTarget::sendHttp( String serverPath, float angle, float gravity, float
|
|||||||
|
|
||||||
DynamicJsonDocument doc(256);
|
DynamicJsonDocument doc(256);
|
||||||
|
|
||||||
doc["name"] = myConfig.getMDNS();
|
// Use iSpindle format for compatibility
|
||||||
doc["temp"] = reduceFloatPrecision( temp, 1 );
|
doc["name"] = myConfig.getMDNS();
|
||||||
doc["temp-unit"] = String( myConfig.getTempFormat() );
|
doc["ID"] = myConfig.getMDNS();
|
||||||
doc["gravity"] = reduceFloatPrecision( gravity, 4 );
|
doc["token"] = "gravmon";
|
||||||
doc["angle"] = reduceFloatPrecision( angle, 2);
|
doc["interval"] = myConfig.getPushInterval();
|
||||||
doc["battery"] = reduceFloatPrecision( myBatteryVoltage.getVoltage(), 2 );
|
doc["temperature"] = reduceFloatPrecision( temp, 1 );
|
||||||
doc["rssi"] = WiFi.RSSI();
|
doc["temp-units"] = String( myConfig.getTempFormat() );
|
||||||
|
doc["gravity"] = reduceFloatPrecision( gravity, 4 );
|
||||||
|
doc["angle"] = reduceFloatPrecision( angle, 2);
|
||||||
|
doc["battery"] = reduceFloatPrecision( myBatteryVoltage.getVoltage(), 2 );
|
||||||
|
doc["rssi"] = WiFi.RSSI();
|
||||||
|
|
||||||
// Some debug information
|
// Some additional information
|
||||||
doc["run-time"] = reduceFloatPrecision( runTime, 2 );
|
doc["run-time"] = reduceFloatPrecision( runTime, 2 );
|
||||||
|
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
|
@ -468,7 +468,7 @@ bool WebServer::setupWebServer() {
|
|||||||
// Dynamic content
|
// Dynamic content
|
||||||
server.on("/api/config", HTTP_GET, webHandleConfig); // Get config.json
|
server.on("/api/config", HTTP_GET, webHandleConfig); // Get config.json
|
||||||
server.on("/api/device", HTTP_GET, webHandleDevice); // Get device.json
|
server.on("/api/device", HTTP_GET, webHandleDevice); // Get device.json
|
||||||
server.on("/api/calibrate", HTTP_GET, webHandleCalibrate); // Run calibration routine (param id)
|
server.on("/api/calibrate", HTTP_POST, webHandleCalibrate); // Run calibration routine (param id)
|
||||||
server.on("/api/factory", HTTP_GET, webHandleFactoryReset); // Reset the device
|
server.on("/api/factory", HTTP_GET, webHandleFactoryReset); // Reset the device
|
||||||
server.on("/api/status", HTTP_GET, webHandleStatus); // Get the status.json
|
server.on("/api/status", HTTP_GET, webHandleStatus); // Get the status.json
|
||||||
server.on("/api/clearwifi", HTTP_GET, webHandleClearWIFI); // Clear wifi settings
|
server.on("/api/clearwifi", HTTP_GET, webHandleClearWIFI); // Clear wifi settings
|
||||||
|
27
src/wifi.cpp
27
src/wifi.cpp
@ -27,17 +27,24 @@ SOFTWARE.
|
|||||||
#include "gyro.h"
|
#include "gyro.h"
|
||||||
#include "calc.h"
|
#include "calc.h"
|
||||||
#include "tempsensor.h"
|
#include "tempsensor.h"
|
||||||
#include <ESP8266WiFi.h>
|
#include <ArduinoJson.h>
|
||||||
#include <ESP8266mDNS.h>
|
#include <ESP8266mDNS.h>
|
||||||
#include <ESP8266HTTPClient.h>
|
#include <ESP8266HTTPClient.h>
|
||||||
#include <ESP8266httpUpdate.h>
|
#include <ESP8266httpUpdate.h>
|
||||||
|
#include <ESP_WiFiManager.h>
|
||||||
#include <LittleFS.h>
|
#include <LittleFS.h>
|
||||||
#include <incbin.h>
|
#include <incbin.h>
|
||||||
|
|
||||||
Wifi myWifi;
|
Wifi myWifi;
|
||||||
WiFiManager myWifiManager;
|
ESP_WiFiManager myWifiManager;
|
||||||
|
bool shouldSaveConfig = false;
|
||||||
|
|
||||||
// TODO: ADD MDNS setting to WIFI portal.....
|
//
|
||||||
|
// Callback notifying us of the need to save config
|
||||||
|
//
|
||||||
|
void saveConfigCallback () {
|
||||||
|
shouldSaveConfig = true;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Connect to last known access point or create one if connection is not working.
|
// Connect to last known access point or create one if connection is not working.
|
||||||
@ -50,7 +57,15 @@ bool Wifi::connect( bool showPortal ) {
|
|||||||
myWifiManager.setDebugOutput(false);
|
myWifiManager.setDebugOutput(false);
|
||||||
#endif
|
#endif
|
||||||
unsigned long startMillis = millis();
|
unsigned long startMillis = millis();
|
||||||
|
|
||||||
|
myWifiManager.setConfigPortalChannel(0);
|
||||||
myWifiManager.setConfigPortalTimeout( WIFI_PORTAL_TIMEOUT );
|
myWifiManager.setConfigPortalTimeout( WIFI_PORTAL_TIMEOUT );
|
||||||
|
|
||||||
|
ESP_WMParameter mdnsParam("mDNS name", "hostname", myConfig.getMDNS(), 20);
|
||||||
|
myWifiManager.setSaveConfigCallback(saveConfigCallback);
|
||||||
|
myWifiManager.addParameter( &mdnsParam );
|
||||||
|
myWifiManager.setMinimumSignalQuality(-1); // Ignore under 8%
|
||||||
|
|
||||||
if( showPortal ) {
|
if( showPortal ) {
|
||||||
Log.notice(F("WIFI: Starting wifi portal." CR));
|
Log.notice(F("WIFI: Starting wifi portal." CR));
|
||||||
connectedFlag = myWifiManager.startConfigPortal( WIFI_DEFAULT_SSID, WIFI_DEFAULT_PWD );
|
connectedFlag = myWifiManager.startConfigPortal( WIFI_DEFAULT_SSID, WIFI_DEFAULT_PWD );
|
||||||
@ -58,6 +73,10 @@ bool Wifi::connect( bool showPortal ) {
|
|||||||
else
|
else
|
||||||
connectedFlag = myWifiManager.autoConnect( WIFI_DEFAULT_SSID, WIFI_DEFAULT_PWD );
|
connectedFlag = myWifiManager.autoConnect( WIFI_DEFAULT_SSID, WIFI_DEFAULT_PWD );
|
||||||
|
|
||||||
|
if( shouldSaveConfig ) {
|
||||||
|
myConfig.setMDNS( mdnsParam.getValue() );
|
||||||
|
}
|
||||||
|
|
||||||
Log.notice( F("WIFI: Connect time %d s" CR), abs(millis() - startMillis)/1000);
|
Log.notice( F("WIFI: Connect time %d s" CR), abs(millis() - startMillis)/1000);
|
||||||
|
|
||||||
#if LOG_LEVEL==6
|
#if LOG_LEVEL==6
|
||||||
@ -193,7 +212,7 @@ bool Wifi::checkFirmwareVersion() {
|
|||||||
// Download new html files to filesystem if they are present.
|
// Download new html files to filesystem if they are present.
|
||||||
if( !ver["html"].isNull() && newFirmware ) {
|
if( !ver["html"].isNull() && newFirmware ) {
|
||||||
Log.notice(F("OTA : Downloading new html files." CR));
|
Log.notice(F("OTA : Downloading new html files." CR));
|
||||||
htmlFiles = ver["html"].as<JsonArray>();
|
JsonArray htmlFiles = ver["html"].as<JsonArray>();
|
||||||
for(JsonVariant v : htmlFiles) {
|
for(JsonVariant v : htmlFiles) {
|
||||||
String s = v;
|
String s = v;
|
||||||
#if LOG_LEVEL==6
|
#if LOG_LEVEL==6
|
||||||
|
@ -25,15 +25,13 @@ SOFTWARE.
|
|||||||
#define _WIFI_H
|
#define _WIFI_H
|
||||||
|
|
||||||
// Include
|
// Include
|
||||||
#include <WiFiManager.h>
|
#include <ESP8266WiFi.h>
|
||||||
#include <ArduinoJson.h>
|
|
||||||
|
|
||||||
// classes
|
// classes
|
||||||
class Wifi {
|
class Wifi {
|
||||||
private:
|
private:
|
||||||
// WIFI
|
// WIFI
|
||||||
bool connectedFlag = false;
|
bool connectedFlag = false;
|
||||||
JsonArray htmlFiles;
|
|
||||||
|
|
||||||
// OTA
|
// OTA
|
||||||
bool newFirmware = false;
|
bool newFirmware = false;
|
||||||
|
Reference in New Issue
Block a user