Mem debug, Variable http timeout and min heapfrag
This commit is contained in:
@ -417,6 +417,8 @@ bool HardwareConfig::loadFile() {
|
|||||||
doc[PARAM_HW_FORMULA_CALIBRATION_TEMP].as<float>());
|
doc[PARAM_HW_FORMULA_CALIBRATION_TEMP].as<float>());
|
||||||
if (!doc[PARAM_HW_WIFI_PORTALTIMEOUT].isNull())
|
if (!doc[PARAM_HW_WIFI_PORTALTIMEOUT].isNull())
|
||||||
this->setWifiPortalTimeout(doc[PARAM_HW_WIFI_PORTALTIMEOUT].as<int>());
|
this->setWifiPortalTimeout(doc[PARAM_HW_WIFI_PORTALTIMEOUT].as<int>());
|
||||||
|
if (!doc[PARAM_HW_PUSH_TIMEOUT].isNull())
|
||||||
|
this->setPushTimeout(doc[PARAM_HW_PUSH_TIMEOUT].as<int>());
|
||||||
|
|
||||||
Log.notice(F("CFG : Configuration file " CFG_HW_FILENAME " loaded." CR));
|
Log.notice(F("CFG : Configuration file " CFG_HW_FILENAME " loaded." CR));
|
||||||
return true;
|
return true;
|
||||||
|
@ -60,6 +60,7 @@ class HardwareConfig {
|
|||||||
int _gyroSensorMovingThreashold = 500;
|
int _gyroSensorMovingThreashold = 500;
|
||||||
int _gyroReadCount = 50;
|
int _gyroReadCount = 50;
|
||||||
int _gyroReadDelay = 3150; // us, empirical, to hold sampling to 200 Hz
|
int _gyroReadDelay = 3150; // us, empirical, to hold sampling to 200 Hz
|
||||||
|
int _pushTimeout = 10; // seconds
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int getWifiPortalTimeout() { return _wifiPortalTimeout; }
|
int getWifiPortalTimeout() { return _wifiPortalTimeout; }
|
||||||
@ -78,6 +79,8 @@ class HardwareConfig {
|
|||||||
void setGyroReadCount(int c) { _gyroReadCount = c; }
|
void setGyroReadCount(int c) { _gyroReadCount = c; }
|
||||||
int getGyroReadDelay() { return _gyroReadDelay; }
|
int getGyroReadDelay() { return _gyroReadDelay; }
|
||||||
void setGyroReadDelay(int d) { _gyroReadDelay = d; }
|
void setGyroReadDelay(int d) { _gyroReadDelay = d; }
|
||||||
|
int getPushTimeout() { return _pushTimeout; }
|
||||||
|
void setPushTimeout(int t) { _pushTimeout = t; }
|
||||||
|
|
||||||
bool saveFile();
|
bool saveFile();
|
||||||
bool loadFile();
|
bool loadFile();
|
||||||
|
@ -155,7 +155,6 @@ void FloatHistoryLog::save() {
|
|||||||
// Print the heap information.
|
// Print the heap information.
|
||||||
//
|
//
|
||||||
void printHeap(String prefix) {
|
void printHeap(String prefix) {
|
||||||
#if LOG_LEVEL == 6 || LOG_LEVEL == 5
|
|
||||||
#if defined(ESP8266)
|
#if defined(ESP8266)
|
||||||
Log.notice(
|
Log.notice(
|
||||||
F("%s: Free-heap %d kb, Heap-rag %d %%, Max-block %d kb Stack=%d b." CR),
|
F("%s: Free-heap %d kb, Heap-rag %d %%, Max-block %d kb Stack=%d b." CR),
|
||||||
@ -168,7 +167,6 @@ void printHeap(String prefix) {
|
|||||||
Log.verbose(F("HELP: Heap %d kb, FreeSketch %d kb." CR),
|
Log.verbose(F("HELP: Heap %d kb, FreeSketch %d kb." CR),
|
||||||
ESP.getFreeHeap() / 1024, ESP.getFreeSketchSpace() / 1024);
|
ESP.getFreeHeap() / 1024, ESP.getFreeSketchSpace() / 1024);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -325,11 +323,12 @@ void PerfLogging::pushInflux() {
|
|||||||
// Create body for influxdb2, format used
|
// Create body for influxdb2, format used
|
||||||
// key,host=mdns value=0.0
|
// key,host=mdns value=0.0
|
||||||
String body;
|
String body;
|
||||||
|
body.reserve(500);
|
||||||
|
|
||||||
// Create the payload with performance data.
|
// Create the payload with performance data.
|
||||||
// ------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------
|
||||||
PerfEntry* pe = first;
|
PerfEntry* pe = first;
|
||||||
char buf[100];
|
char buf[150];
|
||||||
snprintf(&buf[0], sizeof(buf), "perf,host=%s,device=%s ", myConfig.getMDNS(),
|
snprintf(&buf[0], sizeof(buf), "perf,host=%s,device=%s ", myConfig.getMDNS(),
|
||||||
myConfig.getID());
|
myConfig.getID());
|
||||||
body += &buf[0];
|
body += &buf[0];
|
||||||
@ -351,15 +350,23 @@ void PerfLogging::pushInflux() {
|
|||||||
snprintf(&buf[0], sizeof(buf), "\ndebug,host=%s,device=%s ",
|
snprintf(&buf[0], sizeof(buf), "\ndebug,host=%s,device=%s ",
|
||||||
myConfig.getMDNS(), myConfig.getID());
|
myConfig.getMDNS(), myConfig.getID());
|
||||||
body += &buf[0];
|
body += &buf[0];
|
||||||
|
#if defined (ESP8266)
|
||||||
snprintf(
|
snprintf(
|
||||||
&buf[0], sizeof(buf),
|
&buf[0], sizeof(buf),
|
||||||
"angle=%.4f,gyro-ax=%d,gyro-ay=%d,gyro-az=%d,gyro-temp=%.2f,ds-temp=%.2f",
|
"angle=%.4f,gyro-ax=%d,gyro-ay=%d,gyro-az=%d,gyro-temp=%.2f,ds-temp=%.2f,heap=%d,heap-frag=%d,heap-max=%d,stack=%d",
|
||||||
myGyro.getAngle(), myGyro.getLastGyroData().ax,
|
myGyro.getAngle(), myGyro.getLastGyroData().ax,
|
||||||
myGyro.getLastGyroData().ay, myGyro.getLastGyroData().az,
|
myGyro.getLastGyroData().ay, myGyro.getLastGyroData().az,
|
||||||
myGyro.getSensorTempC(), myTempSensor.getTempC(myConfig.isGyroTemp()));
|
myGyro.getSensorTempC(), myTempSensor.getTempC(myConfig.isGyroTemp()), ESP.getFreeHeap(), ESP.getHeapFragmentation(), ESP.getMaxFreeBlockSize(), ESP.getFreeContStack());
|
||||||
body += &buf[0];
|
#else // defined (ESP32)
|
||||||
|
snprintf(
|
||||||
|
&buf[0], sizeof(buf),
|
||||||
|
"angle=%.4f,gyro-ax=%d,gyro-ay=%d,gyro-az=%d,gyro-temp=%.2f,ds-temp=%.2f,heap=%d,heap-frag=%d,heap-max=%d",
|
||||||
|
myGyro.getAngle(), myGyro.getLastGyroData().ax,
|
||||||
|
myGyro.getLastGyroData().ay, myGyro.getLastGyroData().az,
|
||||||
|
myGyro.getSensorTempC(), myTempSensor.getTempC(myConfig.isGyroTemp()), ESP.getFreeHeap(), 0, ESP.getMaxAllocHeap());
|
||||||
|
#endif
|
||||||
|
|
||||||
// Log.notice(F("PERF: data %s." CR), body.c_str() );
|
body += &buf[0];
|
||||||
|
|
||||||
#if LOG_LEVEL == 6 && !defined(HELPER_DISABLE_LOGGING)
|
#if LOG_LEVEL == 6 && !defined(HELPER_DISABLE_LOGGING)
|
||||||
Log.verbose(F("PERF: url %s." CR), serverPath.c_str());
|
Log.verbose(F("PERF: url %s." CR), serverPath.c_str());
|
||||||
@ -369,6 +376,7 @@ void PerfLogging::pushInflux() {
|
|||||||
// Send HTTP POST request
|
// Send HTTP POST request
|
||||||
String auth = "Token " + String(myConfig.getInfluxDb2PushToken());
|
String auth = "Token " + String(myConfig.getInfluxDb2PushToken());
|
||||||
http.addHeader(F("Authorization"), auth.c_str());
|
http.addHeader(F("Authorization"), auth.c_str());
|
||||||
|
http.setTimeout(myHardwareConfig.getPushTimeout());
|
||||||
int httpResponseCode = http.POST(body);
|
int httpResponseCode = http.POST(body);
|
||||||
|
|
||||||
if (httpResponseCode == 204) {
|
if (httpResponseCode == 204) {
|
||||||
@ -413,7 +421,9 @@ float reduceFloatPrecision(float f, int dec) {
|
|||||||
// https://circuits4you.com/2019/03/21/esp8266-url-encode-decode-example/
|
// https://circuits4you.com/2019/03/21/esp8266-url-encode-decode-example/
|
||||||
//
|
//
|
||||||
String urlencode(String str) {
|
String urlencode(String str) {
|
||||||
String encodedString = "";
|
String encodedString;
|
||||||
|
encodedString.reserve(str.length()*2);
|
||||||
|
encodedString = "";
|
||||||
char c;
|
char c;
|
||||||
char code0;
|
char code0;
|
||||||
char code1;
|
char code1;
|
||||||
@ -453,8 +463,13 @@ unsigned char h2int(char c) {
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// urlencode string
|
||||||
|
//
|
||||||
String urldecode(String str) {
|
String urldecode(String str) {
|
||||||
String encodedString = "";
|
String encodedString;
|
||||||
|
encodedString.reserve(str.length());
|
||||||
|
encodedString = "";
|
||||||
char c;
|
char c;
|
||||||
char code0;
|
char code0;
|
||||||
char code1;
|
char code1;
|
||||||
|
@ -258,8 +258,11 @@ bool loopReadGravity() {
|
|||||||
push.send(angle, gravitySG, corrGravitySG, tempC,
|
push.send(angle, gravitySG, corrGravitySG, tempC,
|
||||||
(millis() - runtimeMillis) / 1000);
|
(millis() - runtimeMillis) / 1000);
|
||||||
LOG_PERF_STOP("loop-push");
|
LOG_PERF_STOP("loop-push");
|
||||||
|
// Send stats to influx after each push run.
|
||||||
|
if (runMode == RunMode::configurationMode) {
|
||||||
LOG_PERF_PUSH();
|
LOG_PERF_PUSH();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
Log.error(F("MAIN: No gyro value found, the device might be moving."));
|
Log.error(F("MAIN: No gyro value found, the device might be moving."));
|
||||||
|
@ -37,7 +37,7 @@ SOFTWARE.
|
|||||||
//
|
//
|
||||||
void PushTarget::send(float angle, float gravitySG, float corrGravitySG,
|
void PushTarget::send(float angle, float gravitySG, float corrGravitySG,
|
||||||
float tempC, float runTime) {
|
float tempC, float runTime) {
|
||||||
printHeap("StartPush");
|
printHeap("PUSH");
|
||||||
http.setReuse(false);
|
http.setReuse(false);
|
||||||
httpSecure.setReuse(false);
|
httpSecure.setReuse(false);
|
||||||
|
|
||||||
@ -50,14 +50,12 @@ void PushTarget::send(float angle, float gravitySG, float corrGravitySG,
|
|||||||
LOG_PERF_STOP("push-brewfather");
|
LOG_PERF_STOP("push-brewfather");
|
||||||
}
|
}
|
||||||
|
|
||||||
printHeap("http1");
|
|
||||||
if (myConfig.isHttpActive()) {
|
if (myConfig.isHttpActive()) {
|
||||||
LOG_PERF_START("push-http");
|
LOG_PERF_START("push-http");
|
||||||
sendHttp(engine, myConfig.isHttpSSL(), 0);
|
sendHttp(engine, myConfig.isHttpSSL(), 0);
|
||||||
LOG_PERF_STOP("push-http");
|
LOG_PERF_STOP("push-http");
|
||||||
}
|
}
|
||||||
|
|
||||||
printHeap("http2");
|
|
||||||
if (myConfig.isHttp2Active()) {
|
if (myConfig.isHttp2Active()) {
|
||||||
LOG_PERF_START("push-http2");
|
LOG_PERF_START("push-http2");
|
||||||
sendHttp(engine, myConfig.isHttp2SSL(), 1);
|
sendHttp(engine, myConfig.isHttp2SSL(), 1);
|
||||||
@ -92,6 +90,7 @@ void PushTarget::sendInfluxDb2(TemplatingEngine& engine) {
|
|||||||
String doc = engine.create(TemplatingEngine::TEMPLATE_INFLUX);
|
String doc = engine.create(TemplatingEngine::TEMPLATE_INFLUX);
|
||||||
|
|
||||||
http.begin(wifi, serverPath);
|
http.begin(wifi, serverPath);
|
||||||
|
http.setTimeout(myHardwareConfig.getPushTimeout());
|
||||||
|
|
||||||
#if LOG_LEVEL == 6 && !defined(PUSH_DISABLE_LOGGING)
|
#if LOG_LEVEL == 6 && !defined(PUSH_DISABLE_LOGGING)
|
||||||
Log.verbose(F("PUSH: url %s." CR), serverPath.c_str());
|
Log.verbose(F("PUSH: url %s." CR), serverPath.c_str());
|
||||||
@ -128,6 +127,7 @@ void PushTarget::sendBrewfather(TemplatingEngine& engine) {
|
|||||||
String doc = engine.create(TemplatingEngine::TEMPLATE_BREWFATHER);
|
String doc = engine.create(TemplatingEngine::TEMPLATE_BREWFATHER);
|
||||||
|
|
||||||
http.begin(wifi, serverPath);
|
http.begin(wifi, serverPath);
|
||||||
|
http.setTimeout(myHardwareConfig.getPushTimeout());
|
||||||
|
|
||||||
#if LOG_LEVEL == 6 && !defined(PUSH_DISABLE_LOGGING)
|
#if LOG_LEVEL == 6 && !defined(PUSH_DISABLE_LOGGING)
|
||||||
Log.verbose(F("PUSH: url %s." CR), serverPath.c_str());
|
Log.verbose(F("PUSH: url %s." CR), serverPath.c_str());
|
||||||
@ -200,6 +200,7 @@ void PushTarget::sendHttp(TemplatingEngine& engine, bool isSecure, int index) {
|
|||||||
Log.notice(F("PUSH: HTTP, SSL enabled without validation." CR));
|
Log.notice(F("PUSH: HTTP, SSL enabled without validation." CR));
|
||||||
wifiSecure.setInsecure();
|
wifiSecure.setInsecure();
|
||||||
httpSecure.begin(wifiSecure, serverPath);
|
httpSecure.begin(wifiSecure, serverPath);
|
||||||
|
httpSecure.setTimeout(myHardwareConfig.getPushTimeout());
|
||||||
|
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
addHttpHeader(httpSecure, myConfig.getHttpHeader(0));
|
addHttpHeader(httpSecure, myConfig.getHttpHeader(0));
|
||||||
@ -212,6 +213,7 @@ void PushTarget::sendHttp(TemplatingEngine& engine, bool isSecure, int index) {
|
|||||||
httpResponseCode = httpSecure.POST(doc);
|
httpResponseCode = httpSecure.POST(doc);
|
||||||
} else {
|
} else {
|
||||||
http.begin(wifi, serverPath);
|
http.begin(wifi, serverPath);
|
||||||
|
http.setTimeout(myHardwareConfig.getPushTimeout());
|
||||||
|
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
addHttpHeader(http, myConfig.getHttpHeader(0));
|
addHttpHeader(http, myConfig.getHttpHeader(0));
|
||||||
@ -274,7 +276,7 @@ void PushTarget::sendMqtt(TemplatingEngine& engine, bool isSecure) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Send MQQT message(s)
|
// Send MQQT message(s)
|
||||||
mqtt.setTimeout(10); // 10 seconds timeout
|
mqtt.setTimeout(myHardwareConfig.getPushTimeout()); // 10 seconds timeout
|
||||||
|
|
||||||
int lines = 1;
|
int lines = 1;
|
||||||
// Find out how many lines are in the document. Each line is one
|
// Find out how many lines are in the document. Each line is one
|
||||||
|
@ -73,6 +73,7 @@ SOFTWARE.
|
|||||||
#define PARAM_HW_FORMULA_DEVIATION "formula-max-deviation"
|
#define PARAM_HW_FORMULA_DEVIATION "formula-max-deviation"
|
||||||
#define PARAM_HW_FORMULA_CALIBRATION_TEMP "formula-calibration-temp"
|
#define PARAM_HW_FORMULA_CALIBRATION_TEMP "formula-calibration-temp"
|
||||||
#define PARAM_HW_WIFI_PORTALTIMEOUT "wifi-portaltimeout"
|
#define PARAM_HW_WIFI_PORTALTIMEOUT "wifi-portaltimeout"
|
||||||
|
#define PARAM_HW_PUSH_TIMEOUT "push-timeout"
|
||||||
#define PARAM_FORMAT_HTTP1 "http-1"
|
#define PARAM_FORMAT_HTTP1 "http-1"
|
||||||
#define PARAM_FORMAT_HTTP2 "http-2"
|
#define PARAM_FORMAT_HTTP2 "http-2"
|
||||||
#define PARAM_FORMAT_BREWFATHER "brewfather"
|
#define PARAM_FORMAT_BREWFATHER "brewfather"
|
||||||
|
@ -139,6 +139,7 @@ void TemplatingEngine::initialize(float angle, float gravitySG, float corrGravit
|
|||||||
//
|
//
|
||||||
const String& TemplatingEngine::create(TemplatingEngine::Templates idx) {
|
const String& TemplatingEngine::create(TemplatingEngine::Templates idx) {
|
||||||
String fname;
|
String fname;
|
||||||
|
baseTemplate.reserve(600);
|
||||||
|
|
||||||
// Load templates from memory
|
// Load templates from memory
|
||||||
switch (idx) {
|
switch (idx) {
|
||||||
|
@ -541,6 +541,8 @@ void WebServerHandler::webHandleDeviceParam() {
|
|||||||
myHardwareConfig.SetDefaultCalibrationTemp(s.toFloat());
|
myHardwareConfig.SetDefaultCalibrationTemp(s.toFloat());
|
||||||
else if (_server->argName(i).equalsIgnoreCase(PARAM_HW_WIFI_PORTALTIMEOUT))
|
else if (_server->argName(i).equalsIgnoreCase(PARAM_HW_WIFI_PORTALTIMEOUT))
|
||||||
myHardwareConfig.setWifiPortalTimeout(s.toInt());
|
myHardwareConfig.setWifiPortalTimeout(s.toInt());
|
||||||
|
else if (_server->argName(i).equalsIgnoreCase(PARAM_HW_PUSH_TIMEOUT))
|
||||||
|
myHardwareConfig.setPushTimeout(s.toInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
myHardwareConfig.saveFile();
|
myHardwareConfig.saveFile();
|
||||||
|
Reference in New Issue
Block a user