Rewritten the backend, made it hella faster

This commit is contained in:
TraYali 2024-03-28 19:44:54 +01:00
parent 4209d2767e
commit d7b59ea326
11 changed files with 176 additions and 144 deletions

View file

@ -48,11 +48,11 @@ int main(int argc, char **argv) {
std::string microinvertersToGetHelp{"List of microinverters to fetch, delimited by ','; if omitted, all are fetched"};
hoymilesClient.add_option<std::vector<long long>>("-m,--microinverters", microinvertersToGet, microinvertersToGetHelp)->delimiter(',')->group("Microinverters");
bool microinvertersGetTodayProduction;
bool microinvertersGetTodayProduction{false};
std::string microinvertersGetTodayProductionHelp{"Show today production for microinverters"};
hoymilesClient.add_flag<bool>("-t,--today_production", microinvertersGetTodayProduction, microinvertersGetTodayProductionHelp)->group("Microinverters");
bool microinvertersGetTotalProduction{};
bool microinvertersGetTotalProduction{false};
std::string microinvertersGetTotalProductionHelp{"Show total production for microinverters"};
hoymilesClient.add_flag<bool>("-T,--total_production", microinvertersGetTotalProduction, microinvertersGetTotalProductionHelp)->group("Microinverters");
@ -73,7 +73,7 @@ int main(int argc, char **argv) {
auto endTime = std::chrono::high_resolution_clock::now();
std::cout << "DTU construction time: " << std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count() << "ms" << std::endl;
while (!dtu.modbusError() && (dtu.isConnected() || ignoreNotConnected) && (!parametersToGet.empty() || allParameters)) {
while ((dtu.isConnected() || ignoreNotConnected) && (!parametersToGet.empty() || allParameters)) {
startTime = std::chrono::high_resolution_clock::now();
dtu.updateMicroinverters(parametersToGet, allParameters, microinvertersToGet);
endTime = std::chrono::high_resolution_clock::now();
@ -82,9 +82,9 @@ int main(int argc, char **argv) {
dtu.printMicroinverters(parametersToGet, allParameters, microinvertersToGet, shortNames, microinvertersGetTodayProduction, microinvertersGetTotalProduction);
std::cout << std::endl;
}
if(dtu.modbusError()) {
std::cerr << dtu.modbusErrorMessage() << std::endl;
}
// if(dtu.modbusError()) {
// std::cerr << dtu.modbusErrorMessage() << std::endl;
// }
return 0;
}