mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-09 04:56:53 +03:00
* Fix for securing wlan.ini (#1509) * Fix for securing wlan.ini * Fixing error with ' instead of " * Changing to errorcode 403 * maybe strcmp instead of regular == Co-authored-by: Pär Hedberg <par.hedberg@nordicmedtest.se> * Update Web-Installer * solves #1530 (#1531) * Refactor JSON (#1518) * use correct log level * corrected logging * typo * refactored JSON generagion: removed unused parameters, consolidated into singel function, added "pre" * Wrapped 'rate' into double quotes, like all other JSON values Co-authored-by: CaCO3 <caco@ruinelli.ch> * Various corrections (#1519) * use correct log level * corrected logging * typo * add release to webinstaller * changed logs, added INFO log of raw, value, error * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * Prevent auto restart on cam framebuffer init error (#1522) * use correct log level * revert autorestart on camera framebuffer init error * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * #1524 - ensure the recognized digit is less than 10 (#1525) * fix kernel panic (vector out of range) in getReadoutRawString * fix key of caches * fix key of caches * fix key caches * fix cache keys * fix cache keys * move set variables to top * debug * fix key * testing * try fix changelog * test * Update Changelog.md for release * Revert "Update Changelog.md for release" This reverts commit4f51ec7962. * remove testing * fix release creation * testing * Update Changelog.md for release * test * Revert "Merge branch 'master' of https://github.com/haverland/AI-on-the-edge-device" This reverts commitf68695a4c0, reversing changes made toa096cf7182. * Revert "test" This reverts commita096cf7182. * revert testing * #1524 - ensure the result of ZeigerEvalHybridNeu is <10 * Fix late digit transition #1503 Co-authored-by: github-actions <github-actions@github.com> * fix frozen time in datafile on error (#1534) Co-authored-by: CaCO3 <caco@ruinelli.ch> * log NTP server name (#1497) * log NTP server name * . * . * replace calls to /wasserzaehler.html with calls to /value (#1469) Co-authored-by: CaCO3 <caco@ruinelli.ch> * Fix cookie usage, use correct http response codes, add 404 page (#1495) * replaced some HTTP response code with better matching codes * add custom 404 page, add log entry for debugging * fix cookie * replace non-necessary whitespace * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * Don't autofail if NTP server can't be reached during initalization (#1498) This fixes an issue with a restricted network without internet access, where the hardcoded ntp server can't be reached and thus the esp resets, as it's not able to finish initalization. * Update Changelog.md * Update Changelog.md for release * Fix for securing wlan.ini (#1509) * Fix for securing wlan.ini * Fixing error with ' instead of " * Changing to errorcode 403 * maybe strcmp instead of regular == Co-authored-by: Pär Hedberg <par.hedberg@nordicmedtest.se> * Update Web-Installer * solves #1530 (#1531) * Refactor JSON (#1518) * use correct log level * corrected logging * typo * refactored JSON generagion: removed unused parameters, consolidated into singel function, added "pre" * Wrapped 'rate' into double quotes, like all other JSON values Co-authored-by: CaCO3 <caco@ruinelli.ch> * Various corrections (#1519) * use correct log level * corrected logging * typo * add release to webinstaller * changed logs, added INFO log of raw, value, error * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * Prevent auto restart on cam framebuffer init error (#1522) * use correct log level * revert autorestart on camera framebuffer init error * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * #1524 - ensure the recognized digit is less than 10 (#1525) * fix kernel panic (vector out of range) in getReadoutRawString * fix key of caches * fix key of caches * fix key caches * fix cache keys * fix cache keys * move set variables to top * debug * fix key * testing * try fix changelog * test * Update Changelog.md for release * Revert "Update Changelog.md for release" This reverts commit4f51ec7962. * remove testing * fix release creation * testing * Update Changelog.md for release * test * Revert "Merge branch 'master' of https://github.com/haverland/AI-on-the-edge-device" This reverts commitf68695a4c0, reversing changes made toa096cf7182. * Revert "test" This reverts commita096cf7182. * revert testing * #1524 - ensure the result of ZeigerEvalHybridNeu is <10 * Fix late digit transition #1503 Co-authored-by: github-actions <github-actions@github.com> * only use sntp_getservername() after init sntp * set default NTP server on dnew installations Co-authored-by: CaCO3 <caco@ruinelli.ch> Co-authored-by: Ralf Rachinger <git@ralfrachinger.de> Co-authored-by: jomjol <30766535+jomjol@users.noreply.github.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: parhedberg <par.hedberg@gmail.com> Co-authored-by: Pär Hedberg <par.hedberg@nordicmedtest.se> Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com> Co-authored-by: Frank Haverland <fspapaping@googlemail.com> * Renamed variables and added debug log (#1537) * add debug logs * renamed variables * renamed TAGs, added flow status logging * . * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * replaced printf usage in LogFile.WriteToFile() * ENABLE_MQTT c++ macro definition (#1546) * macro * 2 * 2 * delete jomjol_mqtt from CMakeLists * mqtt macro * final * ENABLE_INFLUXDB c++ macro definition (#1547) * macro * 2 * 2 * delete jomjol_mqtt from CMakeLists * mqtt macro * final * ENABLE_INFLUXDB c++ macro definition * Update Changelog.md Co-authored-by: parhedberg <par.hedberg@gmail.com> Co-authored-by: Pär Hedberg <par.hedberg@nordicmedtest.se> Co-authored-by: jomjol <30766535+jomjol@users.noreply.github.com> Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com> Co-authored-by: CaCO3 <caco@ruinelli.ch> Co-authored-by: Frank Haverland <fspapaping@googlemail.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Ralf Rachinger <git@ralfrachinger.de> Co-authored-by: Nicolas Liaudat <nliaudat@users.noreply.github.com>
168 lines
4.4 KiB
C++
168 lines
4.4 KiB
C++
#ifdef ENABLE_INFLUXDB
|
|
#include <sstream>
|
|
#include "ClassFlowInfluxDB.h"
|
|
#include "Helper.h"
|
|
#include "connect_wlan.h"
|
|
|
|
#include "time_sntp.h"
|
|
#include "interface_influxdb.h"
|
|
|
|
#include "ClassFlowPostProcessing.h"
|
|
#include "esp_log.h"
|
|
|
|
#include <time.h>
|
|
|
|
static const char* TAG = "class_flow_influxDb";
|
|
|
|
void ClassFlowInfluxDB::SetInitialParameter(void)
|
|
{
|
|
uri = "";
|
|
database = "";
|
|
measurement = "";
|
|
|
|
OldValue = "";
|
|
flowpostprocessing = NULL;
|
|
user = "";
|
|
password = "";
|
|
previousElement = NULL;
|
|
ListFlowControll = NULL;
|
|
disabled = false;
|
|
InfluxDBenable = false;
|
|
}
|
|
|
|
ClassFlowInfluxDB::ClassFlowInfluxDB()
|
|
{
|
|
SetInitialParameter();
|
|
}
|
|
|
|
ClassFlowInfluxDB::ClassFlowInfluxDB(std::vector<ClassFlow*>* lfc)
|
|
{
|
|
SetInitialParameter();
|
|
|
|
ListFlowControll = lfc;
|
|
for (int i = 0; i < ListFlowControll->size(); ++i)
|
|
{
|
|
if (((*ListFlowControll)[i])->name().compare("ClassFlowPostProcessing") == 0)
|
|
{
|
|
flowpostprocessing = (ClassFlowPostProcessing*) (*ListFlowControll)[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
ClassFlowInfluxDB::ClassFlowInfluxDB(std::vector<ClassFlow*>* lfc, ClassFlow *_prev)
|
|
{
|
|
SetInitialParameter();
|
|
|
|
previousElement = _prev;
|
|
ListFlowControll = lfc;
|
|
|
|
for (int i = 0; i < ListFlowControll->size(); ++i)
|
|
{
|
|
if (((*ListFlowControll)[i])->name().compare("ClassFlowPostProcessing") == 0)
|
|
{
|
|
flowpostprocessing = (ClassFlowPostProcessing*) (*ListFlowControll)[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
bool ClassFlowInfluxDB::ReadParameter(FILE* pfile, string& aktparamgraph)
|
|
{
|
|
std::vector<string> zerlegt;
|
|
|
|
aktparamgraph = trim(aktparamgraph);
|
|
|
|
if (aktparamgraph.size() == 0)
|
|
if (!this->GetNextParagraph(pfile, aktparamgraph))
|
|
return false;
|
|
|
|
if (toUpper(aktparamgraph).compare("[INFLUXDB]") != 0)
|
|
return false;
|
|
|
|
while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph))
|
|
{
|
|
ESP_LOGD(TAG, "while loop reading line: %s", aktparamgraph.c_str());
|
|
zerlegt = ZerlegeZeile(aktparamgraph);
|
|
if ((toUpper(zerlegt[0]) == "USER") && (zerlegt.size() > 1))
|
|
{
|
|
this->user = zerlegt[1];
|
|
}
|
|
if ((toUpper(zerlegt[0]) == "PASSWORD") && (zerlegt.size() > 1))
|
|
{
|
|
this->password = zerlegt[1];
|
|
}
|
|
if ((toUpper(zerlegt[0]) == "URI") && (zerlegt.size() > 1))
|
|
{
|
|
this->uri = zerlegt[1];
|
|
}
|
|
if (((toUpper(zerlegt[0]) == "MEASUREMENT")) && (zerlegt.size() > 1))
|
|
{
|
|
this->measurement = zerlegt[1];
|
|
}
|
|
if (((toUpper(zerlegt[0]) == "DATABASE")) && (zerlegt.size() > 1))
|
|
{
|
|
this->database = zerlegt[1];
|
|
}
|
|
}
|
|
|
|
if ((uri.length() > 0) && (database.length() > 0) && (measurement.length() > 0))
|
|
{
|
|
ESP_LOGD(TAG, "Init InfluxDB with uri: %s, measurement: %s, user: %s, password: %s", uri.c_str(), measurement.c_str(), user.c_str(), password.c_str());
|
|
InfluxDBInit(uri, database, measurement, user, password);
|
|
InfluxDBenable = true;
|
|
} else {
|
|
ESP_LOGD(TAG, "InfluxDB init skipped as we are missing some parameters");
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
string ClassFlowInfluxDB::GetInfluxDBMeasurement()
|
|
{
|
|
return measurement;
|
|
}
|
|
|
|
|
|
bool ClassFlowInfluxDB::doFlow(string zwtime)
|
|
{
|
|
if (!InfluxDBenable)
|
|
return true;
|
|
|
|
std::string result;
|
|
std::string resulterror = "";
|
|
std::string resultraw = "";
|
|
std::string resultrate = "";
|
|
std::string resulttimestamp = "";
|
|
string zw = "";
|
|
string namenumber = "";
|
|
|
|
if (flowpostprocessing)
|
|
{
|
|
std::vector<NumberPost*>* NUMBERS = flowpostprocessing->GetNumbers();
|
|
|
|
for (int i = 0; i < (*NUMBERS).size(); ++i)
|
|
{
|
|
result = (*NUMBERS)[i]->ReturnValue;
|
|
resultraw = (*NUMBERS)[i]->ReturnRawValue;
|
|
resulterror = (*NUMBERS)[i]->ErrorMessageText;
|
|
resultrate = (*NUMBERS)[i]->ReturnRateValue;
|
|
resulttimestamp = (*NUMBERS)[i]->timeStamp;
|
|
|
|
namenumber = (*NUMBERS)[i]->name;
|
|
if (namenumber == "default")
|
|
namenumber = "value";
|
|
else
|
|
namenumber = namenumber + "/value";
|
|
|
|
if (result.length() > 0 && resulttimestamp.length() > 0)
|
|
InfluxDBPublish(namenumber, result, resulttimestamp);
|
|
}
|
|
}
|
|
|
|
OldValue = result;
|
|
|
|
return true;
|
|
}
|
|
|
|
#endif //ENABLE_INFLUXDB
|