diff --git a/include/WebApi_database.h b/include/WebApi_database.h index cf0aecc1..eca21f8d 100644 --- a/include/WebApi_database.h +++ b/include/WebApi_database.h @@ -9,8 +9,8 @@ class WebApiDatabaseClass { public: + WebApiDatabaseClass(); void init(AsyncWebServer& server, Scheduler& scheduler); - void loop(); bool write(float energy); struct pvData { @@ -29,6 +29,9 @@ private: static size_t readchunk_log(uint8_t* buffer, size_t maxLen, size_t index); static size_t readchunkHour(uint8_t* buffer, size_t maxLen, size_t index); static size_t readchunkDay(uint8_t* buffer, size_t maxLen, size_t index); - + AsyncWebServer* _server; + + Task _sendDataTask; + void sendDataTaskCb(); }; diff --git a/src/WebApi_database.cpp b/src/WebApi_database.cpp index f886dcce..fdec7686 100644 --- a/src/WebApi_database.cpp +++ b/src/WebApi_database.cpp @@ -9,6 +9,12 @@ #include #include + +WebApiDatabaseClass::WebApiDatabaseClass() + : _sendDataTask(1 * TASK_MINUTE, TASK_FOREVER, std::bind(&WebApiDatabaseClass::sendDataTaskCb, this)) +{ +} + void WebApiDatabaseClass::init(AsyncWebServer& server, Scheduler& scheduler) { using std::placeholders::_1; @@ -16,9 +22,12 @@ void WebApiDatabaseClass::init(AsyncWebServer& server, Scheduler& scheduler) server.on("/api/database", HTTP_GET, std::bind(&WebApiDatabaseClass::onDatabase, this, _1)); server.on("/api/databaseHour", HTTP_GET, std::bind(&WebApiDatabaseClass::onDatabaseHour, this, _1)); server.on("/api/databaseDay", HTTP_GET, std::bind(&WebApiDatabaseClass::onDatabaseDay, this, _1)); + + scheduler.addTask(_sendDataTask); + _sendDataTask.enable(); } -void WebApiDatabaseClass::loop() +void WebApiDatabaseClass::sendDataTaskCb() { if (!Hoymiles.isAllRadioIdle()) { return;